资讯详情

万字长文漫谈视频理解

万字长文漫谈视频理解
2020/4/12 FesianXu at Tencent intern

前言

AI算法已经渗透到我们生活的方方面面,包括购物推荐、广告推送、搜索引擎和多媒体视频娱乐AI算法的影子。视频作为多媒体中的信息载体,视频的地位可以说是数一数二的。然而,目前AI视频中算法的应用还不够成熟,理解视频内容仍然是一个需要解决的重要问题。本文讨论了视频理解。虽然这只是作者对互联网的一些意见的总结和交谈,但有些内容是作者自己的学习收入,我希望它仍然能帮助读者。

? \nabla ? 联系方式:

: FesianXu@gmail.com

: 973926198

github: https://github.com/FesianXu

: 计算机视觉/计算机图形理论与应用

qrcode


为什么是视频?

。 根据来自于国家互联网信息办公室的中国互联网络发展状况统计报告[1]

截至 2018 年 12 月,网络视频、网络音乐和网络游戏的用户规模分别为 6.12 亿、5.76 亿和 4.84 利用率分别为1亿 73.9%、69.5%和 58.4%。短视频用户规模达到 6.48 1亿,网民比例为 78.2%。截至 2018 年 12 月,网络视频用户规模达到 6.12 亿,较 2017 年底增加 3309 万,占网民 整体的 73.9%;手机网络视频用户规模达到 5.90 亿,较 2017 年底增加 4101 万,占手机 网民的 72.2%。

各种应用的使用时间比例如图所示Fig 1.1所示:

Fig 1.1 2018年各类应用的使用时间比例。

很容易发现,包括短视频在内的视频用户占用了大约20%的用户时间,占用了绝大多数的流量,而网络视频用户的规模也在逐年增加。

互联网不再是我们20年前滴滴答答拨号上网时期的互联网。互联网的接入速度与日俱增,如Fig 1.2所示。视频作为最接近人类日常感知的方式,可以在单位时间内传递更多的信息,而不是单独的图片、音频和文本,从而具有更广泛的用户粘性。在单位流量越来越便宜、速度越来越快的时代,视频将撑起未来媒体的旗帜。

Fig 1.2 固定带宽/4G平均下载速率变化曲线

事实上,我们现在并不缺乏视频时代,我们有一些数据,大公司有大量的用户基础,每天生成大量的数据,这些大量的数据,但可以产生非常巨大的价值。尤瓦尔,以色列历史学家·赫拉利在畅销书《未来简史》和《今日简史》中描述了一个未来的社会。在这个社会中,数据是虚拟黄金,垄断数据的公司成为未来umbrella公司控制着人们的言行,最终成为数据和算法的奴隶。虽然描述太可怕和科幻小说,但这些并不是毫无根据的,我们可以知道,从数据中,我们可以做很多事情,我们可以通过数据描述用户肖像,知道用户的属性信息,知道他或她喜欢什么,恨什么,去哪里,去哪里。我们根据用户肖像进行精确的广告推送,使基于大数据的算法几乎不可能控制你的购物习惯。数据确实很重要,但遗憾的是,目前AI视频算法——未来媒体之王的表现不是很理想(目前在sports-1M上的R(2 1)D模型[7]性能不足80%,精度不足。),还有很多问题需要解决,但未来是可以期待的。我们可以预测,我们最终可以在视频中实现一些事业。

理解视频-嗯,很复杂

使用视频数据的最终目标是让算法理解视频。 这是一件非常抽象的事情。在神经科学还不完全清楚的情况下,如果我们根据人类的感知来理解这个词,我们最终会陷入泥潭。在理解视频的任务中,我们到底在做什么?首先,我们比较文本、图片、音频、视频的特点。视频是按时间动态排序的图片序列,但图片帧之间有密切的联系,有上下文的联系;视频有音频信息。因此,要理解视频,我们必须在时间序列上建模,同时也需要空间上的关系组织。

目前,理解视频有许多具体的子任务:

  1. 视频动作分类:视频中的动作分类

  2. 视频动作定位:识别原始视频中某个动作的开始帧和结束帧

  3. 视频场景识别:对视频中的场景进行分类

  4. 提取原子动作

  5. 视频文字说明(Video Caption):给定视频加文字说明,常用于自动生成视频介绍和跨媒体检索

  6. 集群动作理解:对集体活动进行动作分类,常见的包括排球、篮球场景等,可用于捕捉集体动作中的关键动作和亮点动作。

  7. 视频编辑。

  8. 视频问答系统(Video QA):系统根据给定的视频片段自动回答给定的问题

  9. 视频跟踪:跟踪视频中物体的运动轨迹

  10. 视频事件理解:与动作不同,动作是一种更短的活动,可能涉及更长的时间依赖

当然,理解视频不仅仅是上面列出的,这些任务可以反映在我们生活的各个方面。目前,理解视频可以被视为解决上述问题。

一般来说,目前的理解视频主要集中在以人为本的角度,因为视频本身是动态的,所以描述视频中的物体是一个非常重要的任务,可以认为动作识别在视频理解中占有非常重要的地位。因此,本文对视频的理解将大致等同于对视频动作的理解,这可能太粗略了,但它仍然可以提供一些讨论。

视频分析的主要难点集中在:

  1. 视频的大小远大于图片数据,需要大量的计算能力。
  2. 质量低,很多真实视频在拍摄时运动模糊、遮挡、分辨率低或光照不良,容易对模型造成很大干扰。
  3. 需要大量的数据标签!特别是在深度学习中,对视频的时序信息建模需要海量的训练数据才能进行。时间轴不仅仅是添加了一个维度那么简单,其对比图片数据带来了时序分析,因果分析等问题。

视频动作理解-新手村

视频数据模态

然而,视频动作理解也是一个非常广泛的研究领域,我们输入的视频形式不一定是我们常见的RGB视频,也可能是depth深度图序列,Skeleton关节点信息,IR红外光谱等。

Fig 3.1 视频形式多种模式

就目前而言,RGB视频是最为易得的模态,然而随着很多深度摄像头的流行,深度图序列和骨骼点序列的获得也变得容易起来[2]。深度图和骨骼点序列对比RGB视频来说,其对光照的敏感性较低,数据冗余较低,有着许多优点。

关于骨骼点序列的采集可以参考以前的博文[2]。我们在本文讨论的比较多的还是基于RGB视频模态的算法。


视频动作分类数据集

现在公开的视频动作分类数据集有很多,比较流行的in-wild数据集主要是在YouTube上采集到的,包括以下的几个。

  • HMDB-51,该数据集在YouTube和Google视频上采集,共有6849个视频片段,共有51个动作类别。

  • UCF101,有着101个动作类别,13320个视频片段,大尺度的摄像头姿态变化,光照变化,视角变化和背景变化。

  • sport-1M,也是在YouTube上采集的,有着1,133,157 个视频,487个运动标签。

  • YouTube-8M, 有着6.1M个视频,3862个机器自动生成的视频标签,平均一个视频有着三个标签。

  • YouTube-8M Segments[3],是YouTube-8M的扩展,其任务可以用在视频动作定位,分段(Segment,寻找某个动作的发生点和终止点),其中有237K个人工确认过的分段标签,共有1000个动作类别,平均每个视频有5个分段。该数据集鼓励研究者利用大量的带噪音的视频级别的标签的训练集数据去训练模型,以进行动作时间段定位。

  • Kinectics 700,这个系列的数据集同样是个巨无霸,有着接近650,000个样本,覆盖着700个动作类别。每个动作类别至少有着600个视频片段样本。

以上的数据集模态都是RGB视频,还有些数据集是多模态的:

  • NTU RGB+D 60: 包含有60个动作,多个视角,共有约50k个样本片段,视频模态有RGB视频,深度图序列,骨骼点信息,红外图序列等。
  • NTU RGB+D 120:是NTU RGB+D 60的扩展,共有120个动作,包含有多个人-人交互,人-物交互动作,共有约110k个样本,同样是多模态的数据集。

在深度学习之前

视频长度不定,一般我们不直接对整段视频进行分析或者处理,我们一般对视频进行采样,比如把整段视频分成若干个片段(clip),这些片段可能是定长的,比如每个片段都是10帧,也可能不是,我们通常会对每个片段进行处理,然后想办法把不同片段的处理结果融合起来,形成最终对整个视频的处理结果。不管怎么样,我们在接下来说的片段时,我们就应该知道这个片段是对某个视频的采样。

在深度学习之前,CV算法工程师是特征工程师,我们手动设计特征,而这是一个非常困难的事情。手动设计特征并且应用在视频分类的主要套路有:

:挑选合适的特征描述视频

  1. 局部特征(Local features):比如HOG(梯度直方图 )+ HOF(光流直方图)
  2. 基于轨迹的(Trajectory-based):Motion Boundary Histograms(MBH)[4],improved Dense Trajectories (iDT) ——有着良好的表现,不过计算复杂度过高。

光是局部特征或者基于轨迹的特征不足以描述视频的全局信息,通常需要用某种方法集成这些特征。

  1. 视觉词袋(Bag of Visual Words,BoVW),BoVW提供了一种通用的通过局部特征来构造全局特征的框架,其受到了文本处理中的词袋(Bag of Word,BoW)的启发,主要在于构造词袋(也就是字典,码表)等。

  1. Fisher Vector,FV同样是通过集成局部特征构造全局特征表征。具体详细内容见[5]

要表征视频的时序信息,我们主要需要表征的是动作的运动(motion)信息,这个信息通过帧间在时间轴上的变化体现出来,通常我们可以用光流(optical flow)进行描述,如TVL1和DeepFlow。

在深度学习来临之前,这些传统的CV算法在视频动作理解中占了主要地位,即便是如今在深度学习大行其道的时代,这些传统的算子也没有完全退出舞台,很多算法比如Two Stream Network等还是会显式地去使用其中的一些算子,比如光流,比如C3D也会使用iDT作为辅助的特征。了解,学习研究这些算子对于视频分析来说,还是必要的。


深度学习时代

在深度学习时代,视频动作理解的主要工作量在于如何设计合适的深度网络,而不是手动设计特征。我们在设计这样的深度网络的过程中,需要考虑两个方面内容:

  1. 模型方面:什么模型可以最好的从现有的数据中捕获时序和空间信息。
  2. 计算量方面:如何在不牺牲过多的精度的情况下,减少模型的计算量。

组织时序信息是构建视频理解模型的一个关键点,Fig 3.2展示了若干可能的对多帧信息的组织方法。[6]

  1. Single Frame,只是考虑了当前帧的特征,只在最后阶段融合所有的帧的信息。
  2. Late Fusion,晚融合使用了两个共享参数的特征提取网络(通常是CNN)进行相隔15帧的两个视频帧的特征提取,同样也是在最后阶段才结合这两帧的预测结果。
  3. Early Fusion,早融合在第一层就对连续的10帧进行特征融合。
  4. Slow Fusion,慢融合的时序感知野更大,同时在多个阶段都包含了帧间的信息融合,伴有层次(hierarchy)般的信息。这是对早融合和晚融合的一种平衡。

在最终的预测阶段,我们从整个视频中采样若各个片段,我们对这采样的片段进行动作类别预测,其平均或者投票将作为最终的视频预测结果。

Fig 3.2 融合多帧信息的不同方式。

最终若干个帧间信息融合的方法在sport-1M测试集上的结果如Fig 3.3所示:

Fig 3.3 不同帧间融合方法在sport-1M数据集上的表现。

另外说句,[6]的作者从实验结果中发现即便是时序信息建模很弱的Single-Frame方式其准确率也很高,即便是在很需要motion信息的sports体育动作类别上,这个说明不仅仅是motion信息,单帧的appearance信息也是非常重要的。

这种在单帧层面用CNN进行特征提取,在时序方面用融合池化不同片段的预测的方式,在理论上,是分不清楚“开门”和“关门”两种动作的,因为其本质上没有对时序因果信息进行建模,只是融合了不同片段的预测结果而已。忽略了时间结构信息,这是融合方法的一种潜在缺点。

考虑到融合方式并不能考虑到时序因果信息,时间结构信息被忽略了[13],我们需要重新思考新的时序信息提取方式。我们知道,这些融合方法,都是手动设计的融合帧间特征的方式,而深度学习网络基本上只在提取单帧特征上发挥了作用。这样可能不够合理,我们期望设计一个深度网络可以进行端到端的学习,无论是时序信息还是空间信息。于是我们想到,既然视频序列和文本序列,语音序列一样,都是序列,为什么我们不尝试用RNN去处理呢?

的确是可以的,我们可以结合CNN和RNN,直接把视频序列作为端到端的方式进行模型学习。设计这类模型,我们有几种选择可以挑选:

  1. 考虑输入的数据模态:a> RGB; b> 光流; c> 光流+RGB
  2. 特征: a> 人工设计; b> 通过CNN进行特征提取
  3. 时序特征集成:a> 时序池化; b> 用RNN系列网络进行组织

时序池化如Fig 3.4所示,类似于我们之前讨论的时序融合,不过在细节上不太一样,这里不展开讨论了,具体见文章[8]。

Fig 3.4 不同方式的时序池化。

然而,[8]的作者得出的结论是时序池化比LSTM进行时序信息组织的效果好,这个结论然而并不是准确的,因为[8]的作者并不是端到端去训练整个网络。

如果单纯考虑CNN+RNN的端到端训练的方式,那么我们就有了LRCN网络[9],如Fig 3.5所示,我们可以发现其和[8]的不同在于其是完全的端到端网络,无论是时序和空间信息都是可以端到端训练的。同样的,[9]的作者的输入同样进行了若干种结合,有单纯输入RGB视频,单纯输入光流,结合输入光流和RGB的,结论发现结合输入光流和RGB的效果最为优越。这点其实值得细品,我们知道光流信息是传统CV中对运动motion信息的手工设计的特征,需要额外补充光流信息,说明光靠这种朴素的LSTM的结构去学习视频的时序信息,motion信息是不足够的,这点也在侧面反映了视频的时序组织的困难性。

Fig 3.5 LRCN网络应用在动作识别问题。

对比之后我们将会谈到的C3D网络,CNN+RNN的这种网络框架意味着我们可以利用ImageNet的海量标注图像数据去预训练CNN网络,这样使得我们模型性能更佳优越并且收敛更加稳定,事实上,如果完全从头训练LRCN网络(from scratch),那么按照笔者的经验是训练过程很不稳定,很容易发散,一般实际中我们都会采用已经经过预训练了的CNN作为特征提取器,然后固定住CNN后训练LSTM直至收敛后,再用较小的学习率端到端训练整个网络。

LRCN当然不可避免存在缺点,采用了光流信息作为输入意味着需要大量的预先计算用于计算视频的光流;而视频序列的长时间依赖,motion信息可能很难被LSTM捕获;同时,因为需要把整个视频分成若干个片段,对片段进行预测,在最后平均输出得到最终的视频级别的预测结果,因此如果标注的动作只占视频的很小一段,那么模型很难捕获到需要的信息。

结合光流信息并不是LRCN系列网络的专利,Two Stream Network双流网络[10]也是结合视频的光流信息的好手。在双流网络中,我们同样需要对整个视频序列进行采样,得到若干个片段,然后我们从每个片段中计算得到光流信息作为motion信息描述这个动作的运动,然后从这个片段中采样得到一帧图像作为代表(通常是最中间的帧,片段长度通常是10),表征整个片段的appearance信息。最终分别在motion流和appearance流都得到各自的分类结果,在最后层里进行各自分类结果的融合得到整个片段的预测结果。这种显式地利用光流来组织时序信息,把motion流和appearance流显式地分割开进行模型组织的,也是一大思路。

Fig 3.6 双流网络的网络示意图,需要输入视频的光流信息作为motion信息,和其中某个采样得到的单帧信息作为appearance信息。

这里需要注意一些其中的技术细节,不然后面讨论我们可能会产生疑惑。我们的光流分别需要对x和y方向进行计算,因此对于同一张图而言,会产生x方向的光流和y方向的光流,如上图的(d)和(e)所示。因此,在实践中,如果我们取片段长度 L = 10 L=10 L=10,那么对于一个片段我们便会有20个光流通道,因此我们的motion流的输入张量尺寸为 ( b a t c h _ s i z e , 224 , 224 , 20 ) (batch\_size, 224,224,20) (batch_size,224,224,20),而appearance流的输入张量尺寸为 ( b a t c h _ s i z e , 224 , 224 , 3 ) (batch\_size, 224,224,3) (batch_size,224,224,3)。我们发现motion流的通道数为20,不能直接用在经过ImageNet预训练过后的模型进行初始化,因为一般ImageNet上预训练的模型的输入通道都是3。为了解决这个问题,我们可以用经过ImageNet预训练的模型,比如VGG的第一层卷积层,比如为 k e r n e l = ( 3 , 3 , 3 , 64 ) kernel = (3,3,3,64) kernel=(3,3,3,64),在输入通道那个阶求平均,也就是 k e r n e l . m e a n ( d i m = 2 ) kernel.mean(dim=2) kernel.mean(dim=2),然后得到一个尺寸如 ( 3 , 3 , 1 , 64 ) (3,3,1,64) (3,3,1,64)的张量,用这个张量去初始化我们的motion流的输入的第一层卷积,这样虽然我们的motion流有20个输入通道,但是这个20个输入通道的参数是初始化为相同的。除去第一层卷积层,其他后续的层继续沿用经过预训练的VGG的层。因此,motion流和appearance流最后的输出特征图张量尺寸都是一致的,举个例子比如是 ( b a t c h _ s i z e , 64 , 64 , 256 ) (batch\_size, 64,64,256) (batch_size,64,64,256)。那么我们分别对每个流都预测一个结果,然后对这个结果进行融合,比如求平均,得到对这个片段的最后识别结果。

当然,LRCN具有的问题,双流网络同样也有,包括计算光流的计算复杂度麻烦,采样片段中可能存在的错误标签问题(也就是采样的片段可能并不是和视频级别有着相同的标签,可能和视频级别的标注相符合的动作只占整个视频的很小一段。)对长时间依赖的动作信息组织也是一个大问题。然而,因为双流网络两个流主要都是用2D卷积网络进行特征提取,意味着我们同样可以使用在ImageNet上经过预训练的模型作为良好的参数初始化,这是双流网络的一大优点。

到目前为止,我们都是尝试对视频的单帧应用2D卷积操作进行特征提取,然后在时间轴上进行堆叠得到最终的含有时间序列信息的特征。

我们自然就会想到,如果有一种卷积,能在提取空间信息的同时又能够提取时序信息,那岂不是不需要手工去堆叠时序特征了?一步到位就行了。的确的,我们把这种卷积称之为3D卷积,3D卷积正如其名,其每个卷积核有三个维度,两个在空间域上平移,而另一个在时间轴上滑动卷积。

这样的工作可以追溯到2012年的文章[11],那该文章中,作者提出的网络不是端到端可训练的,同样设计了手工的特征,称之为input-hardwired,作者把原视频的灰度图,沿着x方向的梯度图,沿着y方向的梯度图,沿着x方向的光流图,沿着y方向的光流图堆叠层H1层,然后进行3D卷积得到最终的分类结果。如果我们仔细观察Fig 3.7中的3D卷积核的尺寸,我们发现其不是我们现在常见的 3 × 3 × 3 3\times3\times3 3×3×3的尺寸。这个网络开创了3D卷积在视频上应用的先河,然而其也有不少缺点,第一就是其不是端到端可训练的,还是涉及到了手工设计的特征,其二就是其设计的3D卷积核尺寸并不是最为合适的,启发自VGG的网络设计原则,我们希望把单层的卷积核尽可能的小,尽量把网络设计得深一些。

Fig 3.7 3D卷积网络的最初尝试。

这些缺点带来了C3D[12]网络,与[11]最大的不同就是,C3D其使用的卷积核都是相同的尺寸大小,为 3 × 3 × 3 3\times3\times3 3×3×3,并且其不涉及到任何手工设计特征输入,因此是完全的端到端可训练的,作者尝试把网络设计得更深一些,最终达到了当时的SOTA(state-of-the-art)结果。作者发现结合了iDT特征,其结果能有5%的大幅度提高(在ufc101-split1数据上从85.2%到90.4%)。

Fig 3.8 C3D网络框图示意。

Fig 3.9 3D卷积动图示意。

尽管在当时C3D达到了SOTA结果,其还是有很多可以改进的地方的,比如其对长时间的依赖仍然不能很好地建模,但是最大的问题是,C3D的参数量很大,导致整个模型的容量很大,需要大量的标签数据用于训练,并且,我们发现3D卷积很难在现有的大规模图片数据集比如ImageNet上进行预训练,这样导致我们经常需要从头训练C3D,如果业务数据集很小,那么经常C3D会产生严重的过拟合。随着大规模视频动作理解数据集的陆续推出,比如Kinectics[13]的推出,提供了很好的3D卷积网络pre-train的场景,因此这个问题得到了一些缓解。我们知道很多医疗影像都可以看成是类似于视频一样的媒体,比如MRI核磁共振,断层扫描等,我们同样可以用3D卷积网络对医学图像进行特征提取,不过笔者查阅了资料之后,仍然不清楚是否在大规模动作识别数据集上进行预训练对医学图像的训练有所帮助,毕竟医学图像的时序语义和一般视频的时序语义差别很大,个人感觉可能在大规模动作识别数据集上的预训练对于医学图像帮助不大。

C3D系列的网络是完全的3D卷积网络,缺点在于其参数量巨大,呈现的是3次方级别的增长,即便是在预训练场景中,也需要巨大的数据才能hold住。为了缓解这个问题,有一系列工作尝试把3D卷积分解为2D卷积和1D卷积,其中的2D卷积对空间信息进行提取,1D卷积对时序信息进行提取。典型的3D分解网络有 F S T C N F_{ST}CN FST​CN [14], 其网络示意图如Fig 3.10所示。

Fig 3.10 FstCN 网络的结构框图。

Pseudo-3D ResNet(P3D ResNet)网络[15]则在学习ResNet的残差设计的路上越走越远,其基本的结构块如Fig 3.11所示。这个策略使得网络可以设计得更深,参数量却更少,然而性能表现却能达到SOTA结果,如Fig 3.12和Fig 3.13所示。

Fig 3.11 组成P3D的3种基本单元,分别是P3D-A,P3D-B,P3D-C。

Fig 3.12 P3D ResNet比C3D的模型更小,深度更深,表现性能却更高。

Fig 3.13 在UCF101上,众多模型的表现,P3D ResNet有着出色的表现。

不仅如此,将3D分解成2D+1D的操作使得其在图像数据集上预训练成为了可能。(虽然这种预训练可能并没有LRCN和双流网络这种直观)

在文章[7]中,作者提出了R(2+1)D网络,作者对比了一系列不同的2D+1D的分解操作,包括一系列2D+3D的操作,如Fig 3.14所示。与P3D ResNet[15]不同的是,R(2+1)D采用了结构相同的单元,如Fig 3.15所示,而不像P3D中有3种不同的残差块设计。这种设计简化了设计,同时达到了SOTA效果。

Fig 3.14 众多结合2D卷积和3D卷积的方法,其中实验发现R(2+1)D效果最佳。

Fig 3.15 (2+1)D conv单元示意图,把3D卷积进行分解成了空间域卷积和时间域卷积。

至此,我们讨论了视频动作识别中的若干基础思路:1.通过CNN+RNN;2.通过双流,显式地分割motion信息流和appearance信息流;3.通过3D卷积进行直接空间时间信息提取。

我们的旅途就到此为止了吗?不,我们刚出新手村呐,我们的冒险才刚刚开始,我们后续讨论的网络,或多或少受到了以上几种模型的启发,或者将以上几种模型融合起来进行改造,或添加了新的亮点,比如加入了attention注意力机制,self-attention自注意力机制等。

不过我们不妨暂且在本站结尾做个小总结:视频分析难,难在其特征不仅仅是2D图像中的二维特征了,二维特征图像现在有着多种大规模的图像数据集可以提供预训练,并且对图像进行人工标注,在很多任务中都比对视频标注工作量要小。正因为超大规模的图像标注数据集的推出,使得很多图像问题在深度学习方法加持下得到了快速的发展,在某些领域甚至已经超过了人类。

然而视频分析不同,视频是有一系列语义上有联系的单帧二维图像在时间轴上叠加而成的,而提取时序语义信息是一件不容易的事情,种种实验证明,现存的深度网络在提取时序语义特征上并没有表现得那么好,否则就不需要人工设计的光流特征进行加持了。深度网络在时序特征提取上的缺失,笔者认为大致有几种原因:

  1. 标注了的视频数据量不足。
  2. 时序信息的分布变化比二维图像分布更为多样,对于图像,我们可以进行插值,采样进行图像的缩放,只要不是缩放的非常过分,人类通常还是能正常辨认图像的内容。而视频帧间插帧却是一件更为困难的事情。因此不同长度之间的视频之间要进行适配本身就是比较困难的事情。当然你可以进行视频时序下采样,但是如果关键帧没有被采样出来,那么就会造成有效信息的丢失,相反,图像的缩放比较少会出现这种问题。说回到时序信息的分布的多样性就体现在这里,同一个动作,发生的长度可能截然不同,所造成的时序是非常复杂的,需要组织不同长度的时序之间的对齐,使得组织动作的motion变得很不容易,更别说不同人的同一个动作的motion可能千差万别,涉及到了原子动作的分解。

标注的视频数据量不足并不一定体现在视频级别的标注少,带有动作标签的视频级别的数据可能并不少,但是这些视频可能并没有进行过裁剪,中间有着太多非标注动作类别相关的内容。对视频进行动作发生时段的准确定位需要非常多的人工,因此标注视频变得比较困难。同时,一个视频中可能出现多个人物,而如果我们只关注某个人物的动作,对其进行动作标注,如果在样本不足的情况下,便很难让模型学习到真正的动作执行人,因此对视频的标注,单纯是视频级别的动作标注是非常弱的一种标注(weak-supervision)。我们可能还需要对一个视频进行多种标注,比如定位,动作类别,执行人bounding-box等等。

同时,给视频标注的信息也不一定准确,标签本身可能是带有噪声的。有很多标签可能来自于视频分类的tag,这些tag分类信息大多数来自于视频本身的上传者,是上传者自己指定的,可能存在有较大的噪声,然而这类型的数据量非常巨大,不利用却又过于可惜。类似于这种tag标签,现在弹幕网站的弹幕也是一种潜在的可以利用的带噪声的标签。

随着海量的无标签或者弱标签,带噪声标签在互联网上的与日俱增,在视频数据上,弱监督学习,带噪声的标签的监督学习,自监督学习,半监督学习将有广阔的空间。

视频动作理解——更进一步

我们在上一站已经对基本的视频动作理解的框架有了基本了解,考虑到模型需要对时空信息进行建模,归结起来无非有三种大思路,如Fig 4.1所示:

  1. : 这种类型的网络以LRCN[9]为代表,利用CNN提取单帧图片的空间特征,然后利用RNN系列的网络对提取好的单帧图片特征进行时序建模,最后得到视频片段的预测结果。

    • 优点:可以直接自然地利用在大规模图像数据集比如ImageNet上的预训练结果。
    • 缺点:后端的RNN网络是对高层次的语义特征进行建模,对于低层次的运动motion特征则爱莫能助,因为低层次的motion信息很多时候都取决于了前端的CNN的能力,而前端的CNN在此时并没有motion建模的能力。

    总结: 因此,LRCN系列的网络对于单帧appearance差别明显的数据集,表现可能会更为理想。模型参数量在三种基本模型中最小。

  2. : 3D卷积网络以C3D[12]为典型代表,将2D卷积核在时间方向延伸了一个维度,自然地形成了3D卷积核,以期望用3D卷积核的层叠学习到视频的时空语义特征。

    • 优点:是2D卷积的自然延伸,一站式地学习motion和appearance信息,能理论上真正做到时空语义的提取。
    • 缺点:参数量是3次方级别的,参数量过大,容易导致过拟合。不能直接地利用在图像数据集上的预训练模型进行初始化模型参数。

    总结 : 3D卷积网络在高维医学图像和视频分析中都有广阔的应用,其存在很多尝试分解3D卷积成2D+1D卷积的操作,而且都有不错的效果。模型参数量在三种基本模型中最大。

  3. : 双流网络[]显式地分割了motion流和appearance流两种信息,(大部分)利用人工设计的光流特征进行视频的motion信息建模,用RGB片段的单帧信息作为appearance信息,利用预训练的CNN进行特征提取后,融合不同流的预测结果得到最终视频片段的预测。

    • 优点:可以直接自然地利用预训练的大多数CNN网络,如VGG,ResNet等。效果良好,现在很多工作都是基于双流网络进行改造而成。直接用光流信息去建模motion信息,使得在较小样本的数据集中也能有不错效果。
    • 缺点:大部分工作的光流信息都是需要预训练的,这样无法提供一个端到端的预训练场景,同时,光流计算耗费较多的计算资源。

    总结: 双流网络是目前动作识别领域较为常用的基本模型,其效果良好,模型参数量在三种基本模型之间。

Fig 4.1 三种基本的对视频动作进行分析的模型框架。

以上的总结其实也阐明了在视频动作理解中的几个基本难题:

  1. 如何高效利用已经在大规模图像数据集ImageNet上已经预训练好了的网络,对视频理解模型进行初始化?
  2. 视频长度一般是变长的,经常需要做片段采样,那么我们如何对样本采样比较合适?
  3. 光流预计算需要花费大量计算资源,并且不能进行端到端训练。
  4. 如何更好地组织motion和appearance信息的关系?
  5. 对于双流网络的流信息融合来说,以什么方式融合?在哪个层融合能取得最好效果?

那么我们接下来的内容,基本上都是在回答这些问题。Follow my lead and go on~

双流网络的信息融合——如何融合,何处融合

时空域信息融合

我们之前谈到过,我们一般的双流网络的输出无论是motion流还是appearance流,其最后一层的输出张量尺寸都是一致的,我们可以用式子(4.1)表示: x t a ∈ R H × W × D x t b ∈ R H ′ × W ′ × D ′ (4.1) \mathbf{x}_{t}^a \in \mathbb{R}^{H \times W \times D} \\ \mathbf{x}_{t}^b \in \mathbb{R}^{H^{\prime} \times W^{\prime} \times D^{\prime}} \tag{4.1} xta​∈RH×W×Dxtb​∈RH′×W′×D′(4.1) 其中 x t a \mathbf{x}_t^a xta​表示motion流特征输出, x t b \mathbf{x}_{t}^b xtb​表示appearance流特征输出, H H H表示height, W W W是width, D D D表示最终输出通道数depth。我们对两个流的信息融合可以表示为(4.2) f : x t a , x t b → y t y t ∈ R H ′ ′ × W ′ ′ × D ′ ′ (4.2) f: \mathbf{x}_t^a, \mathbf{x}_t^b \rightarrow \mathbf{y}_t \\ \mathbf{y}_t \in \mathbb{R}^{H^{\prime\prime} \times W^{\prime\prime} \times D^{\prime\prime}} \tag{4.2} f:xta​,xtb​→yt​yt​∈RH′′×W′′×D′′(4.2) 其中的映射 f f f就是我们需要指定的信息融合函数,通常为了方便,我们假定 H = H ′ , W = W ′ , D = D ′ H = H^{\prime}, W = W^{\prime}, D=D^{\prime} H=H′,W=W

标签: 流量传感器vt系列

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台