You Only Watch Once(YOWO)
You Only Watch Once(YOWO): A Unified CNN Architecture for Real-Time Spatiotemporal Action Localization
paper: https://arxiv.org/pdf/1911.06644.pdf
code: https://github.com/wei-tim/YOWO(暂未开源)
主要是提出了一种用于end-to-end动作分类和定位的方法。
效果如下:
整体结构:
1,2D-CNN:提取空间(关键帧)特征;
2,3D-CNN:提取时序(clip)特征;
3,Feature aggregation: Channel Fusion and Attention Mechanism (CFAM):采用通道堆叠融合2d和3d特征,并且使用通道attention对融合后的特征进行调整;
4,类似yolo的边界框回归。
细节介绍:
1,2D-CNN:论文中选择了Darknet-19,输出维度为C1*H*W。
2,3D-CNN:论文中选择了3D-ResNext-101,输出维度为C2*H*W。
(提取特征的backbone没什么好说,都是稍作修改就直接拿来用的。其中需要注意的是为了融合2d和3d特征,2D-CNN和3D-CNN输出feature map的weight和height必须保持一致)
3,Linking:这里的linking是在整个视频维度上对目标框进行连接,而不是单个clip。linking方法主要是通过计算前后两个clip中同一类动作的目标框之间一个关联关系的分数,进而判断他们是否是同一个目标。具体的公式如下,
其中sc(R)是区域R为特定类的分数(概率);ov是两个区域的交并比;ψ(ov) 是约束函数,当ov大于0时值为1,否则为0; α和β是标量(超参数)。
这个公式与参考paper不同的是,增加了α · sc(Rt) · sc(Rt+1)这一项,作者解释这一项可以考虑到前后两框的score剧烈变化的情况,并且提高视频检测的性能。
4,Channel Fusion and Attention Mechanism (CFAM):其中的channel attention与论文 Dual attention network for scene segmentation 中提出的通道attention应该是一样的。。整体流程如图3所示,接下来介绍一下具体的步骤,
- 2d featuremap(C1*H*W)和 3d featuremap(C2*H*W)通过channel维度堆叠起来,得到初步融合特征矩阵A(C*H*W,C=C1+C2);
- 将A的后两维向量化,得到F(C*N,N=H*W);
- 用F乘F的转置计算Gram矩阵G(C*C)(Gram矩阵在一些介绍中被称为风格矩阵,在风格迁移中应用广泛。对featuremap计算Gram矩阵可以增大的响应值,抑制非特征的响应值,得到特征间的互相关信息);
- 对G进行softmax计算(公式如下),生成channel attention map M(C*C);
- 将得到的attention map对原featuremap进行指导,即计算F1=MT · F,其中F1(C*N),最后将之reshape回C*H*W的维度,得到F2;
- 将原始的输入特征图B与F2进行相加即attention模块的输出C = α · F2+B,其中α是一个可学习的参数,训练时从0开始。
在该模块中,第一步和第六步后作者都放置了两个卷积层,这两个卷积层的目的是为了帮助混合从不同backbone而来或具有不同分布的特征。
5,具体的训练细节可以参考论文,不再描述了。。
总结:
1,方法主要是结合2d和3d特征来定位目标的同时对行为进行分类。
2,动作定位是靠关键帧中目标的位置来确定,用关键帧的位置代表clip中所有目标的位置。
3,主要的创新是在yolo思想的基础上增加时间维度的特征来辅助动作分类。
水平有限,欢迎指正。