图片处理核心思想
尽量将图片分块处理
例如,将假人模型换成真人,需要处理的部分有3处,可以使用局部重绘功能,依次进行脚部、手部、头等等按部位依次处理
在生成效果不理想时,可以结合ControlNet模型介入,比如要修改人物某些部位时,部位错乱(例:头部位置出现手、或其他不需要的素材)
运行异常处理
如遇未知错误,开启使用共享显存看是否解决
ControlNet作用与模型功能
新版ControlNet预览为预处理旁边的爆炸按钮
大概作用为在作图时,会参照所给出的图片的构成,生成与之相近相关的图片,每个模型的构图方式均有区别
Canny(硬边缘)模型:
主要用于将图片转换为类似线稿的图片,在作图时会参照该线条尽量贴近
最终效果:
Color模型:
主要用于将图片转换为色块图片,在生成图片时颜色色彩会用作参考
新生成的图片可能与原图毫无相关,但是如果用色块图片对比,可以发现色彩的位置几乎相同(取决于权重)
左边为原图,中间为color模型生成的色块图片,右边则为新生成的图片
MLSD直线检测模型:
该模型多用于室内设计?
与名字相同,只检测图片中的直线,如果有曲线部分则会忽略,生成只有直线的线稿图
参数详解:
下图为 MLSD Value Threshold(阈值) 参数为0.5(中图)与0.1(右图)生成的图,在阈值1的情况下生成的处理图为空白,完全没有线条。
该阈值越高,对直线的检测越不敏感(个人感觉这条解释不太对,应该是对直线的要求更严格,简单理解为阈值越高,识别的线条需要更直,否则将跳过此线条。)
MLSD Distance Threshold (距离阈值):
该参数的作用在于密集线条的处理,阈值越高,密集的线条越小,参考下方图片红圈标注部分
该图从左到右的距离阈值为0.1,10,20
最终效果(低模为sdv1-5):
从左到右分别为 原图,直线模型处理图片,根据该模型生成的图片(无提示词生成)
添加 Interior Design 提示词效果图:
分块检测模型
未确定:新版的ControlNet中,分块模型从分块检测(segmentation)更改成了分块 (Tile),并细分了以下预处理:
该模型用不同的颜色色块将图片中的物体进行标注,在参与作图后,生成的图片物体及位置几乎与原图相同
左为模型预处理图片,中为原图,右为新生成的图片
openpost模型(姿势检测模型)
生成图片中人物骨骼的图片,在进行生成人物时,会将该人物的动作保持原有的姿势可以配合 3D OpenPost 插件进行对动作、人物比例的控制
效果预览:
局部重绘
参数说明:
蒙版模糊度:该参数越大,蒙版生效的区域越小,具体效果如下图:在模糊度64生成的图与原图一模一样
蒙版模式:重绘蒙版内容与重绘非蒙版内容,区别在于重绘的部分,如果选中重绘非蒙版内容,则会重绘除了自己选中区域之外的内容
蒙版区域内容处理:
4个处理方法:主要是原图与潜在噪声,区别在于与原图的相关性,在使用原图模式时,生成的图片与原图较为接近,使用潜在噪声则相反,效果好坏需取决于实际情况。
绘制区域:
-
全图会更好的参考原图,更好的融入进原图
-
仅蒙版模式:会将蒙版区域进行放大进行重绘,最后缩小到原图蒙版位置
二者区别:如下图所示,全图模式相对比较自然,而仅蒙版模式细节更多(道路、树木细节),但是由于后者是先放大再缩小,导致画面不协调。有时甚至出现画中画模式(这个可以考虑作为出图时用于刻画细节,比如本身图片中的照片?)
仅蒙版的参考半径:
- 如果蒙版区域较小,需要局部修改就可以适当调大参考半径
- 如果蒙版区域足够大,需要重绘足够的细节则需要适当调小参考半径
局部重绘涂鸦蒙版模式
主要用于将蒙版区域内的颜色进行替换,效果如下图
利用局部重绘将假人替换为真人
需要将人物替换成假人,结合素材,只需要替换3个地方:头、手、腿,可以处理完一个部位后再用处理完后的图继续处理。
ControlNet介入作用:绘制的蒙版中比较粗糙,并且在区域内会生成任何图像,这个时候就要用到ControlNet进行限制,比如使用Canny线稿进行约束画面的线条基本不变,用openpose约束头部、手部位置等等
在进行头部处理时,使用Canny模型可以有效避免脖子区域生成配饰,
由于头部生成,发型会不同,如果使用默认的线稿进行生成,则生成的区域有点局限,可能无法生成满意的头部及发型。
这个时候可以先将预处理的线稿图下载,将头部区域涂抹删除处理再上传,让sd进行更好的联想。
在不同时使用openpose模型下,生成的图有几率会出现头部上出现手或其他部位,这时候就可以使用openpose进行四肢约束,不在该区域生成除头以外的任何身体部位。
同时使用多个模型会影响出图速度,根据实际按需启用即可
脸部处理:可以先将其他模型生成比较完美的脸转换成线稿,然后替换到图片的头部中,然后将重绘区域更改为仅蒙版(因为在全图模式下,会参照全图进行绘制,对细节处理没有那么好),最后基本参数都调整完后,可以适当添加提示词进行生成比较好的图片
XYZ脚本(数据测试脚本)
开启方法:
在脚本中选择 X/Y/Z plot
X Y Z轴分别可以选择不同的功能调整参数,例如采样器、迭代步数等各类参数,
如果有 Controlnet 介入,只会对第一个 Controlnet 生效
当开启脚本后,生成图片时会生成多张图片,分别对应所设置的参数,这些照片的 seed 值 均为同一个:
采样方法:生成不同取样器的图片
迭代步数:生成不同迭代步数的图片,其中书写方式有2种
- 范围: 20-30生成20至30迭代步数的图片(共11张)
20-30(2)生成20,22,24,26,28,30步数的图片,其中括号中代表为每次生成后将迭代步数+2,直至30
反之也可以写30-20(-2),这里会先生成30步数的图片,之后每次-2直至20 - 指定步数: 20,30
生成20与30步数的图片,不同的步数用英文逗号分隔即可
提示词替换(Prompt S/R):将现有提示词进行替换,依次生成不同提示词的图片
第一个提示词代表需要替换的,并且必须在生图的提示词中存在,之后替换的内容使用英文逗号分隔即可
也可以进行lora模型的替换或权重测试。
例:
提示词:1girl,white hair,
参数设定:
效果图:
图片修复
图片放大(超分辨率)
图片放大指的是将图片的分辨率放大,将低像素照片放大为高像素且清晰的图片,或是将不清晰的图片进行一个清晰度修复(这个原理好像也是先放大分辨率修复后再缩小为指定分辨率)。
开启位置:
文生图与图生图的开启位置不一样
-
文生图是取样器的下方的高分辨率修复
-
图生图则是脚本处,选择脚本,官方自带有SD模式放大(SD upscale)
还有一个终极SD模式放大,此脚本为大佬修改过后,理论上会比官方的效果好一点
https://github.com/Coyote-A/ultimate-upscale-for-automatic1111
-
选项卡中的高清化(可以同时使用两种算法)
算法
算法的选择:每种算法效果都不一样,目前大致分类如下(按自己理解再细分):
- 动画风格
- 日漫风格
- 国漫风格
- 现实风格
- 人像
- 风景
算法针对的东西有很多,不止光上面列出来的,不同算法对某个物品或人物、景物等等所处理的结果都不一样
目前二次元图片使用 R-ESRGAN 4X + Anime6B
效果较好
真实图片使用 ESRGAN_4X
与 SwinIR_4X
效果较好,也可以使用 LDSR
, LDSR生成的图片偏黄,需要自己后期调整白平衡等
图片上色
顾名思义,就是给黑白图片上色,或者给图片改色(结合局部重绘)
需要的ControlNet模型
control_v11p_sd15_inpaint:https://huggingface.co/lllyasviel/control_v11p_sd15_inpaint/resolve/main/diffusion_pytorch_model.safetensors
control_v11p_sd15_lineart.safetensors:https://huggingface.co/lllyasviel/control_v11p_sd15_lineart/resolve/main/diffusion_pytorch_model.safetensors
将模型下载到 SD目录/models/ControlNet
目录下
该模型还有对应的二次元风格的,可以在 https://huggingface.co/lllyasviel 寻找
主要用的模型为Lineart模型作预处理,预处理的图片与Canny模型生成的线稿图相差不大,但是作为图生图来说,Lineart模型会更贴合原图
对比图:
图片修补
局部重绘的 inpaint
模型可以用于老照片修复、改图、扩图(将图片的上下左右进行扩展,比如场景完整等)等等
在扩图中,缩放模式建议选择填充,效果比拉伸会好
在无提示词中,需要将控制模式修改为 ControlNet为主
而预处理器方面,有分以下几种:
在仅局部重绘中,添加上 lama算法(基于傅立叶卷积的图像修复算法)
效果方面会更好
在仅局部重绘
中,不会对蒙版区域外作修改,而 重绘-全局融合算法
会对整张图作修改。按实际选用
分块检测
插件列表:
- Segment Anything:https://github.com/continue-revolution/sd-webui-segment-anything 分块插件,重绘的插件?
- inpaint-anything:https://github.com/Uminosachi/sd-webui-inpaint-anything segment-anything的升级版?
分块检测的功能是将图片中物品、人物等用不同的色块进行标注:
光线控制
光线控制模型:lighting-based-picture-control-controlnet
地址及说明:https://civitai.com/models/80536/lighting-based-picture-control-controlnet
强烈建议花时间看模型说明,因为光线在图片的作用中很大,不同光线可以延伸出不同风格的图片
灰度图可以很好的反映出图片光线的高光(越接近白的越亮)、暗部(反之)
在处理光线时可以先使用ControlNet的Segmentation (语义分割)
,转换图片为色块图片,
添加上 control_sd15_seg
模型处理效果会更好?(经测试好像加不加都一样,并且加了之后处理速度变慢)
control_sd15_seg 下载:https://huggingface.co/lllyasviel/control_v11p_sd15_seg/tree/main
在这里使用光线模型出图时,
所用的测试图如下:需要给原图增加月亮
在文生图中,PS处理过后的色块图设置在 ControlNet 单元1 中,并添加光线控制模型达到控制图片的光线
而原图则添加到 ControlNet 单元2中,使用 Segmentation 转换成色块,达到总体构图不变
最终效果如下:
在这里发现图片的X Y得值相加,得到的图片与其他总值一样的图片光线明亮度基本一致
而且 Controlnet 的介入时间、退出、权重对出图都有明显的影响
比如引导终止时机(结束控制步数)的增加与变化,对构图(画面的细节)的影响不大,
而权重的大小则会对构图影响较大,
直观的看图,在低权重下,引导终止时机长短,均出现了2个月亮,而权重高时则只有一个月亮
而我在测试引导介入时机时,在其他设置一样时,随着介入时机的增大,出图开始出现两个月亮,与低权重的情况下相似
然后测试介入终止时机时越来越小,发现几乎没有变化:
于是测试了终止时机越来越大时,发现对构图也是几乎无影响,数据如下:
目前有一个结论是,引导介入时机相当于是告诉你要画什么的时间,
当数值调大后,相当于画到一半才告诉你要画月亮,这个时候再去改为月亮就会在已有的画上强行修改(比如就是画面中出现了2个月亮),而引导终止时机影响不大的原因是,已经告诉过需要什么,已经有概念,所以基本上不会再偏离。
暂无评论内容