刚开始研究动作时,主要学习的是动作识别Action Recognize方向的内容,它的目标是给一段切割好的视频分类、打上动作类别标签,一般视频的长度在2-5s不等。后来又研究了动作检测Action Detect方向的内容,区别在于它针对的是未经过切割的原生视频,给出视频中动作的起始/终止时间点、类别信息。
在实际场景中,一个画面可能包含不止一个人,这个人可能在同一时间点进行着多种动作(比如,走路时打电话),时空动作定位Spatial-Temporal Action localization就可以解决复杂场景的多人多动作问题。具体来说,模型需要做更多的工作,不仅仅是给出动作类别、起始/终止时间点,动作发生的空间区域也需要定位。
这里以时间轴为主线,梳理了近期动作定位相关的文献,仅供参考。
《Asynchronous Interaction Aggregation for Action Detection》,pytorch
《Video Action Transformer Network》
《STEP: Spatio-Temporal Progressive Learning for Video Action Detection》,pytorch
《Relational Action Forecasting》
《TACNet: Transition-Aware Context Network for Spatio-Temporal Action Detection》
《Dance with Flow: Two-in-One Stream Action Detection》,pytorch
《Action4D: Online Action Recognition in the Crowd and Clutter》,pytorch
《Improving Action Localization by Progressive Cross-stream Cooperation》
《Spatio-Temporal Video Re-Localization by Warp LSTM》
《SlowFast Networks for Video Recognition》(+《Non-local Neural Networks》),PySlowFast
FaceBook开源的动作定位平台,影响力还挺大,提供了多种类型的预训练模型,推荐尝试;
从论文数据上来看,其性能要强于STEP很多,但是也存在速度太慢的问题,0.2FPS是无法实时的;
这里重点介绍一下YOWO模型,目前为止发现最适合我个人需求的一个方案!
论文:《You Only Watch Once: A Unified CNN Architecture for Real-Time Spatiotemporal Action Localization》
代码:pytorch
贡献:提出了一个end-to-end时空特征建模方法,建立了一个高效的特征融合注意力机制CFAM,通过大量的对比试验验证了3D卷积的先进行以及不同的帧片段长度对动作定位精度的影响。个人认为,它最大的亮点在于速度:16-frames clip可以达到34FPS,8-frames clip可以达到62FPS,完全能够满足实时要求。
如上图所示,YOWO接受的输入是一个clip:clip中的关键帧送入2D-CNN(Darknet-19),用来建模空间信息;关键帧之前的8/16帧作为一个整体送入3D-CNN(3D-ResNet101),用来建模时间信息;然后空间、时间特征被送入CAFM做融合,最后进行边框回归和分类。
将特征直接concat融合的方式很生硬,它忽略了特征与特征之间的相关性,CAFM希望可以在通道维度上找到这种特征之间的关联,或者说是相互影响系数。类比向量之间的协方差系数计算方式,CAFM计算特征相互影响系数分几步进行:
CAFM的结构如下图所示,这种融合方式考虑了特征之间的相互影响,特征融合地更加“透彻”、有效。但是第四步的映射方式个人认为不应该将 M M M转置!
在边框回归方面,YOWO借鉴YOLO的思想,将其划分为 7 × 7 7\times 7 7×7的网格,每个网格对应产生5个anchor,anchor尺寸通过对训练数据聚类得到,每个anchor最终输出一个 N u m C l s + 5 NumCls+5 NumCls+5的向量。
效果:
YOWO可以检测视频中每一帧的多人、多动作,精度如下表所示,速度方面我并没有取得如论文所说的32FPS效果,但是经过采样处理(每8帧检测一次)后也可以达到实时。
数据集 | Frame-mAP @ IoU 0.5 |
---|---|
UCF101-24 | 87.2 |
JHMDB-21 | 74.4 |
评论:最大的亮点就是它的速度真的很快,不需要光流计算、直接在RGB上做检测。但是由于使用ResNet101、Darknet-19作为basebone,它的模型参数很大,在970M左右。
其它方案
《Spatio-Temporal Action Detection in Untrimmed Videos by Using Multimodal Features and Region Proposals》
《A Proposal-Based Solution to Spatio-Temporal Action Detection in Untrimmed Videos》
《AVA: A Video Dataset of Spatio-Temporally Localized Atomic Visual Actions》
《Spatio-Temporal Attention-Based LSTM Networks for 3D Action Recognition and Detection》
《Online Action Tube Detection via Resolving the Spatio-temporal Context Pattern》
《A Proposal-Based Solution to Spatio-Temporal Action Detection in Untrimmed Videos》
《Spatio-Temporal Vector of Locally Max Pooled Features for Action Recognition in Videos》
《ActionVLAD: Learning Spatio-Temporal Aggregation for Action Classification》
《Spatio-Temporal Naive-Bayes Nearest-Neighbor (ST-NBNN) for Skeleton-Based Action Recognition》
《Spatio-Temporal Vector of Locally Max Pooled Features for Action Recognition in Videos》
《Action Tubelet Detector for Spatio-Temporal Action Localization》,caffe
《Tube Convolutional Neural Network (T-CNN) for Action Detection in Videos 》,caffe
《TORNADO: A Spatio-Temporal Convolutional Regression Network for Video Action Proposal》