图像风格迁移(Style Transfer)是一种计算机视觉技术,旨在将一幅图像的风格应用到另一幅图像上,从而生成一幅新图像,该新图像结合了两幅原始图像的特点,目的是达到一种风格化叠加的效果,本次我们使用Stable-Diffusion结合ControlNet来实现图像风格迁移效果。

安装ControlNet插件

首先确保本地已经安装并且配置好了Stable-Diffusion-Webui服务,关于Stable-Diffusion-Webui,请参见:人工智能,丹青圣手,全平台(原生/Docker)构建Stable-Diffusion-Webui的AI绘画库教程(Python3.10/Pytorch1.13.0),这里不再赘述。

随后进入项目目录,启动Stable-Diffusion-Webui服务:

python3 launch.py

如果是没有N卡的电脑,就使用cpu模式启动:

python3 launch.py --skip-torch-cuda-test --upcast-sampling --use-cpu interrogate

接着访问 http://localhost:7860

选择插件(Extensions)选项卡

点击从url安装,输入插件地址:github.com/Mikubill/sd-webui-controlnet.git

安装成功后,重启WebUI界面。

由于ControlNet默认是一层网络,风格化操作我们需要两层,所以在设置选单(Settings)中,将多层网络设置为2。

设置好之后,下载模型文件:huggingface.co/webui/ControlNet-modules-safetensors/tree/main

将模型放入 stable-diffusion-webui/extensions/sd-webui-controlnet/models目录

这里还需要单独下载一个风格迁移模型,地址是:huggingface.co/TencentARC/T2I-Adapter/blob/main/models/t2iadapter_style_sd14v1.pth

同样放入stable-diffusion-webui/extensions/sd-webui-controlnet/models目录

至此,Stable-Diffusion-Webui服务的ControlNet插件就配置好了。

风格迁移

现在,我们打开ControlNet的第一个图层,将原始图像的轮廓渲染出来,因为需要保证原始图像的基本形状。

这里预处理器选择head,模型使用ControlNet的head模型即可。

可以看到基本轮廓已经得到了保留,风格化只负责颜色和线条。

随后配置第二个ControlNet图层,预处理器选择t2ia_style-clipvison,模型选择刚刚下载的t2iadapter_style_sd14v1.pth,默认图像权重为1,先不要动。

接着上传一张目标风格的图片,这里我们选择文森特梵高的表现主义作品《星空》:

随后点击Generate按钮做图生图(img2img)操作即可。

过拟合问题(Overfitting)

经过一段时间的本地推理,生成结果如下:

效果并不尽如人意,这也是大多数深度学习入门者会遇到的问题,也就是过拟合问题。

过拟合(Overfitting)是指在训练模型时,模型过度地学习了训练数据的特征和噪声,从而导致模型在新数据上表现不佳的问题。

通俗地讲,过拟合就像是一名学生背诵考试答案,但是他只是死记硬背了考试题目的答案,没有真正理解题目的本质和解题思路。当他遇到新的考试题目时,由于没有理解题目的本质和解题思路,他就无法正确回答。

在机器学习中,过拟合的原因是模型复杂度过高,导致模型对训练数据中的噪声和特征都过度追求,并且忽略了数据背后的本质规律和特征。因此,当模型面对新的数据时,由于没有真正理解数据的本质规律和特征,它就无法正确地对新数据进行预测。

说白了,就是对于原始图的特征过分追求,从而淡化了目标图的风格,还记得ControlNet默认权重是1吗?这里我们只需要将权重往下调整,比如调成0.8,再次尝试生成:

效果不错,既保留了原始图的大部分细节,又增加了梵高的表现主义风格。

当然了,权重也不能一味地往下调整,否则也会出现欠拟合(Underfitting)问题,整个风格化迁移的过程也可以理解为是一种“调参”的过程。

结语

通过Stable-Diffusion结合ControlNet插件,我们可以得到一幅新的图像,该图像结合了两幅原始图像的特点,既具有内容图像的内容,又具有风格图像的风格。图像风格迁移也可以应用于其他的领域,比如电影、游戏、虚拟现实和动画创作等等。

人工智能AI图像风格迁移(StyleTransfer),基于双层ControlNet(Python3.10)的更多相关文章

  1. keras图像风格迁移

    风格迁移: 在内容上尽量与基准图像保持一致,在风格上尽量与风格图像保持一致. 1. 使用预训练的VGG19网络提取特征 2. 损失函数之一是"内容损失"(content loss) ...

  2. 图像风格迁移(Pytorch)

    图像风格迁移 最后要生成的图片是怎样的是难以想象的,所以朴素的监督学习方法可能不会生效, Content Loss 根据输入图片和输出图片的像素差别可以比较损失 \(l_{content} = \fr ...

  3. fast neural style transfer图像风格迁移基于tensorflow实现

    引自:深度学习实践:使用Tensorflow实现快速风格迁移 一.风格迁移简介 风格迁移(Style Transfer)是深度学习众多应用中非常有趣的一种,如图,我们可以使用这种方法把一张图片的风格“ ...

  4. Distill详述「可微图像参数化」:神经网络可视化和风格迁移利器!

    近日,期刊平台 Distill 发布了谷歌研究人员的一篇文章,介绍一个适用于神经网络可视化和风格迁移的强大工具:可微图像参数化.这篇文章从多个方面介绍了该工具. 图像分类神经网络拥有卓越的图像生成能力 ...

  5. 解读 --- 基于微软企业商务应用平台 (Microsoft Dynamics 365) 之上的人工智能 (AI) 解决方案

    9月25日微软今年一年一度的Ignite 2017在佛罗里达州奥兰多市还是如期开幕了.为啥这么说?因为9月初五级飓风厄玛(Hurricane Irma) 在佛罗里达州登陆,在当地造成了挺大的麻烦.在这 ...

  6. 基于 Keras 实现图像风格转移

     Style Transfer 这个方向火起来是从2015年Gatys发表的Paper A Neural Algorithm of Artistic Style(神经风格迁移) , 这里就简单提一下论 ...

  7. 闻其声而知雅意,基于Pytorch(mps/cpu/cuda)的人工智能AI本地语音识别库Whisper(Python3.10)

    前文回溯,之前一篇:含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入),利用AI技术将文本合成语音,现在反过来,利用开源库Whisper再将语音转 ...

  8. Keras实现风格迁移

    风格迁移 风格迁移算法经历多次定义和更新,现在应用在许多智能手机APP上. 风格迁移在保留目标图片内容的基础上,将图片风格引用在目标图片上. 风格本质上是指在各种空间尺度上图像中的纹理,颜色和视觉图案 ...

  9. Ubuntu16.04+GTX1080配置TensorFlow并实现图像风格转换

    1. TensorFlow TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,表达了高层次的机器学习计算,大幅简化了第一代系统,并且具备更好的灵活性和可延展性. Te ...

  10. cs231n---卷积网络可视化,deepdream和风格迁移

    本课介绍了近年来人们对理解卷积网络这个“黑盒子”所做的一些可视化工作,以及deepdream和风格迁移. 1 卷积网络可视化 1.1 可视化第一层的滤波器 我们把卷积网络的第一层滤波器权重进行可视化( ...

随机推荐

  1. 【Unity】protobuf故意踩坑记

    写在前面 起因:我看到工作项目使用protobuf来做序列化时脑子冒出许多问号,"以前我按<Unity3D网络游戏实战>做坦克游戏时为了让客户端和服务器使用统一协议用到了prot ...

  2. Spring Cloud netty

    <properties> <spring.boot.version>2.3.2.RELEASE</spring.boot.version> <spring.c ...

  3. 【CSS】CSS字体图标iconfont

    CSS字体图标iconfont展示的是图标,本质上还是字体 使用字体图标步骤: 字体图标的下载 将字体图标引入到HTML 字体图标的追加(以后添加新的小图标) 推荐下载网站 icomoon字库http ...

  4. 前端基础复习之HTML

    1.web基础知识 1 1.Web基础知识 2 1.Internet 3 1.简介 4 Internet 实际上就是由计算机所组成的网络结构 5 6 服务: 7 1.Telnet 8 远程登录 9 2 ...

  5. js/css实现图片轮播

    实现样式: tplb.css ul, li { padding: 0; margin: 0; list-style: none; } .adver { margin: 0 auto; width: 7 ...

  6. Hive启动留下的RunJar进程不能使用Kill -9 杀不掉怎么办?

    1.问题示例 [Hadoop@master Logs]$ jps 3728 ResourceManager 6976 RunJar 7587 Jps 4277 Master 3095 NameNode ...

  7. mysql 的存储过程

    定义不带参数的存储过程 CREATE PROCEDURE s1() BEGINselect * from ecs_admin_action;End call s1; 2.带输入参数的 create P ...

  8. java的maven项目打包成.exe可执行文件

    打包exe可执行脚本: 1.源代码maven项目写完后打包成可执行jar包,此处我使用的是assembly插件. <plugin> <groupId>org.apache.ma ...

  9. JavaWeb笔记第一弹

    一.MYSQL的安装 1.MYSQL的安装 可以去官网找到与自身计算机向对应的版本进行下载 网址如下: MySQL :: Download MySQL Community Server 2.MYSQL ...

  10. 微软出品自动化神器【Playwright+Java】系列(十二)测试框架的设计与开发

    一.前言 大家好,我是六哥! 又有好长一段时间没更文了,不是我懒,而是确实在更文上,没有以前积极了,这里是该自我检讨的. 其实不是我不积极,而是相对更文学习来说,优先级不是最高. 对我而言,目前最重要 ...