0. 前言
- 相关资料:
- arxiv
- github
- 论文解读
- 论文基本信息
- 领域:行为识别
- 作者单位:AWS
- 发表时间:2020.7
1. 要解决什么问题
- 当前行为识别模型的一般结构:
- 从视频中取出一段连续帧作为模型输入。
- 传递给3D backbone提取特征。
- 一般来说backbone会在时间维度上下采样,假设采样率为t。
- 那么在backbone之后,没个时间维度都代表了一个t帧的sub-clip。
- 将backbone结果经过global avg pool后得到特征(salient features)。
- 将上述特征作为最终行为分类fc的输入。
- 上述行为识别模型存在的问题
- 问题一:虽然在经过3D卷积后特征图的感受域已经超过了clip的范围,但有效感受域其实并不大,所以提取的特征缺少了全局特征。
- 因为有了avg pooling,所以帧的前后顺序对结果并没有什么影响。
2. 用了什么方法
- 提出了 Channel Independent Directional Convolution(CIDC) 来提取帧顺序特征。
- 作用:提取 temporal order 特征(即帧顺序特征)。
- 注意,该操作是 bidirectionally,即从前到后、从后到前都有,然后把得到的特征concat。
- 该操作可以理解为一种另类的depthwise convolution
- 对于输入的特征图
BATCH_SIZE, C, T, W, H
,根据C
维度进行展开,分别Directional Convolution。 - split后,每个channel的特征图尺寸为
BATCH_SIZE, T, W, H
,可以直接使用2D卷积
- 对于输入的特征图
- CIDC的实现
- 朴素实现:对于每个time step分别实现。这样效率太低了。
- 文章实现:可以将这个看做是1*1卷积的特殊形式,只是将参数的上三角区域(upper triangle portion)参数值设置为0。
- 只是这样设置的话,训练会不稳定。
- 为了解决上面的问题,提出了
normalization strategy
来解决。 - 不过这些都是实现细节,不是现在考虑的问题。
- 基于CIDC的总体网络结构设计
- 重点就是 multi-scale。
- CIDC的使用方法是在backbone的基础上做一些改进,而不是改进backbone本身。
3. 效果如何
- 主要就看一下Kinetics400 & Something-Something-V2的结果
4. 还存在什么问题
-
其实CIDC的作用感觉像是FPN,实现multi-scale融合。刚开始以为是行为识别轻量化网络才重点看了看,最后发现不是那么回事。