stable diffusion图生图

本节内容,给大家带来的是stable diffusion的图生图课程,我们在midjourney的课程中有学习过midjourney的图生图功能,即使用垫图的方式来引导AI绘制图片。图生图是AI绘图程序一个非常重要的功能,stable diffusion同样提供了类似的功能,而且stable diffusion图生图功能所提供的选项和参数也远比midjourney要丰富,从而可以更好地控制图生图绘制图片的过程和结果。

一:图生图

我们通过浏览器打开stable diffusion webui的主界面,点击文生图旁边的图生图标签页,即可打开图生图操作区域,
可以看到图生图和文生图操作界面有很多相似之处,比如正向提示词区域,反向提示词区域,以及很多选项设置。
但是图生图界面增加了图片操作区域,图片操作区域包括图片、绘图、局部重绘、局部重绘(手涂蒙版),局部重绘(上传蒙版),批量处理等子标签页,分别对应了不同的功能操作,我们在稍后会一一讲解。
另外,在生成按钮的下方,增加了两个反推提示词的按钮。
选项部分增加了缩放模式、蒙版、重绘区域、soft inpainting,重绘幅度等一些选项。
stable diffusion里,图生图功能能实现哪些功能和特性呢?
我们先来看一个典型的应用,人物风格转动漫风格
我们现在希望一张已有的照片转为动漫风格,如何操作呢?
我们首先要选择合适的模型,这里我们选择AbyssOrangeMix模型,之前在安装课程中我们有提到过,这个模型绘制的图片更偏好二次元图片。
然后我们上传一张真人图片
在提示词中我们填写 a handsome man
我们将重绘幅度参数调整为0.7
点击生成,可以看到,stable diffusion帮我们绘制出一幅二次元风格的图片。而图片的整体构图与上传的图片相似度是比较高的。
可以看到图生图在生成图片的过程中,不仅受到提示词的引导,同时也会参考上传的图片中的元素特征。
图生图中有两个非常重要的参数选项: 提示词相关性和重绘幅度。
提示词相关性与文生图是类似的,用于设置输入的提示词对图片绘制的影响程度。
而重绘幅度,用于设置上传的图片对图片绘制的影响程度。重绘幅度越低,则绘制的图片越接近于原图,越高,则与原图的关系越小,比如我们设置为最大值1,则此时绘制的图片与上传的图片就没有什么关系了。
Resize可以设置重绘后的图片分辨率,但是我们设置分辨率时建议尽量与原图保持相同的比例,否则,生成的图片将出现一定的变形,比如我们原图分辨率时512:512,我们Resize设置为1024*768,如果缩放模式设定为默认:拉伸,最后生成的图片是这样的
人物的比例则会有些变形。
当然,我们还是可以设定缩放模式来解决上面的问题,
我们这里有一组不同缩放模式下生成的图片。
可以看到裁剪,填充选项下的人物比例很原图是比较接近的。

二:绘图(sketch)

图片上传区域上方图生图子标签页旁边是绘图子标签页,我们又称之为sketch或者涂鸦,
绘图和图生图相比,在图片上传后,图片的右上角提供了画笔工具,我们可以通过画笔对图片涂鸦。这有哪些作用呢?比如我们这里上传的图像,男人穿了一件黑色的西装,我们希望生成的图像中,穿的是白色的西装,我们先选择合适的模型,(采样方法设置为euler a) 然后修改提示词:
a handsome man with white suite,提示词中增加了白色西装描述词
点击生成按钮,可以看到,生成的图片还是黑色的西装,即使把提示词的相关性调到很高,重绘幅度调高,生成的图片仍然可能不是白色的,这是因为图生图功能,上传图片对最终结果的偏好性影响较大。而如果将重绘幅度调给长高,从而降低图片对结果的影响程度时生成的图片与原图又会差异太大。
如何解决这个问题了,stable diffusion webui为我们提供了涂鸦这个有用的工具,我们可以选择画笔,将笔触颜色调整为白色。然后把西装部分涂鸦称白色, 点击生成,可以看到,生成的图片中,西装也换成了白色,即使我们去掉提示词,同样会生成白色西装的图片。这就是绘图的作用,我们可以用画笔绘制并调整图片中的某些元素。

三:局部重绘

紧挨着绘图的是局部重绘子标签页,什么是局部重绘?顾名思义,局部重绘是AI只对画面中的局部进行绘制,而其他部分保持不变。 
我们在midjourney中演示过局部重绘,在stable diffusion中也提供了类似的功能模块。我们来看一下stable diffusion webUI中如何实现局部重绘,点击局部重绘子标签页
我们上传早前使用stable diffusion制作的一张的图片,使用sdxl。该图片如果我们希望将图片中的女孩更换为男孩,而背景保持不变,如何操作呢?我们可以使用局部重绘来实现,上传参考图片,然后使用笔刷工具,将图片的女孩涂刷,然后修改提示词,将提示词中的1girl修改为1boy,点击生成,很快stable diffusion便帮我们绘制了图片,图片中的人物已经由女孩变成了男孩,而未被涂刷的背景部分没有发生变化。
这就是stable diffusion所提供的局部重绘功能,stable diffusion只对画笔所涂刷的区域进行重新绘制,不会修改图片的其他区域,这在很多应用场景都非常的有意义,比如,如果一张图片,大部分我们都很满意,只有一小部分我们觉得需要调整,我们就可以使用局部重绘功能,让AI帮我们重新绘制这一小部分区域。另外,结合提示词的调整,也可以更有针对性地重绘局部区域的内容。
我们再演示一个典型的应用场景,我们使用之前的人物图片,我们现在希望给图片中的人物加一副眼镜,如果只修改提示词
a handsome man with sunglass.  生成的图片中并不会增加眼镜元素。
这个时候,我们可以用笔刷在眼睛区域简单涂刷,然后点击生成,可以看到,stable diffusion绘制的图片中,人物已经戴上了眼镜,而其他部分没有发生变化。
相比midjourney,stable diffusion的局部重绘提供了更多的控制选项。
比如stable diffusion的局部重绘同样可以对宽度高度,缩放模式进行调整,这些选项在图生图中已经讲解,这里就不再赘述。
另外,选择局部重绘子标签页后,参数选项区域会增加了几个特殊的选项,这些选项对局部重绘的过程会有一定的影响。

3.1、蒙版模糊

这里的蒙版可以理解为我们用画笔绘制的区域,蒙版模糊可以设置重绘部分与原图衔接处的羽化程度。合理地调整该设置可以让衔接处渐变和过渡更加自然。
以刚刚演示的女孩替换为男孩的例子,我们可以对比一下不同的蒙版模糊值重绘区域与原图的融合边缘对比
可以看到设置为较低的值1时,边缘比较生硬,默认值4时融合比较自然,而设置为较大的数值15时,融合区域也会比较奇怪。该值不宜过大或过小,如果重绘部分与原图衔接不太自然时可以尝试稍微调整该数值,一般设置3-8即可。

3.2、蒙版蒙住的内容

蒙版蒙住的内容设置其实就是局部重绘时采用的四种不同的算法,要理解这四个选项有些困难
我们用一些实例来做演示。
我们上传一张女孩的图片,选择合适的模型,不填写任何提示词,然后将女孩衣服区域涂刷,点击生成按钮,该操作实际上是在保留女孩头像的前提下让AI帮我们重绘女孩所穿的服装,也就是实现人物换装。
选择填充:可以看到重绘的服装与整装图像的填充色是接近的,可以理解为该选项重绘时会参考图片的填充内容
选择原图:重绘时会参考原图中的内容,这个时候重绘的服装会接近于原来的图片内容,
潜变量噪声:重绘时参考的是潜变量噪声,可以看到,这个时候重绘的服装类似潜变量噪声图像特征
潜变量数值零:该选项可以让AI自由发挥,所以重绘的服装变化更大。

3.3、蒙版模式

用于设置你是需要绘制蒙住的那部分图像还是未蒙住的部分
比如我们如果选择“重绘非蒙版内容”,生成的图片,则是未被涂刷的区域被重新绘制,而涂刷的区域不会发生变化。

3.4、重绘区域:

  • 当选择“全图选项”时,虽然重绘操作主要集中在你通过遮罩指定的区域,但模型也会考虑整个图片的内容来生成填充内容。这意味着整个图片的风格和内容会被考虑在内,从而帮助生成与原始图像风格更加协调的结果。这种模式有助于确保新生成的部分与整体图片风格一致
  • 在“仅蒙版”模式下,模型仅在被遮罩覆盖的区域进行生成和修改。这意味着模型的全部注意力都集中在指定区域内的内容生成上,而不受图片其他部分的影响。该模式有的时候可以帮助提升重绘区域的细节。

3.5、仅蒙版模式的边缘预留像素

在重绘区域使用仅蒙版模式时,由于模型的全部 注意力都集中在指定区域,为了使融合和过渡更加自然,这个时候增加边缘预留像素设置可以增加模型的注意力区域,增加该数值,stable diffusion在重绘时会考虑更大区域的内容也就是遮罩部分加上预留像素部分。

3.6、soft inpainting

“soft inpainting”采用一种特定的处理方式,旨在更平滑、更自然地将生成的内容融入原始图像中。这是在stable diffusion webui1.8.0版本后引入的选项
该选项可以使模型在处理遮罩区域时,会尝试保持与周围未遮罩区域的颜色、纹理和风格上的连贯性。使用“soft inpainting”可以让重绘后的图像看起来更自然,减少人为编辑的痕迹。
我们演示一下,这里我们使用局部重绘来实现人物换装,涂刷上身服装区域,修改提示词为1girl,shirt,如果不勾选soft inpainting,很多时候,重新绘制的服装在边缘处会有明显的瑕疵,
这个时候,我们可以勾选soft inpainting,该选项可以帮助减少边缘瑕疵,使重绘区域边缘变现得更加自然。
勾选soft inpainting后,有很多可以微调的选项,可以点击帮助查看这些选项的涵义,我们就不在课程中展开讲述。
使用局部重绘,包括后续的局部重绘手涂蒙版和局部重绘上传蒙版时,我们一般建议开启该选项,但开启该选项在某些时候也可能会有一些副作用,因为开启该选项后模型在融合边缘区域时,可能会增加一些细节,很多时候,这些细节能使过渡更自然,但有的时候,添加的细节也会破坏原图的一些特色,这个时候我们可以尝试多生成几张图片,然后挑选满意的图。

四:局部重绘(手涂蒙版)

我们再来看一看局部重绘(手涂蒙版),该模块是对局部重绘功能的进一步扩展,我们在刚刚讲解绘图功能时,有演示过如何将西装由黑色换为白色,涂鸦功能可以实现,但是整体内容会发生变化,比如人物发生了变化。
而如果我们使用刚刚讲述的局部重绘,比如上传之前的图像,使用笔刷涂刷黑色西装区域,然后修改提示词a handsome man with white suite.点击生成
可以看到这个时候由于还是会受到原图元素的影响,并不能很好的将西装换为白色。而通过局部重绘(手涂蒙版)则可以很好地实现我们的需求。
我们点击局部重绘(手涂蒙版)标签页,局部重绘(手涂蒙版)标签页下的内容与局部重绘基本一致,但是上传图片后的图片区域的右上角增加了画笔颜色图标,通过该图标,我们可以调整笔触颜色为白色,然后将西装区域涂鸦称白色,最后修改提示词a handsome man with white suite,点击生成可以看到生成的图片中,西装变成了白色。
这就是局部重绘(手涂蒙版)的强大功能,除了仅修改指定区域内容,局部重绘(手涂蒙版)在涂刷遮罩区域时,可以增加颜色特征,这些颜色特征可以指导AI绘制图像时如何重绘这一区域的内容。

五:局部重绘(上传蒙版)

有的时候,我们使用webui上的画笔工具选择蒙版区域会很不方便,尤其是需要精确选择某些图像元素时,画笔工具的使用需要特别细腻的操作,这个时候,我们可以使用其他绘图工具来制作蒙版,然后使用局部重绘(上传蒙版)功能来实现蒙版区域的重绘制。
我们做一下演示,我们现在希望实现背景更换,将海洋背景换成草原背景,人物和服装都保持不变,如果手绘蒙版,可能效率会比较低,我们可以PS等绘图工具或一些AI工具抠取人物图像,然后去掉背景。这里我们使用另外的AI工具抠取人物并去掉背景,
制作好了蒙版图,
点击局部重绘(上传蒙版)子标签页,上传参考图,然后参考图下方可以上传蒙版制作好的蒙版图,因为这里我们是更换背景,所以蒙版模式选择重绘非蒙版内容,调整提示词为1girl, grassland,设置好参数选项,点击生成,可以看到stable diffusion可以说非常出色地实现了背景切换。
需要提醒一下大家,有些同学可能有学习过一些早期的stable diffusion课程,很多早期的stable diffusion课程在使用局部重绘(上传蒙版)时使用的是黑白蒙版,在新的stable diffusion webui版本中,黑白蒙版不再适用。如上面的示例,一般使用抠图工具抠取图像中的部分元素,去掉其余部分,然后通过蒙版模式选择重绘蒙版内容或者非蒙版内容即可。

六:批量处理

在图生图栏目下还有一个批量处理标签页,批量处理操作即将多次操作批量化,提高绘图效率。
批量操作时
输入目录用来输入需要批量图生图的图片所在的目录,
输出目录用来输入最终输出图片的目录
如果使用蒙版,则需要在inpaint batch mask directory这里输入蒙版文件的目录
controlnet输入目录用于输入controlnet图像文件所在的目录,controlnet的知识我们会在后面的课程详细讲解。
需要注意的是inpaint batch mask directory和Controlnet input directory中的图像文件名要与输入目录中的一致。比如输入目录中放置了图像a.png,b.png,
如果使用mask,inpaint batch mask directory目录中的文件名也应该是a.png,b.png.
controlnet如果留空,则会使用输入目录中的图像做控制图像,如果使用另外目录中的控制图像,则该目录中的图片也应该于input中的文件名一致,如a.png,b.png,
设置好这些目录,点击生成按钮,stable diffusion便会在后台批量执行图生图操作。

七:脚本工具选项

图生图标签页下的脚本工具下拉列表相比文生图增加了一些选项,我们讲解其中一个非常有用的脚本工具---SD upscale.
该工具可以实现图片分辨率的提升。
图生图标签页,我们上传一个512x512的图片,填好提示词,并且调整好重绘幅度为0.3,不要对原图修改太多,
在宽度和高度选项,可直接设置分辨率为1024x1024,点击生成,
该操作也能生成高分辨率的图片,但是可以看到生成的图片其实还是有些模糊的,因为这种增加分辨率的方式实际上只是对原有像素进行了简单的放大。
我们可以借助SD upscale脚本,该脚本可以通过一定的算法对每个像素就行合理的补充,从而生成更加平滑的图片效果
我们演示一下,还是使用刚刚的图片和提示词,脚本中选择SD upscale, 放大算法可以选择R-ESRGAN 4x+,其他设置不变,
点击生成,可以看到生成的图片更加的圆润,也不再像之前那样模糊。
对于图片的放大,我们还可以使用附加功能标签页下的放大功能,其中的算法和SD upscale中的算法是一致的,但是附加功能标签页下的放大功能可以选择两个算法来相互补充,从而实现图片的放大。而且因为没有涉及到重绘,附加功能标签页下的放大功能对显存的占用相比图生图中的SD upscale会小一些。我们演示一下,
选择附加功能标签页,上传图片,图像放大算法1选择R-ESRGAN 4x+,放大算法2选择DAT3,等比缩放可以设置缩放比例,也可以通过指定分辨率来设置缩放宽高。我们这里使用等比缩放,并将比例设置为4,点击生成,很快,stable diffusion便帮我们生成了高分辨率的图片。
附加功能标签页还提供了很多功能,我们不再一一演示,如果感兴趣,可以参考相关的文档。

八:查看图片信息

附加功能标签页右边图片信息标签页,切换到标签页,上传一幅stable diffusion绘制的图片,在右侧可以看到绘制该图片的详细信息,包括模型,提示词,采样方法,采样步数、放大算法等参数以及使用的随机种子值。详细信息的下方,还提供了文生图,图生图,局部重绘,附加功能等快捷按钮,可以便捷地将图片发送到对应的功能区,比如点击局部重绘,可以将图片发送到局部重绘页,并且自动填充了所使用的提示词,设置好了所使用的随机种子值以及对应的参数选项,可以方便进行下一步的操作。
好了,本节课的内容到这里就结束了,我们做一下总结,本节课程,我们主要讲述了stable diffusion webui提供的图生图功能,相比midjourney,stable diffusion提供了拥有更多控制项的图生图功能,stable diffusion中也提供了多种以图生图的方式,包括直接图生图,基于绘图的图生图以及多种方式的局部重绘。图生图的应用能力非常丰富,比如可以实现图片风格转绘,背景更换,人物换装,人物切换,图像微调等等,这些都是实用性很强的AI绘画应用场景。我们在后期的课程也会学习controlnet,图生图和controlnet都是将stable diffusion的能力转换为实际生产力的重要手段。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/465680.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读笔记:DRCT: Saving Image Super-Resolution away from Information Bottleneck

论文阅读笔记:DRCT: Saving Image Super-Resolution away from Information Bottleneck 1 背景1.1 问题1.2 本文提出的方法 2 创新点3 方法4 模块4.1 问题描述4.2 深度特征提取模块4.3 同任务渐进式训练策略 5 效果5.1 和SOTA方法对比 论文:https://arxi…

一周内从0到1开发一款 AR眼镜 相机应用?

目录 1. 📂 前言 2. 💠 任务拆分 2.1 产品需求拆分 2.2 开发工作拆分 3. 🔱 开发实现 3.1 代码目录截图 3.2 app 模块 3.3 middleware 模块 3.4 portal 模块 4. ⚛️ 拍照与录像 4.1 前滑后滑统一处理 4.2 初始化 View 以及 Came…

【论文精读】LPT: Long-tailed prompt tuning for image classification

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀论文精读_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 摘要 2. …

《重学Java设计模式》之 建造者模式

建造者模式所完成的内容就是通过将多个简单对象通过一步步的组装构建出一个复杂对象的过程 模拟装修公司对于设计出一些套餐装修服务的场景。 很多装修公司都会给出自家的套餐服务,一般有;豪华、轻奢、简约等,这些套餐的后面是不同的商品的…

Android Framework AMS(12)广播组件分析-3(广播发送流程解读)

该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要解读广播组件的广播发送过程。关注思维导图中左上侧部分即可。 有了前面广播组件 注册和注销程分析的基础,基于此&#xff…

MongoDB笔记02-MongoDB基本常用命令

文章目录 一、前言二、数据库操作2.1 选择和创建数据库2.2 数据库的删除 3 集合操作3.1 集合的显式创建3.2 集合的隐式创建3.3 集合的删除 四、文档基本CRUD4.1 文档的插入4.1.1 单个文档插入4.1.2 批量插入 4.2 文档的基本查询4.2.1 查询所有4.2.2 投影查询(Projec…

MySQL基础-单表查询

语法 select [distinct] 列名1,列名2 as 别名... from数据表名 where组前筛选 group by分组字段 having组后筛选 order by排序的列 [asc | desc] limit 起始索引,数据条数 测试数据 # 建测试表 create table products (id int primary key a…

【pycharm jupyter】远程开发 启动报错

报错信息 upyter server process exited with code 1 ServerApp] A _jupyter_server_extension_points function was not found in jupyter_lsp. Instead, a _jupyter_server_extension_paths function was found and will be used for now. This function name will be depre…

CPU Study - Instructions Fetch

参考来源:《超标量处理器设计》—— 姚永斌 N-Way CPU 取指问题 如果CPU可以在每个周期内同时解码N条指令,则此类CPU为N-Way超标量处理器。 N-Way超标量处理器需要每个周期从I-Cache中至少取得N条指令,这N条指令成为一组Fetch Group。 为了…

掌握 PyQt5:从零开始的桌面应用开发

PyQT5——图形化界面 文章目录 PyQT5——图形化界面集成化图形界面工具为什么使用 \$ProjectFileDir$?示例场景其他 Varaiablespyuic参数解释整体含义示例使用PyQt5和pyuic 创建pyqt5的程序创建一个窗口app.exec\_()和sys.exit(app.exec_())的区别1. app.exec_()2. sys.exit(a…

论文阅读笔记:Image Processing GNN: Breaking Rigidity in Super-Resolution

论文阅读笔记:Image Processing GNN: Breaking Rigidity in Super-Resolution 1 背景2 创新点3 方法4 模块4.1 以往SR模型的刚性4.2 图构建4.2.1 度灵活性4.2.2 像素节点灵活性4.2.3 空间灵活性 4.3 图聚合4.4 多尺度图聚合模块MGB4.5 图聚合层GAL 5 效果5.1 和SOTA…

PMP–一、二、三模、冲刺–分类–7.成本管理–技巧–挣值分析

文章目录 技巧一模7.成本管理--4.控制成本--数据分析--挣值分析--进度绩效指数(SPI)是测量进度效率的一种指标,表示为挣值与计划价值之比,反映了项目团队完成工作的效率。 当 SPI小于 1.0 时,说明已完成的工作量未达到…

保姆级教程!!教你通过【Pycharm远程】连接服务器运行项目代码

小罗碎碎念 这篇文章主要解决一个问题——我有服务器,但是不知道怎么拿来写代码,跑深度学习项目。确实,玩深度学习的成本比较高,无论是前期的学习成本,还是你需要具备的硬件成本,都是拦路虎。小罗没有办法…

成绩管理系统软件体系结构设计

成绩管理系统软件体系结构设计 文档简介 1.1 目的 1.2 范围 1.3 定义、首字母缩写词和缩略语 1.4参考资料 1.5 概述体系结构表示方式软件体系结构的目标和约束 3.1 结构清晰 3.2 支持外包开发 3.3 可扩展性 3.4 系统安全性 3.5 可移植性 4体系结构模式逻辑视图进程视图…

单臂路由实现不同VLAN之间设备通信

转载请注明出处 本实验为单臂路由配置,目的为让不同VLAN之间的设备能够互相通信。 1.首先,按照要求配置两个pc的ip地址,以pc0为例子: 2在交换机创建vlan10和vlan20 3.划分vlan,pc0为vlan10的设备,pc1为vla…

机器学习(三)——决策树(附核心思想、重要算法、概念(信息熵、基尼指数、剪枝处理)及Python源码)

目录 关于1 基本流程2 划分属性的选择2.1 方法一:依据信息增益选择2.2 方法二:依据增益率选择2.3 方法三:依据基尼指数选择 3 剪枝处理:防止过拟合3.1 预剪枝3.2 后剪枝 4 连续与缺失值4.1 连续值处理4.2 缺失值处理 5 多变量决策…

Ubuntu和Debian系列的Release默认shell解释器变更

Debian 12 Bookworm 和 Ubuntu 24.04 中默认的 shell 解释器已经由 bash 变更为了 dash 。 这个变化对于我们直接在 CLI 上执行 Linux command 无影响,但对于执行shell解释性程序有影响,已知 bash 中的 变量正规表达式 (如 ${GIT_COMMIT:0:8…

ReLU6替换ReLU为什么可以增强硬件效率?

ReLU6(Rectified Linear Unit 6)是ReLU的一种变体,它在ReLU的基础上增加了一个上限值6,即输出范围被限制在[0, 6]之间。 这种变化在硬件实现中可以带来以下几个方面的效率提升: 1. 数据表示的简化 ReLU的输出范围是[…

vscode在windows和linux如何使用cmake构建项目并make生成可执行文件,两者有什么区别

vscode在windows和linux如何使用cmake构建项目并make生成可执行文件,两者有什么区别 windows默认使用的是最新的visual studio,而linux默认就是cmake 文章目录 vscode在windows和linux如何使用cmake构建项目并make生成可执行文件,两者有什么…

Spirngboot集成Knife4j spirngboot版本2.7.17 Knife4j版本4.0.0

Knife4j是什么?有什么作用? ‌Knife4j‌是一个基于Swagger的Java RESTful API文档工具,旨在帮助开发者轻松生成和维护API文档。它继承并增强了Swagger的功能,简化了使用流程,并提供了一系列增强功能,如接口…