论文笔记--ActionVLAD: Learning spatio-temporal aggregation for action classification

介绍

这是去年CVPR2017的一篇动作分类的文章,用tensorflow实现,有预训练模型,代码链接如下:
http://rohitgirdhar.github.io/ActionVLAD
这篇文章在时空上分别独立提取特征,然后做pooling聚合,采用了一种VLAD的pooling方法,端到端的训练,主要解决两个疑惑:
1.如何聚合视频帧之间的特征来表示整个视频。
2.在多流网络中(例如two-stream)里面如何整合不同流(双流)的信息。

动机

论文笔记--ActionVLAD: Learning spatio-temporal aggregation for action classification_第1张图片
一整段视频中虽然是单一的动作分类,但是可能有多个不同的子类特征,例如basketball shoot中有hoop,dribbling,jump,group,throw,ball,running等多个子类特征,所以我们想找方法去整合多个子类特征到一整段视频特征的表示中。

相关工作

特征聚合:VLAD和FV,之前是作为一种方式对提取的图像特征进行后处理编码,常用于图像检索,近年来开始用端到端的训练方法在卷积神经网络中表示图像特征。本文基于此工作扩展到了视频上。
贡献:1.基于two-stream做聚合表示视频特征。2.提出来了多种不同的pooling策略。3.在UCF101和HMDB51上取得了巨大提升。

视频双流结构

为了解决上述motivation中的问题,中聚合层中就有了这样一个参数,action words。它可以理解为子类特征的聚类中心。

可训练的时空聚合层

xi,tRD x i , t ∈ R D ,是一个从一段视频中帧 t{1...T} t ∈ { 1... T } 的位置 i{1...N} i ∈ { 1... N } 中提取的D-dimension局部特征描述子。划分这个特征描述子空间 RD R D 到K个action words,可以表示为锚点 {ck} { c k } .,那么每一个描述子 xi,t x i , t 被分配到一个聚类中心,残差向量 xi,tck x i , t − c k 表示描述子和锚点之间的残差,然后把整段视频的残差累加
论文笔记--ActionVLAD: Learning spatio-temporal aggregation for action classification_第2张图片
这里 α α 是一个超参数,j是指D-dimension中的第j个维度。输出V是一个矩阵,表示k个聚类中心的D-dimension特征描述子,经过normalize后展开为 vRKD v ∈ R K D 描述子即可表示整个视频。
论文笔记--ActionVLAD: Learning spatio-temporal aggregation for action classification_第3张图片
这是整个视频双流结构图,可以看出基于two-stream框架,就是多了一个可训练的ActionVLAD层。
论文笔记--ActionVLAD: Learning spatio-temporal aggregation for action classification_第4张图片
这个则是不同pooling策略建模的对比,可以看出max pooling和average pooling都只能关注到部分子类特征,而ActionVLAD却可以聚合不同子类特征的描述子来共同描述视频特征。

聚合层位置

1.FC层 就如上述描述都D-dimension描述子操作即可。
2.conv层 需要将feature map展开为 h×w×c h × w × c 维描述子。

双流融合方法

论文笔记--ActionVLAD: Learning spatio-temporal aggregation for action classification_第5张图片
第一种是直接concat策略,第二种和第三种都是average策略,只是融合位置稍显不同。

实现细节

K=64, α α =1000,dropout=0.5,T=25,梯度裁剪阈值为5,adam里面 ϵ=104 ϵ = 10 − 4 ,分两阶段训练:第一阶段,先用kmeans固定ActionVLAD,学习率为0.01;第二阶段,再学习ActionVLAD,学习率为 104 10 − 4 .

效果展示

论文笔记--ActionVLAD: Learning spatio-temporal aggregation for action classification_第6张图片
这个是可视化ActionVLAD模型学到的action words,可以看出(b)中的action word明显就是头发。

个人思考

1.位置 i{1...N} i ∈ { 1... N } 如何选取的呢?是随机选取位置resize训练吗?还是selective selction呢?
2.聚类中心action words如何可视化的呢?这个D-dimension的向量怎么能可视化出这个效果呢?

你可能感兴趣的:(计算机视觉)