视频分类算法(《《Learnable pooling with Context Gating for video classification》)
Posted 帅气的小王子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视频分类算法(《《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
以上是关于视频分类算法(《《Learnable pooling with Context Gating for video classification》)的主要内容,如果未能解决你的问题,请参考以下文章
视频分类最新高效算法,PaddlePaddle-NeXtVLAD初体验
视频时间序列分类方法:动态时间规整算法DTW和R语言实现|附代码数据
Learn2com:基于Learnable Communications的V2I协同3D目标检测
《Sparse R-CNN:End-to-End Object Detection with Learnable Proposals》论文笔记