简介 

首先对于视频和图片分类的区别,我的理解就是视频分类多了一些时间信息。另一方面对于视频分类包括的场景和动作这两类视频分类中,感觉时域信息的重要性也不同。动作分类更加注重时域信息这一点。总之,为了在普通的多张空域图像信息上提取时域信息,通常处理方法有:双流卷积(普通图像的空域信息加上几张图片的光流信息)、循环神经网络RCNN(包括主流的LSTM等)、3D卷积等。无论何种方法,其最终目的都是将图像间的时域信息融合到分类之中。其中谷歌有个名为YouTube-8M dataset的数据集,其中视频数量巨大,而且每年还举办相应的分类比赛。在这里主要是结合谷歌官方给出的基础处理程序以及2017年的the kaggle Youtube-8M Large-Scale Video Understanding challenge视频分类冠军方法做分析。

YouTube-8M数据集特征提取

对于YouTube-8M dataset的基础代码,其实主要用到了特征提取的代码。谷歌在这个数据集以及代码中给出了一篇论文专门介绍该数据集的用法。整个数据集的所占用的体积是在是太大,如果用于普通单台计算机来训练几乎是难以完成的任务。因此官方也给出了相应的视频对应的帧级特征和视频级特征提取后的数据集。那么何为帧级特征以及视频级特征呢?

对于一张图片的特征,我们可以分为局部特征还有全局特征。一般的可以将全局特征看做是由局部特征组成的,但是如何组成却有很多种方法。对于局部特征的提取,可以采用SIFT特征提取方法,它是一种局部特征提取方法,另外还有一些经典的局部特征提取算法如SURF、ORB等。对于全局特征提取算法,比较经典的就是GIST了。那么如何看待神经网络中的特征提取呢。一般来说,经过卷积后输出的特征图,可以看成是局部特征,这种局部特征随着神经网络的层数增加,其局部特征的视野也在变大。在全连接层过后一般接具体的分类层了,因此我们可以将全连接层看成是局部特征到全局特征的融合。

YouTube-8M dataset中的feature_extractor就是利用神经网络对视频的每一帧进行提取,即通过经典的Inception network网络,在分类层的前一层中抽取视频每一帧的特征,此时每一帧的可以看成给一个长度为2048的特征向量Xi。默认值是对视频一秒抽取一帧,每个视频最多抽取300帧。随后将Xi进行PCA降维到长度为1024,并将Xi的内的元素值量化为[-2,2]范围内。将每一个视频抽取的帧进行append,这就是帧级特征。因为视频分类也可能会涉及到音频参与,因此也可以抽取音频特征,最终形成的音频特征为每帧对应128维度,如果不需要音频信息,为了可以很好的用于有音频参与的网络,默认情况下,音频的128维向量的元素值全是0。那么视频级特征这里给出的是最基础版,让每一帧经过PCA得到的1024向量进行sum求和,然后再除以帧的数量求平均,这样得到一个长度1024维的向量就是视频级特征

乍一看视频级特征处理的也太草率了,确实很草率。还有一点需要说明的就是,把帧级特征采用某种方法进行融合就会得到视频级特征,然后视频级特征经过全连接或者其他分类层后输出相应的预测结果。因此我们要做的就是如何将帧级特征融合的更好,从而形成更好的视频级特征,进而得到更加精确地视频分类。对于某一帧中的物体可以看成是帧级特征中的局部特征,那么帧级特征是不是可以看成是视频级特征的局部特征呢。在YouTube-8M dataset官方给出的特征融合中,有LSTM,average pooling以及DBoF。具体的可以查看该论文。另外需要提一下,在这边论文中,也提到了采用Fisher Vector(FV)和VLAD的方法进行视频级特征的表示,但是却说放在未来进行研究,而2017基于该数据集的视频分类冠军就是基于类似的方法取得的。

Kaggle Youtube 8M WILLOW approach

这是该项目的GitHub地址,项目提供了七个模型训练方法。其中精度最高的为NetFV。我们只分析采用了NetVLAD和NetFV的方案。这两个方法都用到了VLAD和FV方法思想,而这两种方法用于图像检索具有较好的效果。具体的可以查看相关文献。该项目对应的论文中提到,LSTM并没有把帧间时序信息充分利用起来,证明方法为:即使把一个视频分解成众多帧的序列打乱在输入到LSTM,其视频分类精度没有明显变化。在这里本人感觉,对于侧重于场景分类任务的视频分类不同于动作分类,其时序信息或许没有那么重要,因此就没继续对双流或者3D卷积进行深入研究。当然这只是我个人猜测。总之,论文大致提供两个方向:一,研究时域信息的聚合方法(NetVLAD、NetFV.....等)。二,引入Context Gating机制。对于Context Gating机制,简单可以理解成这样:同样都是树木,在院子里的树木和深林里面的树木表现出来的特征强度是不一样的,可以通过这种门机制将该特征强度进行赛选,因此可以做到,在院子里的场景不会因为有树的存在而被识别成森林场景。

对于什么是NetVLAD和NetFV,其实他是根据论文而来,该论文通过弱监督学习的方法实现了在少量标注数据的情况下实现识别精度的提高,对于netVLAD论文解读比较好的感觉就是该篇博客了。感觉一句话可以概括的就是:对了VLAD统计的是特征(或词袋中所谓单词,BOW统计的是特征之间的数量)之间的累积残差,并且被分类到某类时是根据K个聚类中心的距离最近原则,这个是一个只为0或者1的离散结果,这种写法是不可微的,因此用到了soft-assignment的算法(该算法主要思想为softMax函数)。同样,NetFV的思想也可以类似的推出。

在经过Inception network网络输出的n * 1024的矩阵(表示着n张图片)input_feature,进入VLADMode网络。

当然,根据项目的优化或者作者根据具体任务,代码中实现过程跟流程图有所调整,代码实现或许有少许不同。并且还有轻量级的LightVLAD。首先LightVLAD的流程如下:

代码中:1:首先经过batch_norm层,然后会有一个待优化变量矩阵cluster_weights,其shape=[feature_size, cluster_size],根据矩阵乘法,feature_size在这里为1024.cluster_size可以自定义设置。2: 再次经过batch_num层后进入soft-max接着对其进行reshape(feature_num,cluster_size)。然后进行一次activation=transpose(perm=0,2,1),这样方便跟input_feature矩阵相乘,即上图中的V(vlad)= matmul(activation(a),input_feature(x),这样维度变成了cluster_size * feature_size。3:将V进行transpose(perm=0,2,1),并进行L2正则化,最后reshape成(-1,K*D)的vector后再进行一次L2正则化作为NetVLAD的输出。其实和上面的流程图几乎一样,主要是加了具体实施的要点。总体待优化变量为cluster_weights

非轻量级的NetVLAD流程如下:流程到上图中a的过程和轻量级都是一样的,即经过soft-max后进行一次reshape后得到activation。然后对张量的-2方向(即feature_num)求均值得到a_sum,接着与有一个shape为[1,feature_size,cluster_size]的张量cluster_weights2相乘,注意这里是相乘而不是矩阵乘,或许这里称为是系数乘,该张量的元素是变量,待优化的。得到这个有了系数的均值a后,即与activation相减后得到上图中的V。这里的V即使上图中的V也是轻量级lightVLAD分析的V。总体待优化变量为cluster_weights和cluster_weights2.

其实,在该项目中存在了轻量级的NetVLAD,就介绍了一下lightNetVLAD,真正利用VLAD思想的是非轻量级的网络。并且在真实训练过后的模型,在推理过程利用轻量级lightNetVLAD的推理网络,加载NetVLAD训练出来的模型,其精度仅仅略有下降。在比赛过程中或许仅仅百分之零点几的精度就有可能领先,但是在工程化角度讲,这样速度上的降低可能得不偿失

对于netFV过程,如果有时间在补充张流程图,从代码上看是相对于VLAD复杂的。感兴趣的可以阅读代码。

评价指标

有时,我们平常所说的准确率并不一定能详细代表模型判断结果的好坏。特别是目标检测中,召回率的指标几乎不可缺少。这个指标有点‘漏网之鱼’量的多少的意思。因为我们需要统计的是网住的鱼以及漏网之鱼的量,至于里面有虾的数量的影响就不在考虑。

FN: False Negative, 被判定为负样本, 但事实上是正样本.
FP: False Positive, 被判定为正样本, 但事实上是负样本.
TN: True Negative, 被判定为负样本, 事实上也是负样本.
TP: True Positive, 被判定为正样本, 事实上也是证样本.

准确率Accuracy = (TP+TN) / (TP+FP+TN+FN), 即预测正确的比上全部的数据.
精确率Precision = TP / (TP+FP), 即在预测为正向的数据中, 有多少预测正确了.
召回率Recall = TP / (TP+FN), 即在所有正向的数据中, 有多少预测正确了.

比如说,图像质量分数评估有两类: 模糊, 有噪声. 将模糊设为正样本, 有噪声设置为负样本。

基于Youtube-8M的视频场景分类相关推荐

  1. 遥感图像场景分类方法总结

    遥感图像场景分类一般假定相同类别的场景应该共享相似的特征信息,基于此,遥感图像场景分类方法可以分为三大类:基于底层视觉特征,基于中层视觉表达,基于高层视觉信息. 底层视觉特征:直接提取遥感图像的光谱, ...

  2. AI周报丨快手团队长文解读:基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用

    AI周报 - 热门论文 - 题目:On Training Implicit Models 本文主要研究无限层隐式模型的训练问题.具体地说,以前的工作采用隐式微分,并为反向传播计算精确的梯度.然而,是否 ...

  3. 基于OpenCV的电影视频人像景别分类算法(源码&教程)

    1.研究背景 近年来,随着多媒体技术的高速发展,视频数据也呈现出爆炸性的增长.基于内容的视频检索已成为当前的迫切需求.特别在电影视频领域,单纯的播放已经无法满足用户日益增长的需要.如何准确快速地按照用 ...

  4. 快手团队长文解读:基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用...

    来源:机器之心 本文约6000字,建议阅读10分钟 本文介绍了基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用. 典型的实时流式自动语音识别业务如语音搜索.语音输入等和用户操作相关,直接影 ...

  5. 基于PyTorch搭建CNN实现视频动作分类任务代码详解

    数据及具体讲解来源: 基于PyTorch搭建CNN实现视频动作分类任务 import torch import torch.nn as nn import torchvision.transforms ...

  6. 基于深度学习场景分类算法

    目前出现的相对流行的场景分类方法主要有以下三类: (1) 基于对象的场景分类: 这种分类方法以对象为识别单位,根据场景中出现的特定对象来区分不同的场景: 基于视觉的场景分类方法大部分都是以对象为单位的 ...

  7. 基于深度学习的场景分类算法

    目前出现的相对流行的场景分类方法主要有以下三类: (1)     基于对象的场景分类: 这种分类方法以对象为识别单位,根据场景中出现的特定对象来区分不同的场景: 基于视觉的场景分类方法大部分都是以对象 ...

  8. 基于OpenCV的视频场景切割神器

    环境 windows 10 64bit anaconda with python 3.7 pyscenedetect 0.5.5 简介 了解视频剪辑的小伙伴,应该都知道转场这个词.一个视频场景转换到另 ...

  9. Few-Shot Classification of Aerial Scene Images via Meta-Learning(基于元学习的航拍场景图像小样本分类)

    Abstract: 基于卷积神经网络(CNN)的方法近年来在航空场景分类领域占据主导地位.虽然取得了显著的成功,但基于cnn的方法存在过多的参数,并依赖于大量的训练数据.在本工作中,我们将小样本学习引 ...

最新文章

  1. 自然语言处理(NLP)之用深度学习实现命名实体识别(NER)
  2. 使用命令行编译打包运行自己的MapReduce程序 Hadoop2.4.1
  3. thinkphp-权限控制
  4. 从内存中加载并运行exe(两种方法)
  5. python变量名要求_Python中用中文变量名、函数名,会影响性能吗?
  6. html登录页面的校验控件,HTML5一款有趣智能的密码输入界面控件
  7. out在matlab中,在仿真模型中添加一个输出端口模块(Out模块),能够将结果输出到MATLAB工作空间中。...
  8. linux硬盘分区的几种方式,硬盘分区的三种方式
  9. 从跨境电商方向选择谈起
  10. 别再乱用了,这才是 @Validated 和 @Valid 的真正区别和用法!
  11. 《长安十二时辰》,作为程序员,看完我震惊了!
  12. 斐波那契数列(C++)
  13. shell批量修改文件名
  14. PL/SQL Developer中拼接超长clob字段sql示例
  15. oracle强制关闭用户连接
  16. webservice 实现与his系统对接_多平台订单管理系统:传统企业实现无缝对接多渠道资源...
  17. 免费 | 数千个 Azure 官方高清矢量图标大放送!
  18. python自动登录校园网_python 脚本自动登陆校园网
  19. 微信小程序加载百度地图
  20. bobsmith电路阻抗原理_网口接口电路的EMC设计.ppt

热门文章

  1. 发挥多线程优势,用服务器CPU做3D渲染,物美价廉
  2. 招聘笔试中常考的智力题(转自网络)
  3. 《最大公约数和最小公倍数》
  4. 长期稳定的搬砖项目——steam搬砖
  5. dfs文件服务器 2012,Windows Server 2012 R2分布式文件系统测试(DFS)
  6. Android中悬浮窗口
  7. 微信支付成功,如何刷新用户当前页面的余额
  8. STP 4 - MST 和 PVST 对比 (侧重MST)
  9. 智能网联的核心系统Tsp介绍
  10. 计算机中心述职报告诉,计算中心的述职报告范文