0. 前言
- 相关资料:
- 论文基本信息
- 领域:行为识别
- 作者单位:Facebook
- 发表时间:2021.2
- 一句话总结:尝试几种朴素的Video Trnasformer self-attention 结构
1. 要解决什么问题
- 如何将 Transformer 与视频类算法结合
- 视频类算法与NLP有一些相似之处
- 都是序列(sequence)
- 一个单词的意思往往必须结合上下文才能理解,类比到视频分类,那就是一个短期原子动作必须结合前后其他动作才能正确、全面理解动作的含义。
- 之前行为识别中 Transformer 工作都是 CNN+Transformer,希望能够设计没有CNN的纯Transformer结构行为识别模型,其好处在于
- CNN有较强的inductive biases(不知道该怎么翻译,字面意思是归纳偏见),即CNN的特点 local connectivity(局部连接)和 translation equivariance (平移不变性)导致的问题。当拥有海量数据时,这个问题比较明显,且Transformer在这方面表现比较好。
- 卷积核是用来提取短期、局部特征的,不适合用来处理序列数据。Transformer 的在这方面表现较好。
- Transformer的训练以及推理速度更快。
- 使用 Standard Transformer 存在的问题
- 要计算所有token之间的相似度以及value,需要较多计算资源
- 忽略了视频的时空结构
2. 用了什么方法
- 提出的结构是 TimeSFormer 是 Time-Space Transformer 的简称。
- 模型基本情况
- 输入数据:与之前的3D Conv类似,都是对原始数据进行采样,然后再对采样道的图片进行提取patch
- Pos Embedding 使用的是 learnable vector
- 也会添加以为 class token
- Q/K/V 的计算与基本结构都与之前的工作相同
- Self-attention 模块的设计
- 前面一张图是总体结构
- 后面一张图是每类结构的具体实现,即每个q要与哪些k计算相似度。
- 注意,蓝色的是q,其他颜色根据图示中标题的颜色来确定。
3. 效果如何
-
本文中提出的 TranSformer 根据输入数据不同有几个小变种
- TimeSformer:就是
8*224*224
- TimeSformer-HR:即
16×448×448
- TimeSformer-L:即
96*224*224
- TimeSformer:就是
-
Kinetics400 结果如下
- 对比不同的self-attention结构
- 这里可以看出数据集的特点。由于K400数据集其实对时间信息不敏感,所以space attention 就能得到很好的结果。而SSv2对时间敏感,所以space结构就非常差。
- 对比不同输入数据尺寸(每帧图像大小、帧数),当然效果是越多越好。但如果图像尺寸大于一定值,效果也就一般了。
- 对预训练模型有较高要求:论文中说直接训练(没有ViT pretrained model)就不收敛了
- 对数据量的要求:发现Transformer数据还是越多越好,数据多了效果提升显著
- 之前3D模型对于 clips 数量还是有一些要求,inference clips 数量越多效果越好。
- 但Transformer对这个没啥影响,毕竟一个clip就可以覆盖较长的时间,不想3D模型,一个clip大概也就2s左右。
- 训练时间:Transformer有优势
- SlowFast-R50 用64卡训练K400大概54.3小时
- I3D-R50 用32卡训练K400大概45小时
- TimeSformer 用32卡训练K400大概14.3小时
- 长视频建模(Long-Term Video Modeling),其实就是在 HowTo100M 数据集上的效果
- TimeSformer 效果明显
- Single Clip Coverage 就是一个 clip 覆盖了多少时间
- Test Clips 就是需要多少clip覆盖所有任务
4. 还存在什么问题&可借鉴之处
- 在inference的时候有没有什么优势?
- 理想状态下,处理序列数据inference的时候,不需要跑整体网络而只需要跑当前帧相关的部分网络即可。换句话说,应该有很多特征可以服用的。
- 但看目前的这个结构,因为self-attention也是叠加的,估计还是需要跑整个网络。
- 可能是K400的时候,就算跑整个网络,TFLOPs也很少。