动作 AI · 5-5 · 最终任务

从“跳舞!”到舞蹈视频 — 提示词如何变成助手的舞蹈

这是从 CCTV 小巷里的火柴人开始的任务的最后一站。“跳舞!”这几个字穿过词袋变成火柴人的舞蹈,这段舞蹈再变成姿态图,穿上助手的模样。我们会逐帧打开真实视频,仔细推敲画面上显示的“动作一致率 76.5%”说明了什么、又没有说明什么。

6 个步骤从“跳舞!”到视频的流水线
240 帧分析的视频(1280×720,每秒 24 帧,10 秒)
76.5%视频中显示的一致率(240 帧始终是同一个值)
−0.92 秒助手比火柴人先动的时间差(代码 2)
77.6%晚 1 秒跟跳同一段舞的关节距离分数(代码 1)
100%按时间差对齐之后的分数(代码 1)
1任务

最终指令 —“用一句‘跳舞!’让助手跳起舞来”

到 5-4 为止,火柴人已经能听懂语言跳舞了。但它还只是一副骨架。最后的任务,是给这副骨架穿上人的模样,做成视频。担任模特的是助手。

[SYSTEM] 07:30 · 已收到 5-4 完成报告。最终指令:提示词 → 舞蹈视频。附件:助手参考图像、视频一段(10 秒)、分镜表两张。
博士
博士一张助手的照片负责外貌,火柴人的舞蹈负责动作。以这两者为条件,视频生成模型逐帧重新画出助手。
助手
助手看了视频,我怎么穿着偶像的衣服?参考图像里明明是实验服……还有,画面上显示着“动作一致率 76.5%”。这算好还是不好?
果蝇研究员
果蝇研究员好问题!得先查清这个数字是怎么算出来的。我们把视频逐帧拆开看看,再亲手测一测一致率。
研究室机器人240 帧视频分析完毕。数字区域从头到尾一次都没有变过。
粉色头发、藏青色刘海条纹、两侧扎着丸子头,穿白色实验服和浅紫色连帽衫,牛仔裤配浅紫色运动鞋的助手正面全身像
助手的参考图像(角色设定图正面)。与视频中服装不同这一点将在第 3 节讨论。
2串成一线

从“跳舞!”到视频 — 六个步骤串成一线

点击格子即可查看该步骤的说明。第 1~4 步是本系列亲手实现的计算,第 5~6 步由给定的视频展示。

步骤输入输出本系列的篇目
1~2 文字漏斗“跳舞!”共享地图上的一个点(8 格)5-4 第 2·3 节
3 动作生成地图上的点火柴人动作(帧 × 13 个关节)5-3 第 6 节,5-4 第 5 节
4 姿态图关节坐标黑底彩色线条图(每一帧)5-1 第 3 节的反方向
5 基于姿态的生成参考图像 + 姿态图助手摆出该姿势的一帧本篇第 3 节
6 视频一系列帧舞蹈视频本篇第 4 节
3画出助手

给姿态图穿上助手的模样 — 从噪声中取出一帧

基于姿态的视频生成模型大多是扩散模型。它从随机噪声开始,每一步去掉一点噪声,同时参考“外貌像参考图像、姿势像姿态图”这两个条件。拖动滑块,把噪声去掉看看。

外貌编码器提取参考图像中脸、头发、衣服的特征,让模型在绘制过程中持续参考(ReferenceNet 类)
姿态引导器用小型卷积神经网络把姿态图折叠后叠加到噪声上。“这里是手臂”从一开始就定下来了
时间层让前后帧互相参考,使衣服颜色和头发不会闪烁

这张图与真实生成的区别

这个画面是把完成的帧(视频中的助手)按比例混入噪声,展示“每一步剩下的原始信号份额”(√ᾱ 的计算遵循真实扩散模型的调度表)。真实模型是在把图像压缩变小的潜在空间里处理噪声,并在每一步预测“这里的噪声有这么多”再减掉 [R1]。用参考图像和姿态让人物动起来的结构,以 Animate Anyone [R2] 系列为代表。给定的视频是用什么模型和设置制作的,视频中并没有标注。

参考图像中的助手穿着实验服,视频里的助手却是偶像服装。基于姿态的生成原则上会照搬参考图像的外貌,所以这段视频可能是用另一张穿偶像服装的参考图像(例如与下方“助手独舞 12 格”相同的造型)制作的,也可能是用文字提示词更换了服装。究竟是哪一种,仅凭视频无法得知。
穿偶像服装的助手独自跳舞的 12 格:挥手、双手合在胸前、转一圈、背影、抬膝等
助手独舞 12 格。与视频中的助手服装相同。
4视频

打开视频看看 — 火柴人 5 秒,助手 5 秒

视频并没有把两段舞并排,而是前后接在一起(0~4.96 秒为火柴人,4.96~10 秒为助手)。点击“并排查看”,同一个文件会在两个画面中播放,把同一时刻对照起来。调节右侧画面的时间差,找出两段舞对上的时刻吧。

原样播放(10 秒)
分镜表 · 火柴人(分镜位置为把 5 秒分成 12 格的近似值,点击可跳到该时刻)
第 1 张分镜表 第 1 格第 1 张分镜表 第 2 格第 1 张分镜表 第 3 格第 1 张分镜表 第 4 格第 1 张分镜表 第 5 格第 1 张分镜表 第 6 格第 1 张分镜表 第 7 格第 1 张分镜表 第 8 格第 1 张分镜表 第 9 格第 1 张分镜表 第 10 格第 1 张分镜表 第 11 格第 1 张分镜表 第 12 格
分镜表 · 助手
第 2 张分镜表 第 1 格第 2 张分镜表 第 2 格第 2 张分镜表 第 3 格第 2 张分镜表 第 4 格第 2 张分镜表 第 5 格第 2 张分镜表 第 6 格第 2 张分镜表 第 7 格第 2 张分镜表 第 8 格第 2 张分镜表 第 9 格第 2 张分镜表 第 10 格第 2 张分镜表 第 11 格第 2 张分镜表 第 12 格
速度
查看

一开始声音是关闭的。点击“打开声音”即可听到音乐。在并排查看中,把时间差调到 0.9 秒附近试试。

4.96 秒场景切换处(第 119 帧,代码 2)
−0.92 秒动作幅度相关性最大的时间差:助手先动(代码 2,相关系数 0.48)
左右相反火柴人指向画面右侧,助手指向画面左侧(分镜表第 7~8 格与第 4~5 格)
带有音乐AAC 立体声。除画面外还包含声音
5一致率

推敲“动作一致率 76.5%”

先确认视频中的数字是什么,再亲手测一测一致率。即使是同一段舞,测量方法不同,数字也会相差很大。

确认的内容(代码 2)结果含义
数字区域是否逐帧变化与第一帧的像素差最大 0.07240 帧始终是 76.5%。并不是逐帧重新计算的值
前一场景与后一场景的一致率框同一时刻之间的平均差 0.16同一个叠加层在两个场景中各播放了一次。下方粉色条的起伏也只是装饰
计算方式说明无拿什么和什么、用什么分数比较,仅凭视频无法得知

亲手测一测 — 同一段编舞,不同的时机(说明用计算)

左边是 5 秒的编舞(挥手 → 指向 → 张开双臂抬膝 → 举起双臂),右边是晚一些跟跳同一段编舞的舞蹈。关节距离分数是对齐骨盆后,每个关节 exp(−距离²/2·0.1²) 的平均值;肢体方向分数是 8 根骨骼方向的余弦相似度的平均值。

随分数变化的助手表情
跟跳一方的延迟1.00 秒

代码 1 的结果

情形关节距离分数肢体方向分数
同一段舞,同一时刻100.0%100.0%
晚 0.33 秒跟跳90.8%96.4%
晚 1.0 秒跟跳77.6%87.8%
左右翻转的舞82.5%88.6%
晚 1.0 秒且左右翻转78.7%86.5%
把晚 1.0 秒的舞提前 15 帧对齐100.0%—
用动态时间规整(DTW)对齐99.6%—
左右也翻转的舞:只对齐时间 / 同时还原左右79.6% / 100.0%—

如何解读 76.5%

  1. 同一段舞晚 1 秒,就会变成 77.6%。这是代码 1 的例子。视频中的两段舞相差约 0.9 秒,而且左右翻转。76.5% 也许正是原样测量了这种错位的数字,但由于没有标注计算方式,无法确认。
  2. 分数种类不同,数字也不同。同样晚 1 秒,用关节距离算是 77.6%,用肢体方向算是 87.8%。谈一致率时,必须同时说明比较的是什么。
  3. 对齐时间后结果就不同了。找出时间差并对齐,或者使用动态时间规整,同一段舞就会接近 100%。“舞跟得好不好”和“同一时刻是不是同一个姿势”是两个不同的问题。
6总结

火柴人走过的路 — 五个任务一页看完

CCTV 小巷里的一个火柴人,先变成了特征,又变成了生成的材料,被折叠又被展开,与语言配成对,最后变成了助手的舞蹈。点击卡片即可前往对应篇目。

贯穿整个系列的一句话
  • 一切都是数字:无论是 CCTV 画面、关节还是句子,都要先变成数字才能计算。
  • 好的表示就成功了一半:像 4 个特征(5-1)、角度(5-2)、16 个潜在数字(5-3)、共享地图(5-4)那样,用什么来表示决定了性能。
  • 识别和生成是把同样的数字朝不同方向使用:曾经用来抓乱扔垃圾的火柴人,变成了舞蹈的骨架。
最后留下的问题
  • 在相信数字之前:99.7% 是合成数据上的结果,76.5% 没有标注计算方式。数字旁边永远应该写明“比较了什么、怎么比较的”。
  • 人的责任:乱扔垃圾判定的最终确认(5-1)、真实人物动作与外貌的使用同意(5-2·5-5),都由人来负责。

Colab 代码 —— 亲自运行本页内容

两段代码都只使用 Colab 默认安装的库。“下载笔记本(.ipynb)”后,在 Colab 中通过文件 → 上传笔记本打开,或者复制后粘贴到新笔记本的单元格中。

代码 1 · 动作一致率怎么测对应第 5 节 · numpy · CPU 约 5 秒

生成一段 5 秒的编舞,再与晚一些跟跳或左右翻转的舞用两种分数进行比较。其中也包括时间对齐和动态时间规整(DTW)。想换成自己的数据把 dance_seq 替换为从两段视频中用姿态估计提取的关节坐标(帧, 13, 2),分别放入 A 和 B。

运行结果(2026-10-05 运行,numpy 2.4 · CPU)。不使用随机数,任何时候运行结果都相同。
代码 2 · 把视频拆成数字来看(OpenCV)对应第 4·5 节 · numpy、OpenCV · CPU 约 3 秒 · 需要视频文件

测量视频的分辨率与时长、场景切换、一致率数字区域的变化以及两个场景的时间差。第 4·5 节的视频分析数字就出自这里。视频文件请把与本页所含相同的 match_score_video.mp4 上传到 Colab 使用。

运行结果(2026-10-05 运行,numpy 2.4 · OpenCV 4.13 · CPU)。同一个视频任何时候运行结果都相同。

AI 应用提示词 —— 以这段代码为起点

这是粘贴到 ChatGPT、Qwen、Claude 等 AI 助手中的提示词。点击“复制”,所选代码会一起附在提示词后面。把〔 〕里的内容换成你自己的情况即可。

一起附上的代码

AI 的回答只是起点。它提出的论文、数值和库函数,务必对照原文和官方文档核实。使用有真人出镜的视频时,先确认拍摄同意和个人信息处理规定。

术语表

与正文中黄色虚线下划线相同的词典。点击节名即可跳到首次出现的位置。

比喻合集 —— 以及比喻失效之处

比喻是理解的第一步,也可能是误解的种子。与人类知觉相比的比喻标注了强度。直接 有证据表明实际上在做同样的事 · 部分 只有部分性质相似 · 无 尚不知道有对应的东西

概念日常比喻人类知觉比喻比喻失效之处
基于姿态的生成先摆好人体模特的姿势,再给它穿上衣服拍照部分人看到动作时,会联想到做这个动作的特定人物人体模特身上的衣服始终不变,但生成模型每一帧都重新画衣服和脸,所以可能会有细微差别
参考图像演员的形象照无形象照里没有的背影、手指由模型凭空编出。编出来的部分可能与本人不同
姿态图舞谱(编舞记录)无编舞记录由人来阅读和诠释,而姿态图只包含关节位置。表情、手指、节奏都没有
动作一致率KTV 打分无像 KTV 打分那样计算方式被隐藏时,光看数字无法判断好坏。先要弄清拿什么和什么、怎么比较
时间对齐(DTW)把两个人节拍错开的舞蹈视频按节拍重新剪辑部分即使节拍稍有错开,人也能认出是“同一段舞”DTW 不改变顺序,只做拉伸和压缩。动作顺序变了的舞,它对不上

作者简介与参考文献

E-1 作者简介 · E-2 学术参考文献 · E-3 图片与数字的出处

E-1 作者简介

Ahn Sangsun(M-Robo 株式会社代表)

曾任职于韩国电气安全公社、每日经济新闻,现创办每日经济的外部创业公司 M-Robo 株式会社并担任代表。M-Robo 株式会社是一家以媒体公司内部创业起步的媒体创业公司,曾为国民日报提供机器人记者(StockBot)服务,并为韩国互联网振兴院、韩国言论振兴财团、韩国广播通信电波振兴院等机构执行了多个项目。之后运营自有的 AI 新闻报纸 Money-Robo。担任代表期间,曾获得亚洲开放数据黑客马拉松冠军,并因在数据创业领域的贡献两次获得行政安全部长官奖,是人工智能和区块链领域 5 项专利的发明人及注册人。著有《AI 犯罪与自我防御》,并为韩国技术教育大学在线终身教育院开发了金融科技、统计学、人工智能领域的在线学习内容。最高学位为经济学博士(东国大学,微观数理经济学)。目前在国民大学、湖西大学等多所大学讲授数据和人工智能相关课程。详细简介

讲座

  • Ahn Sangsun (2025).《面向商业的数据科学》讲义. 韩国开放网络大学 人工智能融合学科.
  • Ahn Sangsun (2025). [K-数字] 人工智能自然语言处理. STEP(智能职业培训平台),韩国技术教育大学在线终身教育院.
  • Ahn Sangsun (2024). [K-数字] 金融科技数据分析基础. STEP(智能职业培训平台),韩国技术教育大学在线终身教育院.

STEP 课程链接:link.step.or.kr/1qyVoJ · link.step.or.kr/M9na9N · link.step.or.kr/brqEyc
如因网站改版无法正常访问,请访问 www.step.or.kr。

论文与报告

  • Ahn Sangsun (2025). 利用国民养老保障面板数据的家庭支出预测模型研究:基于人工智能模型的方法.《未来社会》, 16(2). 原文
  • Ahn Sangsun (2025). 利用国民养老保障面板数据的家庭支出预测模型研究:人工智能方法. 国民养老保障面板学术会议报告资料(2025.05.13),国民年金公团 国民年金研究院. 报告资料
  • Ahn Sangsun (2025). 基于 SNS 文本的疑似毒品交易检测算法研究:以模式与语境分析为中心.《未来社会》, 16(1). 原文
  • Ahn Sangsun (2024). 面向金融领域异常检测模型安全的基于统计的对抗性数据应对方案:实证分析与模拟结果.《未来社会》, 15(3). 原文
  • Ahn Sangsun (2024). 利用人工智能、基于虚拟角色特征的 SNS 帖子检测解决方案. 2024 Summer Newmedia Party 海报发表(2024.06.19),首尔媒体研究生院大学.
  • Ahn Sangsun (2024). 利用工伤面板数据的机器学习模型. 第 10 届工伤保险面板学术会议海报发表(2024.05.17),勤劳福祉公团 勤劳福祉研究院.
  • Ahn Sangsun (2024). 虚拟资产时间序列数据的分析与预测:时间序列模型与人工智能模型的比较及改进建议.《未来社会》, 15(1). 原文

E-2 学术参考文献

  1. [R1] Ho, J., Jain, A., & Abbeel, P. (2020). Denoising diffusion probabilistic models. Advances in Neural Information Processing Systems 33. arXiv:2006.11239 — 第 3 节
  2. [R2] Hu, L., Gao, X., Zhang, P., Sun, K., Zhang, B., & Bo, L. (2024). Animate Anyone: Consistent and controllable image-to-video synthesis for character animation. CVPR 2024. arXiv:2311.17117 — 第 2·3 节
  3. [R3] Cao, Z., Simon, T., Wei, S.-E., & Sheikh, Y. (2017). Realtime multi-person 2D pose estimation using part affinity fields. CVPR 2017. arXiv:1611.08050 — 第 2 节(姿态图的彩色线条格式)
  4. [R4] Sakoe, H., & Chiba, S. (1978). Dynamic programming algorithm optimization for spoken word recognition. IEEE Transactions on Acoustics, Speech, and Signal Processing, 26(1), 43–49. doi:10.1109/TASSP.1978.1163055 — 第 5 节(动态时间规整)
  5. [R5] Lin, T.-Y., Maire, M., Belongie, S., Hays, J., Perona, P., Ramanan, D., Dollár, P., & Zitnick, C. L. (2014). Microsoft COCO: Common objects in context. ECCV 2014. arXiv:1405.0312 — 第 5 节(基于关节距离的分数 OKS 的出处)

E-3 图片与数字的来源

  • 助手角色设定图、表情设定图、两张分镜表、助手独舞 12 格以及舞蹈视频,均为作者制作的素材
  • 第 4·5 节的视频分析数字,是用代码 2 直接测量视频得到的值。分镜表上的时刻是把 5 秒分成 12 格的近似值
  • 第 5 节的一致率计算使用的是为说明而编排的舞蹈,并不是重新计算视频中的 76.5%
  • 第 3 节的噪声图是把噪声混入完成的帧来展示的,并不是录制下来的真实生成过程

教师指南

这是给讲师、在职培训(OJT)负责人和辅导老师的授课指南。时间为预估值,请根据实际课堂调整。本篇也可以用作系列总结课。

对象学完 5-1~5-4 的大学生、职场人士。在工作中接触生成视频和“AI 分数”的策划人员与从业者
预备知识5-1 的姿态估计、5-4 的语言 → 动作、扩散模型的基本思路(去除噪声)
学习目标① 能按顺序说明从提示词到视频的六个步骤 ② 能说出参考图像和姿态图各自决定什么 ③ 看到一致率之类的数字时,会追问“比较了什么、怎么比较的”,并能举例说明时间差如何改变分数
预计时间阅读 30~40 分钟 · 视频演示 20 分钟 · Colab 实践 25 分钟(代码 1 12 分钟,代码 2 13 分钟)

三种教学方案

讲授型 50 分钟

以系列总结为主

导入 5 分钟(第 1 节)→ 第 2 节六个步骤 10 分钟 → 第 4 节视频并排查看 10 分钟 → 第 5 节一致率实验 12 分钟 → 第 6 节系列地图 8 分钟 → 练习题 5 分钟。

在职 OJT 90 分钟

以分数验证为主

第 4·5 节 25 分钟 → 各组挑选一个“我们工作中的 AI 分数”,倒推它比较了什么、怎么比较的 25 分钟 → 用代码 2 直接测量视频 20 分钟 → 以第 3 节的服装差异为题讨论生成内容标识与授权同意 20 分钟。

1 对 1 辅导

分层推进

初学者只看第 2·4·6 节。中级学习者可以让他们用手算代码 1 中 score_dist 的一帧,并跟着走一遍 3 × 3 的 DTW 填表过程。

各节教学要点

节停下来提问操作提示
2 串成一线“其中哪些步骤是本系列亲手计算的,哪些步骤来自给定的视频?”逐个点击格子,读一读下方说明的最后一句
3 画出助手“参考图像里是实验服,为什么视频里是偶像服装?”把步骤从 0 拖到 25,再与下方的独舞 12 格对比
4 视频“两段舞的转圈分别发生在第几秒?”在并排查看中把时间差从 0 调到 0.9 秒
5 一致率“明明是同一段舞,为什么是 77.6%?怎样才能变成 100%?”在延迟 1.0 秒时点击“时间对齐”
6 总结“如果从五篇中选出一个最重要的数字,你会选哪个?”点击卡片,回到对应篇目看看

常见误解 Top 5

误解正确解释要展示的场景
只要说“跳舞!”,AI 就会理解舞蹈并做出视频这是多个步骤依次传递数字的流程。语言 → 地图上的点 → 关节坐标 → 姿态图 → 帧第 2 节
视频上显示的一致率是可靠的测量值这段视频的 76.5% 在 240 帧中始终不变,而且没有标注计算方式第 5 节上方的表格
一致率低,就说明舞没跟上同一段舞晚 1 秒也只有 77.6%。对齐时机和左右后就变成 100%第 5 节 亲手测一测
参考图像的样子会原封不动地出现原则上如此,但参考图像中没有的部分(如背影)会由模型编出,而且像这段视频一样,服装也可能不同第 3 节下方的注释
只要有姿态图就能让任何人跳舞,所以没有问题用真实人物的外貌制作视频时,需要本人同意并标明是生成内容第 6 节“人的责任”

练习题(点击展开解析)

Q1. 每秒 24 帧、10 秒的视频有多少帧?如果场景切换在第 119 帧,是第几秒?

24 × 10 = 240 帧。119 ÷ 24 ≈ 4.96 秒。

Q2. 关节距离为 0.1 时,该关节的分数 exp(−d²/2σ²) 是多少?(σ = 0.1)

exp(−0.01 / 0.02) = exp(−0.5) ≈ 0.607。距离拉开一个 σ 时,该关节约得 61 分。

Q3. 晚 1 秒跟跳同一段舞。逐帧直接比较的分数,与提前 15 帧再比较的分数分别是多少?(代码 1)

直接比较 77.6%,提前对齐后 100.0%。原来是“晚了”被当成了“错了”。

Q4. 是怎么知道视频中的 76.5% 不是逐帧计算出来的值?

数字区域的像素在 240 帧中与第一帧几乎相同(差值最大 0.07),两个场景的一致率框在同一时刻也几乎相同(平均差 0.16)。这是同一个叠加层播放了两次。

Q5. 在基于姿态的生成中,参考图像和姿态图各自决定什么?在第 3 节的噪声图中,哪个阶段主要由哪个条件负责?

参考图像决定外貌(脸、头发、衣服),姿态图决定姿势。去噪的前期(大轮廓)主要由姿态图发挥作用,后期(脸、饰品、花纹)主要由参考图像发挥作用。

Colab 作业

基础

在代码 1 中把 σ 改为 0.05、0.1、0.2,比较“晚 1.0 秒跟跳”的关节距离分数。用两句话写出 σ 如何影响分数,以及公布一致率时为什么也要说明 σ。

挑战

用 MediaPipe 从这段视频的两个场景中提取关节坐标(助手场景中失败的帧也要记录),再用代码 1 的 score_dist 和 best_shift 计算实际的一致率。把时间对齐前后的分数、还原左右后的分数与 76.5% 进行比较并报告。

难度调整与延伸学习

入门者只要有第 4 节的并排查看和第 5 节的“时间对齐”按钮,就能掌握本篇的核心
进阶让学生把 Animate Anyone 论文的结构图与第 3 节的表格(外貌编码器 · 姿态引导器 · 时间层)对应起来进行讲解
系列复习让学生用一句话分别说明第 6 节五张卡片上的数字(60.7% → 99.7%、44.2% → 0.0%、99.8%、1.90 → 0.01、76.5%)各测的是什么

全部任务完成!

到《5-5 从“跳舞!”到舞蹈视频》为止,五个任务全部完成了。下面是研究室成员们的最后一句话。

穿着偶像服装、高举双臂的助手
博士
博士从凌晨两点的小巷出发,一路走到了这里。
  • 用火柴人识别(5-1)
  • 反过来生成(5-2),折叠又展开(5-3)
  • 与语言配对(5-4),变成跳舞的视频(5-5)
助手
助手我跳舞的视频出来了!……下次我一定要请他们把一致率是怎么测的也一起写上。
果蝇研究员
果蝇研究员任务完成!这下真的可以去睡了。别忘了在首页标记完成哦!