3D Openpose和Controlnet之间的配合
一、环境调整
先设置好controlnet的层数为4,然后重新加载UI,否则默认只有1层,就只有骨架,手脚的姿势控制就有问题。
二、动作生成
然后再3D Openpose里设置好随机动作,然后选择视图大小和角度,如果需要可以微调各种姿势。我在这里调整了高1024,宽768.一个跑动的姿势,点击“生成”。
接着在controlnet中做好准备,每一层先确保为“未启用”状态,然后从3D Openpose中将姿势发送到Controlnet中,比如发送到“文生图”。

三、Controlnet设置
注意发送过来的每一层都不同。因为我们的姿态结果已经生成了,因此不需要选择“预处理”,直接对每一层指定功能就可以了。
第一层是骨架,选择openpose

第二层是手脚的前后位置,选择depth

第三层是手脚的立体形状,选择normal

第四层是手脚的边缘线条,选择canny

注意这四层在Controlnet中是1-2-3-4,但在3D Openpose里是0-1-2-3,分别有英文Pose-Depth-Normal-Canny
最后Controlnet中启用所有四层,开启完美像素,Controlnet优先,就可以根据提示词生成了。
四、注意事项
(一)在发送新的一个姿势时,可能会接收不到。
需要手动在Controlnet中清除掉所有上一次的图片,并将启用改成为启用。再重新发送过来就可以了。
(二)不要一次性启用全部4层Controlnet
同时启用的话,因为限制太多,生成的常常是支离破碎的,可以考虑第一次文生图先骨架,然后再用产生的结果用图生图叠加其他的Controlnet。同时套用两层Controlnet会让渲染出图的速度慢好几倍。
(三)姿势设计要谨慎
同时,姿势的设计,还是需要避免一些身体部位的重叠的。否则需要多抽一些卡出来。然后选择较为满意的,重新利用3D Openpose图生图来进一步优化。

五、效果图
从效果图中,不难看出,总体的姿势控制还是比较好的,除了有个别出现腿多出来的情况,基本属于发挥稳定的情况。




下面是其中一张渲染放大的效果


六、问题解决
刚开始那张双腿出现严重问题的姿势,我们加了两层Controlnet:pose和depth,并设置权重为1.35,进行严格的控制。出图率得到了较好的保障(批量4张,有一张图腿部出现严重问题,其他还算可以用成功率75%),但是渲染时间比较长。





如此,可以说Controlnet的技能基本掌握了。