news 2026/8/10 23:34:48

V-JEPA: 从视频帧到3D时空Token,V-JEPA如何用ViT切分Tubelet、构建三维网格、加入位置编码,并用贯穿时间维的3D Multi-Block Mask遮住时空区域与抑制视频冗余

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
V-JEPA: 从视频帧到3D时空Token,V-JEPA如何用ViT切分Tubelet、构建三维网格、加入位置编码,并用贯穿时间维的3D Multi-Block Mask遮住时空区域与抑制视频冗余

从视频帧到3D时空Token:彻底理解V-JEPA如何用ViT切分Tubelet、构建三维网格、加入位置编码,并用贯穿时间维的3D Multi-Block Mask遮住时空区域与抑制视频冗余的直觉教程

从视频帧到3D时空Token

1. 第一件事情:视频为什么不能直接扔进 ViT?

普通 ViT 本质上处理的是:

Token Sequence\text{Token Sequence}Token Sequence

而一段视频原始是:

T×H×W×3T\times H\times W\times3T×H×W×3

其中:

  • TTT是帧数;
  • HHH是图像高度;
  • WWW是图像宽度;
  • 333是 RGB 三个通道。

因此必须先把视频切成很多小块,再把这些小块变成 Token。

但图片只有空间:

H×WH\times WH×W

视频则有:

T×H×WT\times H\times WT×H×W

所以 V-JEPA 不再切二维 Patch,而是切三维时空 Patch(3D Spatio-temporal Patch)


2. V-JEPA 的一个 Token 到底是什么?

V-JEPA 默认的基本 Patch 尺寸为:

2×16×16\color{red}{2\times16\times16}2×16×16

顺序是:

Time×Height×Width\text{Time}\times\text{Height}\times\text{Width}Time×Height×Width

也就是说:

  • 时间方向包含连续222帧;
  • 高度方向包含161616像素;
  • 宽度方向包含161616像素。

因此一个 Token 不是:

“某一帧里面一个16×1616\times1616×16小方块”。

而是:

“同一个空间小区域,在连续两帧中的内容”。

这种跨时间的小立方体也常被称为Tubelet(时空管状块)。V-JEPA 官方模型配置使用2×16×162\times16\times162×16×16的时空 Patch。


3. 用真正直观的六帧视频理解 Tubelet

假设我们有一个非常小的视频:

T=6,H=W=32T=6,\qquad H=W=32T=6,H=W=32

每一帧只有:

32×3232\times3232×32

像素。

空间 Patch 大小是:

16×1616\times1616×16

所以每一帧可以切成:

2×22\times22×2

四个小方块。

先不要急着生成 Token。

我们先把原始6 帧全部画出来。

时间轴 │ │ ▼ Frame 1 Frame 2 ┌──────────┬──────────┐ ┌──────────┬──────────┐ │ 1-a │ 2-a │ │ 1-b │ 2-b │ │ 左上16×16│ 右上16×16│ │ 左上16×16│ 右上16×16│ ├──────────┼──────────┤ ├──────────┼──────────┤ │ 3-a │ 4-a │ │ 3-b │ 4-b │ │ 左下16×16│ 右下16×16│ │ 左下16×16│ 右下16×16│ └──────────┴──────────┘ └──────────┴──────────┘ Frame 3 Frame 4 ┌──────────┬──────────┐ ┌──────────┬──────────┐ │ 5-a │ 6-a │ │ 5-b │ 6-b │ │ 左上16×16│ 右上16×16│ │ 左上16×16│ 右上16×16│ ├──────────┼──────────┤ ├──────────┼──────────┤ │ 7-a │ 8-a │ │ 7-b │ 8-b │ │ 左下16×16│ 右下16×16│ │ 左下16×16│ 右下16×16│ └──────────┴──────────┘ └──────────┴──────────┘ Frame 5 Frame 6 ┌──────────┬──────────┐ ┌──────────┬──────────┐ │ 9-a │ 10-a │ │ 9-b │ 10-b │ │ 左上16×16│ 右上16×16│ │ 左上16×16│ 右上16×16│ ├──────────┼──────────┤ ├──────────┼──────────┤ │ 11-a │ 12-a │ │ 11-b │ 12-b │ │ 左下16×16│ 右下16×16│ │ 左下16×16│ 右下16×16│ └──────────┴──────────┘ └──────────┴──────────┘
时间 T ↑ │ │ Frame 6 │ ──────────┼────────── / /| / 9-b 10-b / | / 左上16×16 右上16×16/ | ├──────────┬──────────┤ | / 11-b / 12-b / | / 左下16×16/ 右下16×16 / | └──────────┴──────────┘ | ▲ | │ | │ 时间 | │ | Frame 5 | ────────── | / /| | / 9-a 10-a / | | / 左上16×16 右上16×16/ | | ├──────────┬──────────┤ | | / 11-a / 12-a / | | / 左下16×16/ 右下16×16 / |/ └──────────┴──────────┘ | ▲ | │ | │ 时间 | │ | Frame 4 | ────────── | / /| | / 5-b 6-b / | | / 左上16×16 右上16×16/ | | ├──────────┬──────────┤ | | / 7-b / 8-b / | | / 左下16×16/ 右下16×16 / |/ └──────────┴──────────┘ | ▲ | │ | │ 时间 | │ | Frame 3 | ────────── | / /| | / 5-a 6-a / | | / 左上16×16 右上16×16/ | | ├──────────┬──────────┤ | | / 7-a / 8-a / | | / 左下16×16/ 右下16×16 / |/ └──────────┴──────────┘ | ▲ | │ | │ 时间 | │ | Frame 2 | ────────── | / /| | / 1-b 2-b / | | / 左上16×16 右上16×16/ | | ├──────────┬──────────┤ | | / 3-b / 4-b / | | / 左下16×16/ 右下16×16 / |/ └──────────┴──────────┘ | ▲ | │ | │ 时间 | │ | Frame 1 / ────────── / / / / 1-a 2-a / / 左上16×16 右上16×16/ ├──────────┬──────────┤ / 3-a / 4-a / / 左下16×16/ 右下16×16 / └──────────┴──────────┘ ↓ Height / 高度 Width / 宽度 →

注意这里暂时用ab表示某个 Token 中来自不同帧的空间切片。


4. 现在把相邻两帧的同一个空间位置粘在一起

Tubelet 的时间大小是222,所以:

  • Frame 1 和 Frame 2 被配成一组。
  • Frame 3 和 Frame 4 被配成另一组。
  • Frame 5 和 Frame 6 被配成第三组。

例如左上区域:

Frame 1 Frame 2 ┌──────────────┐ ┌──────────────┐ │ │ │ │ │ 1-a │ =========> │ 1-b │ │ 16×16 │ 时间 │ 16×16 │ │ │ 深度=2 │ │ └──────────────┘ └──────────────┘ \____________________________/ │ ▼ Token 1 2×16×16

所以:

Token 1={ Frame 1 左上,Frame 2 左上}\text{Token 1}=\{\text{Frame 1 左上},\text{Frame 2 左上}\}Token 1={Frame 1 左上,Frame 2 左上}

同理:

Token 2={ Frame 1 右上,Frame 2 右上}\text{Token 2}=\{\text{Frame 1 右上},\text{Frame 2 右上}\}Token 2={Frame 1 右上,Frame 2 右上}

Token 3={ Frame 1 左下,Frame 2 左下}\text{Token 3}=\{\text{Frame 1 左下},\text{Frame 2 左下}\}Token 3={Frame 1 左下,Frame 2 左下}

Token 4={ Frame 1 右下,Frame 2 右下}\text{Token 4}=\{\text{Frame 1 右下},\text{Frame 2 右下}\}Token 4={Frame 1 右下,Frame 2 右下}

而 Frame 3 和 Frame 4 得到:

Token 5,Token 6,Token 7,Token 8\text{Token 5},\text{Token 6},\text{Token 7},\text{Token 8}Token 5,Token 6,Token 7,Token 8

Frame 5 和 Frame 6 得到:

Token 9,Token 10,Token 11,Token 12\text{Token 9},\text{Token 10},\text{Token 11},\text{Token 12}Token 9,Token 10,Token 11,Token 12


5. 这就是之前为什么会画成三个矩阵

Tubelet 化之后,原来的:

6×32×326\times32\times326×32×32

视频在 Token 空间里变成:

3×2×23\times2\times23×2×2

为什么?

时间:

T′=62=3T'=\frac{6}{2}=3T=26=3

高度:

H′=3216=2H'=\frac{32}{16}=2H=

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/10 23:31:39

从Claude Code迁移到Cursor Cli:构建终端AI编程工作流

1. 从 Claude Code 到 Cursor Cli:一次高效开发者的工具迁移如果你和我一样,是 Claude Code 的深度用户,最近可能已经感受到了开发工具领域那股“暗流涌动”的变化。Claude Code 以其强大的 AI 代码补全和对话式编程体验,确实在短…

作者头像 李华
网站建设 2026/8/10 23:31:31

OpenClaw云服务器AI工具链:一键部署与智能运维实战

1. OpenClaw项目概述 OpenClaw是一款面向云服务器环境设计的AI辅助工具链,主打"云上养虾"场景的自动化管理。这个开源项目最近在开发者社区热度飙升,主要因为它解决了三个痛点:传统云服务器配置复杂、AI模型部署门槛高、运维监控不…

作者头像 李华
网站建设 2026/8/10 23:30:49

title3技术实践:模块化架构与高效开发指南

1. 项目概述 title3这个看似简单的项目名称背后,实际上蕴含着丰富的技术内涵和实践价值。作为一名从业多年的技术专家,我最初看到这个标题时也感到困惑,但经过深入挖掘后发现,这其实是一个极具代表性的技术实践案例。 在当今快速…

作者头像 李华
网站建设 2026/8/10 23:29:22

为什么draw.io桌面版是跨平台图表工具的最佳选择?

为什么draw.io桌面版是跨平台图表工具的最佳选择? 【免费下载链接】drawio-desktop Official electron build of draw.io 项目地址: https://gitcode.com/GitHub_Trending/dr/drawio-desktop 在当今多元化的技术生态中,图表绘制已成为软件工程师、…

作者头像 李华
网站建设 2026/8/10 23:23:57

【Java核心高阶进阶】25-AQS原理深度剖析

25 | AQS 原理深度剖析:state、CLH 队列、独占与共享(源码级) 模块六:JUC并发框架与锁机制 第1篇,从state变量到CLH队列,逐行拆解JUC同步器的基石框架。 一、AQS 全称与定位 AQS 全称 AbstractQueuedSynchronizer,是 Doug Lea 在 JDK 1.5 引入的同步框架。它是 Reentr…

作者头像 李华
网站建设 2026/8/10 23:19:32

SpringBoot3集成Shiro常见问题与解决方案

1. SpringBoot3集成Shiro的典型问题全景分析作为Java生态中最常用的安全框架之一,Apache Shiro在SpringBoot项目中的集成看似简单,实则暗藏玄机。特别是在SpringBoot3这个重大版本升级后,许多原有的集成方案会出现各种"水土不服"的…

作者头像 李华