本文记录了有关视频理解和 AVA 比赛的分析。
1. 视频理解的难点
-
不能只是关注 Person of Interest (PoI) 本身的信息,同时也需关注周边其他人,以及其他物体的信息。比如一些交互动作。
- 尝试解决此问题的方法:
- Video Action Transformer Network
- 尝试解决此问题的方法:
-
目前一些直接在 3D feature map 上,简单地在时间轴上复制 keyframe 上的 box,构成一个 straight tube。然而由于 PoI 的 motion,会出现在其他时间点上 PoI 超出 tube 范围的情况。
- 尝试解决此问题的方法:
- STEP
- SlowFast: Slow 通道只在 res4, res5 才开始使用
temporal kernel size > 1
的 non-degenerate temporal convolution,也就是说,从 conv1 到 res3 本质上都只是在使用 2D 卷积。这是因为实验发现过早使用时域卷积会降低精度。作者认为,当运动过快或者 temporal stride 过大时,时域感受野内的相关性会较低,除非空间感受野已经够大。也就是说,到达了较靠后的层。
- 尝试解决此问题的方法:
2. 个人看法
- LFB 中直接使用 3D CNN (I3D) 提取 short term 特征,最后通过 RoI Pooling 在 feature map 上获取 straight tube。由于 I3D 是从一开始就在时域上进行了卷积,因此,可能会遭遇 难点2 当中提及的问题。
- 可以尝试类似 SlowFast 中的网络方式,在网络开始时不使用时域卷积。这其实就是在解决 straight tube 问题,但是感觉不是很直接的解决方案,像是一个 detour。
3. Baseline 模型效果比较
on AVA Val set
model | pretrain | version | mAP | source |
---|---|---|---|---|
r101 | k400 | v2.2 | 23.53 | LFB |
I3D | k600 | v2.1 | 21.9 | A better baseline for AVA |
on Kinetics 400
index | model | backbone | modality | pretrain | top-1 val | top-5 val | top-1 test | top-5 test | GFLOPs x views | source |
---|---|---|---|---|---|---|---|---|---|---|
1 | I3D | Inception | RGB | ImageNet | 72.1 | 90.3 | 71.1 | 89.3 | 108xN/A | Quo Vadis |
2 | I3D | Inception | RGB+Flow | ImageNet | 75.7 | 92.0 | 74.2 | 91.3 | 216xN/A | Quo Vadis |
3 | I3D | Inception | RGB+Flow | 71.6 | 90.0 | 216xN/A | Quo Vadis | |||
4 | NL I3D | 128 R50 | RGB | ImageNet | 76.5 | 92.6 | 282x30 | Non-local | ||
5 | NL I3D | 128 R101 | RGB | ImageNet | 77.7 | 93.3 | 359x30 | Non-local | ||
6 | NL I3D | 32x2 R50 | RGB | ImageNet | 74.9 | 91.6 | 38 | Non-local | ||
7 | NL I3D | 32x2 R101 | RGB | ImageNet | 76.0 | 92.1 | Non-local | |||
8 | SlowFast | 8x8 R101 | RGB | 77.9 | 93.2 | 106x30 | SlowFast | |||
9 | SlowFast | 16x8 R101 | RGB | 78.9 | 93.5 | 213x30 | SlowFast | |||
10 | SlowFast | 16x8 R101+NL | RGB | 79.8 | 93.9 | 234x30 | SlowFast | |||
11 | SlowOnly | 4x16 R50 | RGB | 72.6 | 90.3 | 27.3 | SlowFast | |||
12 | SlowFast | 4x16 R50 | RGB | 75.6 | 92.1 | 36.1x30 | SlowFast | |||
13 | SlowFast | 8x8 R50 | RGB | 77.0 | 92.6 | 65.7x30 | SlowFast | |||
14 | LFB baseline | 32x2 R101 | RGB | 264.8x30 | LFB | |||||
15 | LFB baseline | 32x2 R50 | RGB | 176.9x30 | LFB |
6
和15
的区别:15
是 LFB 中的 baseline,它是来自6
号模型,但是区别是6
在conv1
,pool1
这两个阶段在时域上进行了下采样,res5
在空域上进行了下采样,而15
都没有,因此,15
的计算量是6
的四倍多。
4. AVA 标注文件意义
ava_train_predicted_boxes.csv
original_vido_id | sec | coords | class | score |
---|---|---|---|---|
-5KQ66BBWC4 | 0902 | 0.326, 0.185, 0.470, 0.887 | 80 | 0.996382 |
-5KQ66BBWC4 | 0902 | 0.003, 0.125, 0.119, 0.837 | -1 | 0.742486 |
ava_val_predicted_boxes.csv
original_vido_id | sec | coords | class | score |
---|---|---|---|---|
1j20qq1JyX4 | 0902 | 0.036, 0.098, 0.550, 0.979 | 0.995518 |
ava_train_v2.2.csv
original_vido_id | sec | coords | class | person track id |
---|---|---|---|---|
-5KQ66BBWC4 | 0906 | 0.408, 0.008, 0.586, 0.639 | 14 | 12 |
ava_val_v2.2.csv
original_vido_id | sec | coords | class | person track id |
---|---|---|---|---|
1j20qq1JyX4 | 0907 | 0.041, 0.145, 0.992, 0.985 | 17 | 4 |
train.csv
original_vido_id | video_id | frame_id | path | labels |
---|---|---|---|---|
-5KQ66BBWC4 | 0 | 0 | -5KQ66BBWC4/-5KQ66BBWC4_000001.jpg | “” |
-5KQ66BBWC4 | 0 | 1 | -5KQ66BBWC4/-5KQ66BBWC4_000002.jpg | “” |
val.csv
original_vido_id | video_id | frame_id | path | labels |
---|---|---|---|---|
1j20qq1JyX4 | 235 | 0 | 1j20qq1JyX4/1j20qq1JyX4_000001.jpg | “” |
1j20qq1JyX4 | 235 | 1 | 1j20qq1JyX4/1j20qq1JyX4_000002.jpg | “” |
LFB 模块控制参数
训练
LFB.ENABLED | lfb_infer_only | test_mode | 作用 | Comments | status |
---|---|---|---|---|---|
False | False | 没有使用到,因为没有进行 fbo 操作 | 训练 baseline | 当 LFB.ENABLED 为 False 时,lfb_infer_only 必须为 False - train 集的 GT 和 预测框 都被读取 - val 集 1/4 被读取 |
Success |
True | True | 没有使用到,因为没有进行 fbo 操作 | infer lfb 特征 | - 这一条只针对为提取 lfb 特征而创建的模型,即 get_lfb 函数里的模型。- 这里 train 集只读取了 预测框的标注,GT 框没有读取,是正确的。 - val 集 全部 被读取。 |
Success |
True | False | False | 进行有 lfb 特征的 训练 | - 这是带 lfb 特征的训练模型,所以 test_mode 设为 False 。- train 集的 GT 和 预测框 都被读取 - val 集 1/4 被读取。 |
Success |
TODO
-
尝试根据 SlowFast 中的 Slow 通道的模型,修改 LFB 中的 Baseline。
- Slow 通道模型只在 res4, res5 两个 stage 在时域上进行卷积。LFB 中从一开始就有。
- LFB 中使用了 Nonlocal,但是 SlowFast 里的 Non-local 只在
res4
出现,res3
没有。 - R101 中
res4
stage 从第 6 个 block 往后,每个 block 的时域卷积核都是 1. - LFB 代码中的 res5 并未减半尺寸,与论文中不一致。
- [这个表格.
-
研究 知乎文章对应 SlowFast 论文中的 Table2. 具体数值稍有不同是 Pytorch 和 Caffe2 的区别。
- [ ]
FUSION_KERNEL_SZ
是 5 还是 7 - [ ]
ALIGNED
是 True 还是 False - [ ]
TRAIN_JITTER_SCALES
: 是 [256, 320] 还是 [256, 240]