这类问题我又碰上了一次。上传一张半身人像做姿态控制,预处理结果只有零星几个点,出图完全没有按照姿势生成。

第一反应是「用了全身模型处理近景照」,验证下来不成立。

原因不止一个,得分开看。预处理器对手部与半身识别能力有限;图片分辨率过低或人物占比太小;预处理结果没有做可视化检查。

保存预处理结果并肉眼确认

python -c "from PIL import Image;Image.fromarray(pose).save('pose.png')"

随后换成支持半身与手部的预处理器

python -c "print('use openpose_hand or dwpose')"

裁剪人物区域后再做姿态估计

python -c "from PIL import Image;Image.open('a.jpg').crop((100,0,700,900)).save('crop.jpg')"

适当提高控制权重并降低结束步

image = pipe(prompt, controlnet_conditioning_scale=0.9).images[0]

隔了一天再看,现象没变,说明不是偶发。

那几天正好在做别的变更,先把时间线对齐才敢动手。

改完先别撤,确认这几项。预处理图里骨架完整覆盖人体,出图姿势与参考照一致,手部也不再错位。

提醒一点。姿态控制的关键在预处理质量,骨架都没抽对时再怎么调权重也没用,先看图再调参。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189