给 AI 视频准备动作参考时,先用同一片段的稳定版与原始版区分关节抖动、动作跟随迟滞和显隐闪烁。本文给出 ReShot 0.5.0 对照命令、动作时点记录表与已有实验的正确读法。
给AI视频准备的动作参考抖动、慢半拍,怎么办?先把原片、默认稳定处理的骨架片、关闭稳定处理的骨架片按同一时点对照:静止时看关节是否乱跳,快速动作看出手、伸直、收回是否跟上。可用 AI 视频创作平台猫斯卡开源的 ReShot 提取骨架控制视频;它负责准备参考素材,具体动作是否保留仍需逐段核看。确认是平滑造成跟随迟滞后,再取舍稳定性与动作节奏。
骨架控制视频是把人物关节与肢体连接画成随时间变化的参考视频,用于向支持该控制类型的 AI 视频生成流程提供动作条件。
怎么分清关节抖动、动作迟滞和肢体闪烁?
以角色先停住、再快速出拳的参考片为例,这是本文的排查示例,不是新增测试结果。建议先找一个能看清手腕与手肘的动作,逐帧检查以下差别。
| 看到的现象 | 应该对照什么 | 接下来怎么查 |
|---|---|---|
| 原片人物基本停住,骨架手腕却来回跳 | 同一关节连续帧的位置 | 比较默认稳定版与原始逐帧版的静止段 |
| 原片已经伸直手臂,骨架稍后才到位 | 出拳启动、手臂伸直、收回的时点 | 检查默认版是否比原始版更迟 |
| 关节或整条手臂突然消失,又突然出现 | 连线是否持续可见 | 单独记录显隐变化,不把它算成位置抖动 |
| 人物刚走进画面,骨架迟迟才出现 | 人物入画与首次检出的时点 | 排查检人频率,不先认定是关节平滑 |
ReShot 0.5.0 的文档将稳定过程分成身份追踪、可见性滞回、逐关节 One-Euro 平滑。滞回处理的是“画不画这个关节”的反复变化;平滑处理的是位置变化。文档对 One-Euro 的设计描述是静止时压住抖动、快速运动时尽快跟随,同时也把“快速动作骨架滞后”列为需要用原始输出排查的情况。
所以,骨架看起来更稳,不等于动作时点更准;肢体不再闪烁,也不能证明位置抖动已经消失。对应文档
怎样导出同片的稳定版和原始版?
以下命令依据 2026 年 10 月 12 日保存的 ReShot 0.5.0 文档及 CLI 快照。输入是本地同一份 action.mp4,建议预先剪成待查的单个镜头。环境需要 ffmpeg 和 pose 扩展;已有环境可先用 reshot --version 核对。准备环境时可安装 pip install "reshot[pose,ffmpeg]==0.5.0",首次处理需要取得姿态模型权重。
两次保持输入、帧率和尺寸设置一致,并都显式设置逐帧检人,避免把检人间隔也混入这组对照:
mkdir -p pose_compare
# 保留默认稳定链:追踪、可见性滞回、One-Euro。
reshot action.mp4 -o pose_compare/stable.mp4 --control pose --fps 24 --max-res 864 --pose-detect-every 1 --keypoints pose_compare/stable.json
# 原始逐帧输出:关闭整套稳定链。
reshot action.mp4 -o pose_compare/raw.mp4 --control pose --fps 24 --max-res 864 --pose-detect-every 1 --no-smooth --keypoints pose_compare/raw.json
这里的“稳定版”保留默认稳定机制,但检人频率已改成逐帧,不是全参数默认运行。--fps 24 设置取帧目标,ReShot 不会给较低帧率原片补帧;--max-res 864 限制输出长边。两次均未设置生成模型预设,得到的是用于诊断的骨架片,不保证已经符合某个生成模型的全部输入规格。
--pose-detect-every 默认值是 3;设为 1 表示每帧检人。它不是平滑强度。--no-smooth 则同时关闭身份追踪、可见性滞回与 One-Euro,不能把两片差异全部归因于 One-Euro。0.5.0 的 CLI 没有单独暴露“平滑强度”旋钮,不应照搬猜出来的滤波参数。命令与参数出处
正常完成后应取得两份 MP4 与两份 JSON;再核对能否播放、帧率及尺寸是否一致、关键动作是否完整。文件成功生成只是这一步的起点。
如何记录“慢半拍”出在哪里?
建议同时打开原片与两份骨架片,先对齐片头,再找相同动作事件。下面是待填写的观察表,不是已测数据;时点统一记成秒,并保留对应帧序号。
| 动作事件 | 原片时点 | 原始版时点 | 稳定版时点 | 观察备注 |
|---|---|---|---|---|
| 手腕开始向前移动 | 待填 | 待填 | 待填 | 原始版是否也已经晚了 |
| 手臂第一次伸直到目标位置 | 待填 | 待填 | 待填 | 稳定版是否额外推迟 |
| 手腕开始回收 | 待填 | 待填 | 待填 | 是否把动作转折拖缓 |
| 收回后短暂停住 | 待填 | 待填 | 待填 | 两版是否仍持续跳动 |
这张表的作用是分清“估计时已经没跟上”和“稳定后额外迟了”。如果原始版也没抓住伸直动作,关掉平滑不能补回原估计缺失的姿态。建议换用动作更清楚、遮挡更少的参考片;不要用更顺滑的轨迹掩盖漏掉的动作。
如果用 JSON 辅助观察,0.5.0 导出的格式为 reshot-pose/1,含 width、height、fps、layout 和逐帧人物数据。坐标是处理帧上的像素坐标,不是三维骨骼,也不是裁后输出坐标。手腕等关节应按 JSON 的布局对应;原始版关闭追踪后,不应靠两文件中相同的 id 数字认定是同一个人。多人镜头建议先用画面位置与动作人工确认对应关系。
现有实验能证明平滑消除了多少抖动吗?
项目技术报告准备材料中的 E2 实验,提供了比“看起来顺了”更具体的证据:五段有人片,包含走廊参考、三段生成打斗片和一段人群片;处理帧尺寸为 864×496,243—362 帧,逐帧检人。实验按同一身份轨迹比较,并在原始估计中连续可见的相同身体关节上计算位置指标。
这里的 jitter 是连续位置的二阶差分均值,单位像素,表示轨迹变化幅度;它既可能含估计噪声,也可能含真实快速运动。以下取两段展示,数值来自 E2 原始记录:
| 片段 | 原始轨迹 jitter | 加入 One-Euro 后,同一批关节 jitter | 平滑引入的平均位移 |
|---|---|---|---|
| 走廊参考片 | 25.341 px | 24.363 px | 1.384 px |
| 人群片 | 2.719 px | 2.248 px | 0.539 px |
数据来源:marketing/papers/reshot-2026-10/data/e2_pose_stabilisation.json;计算方式见同目录 exp_zero_cost.py 的 E2 部分。这是本地技术报告准备资产,不作为已发表论文背书。
这组记录说明:在这些输入与测量条件下,平滑改变了位置轨迹,但没有把快速打斗中的轨迹变化清零。报告把这种取舍解释为尽量避免快速动作跟随迟滞。表中“平均位移”不是“延迟了多少毫秒”,也不是动作正确率;这组实验不能替代前面的动作时点核看。
另外,实验脚本先追踪、再加滞回、再平滑,并固定用于计算 jitter 的关节集合。直接拿两条 CLI 命令跑出的 JSON 各算各的均值,不能自动复现这张表,因为关闭整套稳定链后,人物对应和可见关节集合也可能变化。
最后该把哪一版交给 AI 视频生成?
建议用“静止段是否乱跳”和“动作转折是否准时”共同决定。默认稳定版保住动作节奏、也压住静止乱跳时,保留它;若稳定版在关键出手处明显迟于原始版,再逐段评估原始版带来的位置跳动、显隐闪烁和人物对应问题。不要只因原始版更快到位,就整批关闭稳定处理。
如果问题集中在新人物入画,可单独比较默认检人频率与逐帧检人,保持稳定处理一致;这回答的是漏检或迟检问题。若两个版本都把手肘估错、把被遮挡手腕猜到别处,应先调整参考素材,而不是继续寻找不存在的 CLI 滤波旋钮。
最终交付应包含选定的骨架片、同源 JSON,以及记录了关键动作时点的检查表。下一步再按具体生成流程核对帧率、尺寸与时长要求,并使用其 pose 控制入口。本文完成的是动作参考排错;换角色后的动作和画面,仍需在实际生成结果里另行检查。