R-C3D: Region Convolutional 3D Network for Temporal Activity Detection
这篇文章是ICCV 2017的一篇文章,作者主要是以C3D网络为基础。借鉴了Faster RCNN的思路,对于任意的输入视频L,先进行proposal,然后3D-pooling,最后后进行分类和回归操作。文章主要贡献点有3个:
可以针对任意长度视频、任意长度行为进行端到端的检测
速度很快(是目前网络的5倍),通过共享Progposal generation 和Classification网络的C3D参数
作者测试了3个不同的数据集,效果都很好,显示了通用性。
一、网络结构
整个网络可以分为四个部分:
特征提取网络:对于输入任意长度的视频进行特征提取
Temporal Proposal Subnet: 用来提取可能存在行为的时序片段(Proposal Segments)
Activity Classification Subnet: 行为分类子网络
Loss Function
下图是整个网络结构图。
1.1 特征提取网络
骨干网络作者选择了C3D网络,经过C3D网络的5层卷积后,可以得到512 x L/8 x H/16 x W/16大小的特征图。这里不同于C3D网络的是,R-C3D允许任意长度的视频L作为输入。
learning Spatiotemporal feature with 3DConvolutional Networks(C3D网络论文)
1.2 Temporal Proposal Subnet
这一部分是时序候选框提取网络,类似于Faster R-CNN中的RPN,用来提取一系列可能存在目标的候选框。这里是提取一系列可能存在行为的候选时序。
Step1:候选时序生成
输入视频经过上述C3D网络后得到了512 x L/8 x H/16 x W/16大小的特征图。然后作者假设anchor均匀分布在L/8的时间域上,也就是有L/8个anchors,每个anchors生成K个不同scale的候选时序。
Step2: 3D Pooling
得到的 512xL/8xH/16xW/16的特征图后,为了获得每个时序点(anchor)上每段候选时序的中心位置偏移和时序的长度,作者将空间上H/16 x W/16的特征图经过一个3x3x3的卷积核和一个3D pooling层下采样到 1x1。最后输出 512xL/8x1x1.
Step3: Training
类似于Faster R-CNN,这里也需要判定得到的候选时序是正样本还是负样本。文章中的判定如下。
正样本:IoU > 0.7,候选时序帧和ground truth的重叠数
负样本: IOU < 0.3
为了平衡正负样本,正/负样本比例为1:1.
1.3 Activity Classification Subnet
行为分类子网络有如下几个功能:
从TPS(Temporal Proposal subnet)中选择出Proposal segment
对于上述的proposal,用3D RoI 提取固定大小特征
以上述特征为基础,将选择的Proposal做类别判断和时序边框回归
Step1: NMS
针对上述Temporal Proposal Subnet提取出的segment,采用NMS(Non-maximum Suppression)非极大值抑制生成优质的proposal。NMS 阈值为0.7.
Step2:3D RoI
利用RoI (Region of interest,兴趣区域)将proposal调整到固定尺寸.这里,个人感觉作者的图有点问题,提取兴趣区域的特征图的输入应该是C3D的输出,也就是512xL/8xH/16xW/16,可能作者遗忘了一个输入的箭头。
假设C3D输出的是 512xL/8x7x7大小的特征图,假设其中有一个proposal的长度(时序长度)为lp,那么这个proposal的大小为512xlpx7x7,这里借鉴SPPnet中的池化层,利用一个动态大小的池化核,ls x hs x ws。最终得到 512x1x4x4大小的特征图
Step3: 全连接层
经过池化后,再输出到全连接层。最后接一个边框回归(start-end time )和类别分类(Activity Scores)。
Step4: Traning
在训练的时候同样需要定义行为的类别,如何给一个proposal定label?同样采用IoU。
IoU > 0.5,那么定义这个proposal与ground truth相同
IoU 与所有的ground truth都小于0.5,那么定义为background
这里,训练的时候正/负样本比例为1:3。
1.4 Loss Function
这里分类和回归联合,而且联合两个子网络。分类采用softmax,回归采用smooth L1.
其中的N都代表batch size
lamda 为1
三、实验结果
3.1 THUMOS‘14
首先,作者在THUMOS’14上进行了测试,一个是测试与当前算法的对比,一个是在不同类别上的得分。
Case1:不同算法对比
Case2:不同类别上的得分
3.2 ActivityNet
这个好像有点奇怪,作者对比了手工选特征的方法,发现效果不如?
3.3 Charades
接着作者还在Charades上做了实验,结果如下。
3.4 速度对比
基于C3D的速度还是非常快的,加之作者采用了参数共享。
参考文献
[1] Xu H, Das A, Saenko K. R-C3D: Region convolutional 3d network for temporal activity detection[J]. arXiv preprint arXiv:1703.07814, 2017.