ControlNet
是一种通过添加额外条件来控制扩散模型的神经网络结构。它提供了一种增强稳定扩散的方法,在文本到图像生成过程中使用条件输入(如边缘映射、姿势识别等),可以让生成的图像将更接近输入图像,这比传统的图像到图像生成方法有了很大的改进。
在 Stable Diffusion 的基础上使用 ControlNet 就相当于给 Stable Diffusion 加了一个插件用于提供更精细的生成控制。
下面介绍几种可以用来控制人物身体姿势的方法:
通过 Canny 模型可以对原始图片进行边缘检测,从而基于原始图片生成对应的线稿图。接着,在基于线稿图和提示词来生成具有同样线稿结构的新图,这样就实现了对新图的控制。当我们把这样的能力用在画 AI 模特上时,就可以实现对小姐姐姿势的控制了。
这里我们来介绍一下如何在 Stable Diffusion WebUI 中使用这个功能:
1)在 WebUI 中找到 ControlNet 面板,用目标姿势图生成线稿图
整个过程如下图所示:
使用 ControlNet 的 Canny 模型生成线稿图
此外,需要注意的是:
2)在线稿图的基础上,使用文生图生成同样姿势的新图
在 ControlNet 面板做完上面线稿图的生成,再确认一下『启用(Enable)』已经选中,我们就可以开始常规操作画图了。
在提示词输入框、负向提示词输入框分别填好内容,在参数设置面板调整好参数,点击『产生(Generate)』即可。如下图:
根据 canny 线稿图生成新图
可以看到我这里的原图、Canny 线稿图、生成的新图对照如下,新图姿势和原图保持了一致:
<<< 左右滑动见更多 >>>
通过 HED 模型也可以对原始图片进行边缘检测,从而基于原始图片生成对应的线稿图,但是边缘更柔和。
在 Stable Diffusion WebUI 中使用这个功能的过程和上面使用 Canny 模型基本上一致,唯一的区别就是:
其他步骤完全一样。这样我们生成 HED 线稿图来控制后续出图的姿势,如图:
使用 ControlNet 的 HED 模型生成线稿图
这里的原图、HED 线稿图、新图对照如下:
<<< 左右滑动见更多 >>>
通过 Depth 模型可以提取原始图片中的深度信息,提取原始图片深度结构对应的深度图,这个深度图里,越亮的部分越靠前,越暗的部分越靠后。然后,基于深度图和提示词就可以生成具有同样深度结构的新图了。这样也可以实现对小姐姐姿势的控制。
和上面一样,在 Stable Diffusion WebUI 中使用这个功能的过程和使用 Canny 模型基本上一致,唯一的区别就是:
这里提到的 Depth 深度检测的预处理器有几种选择:depth_leres、depth_midas、depth_zoe,它们有什么区别呢?
参考:ZoeDepth is an AI Model for Multi-Domain Depth Estimation[1]
其他步骤完全一样。这样我们生成 Depth 深度图来控制后续出图的姿势,如图:
使用 ControlNet 的 Depth 模型生成深度图
这里的原图、Depth 深度图、新图对照如下:
<<< 左右滑动见更多 >>>
通过 Normal Map 模型可以提取原始图片的凹凸信息,生成一张原图的法线贴图,这样便于 AI 给图片内容进行更好的光影处理,它比深度模型对于细节的保留更加的精确。法线贴图在游戏制作领域用的较多,常用于贴在低模上模拟高模的复杂光影效果。
和上面一样,在 Stable Diffusion WebUI 中使用这个功能的过程和使用 Canny 模型基本上一致,唯一的区别就是:
这里提到的 Normal Map 法线贴图的预处理器有几种选择:normal_midas、normal_bae,它们有什么区别呢?
参考:ControlNet v1.1[2]
其他步骤完全一样。这样我们生成 Normal 法线贴图来控制后续出图的姿势,如图:
使用 ControlNet 的 Normal 模型生成法线贴图
这里的原图、Normal 法线贴图、新图对照如下:
<<< 左右滑动见更多 >>>
通过 OpenPose 模型可以检测原始图片的骨骼形态信息,从而生成一张原图的骨骼姿势图。接着,再基于骨骼姿势图和提示词来生成具有同样骨骼姿势的新图,这样就实现了姿势控制。
和上面一样,在 Stable Diffusion WebUI 中使用这个功能的过程和使用 Canny 模型基本上一致,唯一的区别就是:
其他步骤完全一样。这样我们生成 OpenPose 骨骼姿势图来控制后续出图的姿势,如图:
使用 ControlNet 的 OpenPose 模型生成骨骼姿势图
这里的原图、OpenPose 骨骼姿势图、新图对照如下:
<<< 左右滑动见更多 >>>
除了上面介绍的 ControlNet 的各种模型可以用来控制人物的身体姿势外,我们还可以用图生图的方式来控制人物的身体姿势。
下面我们来介绍一下这个流程:
这个流程如下图所示:
使用图生图生成姿势一致的新图
最后我们生成的新图如下图所示,姿势与原图基本一致,但是细节上还是有挺大的调整空间:
新图
[1]
ZoeDepth: https://www.marktechpost.com/2023/03/03/deep-learning-for-deep-objects-zoedepth-is-an-ai-model-for-multi-domain-depth-estimation/
[2]
ControlNet v1.1: https://github.com/lllyasviel/ControlNet-v1-1-nightly