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

Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recognition

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: A Fast and Robust Motion Representation for Video Action Recognition

Optical Flow Guided Feature

由传统光流的光强不变性限制(brightness constant constraint )启发,其公式表示为:
I(x,y,t)=I(x+Δx,y+Δy,t+Δt)(1) I(x, y, t)=I(x+\Delta x, y+\Delta y, t+\Delta t) (1)
I(x,y,t)I(x,y,t) : 坐标为 (x,y)(x,y) 的像素点在 tt 时刻,其在 Δt\Delta t 光强不变,所以当我们将该假设应用到feature level,就有:
f(I;w)(x,y,t)=f(I;w)(x+Δx,y+Δy,t+Δt)(2) f(I ; w)(x, y, t)=f(I ; w)(x+\Delta x, y+\Delta y, t+\Delta t) (2)
f:f: 从image II 中提取feature的映射函数。

w:w:ff 的参数

该paper 应用的conv block(conv layer +ReLU +pooling)

p=(x,y,t)p=(x,y,t) ,根据optical flow的定义 (有这个定义嘛。。。?) 可得:
f(I;w)(p)xΔx+f(I;w)(p)yΔy+f(I;w)(p)tΔt=0(3) \frac{\partial f(I ; w)(p)}{\partial x} \Delta x+\frac{\partial f(I ; w)(p)}{\partial y} \Delta y+\frac{\partial f(I ; w)(p)}{\partial t} \Delta t=0 (3)
除以 Δt\Delta t 可得:
f(I;w)(p)xvx+f(I;w)(p)yvy+f(I;w)(p)t=0(4) \frac{\partial f(I ; w)(p)}{\partial x} v_{x}+\frac{\partial f(I ; w)(p)}{\partial y} v_{y}+\frac{\partial f(I ; w)(p)}{\partial t}=0(4)
p=(x,t,z)p=(x,t,z) 处, (vx,xy)(v_x,x_y) 表示二维点点运动变量,对 $x,y $ 的偏导则是空间梯度(spatial gradients),对 tt 的偏导则是单独在time 轴上的。

作为一个特例,也就是当 f(I;w)(p)=I(p)f(I;w)(p)=I(p) 时(即特征提取的后依然等于原像素点)则 f(I;w)(p)f(I;w)(p) 就是一个简单不变的表达,所以此时的 (vx,vy)(v_x,v_y) 就是所谓的 optical flow (常用求解equation 4这个优化问题来获得光流 )

关于 f(I;w)(p)t\frac{\partial f(I ; w)(p)}{\partial t} 项,该表示 RGB frames之间的不同。由于之前的一些工作都没解释为什么从帧之间提取的temporal difference能够work,所以以下作者进行了解释:

将 pixel I(p)I(p) 推广到feature f(I;w)(p)f(I;w)(p) .广义上将 [vx,vy][v_x,v_y] 称之为feature flow. 我们可以由equation 4得到 :
F(I;w)(p)=[f(I;w)(p)x,f(I;w)(p)y,f(I;w)(p)t] \vec{F}(I ; w)(p)=\left[\frac{\partial f(I ; w)(p)}{\partial x}, \frac{\partial f(I ; w)(p)}{\partial y}, \frac{\partial f(I ; w)(p)}{\partial t}\right]
[vx,vy,1][v_x,v_y,1] 在feature level的optical flow 的正交。

因此,F(I;w)(p)\vec{F}(I;w)(p) 的变化等同于optical flow在feature level的变化。即可以将 F(I;w)(p)\vec{F}(I;w)(p) 叫做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

Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recognition

图3。网络架构概述为两个部分。输入分为蓝色和绿色两部分,分别输入到特征生成子网络中获取基本特征。在我们的实验中,每个特征生成子网络的主干是BN-Inception[34]。这里K表示所选取的经过OFF子网络获得OFF特征的正方形特征图的最大边长。OFF子网络由多个OFF单元组成,在不同分辨率的OFF单元之间连接多个残差块[15]。从整体上看,这些剩余的块体构成了一个ResNet-20。不同子网络得到的分数是独立监督的。OFF单元的详细结构如图4所示。

Feature Generation Sub-network

basic features f(I;w)f(I;w) 使用简单CNN layer以及ReLU,max pooling,BN

OFF Sub-network
  1. 多个OFF units
  2. 不同units使用不同depth的 f(I;w)f(I;w)
  3. 每一层的OFF layer包含 1×11 \times 1 卷积
  4. out的时候将这些unit全部concatenate起来
  5. OFF 包含时间和空间梯度

f(I;c)f(I;c) 为c channels的 f(I)f(I) FxFy\mathcal{F}_x \mathcal{F}_y 分别为x和y的空间梯度。

Fx={[101101101]f(I,c)c=0,Nc1} \mathcal{F}_{x}=\left\{\left[\begin{array}{ccc}-1 & 0 & 1 \\ -1 & 0 & 1 \\ -1 & 0 & 1\end{array}\right] * f(I, c) | c=0 \ldots, N_{c}-1\right\}

Fy=[111000111]f(I,c)c=0,,Nc1 \mathcal{F}_{y}={\left[\begin{array}{ccc}1 & 1 & 1 \\ 0 & 0 & 0 \\ -1 & -1 & -1\end{array}\right] * f(I, c) | c=0, \ldots, N_{c}-1}

tips: 这里的应该就相当于用sobel算子一类的计算方式来计算这个特征来获取到横轴和纵轴的梯度值,该方法也是未来我要考虑加入的一个方面

此处的 * 表示卷积计算, NcN_cf(I)f(I) 的channels数,另外 Ft\mathcal{F}_t 是时序方向的。计算方法如下:
Ft=ft(I,c)ftΔt(I,c)c=0,,Nc1 \mathcal{F}_{t}={f_{t}(I, c)-f_{t-\Delta t}(I, c) | c=0, \ldots, N_{c}-1}
单纯计算其不同帧之间的梯度。刚刚涉及到的把OFF各层concat在一起,作者在实验中使用的 1×11 \times 1 卷积核,将output固定为128.然后统一送到OFF unit中. 在此处做了一些网络简单介绍,比如residual blocks用ResNet-20, 此处没有用到BN 说是为了防止过拟合??

Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recognition

Classfiication Sub-network

1.多个内积分类器来进行计算多个分类分数。

2.通过对每个特征生成子网络或OFF子网络进行平均,合并所有采样帧的分类分数。语义层次上的OFF可用于在训练阶段生成分类分数,分类分数通过相应的损失进行学习。

Net Train

由TSN 所提出来的方法,可以将action recogntion 转换为多分类任务

这里原文中的segment就是frame,即每一张帧。通过每个segment就可以计算出多个分类scores,所以我们将这些信息进行fuse成video-level的score来计算loss。所以在此处将 tt th的 ll level的features定义为 Ft,l\mathcal{F}_{t,l} 分类分数定义为 Gt,lG_{t,l} 所有整合在一起,video-level的score的计算公式为:
Gl=G(G0,l,,G1,l,,GNt11,l) G_{l}=\mathcal{G}(\mathbf{G}_{0, l}, \ldots, \mathbf{G}_{1, l}, \ldots, \mathbf{G}_{N_{t-1}-1, l})
用聚合函数 G\mathcal{G} 来计算机不同segments的值。由 TSN中提出的方法,该聚合函数可以用平均池化层效果更好。loss设置为交叉熵,在每一层的计算方法为:
Ll(y,Gl)=c=1Cyc(Gl,clogj=1CeGl,j) \mathcal{L}_{l}(y, G_{l})=-\sum_{c=1}^{C} y_{c}(G_{l, c}-\log \sum_{j=1}^{C} e^{G_{l, j}})
ycy_c 为ground-truth label

Two-stage Training Strategy
  1. TSN一类来训练feature generation

  2. 固定权值然后进行下一步骤的train

Intermediate Supervision during Training

在训练过程中,对OFF训练采用一种中间监督的方法来提升其效果。

Reducinhg the Memory Cost

对帧进行采样,如果训练和测试之间采样不同数量的片段,那么片段之间的持续时间可能会有所不同。根据 equation 3的公式,只有 Δt\Delta t 是fixed变量,equation 4才可以成立,如果我们在train和test中采样不同frames,那么时间间隔就不一样,所以就会导致eqution 4不成立

tips:此处大概意思就是,如果采样不采用相同频率,那么时间间隔t就是不一致的,所以会导致等式不成立.(多个变量了都)

所以采样方式如下:

设置 α\alpha 为训练采样的帧数,β\beta 为测试采样的。video长度 LL 将会被分割为 L/β\lfloor L / \beta\rfloor ,然后在如下公式中:
0,1,,L1(α1)L/β 0,1, \ldots, L-1-(\alpha -1) *\lfloor L / \beta\rfloor
随机选择 pp, 将p当成fream seed. 可得总的training set就是 :
{p,p+L/β,,p+(α1)L/β} \{p, p+\lfloor L / \beta\rfloor, \dots, p+(\alpha-1) *\lfloor L / \beta\rfloor\}

ignore the network test and experiments

相关文章: