主要贡献:
1.提出一个包括活动候选区和任意长度活动的分类的端到端模型。如下图所示
2.提出在候选区生成和分类部分共享全卷积C3D特征,实现了比当前模型快5倍的速度。
论文主要从Faster R-CNN受启发而来,论文大部分idea都是Faster R-CNN中提出的(看这篇论文的时候,我真是深感生不逢时啊),作者将2D目标检测的方法用到了时间卷积网络,因此出现了R-C3D。
R-C3D模型框架
如上图所示,R-C3D由3部分组成,一个共享的3D ConvNet特征提取器,一个时间候选段(temporal proposal stage)生成部分,一个活动分类及调整部分。
模型输入是3xLxHxW的RGB视频帧,先经过3D ConvNet特征提取网络,再由temporal proposal stage 生成候选区域,候选区域的连续帧将进行分类,并调整候选区域。
关于共享的3D ConvNet特征提取器没有过多介绍,主要采取C3D网络的五层卷积层,第五层输出的尺寸是512x (L/8) x (H/16) x (W/16)。512是feature map 的通道数,H和W是112,L是任意长度的,受内存限制。
Temporal Proposal Subnet
这个部分的主要内容是实现模型对任意长度候选段的预测。
由于第五层输出了长度为L/8的时间位置(temporal locations)(指的是时间维度上的长度), 这里每个位置产生K个anchor片段(对anchor不懂的,直接理解为K个片段也可以),每个anchor片段都有固定但不同的比例,即总共产生的anchor片段是L/8*K个。
然后,通过大小为(1xH/16xW/16)的3D最大池化对空间维度上进行下采样(从H/16xW/16 到1x1 )产生时间特征图Ctpn (R512xL/8 x1x1),Cptn中每个位置的512维的向量用来预测一个中心位置和每个anchor片段长度{Ci, Li}的相对偏移{$Ci, $Li}, i属于{1, ...., K}
候选段的偏移和得分是通过在Cptn的顶端增加两个1x1x1的卷积层来预测的。
在训练阶段,通过两种方式来确定正样本,
1)与一些ground-truth活动的IoU值大于0.7;
2)与一些ground-truth活动的IoU值最大。
若IoU低于0.3,则直接认为是负样本。最后正负样本的比例为1:1.
Activity Classification Subnet
对上个阶段产生的anchor proposal片段(由于比例不一样,因此长度不一)通过3D RoI池化来抽出固定长度的候选段(长度都一样),然后对候选段进行分类和边界回归。
对于那些生成的anchor 候选段,互相覆盖率比较高的,且置信度比较低的,使用非极大值抑制(NMS)直接去除,NMS的阈值设为0.7。
关于3D RoI,其作用就是从任意的L,H,W的图输出一个固定大小的图。
例如,输入的图的尺寸是 LxHxW, 需要输出的大小为Ls x Hs xWs。只需要一个大小为L/Ls, H/Hs, W/Ws的最大池化操作即可。
回到本文,在经过3D RoI池化后输入两个全连接层,经过两个全连接层后进入分类和候选段回归部分,分类和回归又是各自两个全连接层。(具体看图2)
Optimization
分类使用softmax, 回归使用smooth-L1 loss ,
关于smooth-L1 loss如下:
因此整个模型的目标函数为:
前面部分是分类的部分。后面的部分是回归。
关于回归部分,ti表示预测的相对偏移量,ti*表示ground truth片段转到anchor片段的转移坐标(这句话比较难理解,这里anchor片段指的是对时间维度进行了卷积操作后(变了长度)的部分而ground truth指的是原视频的片段,(感觉这个anchor不是yolo里的那个anchor了,yolo里的anchor指的是原图片下的点))。
其坐标 ti={$Ci, $Li },ti 和ti* 计算如下:
带*的Ci是ground truth的中心,Ci是anchor 的中心,带*的Li是ground truth的长度,Li是anchor的长度。
为防止这部分没讲清楚,把论文原文相关部分贴在下面
到此,R-C3D的主要内容就讲完了,剩下的是一些实验,如IoU阈值取多少合适,论文进行了不同阈值效果对比,发现取0.5比较好,然后还测试了阈值取0.5时在THUMOS14数据集上各个类别的AP值,以及与其他模型取得的AP值对比。
最后是R-C3D与其他SOTA模型的一些map与速度对比。具体如下:
如有错误或不合理之处,欢迎在评论中指正。