论文题目:R-C3D: Region Convolutional 3D Network for Temporal Activity Detection (ICCV 2017)

介绍

1.jpg
R-C3D的全称为Region Convolutional 3D Network,是一个端到端的视频行为检测模型。它使用3D全卷积网络对视频流编码,生成可能包含行为的时间范围proposal,然后对proposal进行分类和微调。该模型相比现有方法,大幅度提高了速度和精度。

主要贡献:

  1. 提出能对任意长度视频、任意长度行为进行端到端检测的模型。
  2. 检测速度很快(是目前网络的5倍),通过共享proposal generation和classification的C3D参数实现。
  3. 在3个不同的数据集(THUMOS14、ActivityNet和Charades)上进行测试,效果良好,证明方法具有通用性。

方法

请输入图片描述
R-C3D的pipeline如图所示。网络有三个组成部分:

  • 3D ConvNet:特征提取网络,以视频帧作为输入,通过卷积计算出features。提取出的features被后面两个子网络所共享。
  • Proposal Subnet:以features作为输入,生成不同长度的proposals以及相应的confidence scores。
  • Classification Subnet:对proposals进行过滤,将feature map通过3D ROI Pooling池化成固定长度的features,然后进行行为类别分类并预测出精修后的行为边界。

3D ConvNet特征提取网络

使用C3D网络[1]作为骨干网络,输入是$\mathbb{R}^{3 \times L \times H \times W}$维的RGB视频帧序列,输出特征图$C_{\text {conv5b}} \in \mathbb{R}^{512 \times \frac{L}{8} \times \frac{H}{16} \times \frac{W}{16}}$。H和W均取112,L任意。

Temporal Proposal Subnet

这一部分是时序候选框提取网络,类似于Faster R-CNN中的RPN,用来提取一系列可能存在行为的候选时间区域。
3.jpg
Step 1:候选时序生成
输入视频经过上述C3D网络后得到了$512 \times \frac{L}{8} \times \frac{H}{16} \times \frac{W}{16}$维的特征图$C_{\text{conv5b}}$。然后假设anchor均匀分布在L/8的时间域上,时间域上的每个位置生成$K$个不同scale的候选时序anchor,总共有$(L / 8) * K$个anchor。

Step 2:3D Pooling
首先在特征图$C_{\text{conv5b}}$之后使用一个$3 \times 3 \times 3$的卷积核来扩展时序接收域,然后使用一个核大小为$1 \times \frac{H}{16} \times \frac{W}{16}$的3D max-pooling层在空间维度上进行下采样,产生只含有时序信息的特征图(temporal only feature map)$C_{t p n} \in \mathbb{R}^{512 \times \frac{L}{8} \times 1 \times 1}$。

Step 3:预测
$C_{t p n}$中每个时序位置处的512维特征向量用来预测每个anchor的中心位置和长度$\left\{c_{i}, l_{i}\right\}, i \in\{1, \cdots, K\}$,使用$\left\{\delta c_{i}, \delta l_{i}\right\}$表示,同时预测每个proposal是行为还是背景事件的二分类分数。proposal的坐标和分数通过在$C_{t p n}$后面添加两个$1 \times 1 \times 1$卷积层进行预测。

训练:类似于Faster R-CNN,这里也需要判定得到的候选时序是正样本还是负样本。采样一个正负样本比例为1:1的batch进行训练。

  • 正样本:与某个ground truth activity的IoU高于0.7,或与某个ground truth activity具有最高的IoU。
  • 负样本:与所有ground truth activity的IoU都低于0.3。

Activity classification Subnet

行为分类子网络有如下几个功能:

  1. 从前面产生的proposal中进行选择。
  2. 使用3D ROI Pooling对选择出的proposal提取固定长度的特征。
  3. 基于特征对proposal进行行为分类与边界回归。
    4.jpg

Step 1:NMS
使用NMS(Non-Maximum Supression,非极大值抑制)对Proposal Subnet生成的候选proposals进行选择,NMS阈值设定为0.7。

Step 2:3D ROI Pooling
在3D ROI Pooling中,$1 \times h \times w$大小的特征块会被分割为$l_{s} \times h_{s} \times w_{s}$个特征子块,每个子块的大小(约)为$\frac{l}{l_{s}} \times \frac{h}{h_{s}} \times \frac{w}{w_{s}}$,然后在每个子块内进行max pooling。

对于3D ConvNet提取的特征图$C_{\text { convi5b }} \in \mathbb{R}^{512 \times(L / 8) \times 7 \times 7}$,假设一个proposal的长度为$l_p$,则其特征大小为$l_{p} \times 7 \times 7$,将其分割为大小$1 \times 4 \times 4$的网格,则最终池化得到$512 \times 1 \times 4 \times 4$的特征。

Step 3:分类与回归
使用两个独立的全连接层分别对池化后的定长特征进行分类(activity scores)与位置回归(start-end time)。

训练:训练时需要为每个proposal指定行为类别标签,正负样本比例为1:3。

  • 若与某个ground truth activity的IoU大于0.5,则将label设为该activity的类别。
  • 若与所有ground truth activity的IoU都小于0.5,则将label设为background。

最优化

通过联合最优化两个subnet的分类和回归任务来训练网络。分类使用softmax损失,回归使用smooth L1损失。损失函数如下:

$$ L o s s=\frac{1}{N_{c l s}} \sum_{i} L_{c l s}\left(a_{i}, a_{i}^{*}\right)+\lambda \frac{1}{N_{r e g}} \sum_{i} a_{i}^{*} L_{r e g}\left(t_{i}, t_{i}^{*}\right) $$

其中$N_{cls}$和$N_{reg}$都表示batch size和proposal的个数,$\lambda$是平衡参数,设为1。$a_{i}$和$a_{i}^{*}$分别表示预测出的概率和ground truth,$t_{i}=\left\{\delta \hat{c}_{i}, \delta \hat{l}_{i}\right\}$和$t_{i}^{*}=\left\{\delta c_{i}, \delta l_{i}\right\}$分别表示预测出的proposal的相对位置和ground. truth。

坐标转换方法如下:

$$ \left\{\begin{array}{c}{\delta c_{i}=\left(c_{i}^{*}-c_{i}\right) / l_{i}} \\ {\delta l_{i}=\log \left(l_{i}^{*} / l_{i}\right)}\end{array}\right. $$

在R-C3D模型中,上述损失函数被同时应用于两个subnet中。对于proposal subnet,$L_{c l s}$是预测proposal是否含有activity的二值分类损失,$L_{reg}$则最优化proposal和ground truth间的位移;对于classification subnet,$L_{cls}$是多标签分类损失,其分类数是行为类别数加1(actions+background),$L_{reg}$则最优化activities与ground truth之间的位移。两个subnet的4个损失被联合地最优化。

预测

网络的推理分为两步:

  1. Proposal Subnet生成候选的proposals,以及相应的start-end time位置和置信度score。
  2. 使用NMS(阈值设为0.7)对proposals进行过滤,然后将挑选过的proposals输入到Classification Subnet进行类别分类和位置精修。

注意两个subnet的边界回归结果均使用的是中心和长度的相对位置形式,为了得到真实的起止时间,需要使用前文所述的的坐标转换公式的反变换。

R-C3D接受的是长度变化的视频,但为了充分利用深度学习库的向量计算实现的优势,我们对短视频进行padding(使用视频的最后一帧),对长视频进行分段。使用阈值为0.1的NMS对预测出的activities进行过滤,得到最终的预测结果。

实验结果

THUMOS14上的实验结果:
5.jpg
6.jpg

ActivityNet上的实验结果:
7.jpg

Charades上的实验结果:
8.jpg

推理速度:
9.jpg

行为检测结果的可视化:
10.jpg

参考文献

[1] Learning Spatiotemporal Features with 3D Convolutional Networks

[2] R-C3D: Region Convolutional 3D Network for Temporal Activity Detection

[3] 背包_十年的CSDN博客

Last modification:August 11th, 2019 at 11:14 pm
如果觉得我的文章对你有用,请随意赞赏