JEPA4Japan · 教程

第 10 章——把视频切成时空小方块

976字 3分钟阅读 #LeVJEPA#JEPA#视频自监督学习#SIGReg

跟踪 16 帧视频经过 16×16 patch、逐帧 tubelet 与位置编码后得到的 token 数量和形状。

课程进度 课程大纲 已发布 34/34 课

第 0 部分——先拿到地图

  1. 01 第 0 章——开始之前:这门课承诺什么 已发布
  2. 02 第 1 章——同一段视频,两扇不同的窗 已发布
  3. 03 第 2 章——沿着 Yann LeCun 的科研路线走一遍 已发布
  4. 04 第 3 章——别被名字绕晕:JEPA 家族树 已发布

第 1 部分——为什么简单目标会学会看视频

  1. 05 第 4 章——视频可以自己出题 已发布
  2. 06 第 5 章——保留意思,不重画每个像素 已发布
  3. 07 第 6 章——两张卡要相同,但不能全变成白纸 已发布
  4. 08 第 7 章——SIGReg:从许多影子检查一团点云 已发布
  5. 09 第 8 章——只用一行目标函数读懂 LeVJEPA 已发布

第 2 部分——把一段视频送进单编码器

  1. 10 第 9 章——全局视图与局部视图怎样配对 已发布
  2. 11 第 10 章——把视频切成时空小方块 当前课程
  3. 12 第 11 章——一台编码器、一个投影头、一张摘要卡 已发布
  4. 13 第 12 章——一次完整前向传播 已发布
  5. 14 第 13 章——为什么扔掉 95% 反而更会看 已发布
  6. 15 第 14 章——块因果注意力:同一帧互看,未来不能偷看 已发布
  7. 16 第 15 章——RoPE、逐帧 token 与意外长出的密集特征 已发布

第 3 部分——会读实验,才算读懂论文

  1. 17 第 16 章——四组消融究竟回答了什么 已发布
  2. 18 第 17 章——相同轮数不等于相同花费 已发布
  3. 19 第 18 章——ImageNet、K400、SSv2 各考什么 已发布
  4. 20 第 19 章——把论文结果记成一本账 已发布
  5. 21 第 20 章——哪些结论现在还不能说 已发布

第 4 部分——从官方仓库到自己的实验

  1. 22 第 21 章——官方仓库地图 已发布
  2. 23 第 22 章——Walking Tours:十段长视频怎样变成训练数据 已发布
  3. 24 第 23 章——读懂默认配置并启动训练 已发布
  4. 25 第 24 章——先跑一个不会骗人的冒烟测试 已发布
  5. 26 第 25 章——不用训练:加载公开权重提取特征 已发布
  6. 27 第 26 章——在自己的视频上做冻结评估 已发布

第 5 部分——把表征接回世界模型路线

  1. 28 第 27 章——重要边界:LeVJEPA 不是规划器 已发布
  2. 29 第 28 章——怎样把 LeVJEPA 接到下一代世界模型 已发布
  3. 30 第 29 章——十个从入门到论文级的研究项目 已发布

附录——随用随查的技术背包

  1. 31 附录 A——最低限度数学工具箱 已发布
  2. 32 附录 B——完整张量形状表 已发布
  3. 33 附录 C——术语表与论文时间线 已发布
  4. 34 附录 D——复现与审阅检查清单 已发布

把翻页书切成带地址的硬币

  1. 16 帧一小段视频
  2. 16×16每帧切格子
  3. 变 token每格一枚
  4. 记位置时间、高、宽
  5. 加 `[CLS]`整段摘要卡
LeVJEPA 默认逐帧切 patch:一枚 patch token 不会先把相邻两帧揉在一起。

把 16 页翻页书铺开,在每页画上同样大小的方格。每格内容换成一枚数字硬币,再刻上“第几页、第几行、第几列”。袋口另放一枚特殊的 [CLS] 硬币,用来汇总整本翻页书。Transformer 接下来处理的,就是这串带时空地址的 token,而非逐个原始像素。

先数清楚,再谈注意力

先忽略 batch(一次并行处理的样本组)与 RGB 通道,只数位置。patch 是一帧里的小方块,LeVJEPA 默认大小为 16 × 16;tubelet 是 patch 沿时间延伸的长度,默认 τ = 1。因此三维卷积每次只跨 1 帧:每帧独立产生一张 patch 网格,输入层还没有把相邻两帧揉成一枚 token。

全局视图是 16 帧、224 × 224:

每帧网格 = (224 / 16) × (224 / 16) = 14 × 14 = 196
整段 patch token = 16 × 196 = 3136

局部视图是 16 帧、96 × 96:

每帧网格 = (96 / 16) × (96 / 16) = 6 × 6 = 36
整段 patch token = 16 × 36 = 576

**patch embedding(小块嵌入)**把每个小块映射到模型宽度 d,每个视图由此得到形如 [T × Hpatch × Wpatch, d] 的序列。官方大模型配方使用分解的三维 **RoPE(旋转位置编码)**写入相对时间、高度和宽度信息,因此同一 encoder 能处理 224 与 96 两种网格,无需给固定绝对位置表做插值。RoPE 只描述位置;过去能否看见未来,仍由后面要学的 attention mask(注意力遮罩)决定。

训练时,patch embedding 之后会从整个时空网格均匀随机丢掉 95% patch token。按固定代码的四舍五入,3136 枚约保留 157 枚,576 枚约保留 29 枚。随后才在序列前加入一枚始终保留的可学习 [CLS] token。损失只读取 [CLS] 经 projector 后的嵌入;patch token 不接受直接监督,丢掉的内容也没有 decoder 负责恢复。评估与推理关闭 token dropping,因而读取完整 token 集。

τ = 1 是论文默认和公开大模型的选择,不是所有视频 Transformer 的自然定律。若 τ = 2,16 帧会变成 8 个时间槽,token 数减半,但两帧在输入处已经聚合;比较两者时必须同时核对保留率和评估序列长度。

自己数一次

计算 8 帧、128 × 128、patch 16 × 16、τ = 1 时的 token 数:每帧 8 × 8 = 64,总计 8 × 64 = 512 个 patch token;再加 [CLS] 才是 513。不要把 [CLS] 算进 95% 随机丢弃对象。

数字从哪里来

留下三个数字锚点

  1. 默认 τ = 1:每枚 patch token 只来自一帧中的 16 × 16 小块。
  2. 16 帧全局视图有 3136 个 patch token,局部视图有 576 个,另加 [CLS]。
  3. 训练随机丢 95% patch token 但不重建它们;评估时使用完整 token。

Token 计数题

  1. τ = 1 表示什么?
  2. 为什么全局视图是 3136 个 patch token?
  3. [CLS] 会不会和 patch token 一起被随机丢掉?
展开算式
  1. 每个 token 的时间跨度为一帧。
  2. 16 × 14 × 14 = 3136。
  3. 不会,它始终保留并承担 clip 级摘要。