vue-cli 获取video 第一帧图片_图片序列问题综述

调研方案

序列场景的学术界调研,从视频分类为主要调查切入点。视频分类的主要目标是理解视频中包含的内容,确定视频对应的几个关键主题。视频分类(Video Classification)算法将基于视频的语义内容如人类行为和复杂事件等,将视频片段自动分类至单个或多个类别。视频分类不仅仅是要理解视频中的每一帧图像,更重要的是要识别出能够描述视频的少数几个最佳关键主题。视频分类的研究内容主要包括多标签的通用视频分类和人类行为识别等。与之密切相关的是,视频描述生成(Video Captioning)试图基于视频分类的标签,形成完整的自然语句,为视频生成包含最多动态信息的描述说明。虽然融合多种特征如文本-图像融合、声音-视频融合对提高视频分类的性能 有所帮助,但是本调研主要关注研究融合视频本身的空间和时间特征,也称为基于视觉的序列图像分类。而对于这类问题,存在以下关键点:

· 强有力的特征即如何在视频中提取出能更好的描述视频判断的特征。特征越强,模型的效果通常较好。

· 特征的编码(encode)/融合(fusion):其中分为两个部分第一个方面是非时序的,在使用多种特征的时候如何编码/融合这些特征以获得更好的效果;另外一个方面是时序上的,由于视频很重要的一个特性就是其时序信息,一些动作看单帧的图像是无法判断的,只能通过时序上的变化判断,所以需要将时序上的特征进行编码或者融合,获得对于视频整体的描述。

1. 传统视频分类方法研究

在深度学习方法广泛应用之前,大多数的视频分类方法采用基于人工设计的 特征和典型的机器学习方法研究行为识别和事件检测。传统的视频分类研究专注于采用对局部时空区域的运动信息和表观 (Appearance)信息编码的方式获取视频描述符,然后利用词袋模型(Bag of Words)等方式生成视频编码,最后利用视频编码来训练分类器(如 SVM),区 分视频类别。视频的描述符依赖人工设计的特征,如使用运动信息获取局部时空特征的梯度直方图(Histogram of Oriented Gradients,HOG),使用不同类型的轨迹的光流直方图(Histogram of Optical Flow, HOF)和运动边界直方图(Motion Boundary Histogram,MBH)。通过词袋模型或 Fisher 向量方法,这些特征可以 生成视频编码。当前,基于轨迹的方法(尤其是 DT 和 IDT)是最高水平的人工设计特征算法的基础。许多研究者正在尝试改进 IDT,如通过增加字典的大小和融合多种 编码方法,通过开发子采样方法生成 DT 特征的字典,在许多人体行为数据集上 取得了不错的性能。然而,随着深度神经网络的兴起,特别是 CNN、LSTM、GRU 等在视频分类中的成功应用,其分类性能逐渐超越了基于 DT 和 IDT 的传统方法,使得这些传统方法逐渐淡出了人们的视野。

bd404abbd5cfe640024dd55659fba1b2.png
iDT ( Action Recognition by Dense Trajectories) DT算法的基本思路为利用光流场来获得视频序列中的一些轨迹,再沿着轨迹提取HOF,HOG,MBH,trajectory4种特征,其中HOF基于灰度图计算,另外几个均基于dense optical flow计算。

最后利用FV(Fisher Vector)方法对特征进行编码,再基于编码结果训练SVM分类器。而iDT改进的地方在于它利用前后两帧视频之间的光流以及SURF关键点进行匹配,从而消除/减弱相机运动带来的影响,改进后的光流图像被成为warp optical flow。

2. 深度网络方法研究

深度网络为解决大规模视频分类问题提供了新的思路和方法。近年来得益于深度学习研究的巨大进展,特别是卷积神经网络(Convolutional Neural Networks, CNN) 作为一种理解图像内容的有效模型,可以自动学习图像中包含的复杂特征, 在视觉对象识别任务中表现出很好的性能。近年来学术界研究将 CNN 等深度网络应用到视频和行为分类任务中。与图像识别相比,视频分类任务中视频比静态图像可以提供更多的信息,包括随时间演化的复杂运动信息等。视频(即使是短视频)中包含成百上千帧图像, 但并不是所有图像都有用,处理这些帧图像需要大量的计算。最简单的方法是将 这些视频帧视为一张张静态图像,应用 CNN 识别每一帧,然后对预测结果进行 平均处理来作为该视频的最终结果。然而,这个方法使用了不完整的视频信息,因此使得分类器可能容易发生混乱。 其中比较有代表性的网络结果如下:

d963cb188fdad9349cad50cb02e7eba3.png

1. 基于图像的视频分类:将视频片段视为视频帧的集合,每个视频帧的特征通过 ImageNet 数据集上预先训练的最高水平的深度模 型(如 AlexNet,VGGNet,GoogLeNet,ResNet)进行获取。最终,帧层特征汇聚为视频层特征,作为标准分类器(如 SVM)识别的输入。

2. 端到端的 CNN 网络: 关注于利用 CNN 模型学习视频隐含的时空模 式,如 3D CNN,Two-stream CNN,TSN 模型等。

3. 引入 RNN 来建模长期时间动态过程,常用的模型有 LSTM, GRU-RNN 等。LSTM 避免了梯度消失的问题,在许多图像和视频摘 要、语音分析任务中非常有效。

4f0d8565eff61874f5c1226ac659d578.png
各个方法的在两个数据集上的指标( from ARTNet )

3. 具体算法流程分析

时空双流法 (Two-stream) 及其衍生

“Two-Stream Convolutional Networks for Action Recognition in Videos”(2014NIPS)论文地址

c74f43aee3a304c590ffd43c44f443d2.png

基本原理为:

1. 对视频序列中每两帧计算密集光流,得到密集光流的序列(即temporal信息)。

2. 然后对于视频图像(spatial)和密集光流(temporal)分别训练CNN模型,

两个分支的网络分别对动作的类别进行判断,

3. 最后直接对两个网络的class score进行fusion(包括直接平均和svm两种方法),得到最终 的分类结果。

注意,对与两个分支使用了相同的2D CNN网络结构,其网络结构见下图。

分析

optical flow 在传统的方法上就取得了很好的效果但是这个特征对于本次任务理论上效果不大。对于双流的方法,基本不会采用。

”Convolutional Two-Stream Network Fusion for Video Action Recognition“(2016CVPR)论文地址

bebf4270fddad00b1388433d370daa88.png

这篇论文的主要工作为:

1. 在two stream network的基础上,利用CNN网络进行了spatial以及temporal的融合,从而进一步提高了效果。

2. 此外,该文章还将基础的spatial和temporal网络都换成了VGG-16 network。

实验效果:UCF101-92.5%,HMDB51-65.4%

Temporal Segment Networks: Towards Good Practices for Deep Action Recognition 论文地址

4710669ab74f681245c3925e9f1ecdb8.png

这篇文章对如何进一步提高two stream方法进行了详尽的讨论,主要包括几个方面(完整内容请看原文):

1. 据的类型:除去two stream原本的RGB image和 optical flow field这两种输入外,

章中还尝试了RGB difference及 warped optical flow field两种输入。

终终结果是 RGB+optical , flow+warped optical flow的组合效果最好。

结构:尝试了GoogLeNet,VGGNet-16及BN-Inception三种网络结构,其中BN-Inception的效果最好。

包括 跨模态预训练,正则化,数据增强等。

效果:UCF101-94.2%,HMDB51-69.4%

针对于数据增强,正则化等问题可以探讨. 所以其中的数据增广的方法,不失是一种很好的方法。可以借鉴之。

  • 3D卷积
Learning spatiotemporal features with 3d convolutional networks论文地址

C3D是facebook的一个工作,采用3D卷积和3D Pooling构建了网络。通过3D卷积,C3D可以直接处理视频(或者说是视频帧的volume)

实验效果:UCF101-85.2%。可以看出其在UCF101上的效果距离two stream方法还有不小差距。

C3D的最大优势在于其速度,在文章中其速度为314fps。而实际上这是基于两年前的显卡了。

用Nvidia 1080显卡可以达到600fps以上。所以C3D的效率是要远远高于其他方法的,个人认为这使得C3D有着很好的应用前景。

Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset论文地址

6ce8c58097cff31b3be01ba366d9a581.png

即基于inception-V1模型,将2D卷积扩展到3D卷积。I3D优于C3D模型的原因可以解释为更深同时参数更少,使用ImageNet初始化,使用4倍长的视频,使用2倍的分辨率

实验效果:UCF101-98%,HMDB51-80%

迁移学习对于I3D影响最大,这也可能是因为I3D的时间长度更大,在大数据集上预训练就可以学到更好的时间结构而迁移学习对于没有使用3D ConvNet结构的影响不大,这可能是因为那些方法的输入都是离散的帧而不是连续的帧,而那些2D方法都用了ImageNet预训练的参数,这些独立的帧其实更像是image而不是video,所以已经在image的数据集上预训练过的结构在video的大数据上进一步pre-train不一定有明显提升

  • CNN-RNN
Beyond Short Snippets: Deep Networks for Video Classification Joe论文地址

这篇文章主要是用LSTM来做two-stream network的temporal融合。效果一般

实验效果:UCF101-88.6%

da7f8647f44c358a9eb3297095f307cd.png

在单纯的视频或者动作识别上,LSTM是不占据优势的能model高层变化却不能捕捉低层运动(因为在低层,每个帧都是独立地被CNN提取特征),有些低层运动可能是重要的。而对于我们的问题,单纯替代投票机制的不足,LSTM理论上已经可以办到。但是从深层上来说,如果在浅层上就直接在时间序列上的特征进行直接提取,对于原有的分类模型理论上是有弥补的空间的。

Long-term Recurrent ConvolutionalNetworks for Visual Recognition and Description论文地址

描述了一类可端对端训练、适用于大规模图片理解工作的递归卷积网络,并且证明了用于行为识别、图片描述、视频描述的这些模型的值。对比于之前的假定一个固定的图片表示或者运用简单的时间序列来进行序列处的模型

8277d7fb0e2d663c12caf4bd017d2ce7.png

CNN结合LSTM直接做端到端的训练是一种新思路,虽然在视频表现上并不好。但是对于不需要太多动作信息任务,其实还有发挥的空间。

4.视频分类比较:

miniKinetics数据集要比ucf101难分类,hmdb51很难分类是因为类与类之间的动作太相似。

740ac66e9eda584a308e51a43caac5e6.png

在Kinetics的测试结果,区别有ImageNet 的pretrain

3e27c490ff092c0a2af732c3fdc6246b.png

测试pretrain对效果的区别 Original 在UCF-101 分别在UCF-101 和HMDB-51 训练。 pre-train 用 Kinetics 训练 最后一层才用UCF-101 和HMDB-51。pre-train 用 Kinetics 训练,然后全层微调网络。

dcf2f4e8d0f8e72b8ffae9ca09b044c0.png

4.序列抽取特征比较:

69c6b85ae1a01e12e77825fd17d59503.png

绝大部分NLP问题可以归入上图所示的四类任务中:一类是序列标注,这是最典型的NLP任务,比如中文分词,词性标注,命名实体识别,语义角色标注等都可以归入这一类问题,它的特点是句子中每个单词要求模型根据上下文都要给出一个分类类别。第二类是分类任务,比如我们常见的文本分类,情感计算等都可以归入这一类。它的特点是不管文章有多长,总体给出一个分类类别即可。第三类任务是句子关系判断,比如Entailment,QA,语义改写,自然语言推理等任务都是这个模式,它的特点是给定两个句子,模型判断出两个句子是否具备某种语义关系;第四类是生成式任务,比如机器翻译,文本摘要,写诗造句,看图说话等都属于这一类。它的特点是输入文本内容后,需要自主生成另外一段文字。

解决这些不同的任务,从模型角度来讲什么最重要?是特征抽取器的能力。尤其是深度学习流行开来后,这一点更凸显出来。那么目前主流框架用到的这三个特征抽取模型的比较又是如何呢?各自有什么特点。

  • RNN

dcd306623d0b9c68c9a2706a1e36e8b3.png

RNN在NLP各种任务中被广泛使用。但是原始的RNN也存在问题,它采取线性序列结构不断从前往后收集输入信息,但这种线性序列结构在反向传播的时候存在优化困难问题,因为反向传播路径太长,容易导致严重的梯度消失或梯度爆炸问题。为了解决这个问题,后来引入了LSTM和GRU模型,通过增加中间状态信息直接向后传播,以此缓解梯度消失问题,获得了很好的效果,于是很快LSTM和GRU成为RNN的标准模型。

优点:主要原因还是因为RNN的结构天然适配解决NLP的问题,NLP的输入往往是个不定长的线性序列句子,而RNN本身结构就是个可以接纳不定长输入的由前向后进行信息线性传导的网络结构,而在LSTM引入三个门后,对于捕获长距离特征也是非常有效的。所以RNN特别适合NLP这种线形序列应用场景,这是RNN为何在NLP界如此流行的根本原因。

缺点想过在新的模型的冲击下,当作为特征提取器的情况下,不能并行,需要递归调用等情况尤为突出。再加上RNN天生对中中距离的依赖比较敏感。所以对更长的任务是比较无力的。

  • CNN

dc640fa7d4d0f9dcb30d9e2f57b406d9.png

卷积层本质上是个特征抽取层,可以设定超参数F来指定卷积层包含多少个卷积核(Filter)。对于某个Filter来说,可以想象有一个d*k大小的移动窗口从输入矩阵的第一个字开始不断往后移动,其中k是Filter指定的窗口大小,d是向量的长度。对于某个时刻的窗口,通过神经网络的非线性变换,将这个窗口内的输入值转换为某个特征值,随着窗口不断往后移动,这个Filter对应的特征值不断产生,形成这个Filter的特征向量。这就是卷积核抽取特征的过程。卷积层内每个Filter都如此操作,就形成了不同的特征序列。Pooling 层则对Filter的特征进行降维操作,形成最终的特征。一般在Pooling层之后连接全联接层神经网络,形成最后的分类过程。

2acfecd95ba046dfdca7ae151a555a5c.png

加深网络,感受野的扩大,能更好地捕捉信息,也有更抽象的语义信息。上图展示了在NLP领域能够施展身手的摩登CNN的主体结构,通常由1-D卷积层来叠加深度,使用Skip Connection来辅助优化,也可以引入Dilated CNN等手段。

  • Transformer(attention)

有时编码器会强制编码可能与目前任务不完全相关的信息。这个问题在输入过长或信息量过大时也会出现,选择性编码是不可能的。又因为transformer是整体输入且,每个元素的距离理论上都是1,所以对长远距离的数据更具有优势。尽管Transformer原始论文一直重点在说Self Attention,但是目前来看,能让Transformer效果好的,不仅仅是Self attention,这个Block里所有元素,包括Multi-head self attention,Skip connection,LayerNorm,FF一起在发挥作用。

  • 试验比较

为了更细致和公平地做对三者进行比较,几个不同的角度来分别进行对比,我原先打算从以下几个维度来进行分析判断:句法特征提取能力;语义特征提取能力;长距离特征捕获能力;任务综合特征抽取能力。上面四个角度是从NLP的特征抽取器能力强弱角度来评判的,另外再加入并行计算能力及运行效率,这是从是否方便大规模实用化的角度来看的。

cfa169cc77004b5499d413cd54bbbbf6.png

3f2dc7ac3ec869198d0b899b5e051df3.png

165f9fe63630daf966985c92b8a439f8.png

b16559816c688d6aba82293082e37f59.png

a1f5b27872e962041cbd0c84f411a78a.png

结论:
1。 Transformer在大数据的情况下超过RNN一点问题没有,而且是显著的超,目前在很多大数据任务都验证了。

2。按照一些paper报的结果反映:Transformer在跑中等数据集(一百万)或者小数据(几万或者几千)和RNN谁好谁坏不一定,可能靠调,不是那种一个默认参数就会比RNN好。

3。Multi-head self attention,Skip connection,LayerNorm,FF一起,对抽取起到了很大的作用。是序列模型不可少的组件

试验

c83e35e021d0af30613b6a9ee03f3db5.png

5e37b57d8bbf774bf172e73f82f668ae.png
  • 多组试验结果
  • ensemble后

2583f4dc4c9cee59b08e9b2ea59f046c.png

9c6ead6df95a477bacb2a884583c7a0d.png
  • 难点与疑问
  1. 有限标注数据下,如何更好的增广、创造监督数据以符合真实测试世界分布;
  2. 模型结构上,是否仍有改进空间
  3. 针对部分难样本如何进行有效发现和挖掘;
  4. 在训练过程中,结构的微小改变就会使得验证集的准确率走势变化过大,本质原因可能是什么。
  5. 样本到达什么样的规模才能有效地训练一个比较鲁邦的模型(提取器,可以区分为RNN,CNN,transformer)
  6. 对于RNN系列的网络,出现bad case 在当bad case 有明显特征误导分类器的情况下,怎么修正这类型的错误。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值