Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recognition
Abstract
1.提出了一个Optical Flow guided Feature(OFF)模块,可以用于video action recognition。直接理解,该模块可以直接计算deep feature maps的pixel-wise level的空间时序梯度。
2.可以使cnn来提取到空间时序信息(显著效果在frames间)。
3.cost小,同时acc不错。
4.开源 github地址:开源地址
Introduction
1.temporal information is the key ingredient of video action recognition
2.提取dense optical flow 并不高效
3.3D CNN(以RGB作为input)可以获取temporal information 但是其效果仍比不上two-stream 的方法
4.two steam方法有(paper):
(1)Two-stream convolutional networks for action recognition in videos
(2)Temporal segment networks: Towards good practices for deep action recognition.
Optical Flow guided Feature
1.从optical flow 的orthogonal space(正交空间) 定义一个新的特征表达
2.该特征可从特征图中提取垂直方向和水平方向的spatial gradients,同时时间梯度(temporal gradients 通过不同frame之间的特征图来获得)
3.全部操作都可微,即可bp。所以可将该模块直接嵌入cnn 架构进行训练。
4.OFF的一个重要组成部分就是不同image/segments之间的feature 差异(两张图之间的运动信息用CNN直接提取)。shown in Fig 1
5.不同图像中的负值表示身体部分/物体消失的位置,而正值表示身体部分/物体出现的位置。 (由CNN提取)
6.时间差异可以进一步与空间梯度相结合。(稍后有推导)
7.在feature map上做这个faster and rebust 原因:
(1)它使空间和时间网络具有weights共享的能力
(2)通过在原始帧中可靠地消除局部和背景噪声,深度学习的特征能传达更多的语义和鉴别表征。
8.Two contribution:
(1)OFF is a fast and robust motion representation. 200frames/s (only RGB as the input)
(2)an OFF equipped network can be trained in an end-to-end fashion.
Related work
1.a breakthrough in action recogntion is two-stream based on CNN(用CNN来学习hand-craft的feature)
2.用3D CNN来提取motion information,但是依赖项相对较多(net arch,training sample,param regularization),sota的3d CNN still rely on traditional optical flow来捕获motion patterns.
3.comparision :
OFF :
(1)RGB stream等同于two stream 方法
(2)与optical flow这种motion representation 可以互补使用
4.获取长时间段的时序信息,引入LSTM来编码sequence-illustrating features
5.集成ranked pool方法的叫做dynamic image方法,是summarize 一连串frames的,但是OFF是直接或许motion information的。
Optical Flow Guided Feature
由传统光流的光强不变性限制(brightness constant constraint )启发,其公式表示为:
: 坐标为 的像素点在 时刻,其在 光强不变,所以当我们将该假设应用到feature level,就有:
从image 中提取feature的映射函数。
为 的参数
该paper 应用的conv block(conv layer +ReLU +pooling)
设 ,根据optical flow的定义 (有这个定义嘛。。。?) 可得:
除以 可得:
在 处, 表示二维点点运动变量,对 $x,y $ 的偏导则是空间梯度(spatial gradients),对 的偏导则是单独在time 轴上的。
作为一个特例,也就是当 时(即特征提取的后依然等于原像素点)则 就是一个简单不变的表达,所以此时的 就是所谓的 optical flow (常用求解equation 4这个优化问题来获得光流 )
关于 项,该表示 RGB frames之间的不同。由于之前的一些工作都没解释为什么从帧之间提取的temporal difference能够work,所以以下作者进行了解释:
将 pixel 推广到feature .广义上将 称之为feature flow. 我们可以由equation 4得到 :
是 在feature level的optical flow 的正交。
因此, 的变化等同于optical flow在feature level的变化。即可以将 叫做OFF。
Using Optical Flow Guided Feature in Con- volutional Neural Network
Network Arch
网络包含三个sub-network,分为三个部分:
1.feature generation
这个sub-network就是使用common的CNN结构来提取一层特征。
2.OFF
将feature generation得到的feature进一步的提取,然后采用resnet思路进行refine,其实这里应该就有点像是嵌套了一个unet网络?
3.classfication
将前两个sub-network的结果进行直接action recogntion
图3。网络架构概述为两个部分。输入分为蓝色和绿色两部分,分别输入到特征生成子网络中获取基本特征。在我们的实验中,每个特征生成子网络的主干是BN-Inception[34]。这里K表示所选取的经过OFF子网络获得OFF特征的正方形特征图的最大边长。OFF子网络由多个OFF单元组成,在不同分辨率的OFF单元之间连接多个残差块[15]。从整体上看,这些剩余的块体构成了一个ResNet-20。不同子网络得到的分数是独立监督的。OFF单元的详细结构如图4所示。
Feature Generation Sub-network
basic features 使用简单CNN layer以及ReLU,max pooling,BN
OFF Sub-network
- 多个OFF units
- 不同units使用不同depth的
- 每一层的OFF layer包含 卷积
- out的时候将这些unit全部concatenate起来
- OFF 包含时间和空间梯度
为c channels的 分别为x和y的空间梯度。
tips: 这里的应该就相当于用sobel算子一类的计算方式来计算这个特征来获取到横轴和纵轴的梯度值,该方法也是未来我要考虑加入的一个方面
此处的 表示卷积计算, 为 的channels数,另外 是时序方向的。计算方法如下:
单纯计算其不同帧之间的梯度。刚刚涉及到的把OFF各层concat在一起,作者在实验中使用的 卷积核,将output固定为128.然后统一送到OFF unit中. 在此处做了一些网络简单介绍,比如residual blocks用ResNet-20, 此处没有用到BN 说是为了防止过拟合??
Classfiication Sub-network
1.多个内积分类器来进行计算多个分类分数。
2.通过对每个特征生成子网络或OFF子网络进行平均,合并所有采样帧的分类分数。语义层次上的OFF可用于在训练阶段生成分类分数,分类分数通过相应的损失进行学习。
Net Train
由TSN 所提出来的方法,可以将action recogntion 转换为多分类任务。
这里原文中的segment就是frame,即每一张帧。通过每个segment就可以计算出多个分类scores,所以我们将这些信息进行fuse成video-level的score来计算loss。所以在此处将 th的 level的features定义为 分类分数定义为 所有整合在一起,video-level的score的计算公式为:
用聚合函数 来计算机不同segments的值。由 TSN中提出的方法,该聚合函数可以用平均池化层效果更好。loss设置为交叉熵,在每一层的计算方法为:
为ground-truth label
Two-stage Training Strategy
-
TSN一类来训练feature generation
-
固定权值然后进行下一步骤的train
Intermediate Supervision during Training
在训练过程中,对OFF训练采用一种中间监督的方法来提升其效果。
Reducinhg the Memory Cost
对帧进行采样,如果训练和测试之间采样不同数量的片段,那么片段之间的持续时间可能会有所不同。根据 equation 3的公式,只有 是fixed变量,equation 4才可以成立,如果我们在train和test中采样不同frames,那么时间间隔就不一样,所以就会导致eqution 4不成立
tips:此处大概意思就是,如果采样不采用相同频率,那么时间间隔t就是不一致的,所以会导致等式不成立.(多个变量了都)
所以采样方式如下:
设置 为训练采样的帧数, 为测试采样的。video长度 将会被分割为 ,然后在如下公式中:
随机选择 , 将p当成fream seed. 可得总的training set就是 :