Stable Diffusion 基础:ControlNet 人体姿势控制详解
在 AI 绘画中精确控制图片是一件比较困难的事情,不过随着 ControlNet 的诞生,这一问题得到了很大的缓解。
OpenPose 可以控制人体的姿态、面部的表情,有时候还能够解决坏手的问题(不要抱太大期望,下文会有介绍)。OpenPose 可以直接复制一张图片的人体姿势,也可以通过骨架图生成人体图片。下面我们就以'文生图'为例,来看下如何使用 OpenPose。
安装 ControlNet
一般的 Stable Diffusion WebUI 整合包或者镜像都已经安装了这个插件,如果你的还没有安装,需要先安装它。已经安装好的跳过这一小节即可。
方法是打开 Stable Diffusion WebUI 前端页面,进入'扩展插件'-'从网址安装',在'扩展插件的 git 仓库网址'中输入 https://github.com/Mikubill/sd-webui-controlnet,然后点击'安装',待安装完成后重启 SD WebUI。各种 ControlNet 模型和预处理器一般会在首次使用时自动下载安装。
如果访问 github 不畅,也可以通过别的方式下载插件包和对应的模型,然后自己部署到 stable-diffusion-webui 中。
具体部署路径如下:
- ControlNet 插件:
/extensions - ControlNet 模型:
/extensions/sd-webui-controlnet/models - ControlNet 预处理器:
/extensions/sd-webui-controlnet/annotator/downloads
注意需替换为你自己的 SD WebUI 部署路径,如果你的 SD WebUI 启动命令中配置了模型的路径,或者做了文件夹的软链接,也需要根据实际情况进行调整。
安装成功后,在'文生图'、'图生图'界面的下方会出现 ControlNet 区域,点击右侧的展开按钮,下边有 4 个 ControlNet 单元,也就是我们可以同时使用 4 个 ControlNet 模型控制出图的效果,一般也就够了。
如果你的 ControlNet 只有 1 个单元,或者你想修改这个单元的数量,可以到'设置'中调整,找到'多重控制网:最大模型数量',更改之后别忘了重启。
复制图片姿势
进入'文生图'界面,只需要选择一个你喜欢的大模型,填写简单的提示词就可以了。
然后在页面下方的 ControlNet 中设置 OpenPose,按照下图所示的步骤操作:
- 这里只需要设置 1 个 ControlNet 单元,选择第一个就行了。
- 上传你要复制姿势的图片。
- 启用这个 ControlNet 单元,一般选择图片后会自动勾选。
- 选中'完美匹配像素',让 ControlNet 自动计算一个合理的内部图片处理空间,涉及底层技术细节,无脑勾选就行了。
- Control Type 选择 OpenPose。
- 预处理会自动带出,不用修改。它是用来从参考图片中提取骨架图的。
- 模型会自动带出,不用修改。它是在生成图片时根据骨架图控制人体姿势的。
- 这个按钮可以将参考图片的尺寸带到'文生图'参数中,如果参考图片的高宽没有超过 1024,建议使用,超过 1024 的出图会比较慢,可以按照图片比例手动设置'文生图'中的高宽参数。
最后点击'生成'就等着出图吧。这里会输出两张图片,一张是使用大模型加 OpenPose 生成的图片,另一张是根据参考图片生成的骨架图,我们可以把这个骨架图复制出来,以后继续使用或者分享给别人使用。
注意看这个骨架图中是有一点手的形状的,所以理论上,如果我们在骨架图中描绘了手的形状,生成图片中的手是会受到一定约束的。再来一张总统挥手的照片,这只手看着还不错,不过也是生成了很多张之后挑选出来的。
生图参数示例:
Prompt: a man in a suit waves from a plane


