这类问题我又碰上了一次。上传一张半身人像做姿态控制,预处理结果只有零星几个点,出图完全没有按照姿势生成。
第一反应是「用了全身模型处理近景照」,验证下来不成立。
原因不止一个,得分开看。预处理器对手部与半身识别能力有限;图片分辨率过低或人物占比太小;预处理结果没有做可视化检查。
保存预处理结果并肉眼确认
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]
隔了一天再看,现象没变,说明不是偶发。
那几天正好在做别的变更,先把时间线对齐才敢动手。
改完先别撤,确认这几项。预处理图里骨架完整覆盖人体,出图姿势与参考照一致,手部也不再错位。
提醒一点。姿态控制的关键在预处理质量,骨架都没抽对时再怎么调权重也没用,先看图再调参。这类问题最好一次改到位,反复小改反而容易把原因搅混。