准备带有面部关键点标注的初始参考图
首先使用专业标注工具(如LabelMe或CVAT),将首帧正面清晰照片的68个面部关键点逐一标出,并导出为JSON格式文件。该文件将作为后续所有分镜的人脸拓扑基准——【缺少这一步,后续帧的人脸结构都会出现偏差】。
标注完成后,将JSON文件与首帧原图一同放入项目根目录下的“/ref_face/”文件夹,并统一命名为 face_ref.png 和 face_ref.json。这样在后续调用时能够快速定位,避免混淆。
配置Stable Diffusion ControlNet权重链路
进入WebUI界面,打开ControlNet扩展,选择“openpose”模型,但需切换至“face_only”模式——请注意,此处并非使用全身姿态图,而是将刚才生成的face_ref.json文件作为输入源。
具体操作提供了两种路径:
方法一:在ControlNet面板中勾选“Enable”,将face_ref.json上传至“Image”栏,下方“Preprocessor”选择“none”,“Model”选择“control_v11p_sd15_openpose_faceonly [e9f6a43b]”。
方法二:如果使用ComfyUI,需加载“FaceDetailer”节点组,然后将face_ref.json接入“face_kps”输入端,同时关闭“Detect Face”自动检测开关——【一旦开启自动检测,会覆盖手动标注的关键点,导致锚点失效】。
批量生成分镜时锁定面部种子与生成参数
首帧生成时需记录Seed值(例如178234),随后勾选“Always use same seed for all frames”。这一设置操作简单,直接拖入文件即可完成。
所有后续分镜的提示词开头,必须强制添加固定前缀:“master_face_id:001, face_consistency:strong, no_face_warp, no_expression_drift”。虽然略显繁琐,但能显著降低面部漂移的发生概率。
每帧的采样步数需严格控制在28至32之间。步数低于28,细节容易缺失;高于32,ControlNet会过拟合,导致嘴角僵硬、眼距压缩等问题出现。
务必注意:这三个步骤环环相扣,缺少任意一环,前期所做的标注与配置都可能失去效果。从实测结果来看,这套流程能够确保同一角色在数百帧内保持面部连贯性,几乎察觉不到帧间跳变。
