Roxy's Library

Back

这节课接 Lec 12

Video Transformers#

Video 就是图片加上时间维度(T×3×H×WT\times 3\times H\times W),我们的任务也就变成了分类一段时间内的视频

回顾一下做ViT,如果视频的时间较长,那么token数目也会飞速增长。因此,为了节省算力,主要有两种方法:

  • 更改 Attention Operator
  • 减少 Token 的数目

Attention#

如果我们像传统的 Attention 算子一样,对所有的 token 都做 Attention 是非常费力的(对于我们上面的模型来说就是所有时间和所有位置的 token 都拿来做 Attention)

一个想法是,能不能把时间和空间的 Attention 分开。如下图,先算同一个位置不同时间上的 Attention ,再算同一帧内不同位置的 Attention,这样信息仍然能完成传递

attention transformed

我们来比较一下计算量,设总共 TT 帧,每张图片 NN 个Token

  • 对于左侧,每个token要做 NTNT 次 Attention
  • 对于右侧,Time Attn 要做 TT 次,Space Attn 要做 NN 次,总共 N+TN+T

下面看第二个方法

很像 3D CNN,我们把整个空间划分成一些 windows ,每个 window 内部做 Attention。同时,为了信息能够跨层传递,在下一层还会平移这些 Attention 来跨层传播

cube

Tokens#

对于 Self-Attention

张量维度含义
QQ(LQ,D)(L_Q, D)Query 序列,LQL_Q 个 token,每个维度 DD
KK(LK,D)(L_K, D)Key 序列,LKL_K 个 token
VV(LV,D)(L_V, D)Value 序列,LVL_V 个 token
QKQK^\top(LQ,LK)(L_Q, L_K)注意力分数矩阵
softmax()V\text{softmax}(\cdot)V(LQ,D)(L_Q, D)输出序列,长度与 QQ 相同

最终输出的大小是 (LQ,D)(L_Q,D) ,与 KVK 、V 的长度无关,因此可以用卷积或池化等方法缩小KKVV以减少计算量

另一种方式叫做 Tubelets

可以看下图,我们可以把多个帧的同一位置作为一个token,这样的一个 Tubelets 内含时序信息,能够减少 Token 数目

Tubelets

Foundation Models#

之前我们提到的模型都是在某个任务上特殊定制的,有没有能够在不同任务上有通用能力的模型,通过少量微调就可以用于不同任务

上面就是 Foundation Models 的定义。我们后面讨论一些 Foundation Model

CLIP#

一些分类器比如 Resnet 可以提取图片的特征,并将相似的分为一类。CLIP做的是想要将语言也放到其中,让语言和图像联系起来。

CLIP不是从图片中生成出语言,只是从一堆描述中挑出最符合所给图片的那个

其 Loss 采用 InfoNCE:

i=1nlog(eui,vij=1neui,vj)+i=1nlog(eui,vij=1neuj,vi)\sum_{i=1}^n -\log \left(\frac{e^{\langle u_i,v_i \rangle}}{\sum_{j=1}^n e^{\langle u_i,v_j \rangle}}\right) + \sum_{i=1}^n -\log \left(\frac{e^{\langle u_i,v_i \rangle}}{\sum_{j=1}^n e^{\langle u_j,v_i \rangle}}\right)

左侧为图像和不同文字,右侧为文字和不同图像,分子是配对的两个图像和文字,我们期望这个占比较高。相似度来自于图片embedding和文字embedding的点积

CLIP

写成矩阵形式如下,我们希望对角线上的占比最高

CLIP Mat

最终训练得到这两个encoder

Usage:

对于一个图像分类问题,我们可以在 image encoder 后面连一个线性分类器,然后再去做一些训练

可不可以不训练这个分类器?

其实我们还有一个 text encoder 没有用。对于每一个分类,我们都可以用一个词或一句话来概括这个类,然后通过 text encoder 得到一个向量,正确的分类向量和图片向量的相似度应该是最高的

CLIP classfication

当然,有时候一种描述可能具有偏差,我们可以对一个短语用多种相同的描述,都能够增加成功率

现在我们就有了一个可以用于图片分类的model,不需要任何训练数据,且泛化性强

Coca#

CLIP 比较整图与整句的相似度,缺乏细粒度的理解。Coca 引入了一个生成模型来改进 CLIP

Coca

看上面的图,Coca 保留 image encoder,加了一个 Decoder。这个 decoder 被切成两半,在上半中加入了 image 向量的 Cross-Attention, 再计算 Caption Loss。下半的 Docoder 生成出 cls-token,和图像向量做 Contrastive Loss(和CLIP类似)

Video Transformers and Multi-modal Foundation Model
https://greyrats.xyz/blog/cvintro_06_03
Author GreyRat
Published at June 6, 2026
Comment seems to stuck. Try to refresh?✨