Skip to content

feat(MaskedMimic): 公式改 KaTeX、放大图与片段、全局核对、重写第 9 幕,整片重渲 - #640

Merged
ImChong merged 21 commits into
mainfrom
claude/maskedmimic-details-animation-video
Oct 17, 2026
Merged

ImChong merged 21 commits into
mainfrom
claude/maskedmimic-details-animation-video

Conversation

@ImChong

@ImChong ImChong commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

接 #639(MaskedMimic 笔记、十八幕动画与视频)。这个 PR 按几轮看片反馈改动画和视频,最后整片重渲。

1. 字幕与分镜里的公式改用 KaTeX

  • 字幕(papers/maskedmimic.py 的 DISPLAY):e^(−2.9)、0.1² ÷ 3、3 × 10⁻³、α、1/6 s,以及变量 z、K、T、c,都改成 $…$。变量按短语替换,不做全局替换(「30 Hz」里也有 z)。
  • stage.html:遇到 $ 就交给 KaTeX;没有公式的字幕照旧是纯文本,其它 33 篇不受影响。
  • build.py:chunks() 不再重复套一遍 DISPLAY(在其它 33 篇的 2,903 句旁白上对比过,切行结果不变);切行时整条公式留在同一行。
  • 分镜:label() / tone() 遇到 $ 改用 svgRich。

2. 放大看不清的图和片段

  • 第 3 幕图 3:竖排的三块,旁白讲到哪块就单独放大到 436 宽;第三块里「三个角色坐在不平地形上的沙发上」的小图(107 × 70),旁白念到时从原位放大成论文 PDF 里嵌的原图。
  • 第 8 幕沙发片段:中间一版曾围着沙发放大,那是把第 3 幕的反馈理解错了,已恢复原样。
  • 第 1、14–18 幕的项目页拼图:原先 2 × 2 拼在一起,现在一次只放一个(seqClip(),下面标出放到第几个)。
  • 第 2 幕图 1、第 8 幕图 5a:在对应那一段铺满整个宽度。

3. 其它看片反馈

  • 3D 地面:从一条线改成按同一套相机投影的淡色 0.5 m 网格(groundGrid())。
  • 第 8 幕:第一次讲到 VAE,先一句话交代 VAE 是什么。
  • 第 10 幕:KL 系数的点沿曲线从 0 扫到 8000 轮,带读数(原先一闪就没)。
  • 表 6:第 9、12、17 幕写明是「坐上椅子的成功率」,第 17 幕把成功的定义放到柱子上方。
  • 读音:「表 2」写成「表二」,字幕换回「表 2」;新旁白避开「从先|验」这类粘词。
  • 字幕空格:新增 SPACE_CJK(默认关),中文与字母、数字、公式之间补空格;切行不在数字和单位之间、小数中间断。

4. 全局核对与第 9 幕重写(这一轮)

  • 排版:
    • 第 11 幕右边「个部位露过位置」伸出画面 27 px 被裁掉(一列 13 → 12 宽)。
    • 第 10 幕流程图里跑的小点进了方块就藏起来、点亮边框,不再压字。
    • 第 4 幕高度图采样点裁在地面格子里,不再压到「半透明:τ」。
  • check_layout story 新增一项:文字伸出 svg 画面记为 clipped by frame edge(near 模式离边不到 3 px 也记)。前三项都查不出第 11 幕那种情况。
  • 内容核对:三个子代理对照论文 LaTeX 与 ProtoMotions v2.3 逐幕查,共 34 条;没有错的数字,改的都是说法和出处:
    • 学生能给的只有 6 个部位(第 7 节),「24 个刚体」是老师看的(第 2 幕)。
    • 老师看接下来若干帧,不是未来每一帧(第 3 幕)。
    • 高度图在附录 B;字幕把方差改成标准差 $e^{-2.9}$;高度归一化按骨盆正下方的地面(第 4 幕)。
    • 表 2–5 写明是成功率、失败标准是什么(第 14–16 幕)。
    • 论文没写的标成推测或补充:坐椅子约束哪个关节、「只在仿真角色上验证」不在论文的局限里、训练和推理的 $z$ 落在同一片。
    • 「后空翻复现不了」改成「还很难复现」;KL 调度是第四个训练技巧。
    • 笔记里同样的几处一并改。
  • 第 9 幕重写(看片反馈:先验和残差用在哪没看懂):
    • 前两段新画学生三个部件的连线图:推理时只有部分目标、编码器用不上、$z$ 从先验取;训练时 $z$ 从编码器取、KL 把编码器往先验拉。
    • 后三段讲残差(式 7)、KL(0.363)和表 6 的 96.9% → 21.1%。
  • build.py:配音遇到 429 限流时按 20、40、80… 秒退避重试(原先整次构建直接失败)。

视频

  • render.mjs chunk 四段并行整片重渲 27,253 帧,音视频时长 908.433 / 908.444 s,全片解码无错。
  • 网页版 -crf 37 压到 18.4 MB(上一版 17.4 MB),已替换笔记 media/ 里的视频。
  • 时长与大小已同步到播放器、下载链接、README、AGENTS;prepare_pages 重算 video_seconds = 908。
  • 封面没变。发布清单 028 记下这次重渲,仍未打勾。

检查

  • check_layout.mjs maskedmimic story / story near / 整片:no overlap
  • pytest:308 passed;ruff check scripts/ tests/:通过
  • 本地站点(Jekyll build + nh3 消毒):上一轮验收过动画、3 个演示和视频播放器;这一轮只改了分镜内容、文案与视频文件。

第一轮(字幕与分镜公式):上排改前、下排改后。

MaskedMimic 字幕与分镜公式改 KaTeX 前后

第二轮(图 3、图 5a、项目页片段):上排第一版、下排重渲后,依次是第 3、8、14、18 幕。

MaskedMimic 图 3、图 5a 与项目页片段放大前后

第三轮:第 3 幕沙发放大、第 4 幕地面网格、第 8 幕沙发片段、第 10 幕 KL 曲线、第 17 幕表 6。

MaskedMimic 第三轮:沙发放大、地面网格、KL 曲线、表 6

第四轮:第 9 幕的推理时 / 训练时 / 残差 / 为什么,第 2 幕的 6 个部位与组合气泡,第 11、17、10 幕。

MaskedMimic 第四轮:第 9 幕重写与全局核对

🤖 Generated with Claude Code

https://claude.ai/code/session_01LTjJA1fMqzU4ZDTDRC4VMt

- 字幕:DISPLAY 输出 $…$(e^{-2.9}、exp(-c × 误差)、0.1^2 ÷ 3、3 × 10^{-3}、α、x + v_x、1/6 s、变量 z / K / T / c),stage.html 见到 $ 交给 KaTeX,用粗体字形
- build.py:chunks() 不再重复套 DISPLAY(34 篇的 DISPLAY 都幂等,2,903 句切行结果不变),切行不切开公式、按字形算行长
- 分镜:label() / tone() 见到 $ 改用 svgRich;τ、ρ、𝓔、𝓓、α、ε、μ、z、K、T、c、S 写进 $…$;KL 读数固定在第 4500 个 epoch,z 的读数拆成静态公式 + 数字
- 测试:字幕切行不切开公式;MaskedMimic 的 DISPLAY 与分镜文字里不再有纯文本公式
- 视频 README、AGENTS.md 记下字幕公式的写法;整片待预览片段确认后重渲

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LTjJA1fMqzU4ZDTDRC4VMt
- 看片反馈:三个角色坐同一张沙发的项目页片段缩在右栏 330 宽的格子里,人太小
- 片段改从源视频第 6 s 起、围着沙发裁 620 × 496(约放大 2 倍),1.5 倍速后正好 9 s,和这一段旁白一样长
- 最后一段左边的玩具在 cue 之后淡出,片段铺满左框;右栏换成「推理:只用先验」三行文字
- check_layout(第 8 幕,story near 与整帧):no overlap

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LTjJA1fMqzU4ZDTDRC4VMt
- 第 3 幕:图 3 竖排的三块,旁白讲到哪块就单独放大到 436 宽(原先整张塞在 196 × 360),高亮框改按像素量的边界
- 第 1、14–18 幕:项目页的 2 × 2 拼图改成一次放一个(seqClip,下面标出第几个、是什么);第 16 幕讲到哪个任务就放哪个任务;以前的工作换到左边大框
- 第 2 幕图 1、第 8 幕图 5a 在对应的一段铺满整个宽度;第 2 幕最后一段旁白拆成两句,图 1 跟着「论文图 1」出现
- 第 9 幕 KL 那一段先扫一遍,再停在旁白念的残差 0.3、KL 0.363
- 字幕:SPACE_CJK 在中文与字母 / 数字 / 公式之间补空格;切行不在数字和单位之间、不在小数中间断
- 片段重剪脚本的做法、两条通用经验写进 AGENTS.md 与视频 README

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LTjJA1fMqzU4ZDTDRC4VMt
- render.mjs chunk 四段并行重渲 25,287 帧,音视频时长 842.900 / 842.900 s,全片解码无错
- 包含字幕与分镜的 KaTeX 公式、第 3 幕图 3 按块放大、第 8 幕沙发片段、项目页片段一次放一个、图 1 / 5a 铺满整个宽度、第 9 幕 KL 读数、字幕空格
- 网页版 -crf 37 压到 16.8 MB,替换笔记 media 里的视频,更新下载按钮与兜底链接的体积;视频 README、AGENTS.md、发布清单记下这次重渲

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LTjJA1fMqzU4ZDTDRC4VMt
@ImChong ImChong changed the title feat(MaskedMimic): 字幕与分镜里的公式改用 KaTeX feat(MaskedMimic): 公式改用 KaTeX,放大图 3 与项目页片段,整片重渲 Oct 17, 2026
- groundGrid():世界坐标每 0.5 m 一条线,用和角色贴图同一套相机投影,铺到 ±5 m,近实远淡,裁在框里
- 第 2、4、7、12、15、17 幕和掩码浏览器演示都换上;第 4、12 幕跟拍,格子每帧重画、往后退,看得出在走
- 第 4 幕格子停在「半透明:τ = …」那行字上面

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LTjJA1fMqzU4ZDTDRC4VMt
- 看片反馈:讲到 VAE 之后要先交代它是什么。第 8 幕第一段拆成两句:先说「VAE 叫变分自编码器:编码器把输入压成随机的潜变量 z,解码器再从 z 复原输入;用的时候,直接用先验来取 z」,再讲部分目标是欠定的
- 右栏配一张小示意图:输入 x → 编码器 → 随机的 z → 解码器 → 复原的 x̂,z 下面是先验;字幕轨补一条
- 只重新合成这两句(「从先验里取」被切成「从先 | 验」,改成「用先验来取」),整片长了 9.4 s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LTjJA1fMqzU4ZDTDRC4VMt
- 看片反馈:要放大的是第 3 幕图 3 第三块里三个角色坐沙发的小图(107 × 70),不是第 8 幕的项目页片段
- 第 3 幕第三段旁白拆成两句;念到「三个角色坐在沙发上」时从原位放大成论文 PDF 里嵌的原图(fig3_sofa.webp)
- 第 8 幕沙发片段与右栏文字恢复到 e14aec0 之前
- 旁白「表 2」会被念成「表两」,改写「表二」,字幕换回「表 2」
- 第 17、9、12 幕的表 6 写明是「坐上椅子的成功率」,第 17 幕把成功的定义(骨盆到过可坐位置 20 cm 以内)放到柱子上方
- check_layout story / story near:no overlap;pytest 308 passed

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LTjJA1fMqzU4ZDTDRC4VMt
- 25,807 帧四段并行渲染(14 分 20 秒),整片解码通过;网页版 -crf 37 压到 17.4 MB,替换笔记里的视频
- 播放器、下载链接、视频 README、AGENTS 与发布计划里的时长和大小同步;prepare_pages 重算 video_seconds = 860
- 封面没变(与上一版逐像素相同),海报沿用

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LTjJA1fMqzU4ZDTDRC4VMt
@ImChong ImChong changed the title feat(MaskedMimic): 公式改用 KaTeX,放大图 3 与项目页片段,整片重渲 feat(MaskedMimic): 公式改用 KaTeX,放大图 3 与项目页片段,地面网格与表 6 说明,整片重渲 Oct 17, 2026
…越出画面

- 第 11 幕时间轴一列从 13 改成 12 宽,右边「个部位露过位置」原先伸出画面 27 px 被裁掉
- 第 10 幕流程图里跑的小点进了方块就藏起来、点亮这一块的边框,不再压在字上
- 第 4 幕高度图的采样点裁在地面格子的范围里,不再压到「半透明:τ = …」
- check_layout story 新增:文字越出 svg 画面(fitStory 缩过的 viewBox)记为 clipped by frame edge,near 模式下离边不到 3 px 也记下

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LTjJA1fMqzU4ZDTDRC4VMt
对照论文 LaTeX 与 ProtoMotions v2.3 逐幕核对(34 条,没有错的数字,主要是说法和出处):
- 第 2 幕:全身跟踪给的是 6 个部位(双踝、骨盆、头、双手),24 个刚体是老师看的;组合段的气泡换成图 7f 的「举着双手往前走」;VR / 路径、物体 / 文字标成两种用法
- 第 3 幕:老师看的是接下来若干帧,不是未来每一帧;图 3 第二块的绿球是关节目标,不是物体
- 第 4 幕:高度图在附录 B;字幕改成标准差 e^-2.9;归一化按骨盆正下方的地面;老师 Transformer 的超参标明来自代码;影子不超过老师看的 0.5 s
- 第 5、6 幕:前五项才是指数;出生位置三块都框上;权重下限说清楚;攒够数据靠的是优先采样
- 第 9–12 幕:去掉「各走各的」、标明是我们的理解;平均最小距离写明是骨盆到可坐位置;均方差取最小;epoch 改说轮训练;四个训练技巧;50 步不算空白;空白期只是不给关节,远期姿态也乘 4;影子标为示意
- 第 13–18 幕:注意力头和输出小网络分开说;表 2–5 写明是成功率和失败标准;骨盆只比头加双手稳一点;坐椅子不写骨盆(论文没写);后空翻还很难复现;只在仿真角色上验证标明是我们补的
- 笔记里同样的几处一并改掉

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LTjJA1fMqzU4ZDTDRC4VMt
- 看片反馈:先验和残差用在哪没看懂
- 前两段新画学生三个部件的连线图:推理时只有部分目标,编码器灰着用不上,z 从先验取;训练时 z 从编码器取、解码器模仿老师,KL 把编码器往先验拉
- 后三段沿用一维高斯:残差(式 7,先验先猜、编码器只说往哪挪)、KL 只看偏移和两个方差(0.363)、最后是训练和推理取到的 z 与表 6 的 96.9% → 21.1%
- 「训练和推理的 z 落在同一片」标明是我们的理解,论文的理由是残差让先验管住潜空间;笔记的同一段和 Q2 一并改

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LTjJA1fMqzU4ZDTDRC4VMt
- 连着合成二十几句旁白时 edge-tts 服务会回 429(单句正常),原先整次构建直接失败
- tts() 捕获 429 的握手错误,按 20、40、80… 秒退避,最多 6 次;其它错误照旧抛出

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LTjJA1fMqzU4ZDTDRC4VMt
- 27,253 帧四段并行渲染(15 分 8 秒),音视频 908.433 / 908.444 s,整片解码通过;网页版 -crf 37 压到 18.4 MB,替换笔记里的视频
- 播放器、下载链接、视频 README、AGENTS 与发布计划里的时长和大小同步;prepare_pages 重算 video_seconds

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LTjJA1fMqzU4ZDTDRC4VMt
@ImChong ImChong changed the title feat(MaskedMimic): 公式改用 KaTeX,放大图 3 与项目页片段,地面网格与表 6 说明,整片重渲 feat(MaskedMimic): 公式改 KaTeX、放大图与片段、全局核对、重写第 9 幕,整片重渲 Oct 17, 2026
@ImChong
ImChong merged commit c73e392 into main Oct 17, 2026
1 check passed
@ImChong
ImChong deleted the claude/maskedmimic-details-animation-video branch October 17, 2026 17:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants