Stable Diffusion 的 Controlnet基础知识
ControlNet是一个用于深度神经网络的控制技术,它可以通过操作神经网络块的输入条件来控制神经网络的行为。在这里,“网络块”是指常用的神经层集合,例如“resnet”块、“conv-bn-relu”块、多头注意力块等。通过克隆神经网络块的参数并应用零卷积连接层来实现ControlNet的目标。
设计原理
从文生图,到图生图,到局部重绘,到controlnet,我们从更多的维度上试图控制扩散模型的输出结果
约束分类
一、线条约束
canny边缘检测:精准的边缘检测
had边缘检测:保留轮廓细节的边缘检测
M-LSD边缘检测:对直线进行检测(主要针对建筑)
伪涂鸦:粗线条大概还原
涂鸦:可以自己创建画板,进行涂鸦,在生成图片
二、姿势约束
openpose姿态检测:对身体的骨骼进行
openpose姿态+手部检测:加上了手部骨骼,师徒解决手的问题
三、深度约束
Mida深度估算
LeRes深度估算
法线贴图
四、物品类型约束
语义分割:大江户战士(B站)
五、色彩约束
color模式
六、风格约束
clip_version
参数
反色模式
低显存优化
无提示词模式
预处理器:把图片特征处理出来
模型:让stable diffusion模型 学会理解某一类图片
权重:在多大程度上,特征图片影像生成的图片(一般0.6-1.1)
引导时机
引导介入时机:从哪里开始引导
引导退出时机:从哪里退出引导
预处理器分辨率(Annotator resolution)
阈值
low threshold
high threshold
画面缩放模式
一般情况下,我们要求controlnet用图和生成的图分辨率一致
分类
信封模式(裁切原图)
缩放模式(扩展原图)
仅调整大小(缩放)
画布模式
创建空白画布
画布宽度
画布高度
预览
预览预处理结果
隐藏预处理预览
建筑推荐的预处理器
Canny(边缘检测):接近淘汰
Depth(图片深度信息)
depth_leres(LeReS 深度图估算)
depth_midas(MiDaS 深度图估算)
depth_zoe(ZoE 深度图估算)→常用
→对应模型
control_v11f1p_sd15_depth
Lineart(线稿分析)
Lineart_anime(动漫线稿提取)
Lineart_coarse(粗略线稿提取)
Lineart_realistic(写实线稿提取)→常用
Lineart_standard(from white bg & black line)
→对应模型
control_v11p_sd15s2_lineart_anime
control_v11p_sd15_lineart
Mlsd(直线线条检测)
Seg(语义分析)
seg_ofade20k(语义分割 - OneFormer 算法 - ADE20k协议)
seg_ofcoco(语义分割 - OneFormer算法 - COCO协议)
seg_ufade20k(语义分割 - UniFormer 算法 - ADE20k协议)
→对应模型
control_v11p_sd15_seg
总结:
深度图是为了区别建筑的前后体量关系
线稿是为了控制形体轮廓的生成
语义分割是为了生成建筑的区域
弄清楚三者控制的项目,以及掌握起始与终止步数的原理,才能更好的生成我们想要的图片
提示词
在生成建筑图时
使用建筑模型:使用 自然语言(像小作文一样的话语) 会更好的生成建筑图
使用人物模型:使用 单词(只输入关键词) 会更好的生成建筑图
线稿图使用结论
对于线稿图
线稿不是越细致越好,避免涂抹阴影,只留轮廓线和结构线
对于Controlnet
Canny尽量不要在使用
模式选择:自由模式>均衡模式>以提示词为主
推荐使用:lineart>mlsd>normalbae>scrible>softedge
Reference预处理
reference_adain(仅参考输入图-自适应实例规范)
reference_adain+attn(仅参考输入图-自适应实例规范+Attention链接)
reference_only(仅参考输入图)
概要
它没有模型,只需要更新Controlnet到最新版本,预处理器里就会有三个选项
底模非常重要,因为它会识别并根据底模数据来生成新的图,如果底模不合适,会出来过曝或者过暗的图片
概要
生成的图片质量:reference_adain+attn>reference_adain>reference_only
生成图片的与参考图的相似度:均衡>自由模式>提示词为主
均衡模式下,参数越低,越接近设计底图,参数越高,越接近参考图