行为识别链接
主要参考1
行为识别主要包含两个方向,
Dense Trajectories and Motion Boundary Descriptors for Action Recognition
Action Recognition with Improved Trajectories
密集轨迹算法(Dense Trajectories算法):Improve dense trajectory简称iDT,是一种用来提取视频密集跟踪轨迹的算法;通常基于该轨迹进行取块计算descriptor
算法基本框架
如图所示即为算法的基本框架,包括:
DT方法通过网格划分的方式在图片的多个尺度上分别密集采样特征点。
在多个空间尺度上采样能保证采样的特征点覆盖了所有空间位置和尺度,通常8个空间尺度已经非常足够了,若图像很大,可以适当增加。后续的特征提取也是在各个尺度上分别进行的。
特征点采样的间隔(即网格的大小)W通常取W=5。
多尺度的解释
对图片进行缩放以便对各种尺度的对象都能进行识别。
在视频序列中对每一帧的兴趣点进行跟踪就形成trajectory,若是对每一帧密集采样兴趣点进行跟踪就形成dense trajectory;
对采样点进行跟踪:由光流判断跟踪点在下一帧的位置;
对每个点跟踪都会形成一条trajectory,为了避免长时间跟踪而产生的跟踪点漂移现象,可以对跟踪的长度L进行约束(L=15)
这里也就暴漏了该方法不能处理长视频的原因
现实视频中存在摄像头运动的缺陷,因此需要相应算法消除摄像头影响,得到最终的iDT;
四种特征:
trajectory轨迹特征:
每条trajectory都可以提取一个轨迹特征向量S’(当L=15,S’为30维),对局部动作模式进行编码
HOG特征:
HOG特征计算的是灰度图像梯度的直方图。对视频块进行表面特征描述。直方图的bin数目为8。所以HOG特征的长度为2X2X3X8=96.
HOF特征:
HOF计算的是光流的直方图。直方图的bin数目取为8+1,前8个bin与HOG都相同。额外的一个用于统计光流幅度小于某个阈值的像素。故HOF的特征长度为223*9=108.
MBH特征:
MBH计算的是光流图像梯度的直方图,也可以理解为在光流图像上计算的HOG特征。由于光流图像包括X方向和Y方向,故分别计算MBHx和MBHy。MBH总的特征长度为2*96=192. 最后进行特征的归一化,DT算法中对HOG,HOF和MBH均使用L2范数进行归一化。
Two-stream convolutional networks for action recognition in videos2
Two-Stream CNN网络顾名思义分为两个部分,
两个流最后经过softmax后,做分类分数的融合,可以采用平均法或者是SVM。不过这两个流都是二维卷积操作。最终联合训练,并分类。
如图所示,其实做法非常的简单,相当于训练两个CNN的分类器。一个是专门对于 RGB 图的, 一个专门对于光流图的, 然后将两者的结果进行一个 fushion 的过程。
RGB图的选择:
是对于所给的一段视频随机挑选出视频中的任意一帧;
光流图的选择:
视频中的任意一帧的时间然后及其后面的N帧叠合成一个光流栈进入训练。这种光流的训练方式是论文作者认为,这样子的光流叠加可以获得它的运动信息流,但是实际上光流图并不是以motion的信息来得到结果,有兴趣可以参看下面参考资料3
因为这个双流法是训练了两个网络,在最后 softmax 前进行了fushion,显示效果不错。这是一篇14年的开篇之作,在16年4时候,有人对fushion的位置**(可以类比通道混洗进行一番研究)**进行了研究。
主要因为它仅仅操作一帧(空间网络)或者操作短片段中的单堆帧(时间网络),因此对时间上下文的访问是有限的。视频级框架TSN可以从整段视频中建模动作。
Temporal Segment Networks Towards Good Practices for Deep Action Recognition5
根据 two-stream 改进的网络框架。这一个框架的改进初衷是因为最原始版本的two-stream对长视频的内容分类效果并不好。
比如各个学校都是有运动会的,现在我们来到跳远场地拍了一段一位选手的跳远过程视频。然后我们将这段视频丢给原先的 Two-stream 框架进行测试,结果得到了一个跑步的结果。这是为什么呢?
就是因为我们抽取机制的方式,我们随机抽取与训练的方式,不能覆盖的这段视频的过程。因为跳远是一个助跑与跳的过程,他有比较强烈的时间序列性质。
相同:
TSN也是由空间流卷积网络和时间流卷积网络构成。
不同:
不同于two-stream采用单帧或者单堆帧。
而TSN改进的方面非常的简单,它只是:
由上图所示,一个输入视频被分为 K 段(segment),一个片段(snippet)从它对应的段中随机采样得到。不同片段的类别得分采用段共识函数(The segmental consensus function)进行融合来产生段共识(segmental consensus),这是一个视频级的预测。然后对所有模式的预测融合产生最终的预测结果。
具体来说,给定一段视频 V,把它按相等间隔分为 KK 段 S 1 , S 2 , ⋯ , S K {S_1,S_2,⋯,S_K} S1,S2,⋯,SK。接着,TSN按如下方式对一系列片段进行建模:
其中:
其中,C 是行为总类别数,yi 是类别 i 的groundtruth,实验中片段的数量 K 设置为3。本工作中共识函数 G 采用最简单的形式,即 Gi=g(Fi(T1),…,Fi(TK)),采用用聚合函数 g(aggregation function)从所有片段中相同类别的得分中推断出某个类别分数 Gi。聚合函数 g 采用均匀平均法来表示最终识别精度。
TSN是可微的,或者至少有次梯度,由 g 函数的选择决定。这使我们可以用标准反向传播算法,利用多个片段来联合优化模型参数 W。在反向传播过程中,模型参数 W 关于损失值 L 的梯度为:
其中,K是TSN使用的段数。TSN从整个视频中学习模型参数而不是一个短的片段。与此同时,通过对所有视频固定 K,作者提出了一种稀疏时间采样策略,其中采样片段只包含一小部分帧。与先前使用密集采样帧的方法相比,这种方法大大降低计算开销.
Learning spatiotemporal features with 3d convolutional networks6
github:Caffe
C3D是除了Two-Stream后的另外一大主流方法,但是目前来看C3D的方法得到的效果普遍比Two-Stream方法低好几个百分点。但是C3D仍然是目前研究的热点,主要原因是该方法比Two-Stream方法快很多,而且基本上都是端到端的训练,网络结构更加简洁。该方法思想非常简单,图像是二维,所以使用二维的卷积核。**视频是三维信息,那么可以使用三维的卷积核。**所以C3D的意思是:用三维的卷积核处理视频。
此部分采用C3D网络架构提取视频序列帧的特征,类似于2D卷积,3D卷积的形象描述如下图3©所示。3D卷积对H、W和L三个维度都进行卷积,而2D卷积(多通道(b))只对H和W两个维度进行卷积,因此3D卷积得到的是三维输出,而2D卷积得到的是二维输出。
区别:
如果输入一段视频,其大小是,其中C是通道数(一般是3),,h和w分别是每帧的高和宽,3D卷积的卷积核和池化核也是3D的,很容易想象得到,就是比2D的往里扩展一个维度,所以核大小是d是核的时间深度,K*K是空间上的大小。
C3D共有8次卷积操作,5次池化操作。其中卷积核的大小均为 3 ∗ 3 ∗ 3 3*3*3 3∗3∗3,步长为 1 ∗ 1 ∗ 1 1*1*1 1∗1∗1。池化核为 2 ∗ 2 ∗ 2 2*2*2 2∗2∗2,但是为了不过早的缩减在时序上的长度,第一层的池化大小和步长为 1 ∗ 2 ∗ 2 1*2*2 1∗2∗2。
最后网络在经过两次全连接层和softmax层后得到的最终的输出结果。网络的输入为 3 ∗ 16 ∗ 112 ∗ 112 3*16*112*112 3∗16∗112∗112,其中3为RGB三通道,16为输入图像的帧数, 112 ∗ 112 112*112 112∗112是图像的输入尺寸。
class C3D(nn.Module):
"""
The C3D network as described in [1].
"""
def __init__(self):
super(C3D, self).__init__()
self.conv1 = nn.Conv3d(3, 64, kernel_size=(3, 3, 3), padding=(1, 1, 1))
self.pool1 = nn.MaxPool3d(kernel_size=(1, 2, 2), stride=(1, 2, 2))
self.conv2 = nn.Conv3d(64, 128, kernel_size=(3, 3, 3), padding=(1, 1, 1))
self.pool2 = nn.MaxPool3d(kernel_size=(2, 2, 2), stride=(2, 2, 2))
self.conv3a = nn.Conv3d(128, 256, kernel_size=(3, 3, 3), padding=(1, 1, 1))
self.conv3b = nn.Conv3d(256, 256, kernel_size=(3, 3, 3), padding=(1, 1, 1))
self.pool3 = nn.MaxPool3d(kernel_size=(2, 2, 2), stride=(2, 2, 2))
self.conv4a = nn.Conv3d(256, 512, kernel_size=(3, 3, 3), padding=(1, 1, 1))
self.conv4b = nn.Conv3d(512, 512, kernel_size=(3, 3, 3), padding=(1, 1, 1))
self.pool4 = nn.MaxPool3d(kernel_size=(2, 2, 2), stride=(2, 2, 2))
self.conv5a = nn.Conv3d(512, 512, kernel_size=(3, 3, 3), padding=(1, 1, 1))
self.conv5b = nn.Conv3d(512, 512, kernel_size=(3, 3, 3), padding=(1, 1, 1))
self.pool5 = nn.MaxPool3d(kernel_size=(2, 2, 2), stride=(2, 2, 2), padding=(0, 1, 1))
self.fc6 = nn.Linear(8192, 4096)
self.fc7 = nn.Linear(4096, 4096)
self.fc8 = nn.Linear(4096, 487)
self.dropout = nn.Dropout(p=0.5)
self.relu = nn.ReLU()
self.softmax = nn.Softmax()
def forward(self, x):
# a pytorch batch(n, ch, fr, h, w)
h = self.relu(self.conv1(x))
h = self.pool1(h)
h = self.relu(self.conv2(h))
h = self.pool2(h)
h = self.relu(self.conv3a(h))
h = self.relu(self.conv3b(h))
h = self.pool3(h)
h = self.relu(self.conv4a(h))
h = self.relu(self.conv4b(h))
h = self.pool4(h)
h = self.relu(self.conv5a(h))
h = self.relu(self.conv5b(h))
h = self.pool5(h)
h = h.view(-1, 8192)
h = self.relu(self.fc6(h))
h = self.dropout(h)
h = self.relu(self.fc7(h))
h = self.dropout(h)
logits = self.fc8(h)
probs = self.softmax(logits)
return probs
RPAN:An End-to-End Recurrent Pose-Attention Network for Action Recognition in Videos7
参考8
整个网络框架可以分成三个大的部分:
下面是整体网络结构图:
特征生成部分Convolution Feature Cube from CNN
作者采用了 two-stream CNN2的网络框架,生成了convolution cubes。包含空间和时间上的。
Pose Attention Mechanism(姿态注意机制)
LSTM
最后将St输入到LSTM网络中:
Convolutional-De-Convolutional Networks for Precise Temporal Action Localization in Untrimmed Videos9
在C3D网络的后面增加了时间维度的上采样操作,做到了帧预测(frame level labeling)。以下是文章主要贡献点。
CDC网络在C3D的基础上用反卷积,将时序升维。做到了帧预测。以下是CDC网络的结构图。
网络步骤如下所示。
CDC网络的最终输出形状是(K+1,L,1,1),其中K+1表示K个动作类别加上背景类。
文章的还有一大贡献点是反卷积的设计,因为经过C3D网络输出后,存在时间和空间两个维度,文章中的CDC6完成了时序上采样,空间下采样的同时操作。
如上图所示,(a)(b)一般的都是先进行空间的下采样,然后进行时序上采样。
©但是CDC中设计了两个独立的卷积核(下图中的红色和绿色)。同时作用于112x112xL/8的特征图上。每个卷积核作用都会生成2个1x1的点,如上conv6,那么两个卷积核就生成了4个。相当于在时间域上进行了上采样过程。
R-c3d: Region convolutional 3d network for temporal activity detection11
输入是整个视频(或者任意长度视频段),C3D特征的输出被第2步和第3步共享。
网络的总体结构:
特征提取网络:
C3D网络构成的特征提取网络提取特征,等效于Faster-RCNN中的ImageNet预训练的特征网络。骨干网络作者选择了C3D网络,经过C3D网络的5层卷积后,可以得到512 x L/8 x H/16 x W/16大小的特征图。这里不同于C3D网络的是,R-C3D允许任意长度的视频L作为输入。
Temporal Proposal Subnet给出建议区域:
根据C3D特征,给可能包含活动(activities)的时间区域(propose temporal regions)。等效于Faster-RCNN中的RPN,这里被称为Proposal Subnet
候选时序生成
输入视频经过上述C3D网络后得到了512 x L/8 x H/16 x W/16大小的特征图。然后作者假设anchor均匀分布在L/8的时间域上,也就是有L/8个anchors,每个anchors生成K个不同scale的候选时序。
3D Pooling
得到的 512xL/8xH/16xW/16的特征图后,为了获得每个时序点(anchor)上每段候选时序的中心位置偏移和时序的长度,作者将空间上H/16 x W/16的特征图经过一个3x3x3的卷积核和一个3D pooling层下采样到 1x1。最后输出 512xL/8x1x1.
Training
类似于Faster R-CNN,这里也需要判定得到的候选时序是正样本还是负样本。文章中的判定如下。
Activity Classification Subnet行为分类子网络:
根据C3D特征和建议区域,得到区域内的实际活动(activities)类型,比如图中的跑步。等效于Faster-RCNN中的ROI POOLING+网络后半段的分类网络,这里被称为Classification Subnet。
NMS
针对上述Temporal Proposal Subnet提取出的segment,采用NMS(Non-maximum Suppression)非极大值抑制生成优质的proposal。NMS 阈值为0.7.
3D RoI
RoI (Region of interest,兴趣区域).这里,个人感觉作者的图有点问题,提取兴趣区域的特征图的输入应该是C3D的输出,也就是512xL/8xH/16xW/16,可能作者遗忘了一个输入的箭头。 假设C3D输出的是 512xL/8x7x7大小的特征图,假设其中有一个proposal的长度(时序长度)为lp,那么这个proposal的大小为512xlpx7x7,这里借鉴SPPnet中的池化层,利用一个动态大小的池化核,ls x hs x ws。最终得到 512x1x4x4大小的特征图
全连接层
经过池化后,再输出到全连接层。最后接一个边框回归(start-end time )和类别分类(Activity Scores)。
Traning
在训练的时候同样需要定义行为的类别,如何给一个proposal定label?同样采用IoU。
这里,训练的时候正/负样本比例为1:3。
Paper:Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset
github: kenetics-i3d
主要参考:https://blog.csdn.net/Gavinmiaoc/article/details/81208997
Figure 2. Video architectures considered in this paper. K stands for the total number of frames in a video, whereas N stands for a subset of neighboring frames of the video.
Long-term recurrent convolutional networks for visual recognition and description(2015)12
Learning spatiotemporal features with 3d convolutional networks(2015)6
3D ConvNet看上去是一种很自然的方法,能够直接对于时空数据创建高层表征
但这个模型有两个问题:
模型细节:
是原论文中C3D的变种。8层卷积、5层pooling、2层全连接。与C3D的区别在于这里的卷积和全连接层后面加BN;且在第一个pooling层使用stride=2,这样使得batch_size可以更大。输入是16帧,每帧112*112。
Two-stream convolutional networks for action recognition in videos(NIPS2016)2
LSTM缺点:
能model高层变化却不能捕捉低层运动(因为在低层,每个帧都是独立地被CNN提取特征),有些低层运动可能是重要的;训练很昂贵
Two-Stream Networks:
将单独的一张RGB图片和一叠计算得到的光流帧分别送入在ImageNet上预训练的ConvNet中,再把两个通道的score取平均。这种方法在现在的数据集上效果很好,训练和测试都十分经济。
一个改进(Fused Two-Stream):
在最后一层卷积层之后,使用3D ConvNet把空间流和时间流融合(相比于传统双流是在softmax后才做fusion,把softmax输出的score进行平均)
在HMDB数据集上提升了效果,测试时间也更短
模型细节:
输入是每隔10帧取连续的5帧以及相应的光流。在Inception v1之后,是一个 3 ∗ 3 ∗ 3 3*3*3 3∗3∗3的3D卷积层,输出是512个channel,随后是一个 3 ∗ 3 ∗ 3 3*3*3 3∗3∗3的3D max-pooling层以及全连接层。这个新的网络是用高斯随机初始化
对于双流网络有两种实现:
Convolutional two-stream network fusion for video action recognition(CVPR2016)13
利用在ImageNet上预训练好的2D模型的参数;
Idea: 若是把ImageNet中的同一张图片反复复制生成一个序列,那么这个序列就可以当作是一个video来训练3D模型了
具体实现:把2D模型中的核参数在时间维上不断复制,形成3D核的参数,同时除以N,保证输出和2D上一样;别的非线性层结构都与原来的2D模型一样
对于3D来说,时间维度不能缩减地过快或过慢。如果时间维度的感受野尺寸比空间维度的大,将会合并不同物体的边缘信息。反之,将捕捉不到动态场景。因此改进了BN-Inception的网络结构。
RGB和光流是分开训练的,测试时将它们预测的结果进行平均,如下图。
Rethinking Spatiotemporal Feature Learning: Speed-Accuracy Trade-offs in Video Classification
主要参考14
本文在I3D的基础上进行network surgery:
我们发现Top-Heavy-I3D模型更快,这个不难理解,因为它只在抽象层的feature map上进行3D,这些feature map往往比低层级的feature map尺寸上更小。另一个发现是Top-Heavy-I3D模型通常还更加精确,这还挺惊讶的,因为毕竟它忽略了低层级的motion cues.
将I3D中所有的3D conv替换成2D conv,如图Fig.2(a)==>(b)所示。然后在kinetics Full和something-something上进行训练测试。训练时都是按照正常的帧顺序输入,测试时考虑正常序和倒序两种帧顺序。结果如Table 1所示。
我们可以发现I2D的表现在正常序和倒序是稳定的,这符合续期。而I3D在Kinetics-Full数据集上正常序和倒序表现一致,而在Something-something数据集上倒序的精度低很多。我们认为这是因为Something-something这个数据集需要更细致的特征来区分视觉信息上非常相似的动作类别,例如“Pushing something from left to right” 和“Pushing something from right to left”。
虽然我们从2.1的实验中看到
所以在本节中,我们讨论将部分3D conv替换成2D。我们以I2D作为起点,
我们在Mini-Kinetics-200和Something-something数据集上训练和测试,结果如Fig.4所示,
最后文章参考了17年ImageNet冠军提出的S-E block方案,提出了S3D-G block,并以此搭建了S3D-G网络,文章中说得gating其实相当于一种attention map,或者说是一种加权的方式,我们使用squeeze-excitation的方式来讲解gating的过程更容易理解。如下图所示:
根据上图就很容易理解论文中的gating操作了,首先对于尺寸为 CxTxHxW 的 feature map 进行 squeeze操作,也就是文章中的pooling操作,文章分别使用了 空间-时间池化、空间池化、时间池化、不做池化等方法,然后对squeeze的结果进行excitation操作,使用一个变换矩阵将上一步池化的结果变换为尺寸为 C 的加权向量或者说是注意力向量。变换矩阵的尺寸和池化的结果尺寸有关。最后使用该加权向量对原特征图中的channel维度进行加权。得到最终的 S3D-G模块。
Table 2,3对比了Kinetics-Full、Something-something上S3D和I3D的结果。S3D精度高,参数少,FLOPS小。我们认为这种acc上的增益是因为spatial-temporal的分解有利于减少overfitting,同时并没有降低模型的表达能力(我们发现单纯减少模型的参数对性能提升没有帮助)。
注意这种拆分的操作可以在任意3D conv上进行,因此Bottom-Heavy-I3D的拆分版本是Bottom-Heavy-S3D, Top-Heavy-I3D的拆分版本是 Top-Heavy-S3D。它们之间的性能对比如Fig4所示,我们发现seperate top-heavy模型能够在速度-精度之间做出很好的trade-off。另外,如果我们保留top 2 层为separable 3D conv,剩余的都是2D conv,我们发现速度-精度之间trade-off最好,称其为Fast-S3D。
Convolutional Block Attention Module
channel-wise attention 看成是教网络 Look 'what’;
而spatial attention 看成是教网络 Look ‘where’,
所以它比 SE Module 的主要优势就多了后者。
Channel attention module.
由于特种图的每个通道都被看作是一个特征检测器,所以在给定的输入图像下,通道的注意力会集中在”什么“是有意义的。
Spatial attention module.
作者利用特征间的空间关系来生成空间注意力图。空间注意不同于通道注意,它侧重于信息部分的位置,是对渠道注意的补充。
作者发现对于两个注意力模块,顺序排列比并行排列的结果更好。而且先用通道注意力,再用空间注意力的效果更好。
Collaborative Spatiotemporal Feature Learning for Video Action Recognition
更重要的是,丰富的运动信息嵌入在每一帧中,而不是帧之间。因此,T-W和T-H视图的帧上的二维卷积能够直接捕获时间运动提示。
主要是将InceptionV3的分解卷积核的思想拓展到时-空领域,并结合self-attention机制。 而且分解的卷积核参数共享(转置一下继续使用)。不同view featuremaps 施加self-attention机制(加可学习权重求和)。实现spatiotemporal collaboration。如下图:
加权系数是可学习的C2 * 3的向量,C2是输出通道数。文章对比了两种加权系数学习方法:
ablation实验表明。self-attention的加权系数方法效果较好。两种框架如图:
这种机制的效果稍好:
提出的CoST与C2D和C3D密切相关。如图6(a)所示,如果将T-W和T-W视图的系数设为零,则成本退化为C2D。
图6(b)显示了k = 3时感受野的比较。c3d覆盖整个3×3×3立方体,而CoST覆盖阴影区域,不包括8个角体素**。如果三个视图的卷积核是单独学习而不进行权重分配的,那么除了三次核的8个角参数固定为零且不可学习外,CoST几乎等于c3d。**当在CoST上启用权值共享时,虽然接受域总共包含19个体素,但是对应的19个参数可以从不同视图之间共享的9个可学习参数中得到。因此,CoST可以看作是C3D的一个特例,相似的感受野被明显减少的参数所覆盖。
通过优化实现,可以将乘法添加的数量从3k2减少到3k2−3k + 1,例如,对于k = 3的情况,可以从27减少到19 (save∼30%)。
Temporal Shift Module for Efficient Video Understanding
文章主要思路就是在2Dspatio卷积的时候,每一个通道上有一个时序的平移,这样一次2d卷积就可以感受到其他时间上的空间信息。
Non-local Neural Networks
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zQ0CPUba-1593483113552)(https://gitee.com/pzhren/img/raw/master/img/1574949608320.png)]
Dual Attention Network for Scene Segmentation
捕获特征图的任意两个位置之间的空间依赖*,对于某个特定的特征,被所有位置上的特征加权和更新。*权重为相应的两个位置之间的特征相似性。因此,任何两个现有相似特征的位置可以相互贡献提升,而不管它们之间的距离。
https://zhuanlan.zhihu.com/p/34439558 ↩︎
Simonyan K, Zisserman A. Two-stream convolutional networks for action recognition in videos[C]//Advances in neural information processing systems. 2014: 568-576. ↩︎ ↩︎ ↩︎
https://blog.csdn.net/elaine_bao/article/details/80891173【光流在视频识别中的作用】 ↩︎
https://arxiv.org/abs/1604.06573 ↩︎
https://arxiv.org/abs/1608.00859 ↩︎
Tran D, Bourdev L, Fergus R, et al. Learning spatiotemporal features with 3d convolutional networks[C]//Computer Vision (ICCV), 2015 IEEE International Conference on. IEEE, 2015: 4489-4497.http://vlg.cs.dartmouth.edu/c3d/c3d_video.pdf ↩︎ ↩︎
Du W, Wang Y, Qiao Y. Rpan: An end-to-end recurrent pose-attention network for action recognition in videos[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 3725-3734. ↩︎
https://blog.csdn.net/neu_chenguangq/article/details/79164830?utm_source=blogxgwz7 ↩︎
Shou Z, Chan J, Zareian A, et al. CDC: convolutional-de-convolutional networks for precise temporal action localization in untrimmed videos[C]//2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, 2017: 1417-1426. ↩︎
https://blog.csdn.net/weixin_38145317/article/details/90902425【什么是端到端的训练或学习】 ↩︎
Xu H, Das A, Saenko K. R-c3d: Region convolutional 3d network for temporal activity detection[C]//The IEEE International Conference on Computer Vision (ICCV). 2017, 6: 8.https://arxiv.org/pdf/1703.07814.pdf ↩︎
J. Donahue, L. Anne Hendricks, S. Guadarrama, M. Rohrbach, S. Venugopalan, K. Saenko, and T. Darrell. Long-term recurrent convolutional networks for visual recognition and description. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 2625–2634, 2015. ↩︎
C. Feichtenhofer, A. Pinz, and A. Zisserman. Convolutional two-stream network fusion for video action recognition. In IEEE International Conference on Computer Vision and Pattern Recognition CVPR, 2016. ↩︎
时空域特征学习的反思:视频分类中速度与精度的权衡 ↩︎