视频分类算法(《《Learnable pooling with Context Gating for video classification》)

一般的视频理解方法通常对一段视频的间隔帧提取特征,取它们的极大值或均值来代表整段视频的特征,这是一种很简单的视频表示方法,但是容易陷入局部最优解,论文为此探索了一种可学习的池化技巧(learnable pooling techniques),它将多个算法(比如 Soft Bag-of-words, Fisher Vectors, NetVLAD, GRU and LSTM)相结合,共同组成视频特征。论文还介绍了一种非线性网络单元Context Gating,用于对特征相关性建模。

论文通过实验证明了多方法结合的learnable pooling techniques与Context Gating的有效性。

1. Introduction

本篇论文主要有两点贡献:

1、提出了一种多方法组合共同策略的learnable pooling方法。

2、提出了一种非线性网络单元-Context Gating(CG),CG主要目的是为了捕捉分散特征的关联从而输出更精确的整体结果。

2. Related work

特征提取

过去一般采用手写特征,比较成功的有两种,一种采用局部特征,一种采用梯度特征。

现在一般采用CNN来提取独立帧特征,或提取时空上下文信息。CNN也可用于某一色彩通道或某运动估计通道中。

特征组合

视频特征一般由某些独立帧或者某些视频片段的特征组成,而问题的关键在于,如何组合这些零散特征为一整体表达视频特征。

一种方法是采用RNN,比如LSTM或者GRU,利用RNN特性来更好的把握其时空上下文上的信息。

另一种方法只注意整段视频特征的分布信息,最简单的策略就是取所有特征的均值或最大值,其他较复杂的策略有bag-ofvisual-

words, Vector of Locally aggregated Descriptors (VLAD) or Fisher Vector encoding。

3. Multi-label video classification architecture

算法架构

如图所示,整个算法由三部分模块组成,首先,特征提取模块从视频流中按一定间隔提取音频特征和图像特征;然后池化模块组合优化这些特征;最后分类模块对整体特征分类,输出labels。

三个模块的介绍如下:

特征提取模块

原始特征从视频流里按1s间隔提取图像特征与音频特征,图像特征利用InceptionV3,提取最后一层全连接层的特征向量;音频特征提取利用VGG提取,来自Hershey et. al

PCA以及白化用于降维,最终每一帧视频得到1024维特征,每一秒音频得到128维特征。

特征池化模块

特征池化模块有两组输入流,分别为图像输入和音频输入,每一个输入流被送到learnable pooling组成一个单独表达,

然后将这两个表达连接送入全连接层降维得到一个1024维特征向量。

最后该特征向量送入CG层,捕捉其特征关联信息并重新调整权重。

分类模块

分类模块由一个Moe(a soft Mixture-of-Experts)分类器组成(参考yt8m论文,类似于一个投票器),得到最终top N labels后再送入CG,得到最终结果。

4. Learnable pooling methods

本章介绍几种learnable pooling方法。

基于聚类的池化方法:Bag-of-visual-words , VLAD  and Fisher Vector .

VLAD:论文采用NetVLAD架构用于识别视频场景,进而识别视频中的动作。与原始的NetVLAD方法相反,论文没有采用k-means预训练码本,因为作者没有发现这么做对于论文的工作有什么帮助。论文还对NetVLAD做一部分改变,对actual descriptors取差值,替代以前取均值的方式,论文命名该方法为NetRVLAD,这么做的目的是为了使用更少的参数和更少的计算量(大概减少一半)。

bag-of-visual-words:论文采用了soft-assignment of descriptors to visual word clusters来获取一种不同的表达,称之为Soft-DBoW (for Soft Deep Bag-of-visual-Words).

Fisher Vector:论文修改了NetVLAD架构,允许其学习次级聚类特征,称之为NetFV(Net Fisher Vector),也是一种变种。

 Recurrent models for pooling:

论文采用了LSTM和GRU,结果为其处理整个序列后得到的1024维隐含层特征向量。

5. Context Gating

CG的公式理解如上所示,X为输入特征,Y为输出结果,是激活函数,是相乘符号。是需要训练得到的参数。

为一串01向量,来对输入向量的激活或者抑制。

这种做法的目的有两点:一是希望通过这种激活机制体现输入向量中各个维度特征的内部关联,二是希望能对输入向量做进一步校准。CG受启发于GLU(Gated Linear Unit),但是要比GLU简化许多。

论文在两处采用了CG,具体作用方法阐述如下:

Capturing dependencies among features:

第一次采用CG是在分类模块前,目的是为了找到特征之间的抵赖关系,CG可以抑制背景特征,提拔主体特征。比如特征与树,雪,滑雪相关,那么CG会抑制树和雪,提升滑雪的权重,因为作为背景因素的树与雪对分类的帮助很低。

Capturing prior structure of output space:

论文还在分类后又一次采用CG,是为了获得更准确的分类结果。比如化妆和车的组合得分要小于雷诺汽车和车的组合得分。

6. Training details

All models are trained using the Adam algorithm [24]
and mini-batches with around 100 frames. The learning
rate is initially set to 0:0002 and is then decreased exponentially
with the factor of 0:8 every 4M samples. We use
gradient clipping and batch normalization [19] before each
non-linear layer.
For the clustering-based pooling models, i.e. Soft-
DBoW, NetVLAD, NetRVLAD and NetFV, we randomly
sample N features with replacement from each video. N
is fixed for all videos at training and testing. For training
of recurrent models, i.e. LSTM and GRU, we process features
in the temporal order. We have also experimented with
the random sampling of frames for LSTM and GRU which
performs surprisingly similarly.
All our models are trained with the cross entropy loss.
We found this loss to work well for maximizing the Global
Average Precision (GAP) metric. Our implementation uses
the TensorFlow framework [1]. Each training is performed
on a single NVIDIA TITAN X (12Gb) GPU.

github:https://github.com/antoine77340/Youtube-8M-WILLOW

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值