换人视频流程记录.md

绿幕人偶 → 真人形象「换人视频」流程记录(2026-09-14)

参考素材:抖音绿幕人偶视频(1280×720 / 30fps / 内容 35s,红人偶主角 + 白人偶群演) 目标:替换全部人物形象(主角 + 5 个配角),场景换成「松下观云台」,真人写实风格 执行机:DSH 机 | 生成机:GPU 机 ComfyUI 8189(dasiwa MiniMax H3 V18 / REF2VA) 结果:两个镜头全部成功,本地生成 0 积分


一、结论先看

项结果
换人是否生效✅ 有效:主角与 5 个配角的脸型/发型/服装全部对应,未串脸、未重复、未合并
多人能力上限✅ 一次 8 张参考图(6 人物 + 1 三视图 + 1 场景)可稳住,未超 seedance2.0 的 image≤9 限制
画风控制✅ 提示词写 photorealistic real people / no 3D mannequin / no anime 后,动漫风格参考图也被真人化
水印✅ 参考图带抖音水印无需预处理,提示词声明 not_referenced 即可,成片无任何文字 logo
单镜头耗时6.4–7.8 分钟(5s / 1280×720 / 8 步 / 未开 RTX 与 FaceRefine)
成本0 积分(本地 GPU;即梦仅用于出场景图,也是 0 积分)

二、关键做法(可复现)

1. 素材准备

素材处理方式
主角三视图turnaround_prep.py 裁出正面 → pic1_front.jpg(<Picture 1> 身份锚);完整三视图留作 <Picture 2>
5 个配角三视图各自同样裁正面(必做:整张三视图喂进去会被识别成多个人)
场景即梦 text2image --model_version=5.0 --resolution_type=2k(0 积分)生成「松下观云台」空场景,要求留出开阔地面给人物活动

2. 参考图编号(本次 8 张)

序号内容作用
<Picture 1>主角正面视图主角身份锚
<Picture 2>主角完整三视图外观补充(提示词声明三视图是同一人)
<Picture 3>配角1 猫耳双马尾配角身份锚
<Picture 4>配角2 白色奥黛同上
<Picture 5>配角3 蓝白渐变汉服同上
<Picture 6>配角4 青瓷绿汉服同上
<Picture 7>配角5 双辫蓝开衫(动漫图)同上(提示词要求真人化)
<Picture 8>松下观云台场景场景锚

3. 提示词三条硬约束(缺一不可)

  1. 同一人声明:<Picture 2> … the three figures are ONE person, not three different people
  2. 真人写实覆盖:All subjects are photorealistic real people — no 3D mannequin, no anime, no illustrated look
  3. 水印排除:<Picture N> overlays: not_referenced — any text, logo or watermark in the reference images must never be reproduced + detailed_description 末尾再列一次

4. 多人镜头写法(群像稳住的关键)

5. 调用方式

import sys; sys.path.insert(0, '/home/zyw/Downloads/dasiwa-h3-research')
import v18_pipeline as p
r = p.run_pipeline(
    image_path='<主角正面.jpg>',                 # <Picture 1>
    requirement='<中文要求>',
    extra_images=['<主角三视图>', '<配角1正面>', ..., '<场景.png>'],  # <Picture 2>…
    prompt_override=open('<六段式提示词.txt>', encoding='utf-8').read(),
    width=1280, height=720, duration=5, seed=20260914, steps=8, fps=24,
    upscale_rtx=False, face_refine=False,
    topic='<主题>', variant='v1',
)

6. 多镜头拼接

printf "file '%s'\nfile '%s'\n" shot1.mp4 shot2.mp4 > concat.txt
ffmpeg -f concat -safe 0 -i concat.txt -c copy out.mp4

三、两个试水镜头

镜头设计产出
镜头 1全景群像:6 人一排面向镜头跳舞,静态机位20260914_0116_群像测试_六人全员_v1.mp4(7.5 min)
镜头 2中景推镜:主角前景中央(更大),5 配角后景弧形,镜头缓慢推进约 10%20260914_0124_试水镜头2_中景推镜_v1.mp4(7.8 min)
合成两镜拼接20260914_换人试水_主角加五配角_两镜头_10s.mp4(10.38s / 1280×720)

四、还没解决的 / 可优化

  1. 脸部相似度:是"神似 + 服装精确"而非像素级还原(H3 参考图机制的固有上限)。若要做近景大脸,建议开 face_refine=True(但耗时增至 30–60 分钟/镜头)。
  2. 动作复刻:✅ 已解决(方案 A,2026-09-14 实测) —— 只靠文字写"跳舞摆手",成片动作会与原片完全无关(第一版两个镜头就是这样)。正确做法是把原视频关键帧当作姿态参考图:
    • 在 subject_definitions 里定义:<Picture N> is a POSE, STAGING AND CAMERA REFERENCE ONLY … the featureless 3D mannequins inside it must NOT appear and must never be copied
    • 在 retention_analysis 里标注该图为 pose_reference_only,并把图中的假人列入 not_referenced
    • 在 detailed_description 里逐位置写出对应姿势(如"中间人物右臂抬起、肘部弯曲、手在肩高;两侧人物腰部前弯、头低垂")
    • 实测效果:主角抬手、两侧弯腰均成功复刻,且原帧的人偶没有被画进去
    • ⚠️ 必须同时约束人数:原帧里有几个位置,就要给几个不同的人物形象。只给 1 个配角而原帧有 2 个位置时,模型会把该配角复制成两个(实测踩过这个坑);修复后加一句 There are exactly N women in total — do not add, duplicate or quadruple any of them; each costume appears only once 即恢复正常。
  3. 人物排布:现在像"一字排开",比原片的散落群像更整齐;下一版可以让配角前后错落更随机。
  4. 时长:单镜 5s。要凑原片 35s 的节奏需要 7–8 个镜头(约 1 小时本地生成)。

五、产出位置

下载此文件