乐趣区

关于人工智能:百度工程师漫谈视频理解

作者 | FesianXu

导读

AI 算法曾经渗入到了咱们生存的方方面面,无论是购物举荐,广告推送,搜索引擎还是多媒体影音娱乐,都有 AI 算法的影子。作为多媒体中重要的信息载体,视频的位置能够说是首屈一指的,然而目前对于 AI 算法在视频上的利用还不够成熟,了解视频内容依然是一个重要的问题亟待解决攻克。本文对视频了解进行一些探讨,尽管只是笔者对互联网的一些意见的汇总和漫谈,有些内容是笔者本人的学习所得,心愿还是能对诸位读者有所帮忙。

全文 37074 字,预计浏览工夫 93 分钟。

为什么是视频

以视频为代表的动静多媒体,联合了音频,视频,是以后的,更是将来的互联网流量之王。依据来自于国家互联网信息办公室的中国互联网络倒退情况统计报告[1]

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

其中各类利用应用时长占比方图 Fig 1.1 所示:

<div align=’center’>

<b>
Fig 1.1 2018 年各类利用应用时长占比。</b>

</div>

咱们很容易发现,包含短视频在内的视频用户时长占据了约 20% 的用户时长,占据了绝大多数的流量,同时网络视频用户的规模也在逐年减少。

互联网早已不是咱们 20 年前滴滴答答拨号上网期间的互联网了,互联网的接入速率一劳永逸,如 Fig 1.2 所示。视频作为与人类日常感知最为靠近的形式,比起独自的图片和音频,文本,能在单位工夫内传递更多的信息,从而有着更广大的用户黏性。在单位流量日渐便宜,并且速度逐步晋升的时代,视频,将会撑起将来媒体的大旗。

<div align=’center’>

<b>
    Fig 1.2 固定带宽 /4G 均匀下载速率变动曲线
</b>

</div>

确实,咱们当初是不缺视频的时代,咱们有的是数据,大型公司有着宽广的用户根底,每天产生着海量的数据,这些海量的数据,然而是能够产生十分微小的价值的。以色列历史学家尤瓦尔·赫拉利在其畅销书《将来简史》和《今日简史》中,形容过一种将来的社会,在那个社会中,数据是虚构的黄金,垄断着数据的公司成为将来的 umbrella 公司,管制着人们的一言一行,人们最终成为了数据和算法的奴隶。只管这个形容过于骇人和科幻,然而这些都并不是空穴来风,咱们能晓得的是,从数据中,咱们确实能够做到很多事件,咱们能够通过数据进行用户画像刻画,晓得某个用户的各个属性信息,晓得他或她青睐什么,憎恨什么,去过何处,欲往何方。咱们依据用户画像进行准确的广告推送,让基于大数据的算法在无形中管制你的购物习惯也不是不可能的事件。数据确实十分重要,然而惋惜的是,目前 AI 算法在视频——这个将来媒体之王上的体现尚不是十分现实(以后在 sports-1M 上的 R(2+1)D 模型 [7] 的体现有余 80%,不到能够实用的精度。),仍有很多问题亟待解决,然而将来可期,咱们能够预想到,在视频上,咱们终能成就一番事业。

了解视频——嗯,很简单

利用视频数据的最终目标是让算法了解视频。了解视频(understanding the video) 是一件十分形象的事件,在神经科学尚没有齐全清晰的当初,如果依照人类感知去了解这个词,咱们终将陷入泥淖。咱们得具体点,在了解视频这个工作中,咱们到底在做什么?首先,咱们要晓得比照于文本,图片和音频,视频有什么特点。视频它是动静的依照工夫排序的图片序列,然而图片帧间有着亲密的分割,存在上下文分割;视频它有音频信息。因而进行视频了解,咱们势必须要进行工夫序列上的建模,同时还须要空间上的关系组织。

就目前来说,了解视频有着诸多具体的子工作:

  1. 视频动作分类:对视频中的动作进行分类
  2. 视频动作定位:辨认原始视频中某个动作的开始帧和完结帧
  3. 视频场景辨认:对视频中的场景进行分类
  4. 原子动作提取
  5. 视频文字说明(Video Caption):给给定视频配上文字说明,罕用于视频简介主动生成和跨媒体检索
  6. 集群动作了解:对某个个体流动进行动作分类,常见的包含排球,篮球场景等,可用于个体动作中要害动作,高亮动作的捕捉。
  7. 视频编辑。
  8. 视频问答零碎(Video QA):给定一个问题,零碎依据给定的视频片段主动答复
  9. 视频跟踪:跟踪视频中的某个物体静止轨迹
  10. 视频事件了解:不同于动作,动作是一个更为短时间的流动,而事件可能会波及到更长的工夫依赖

当然了解视频不仅仅是以上列出的几种,这些工作在咱们生存中都能方方面面有所体现,就目前而言,了解视频能够看成是解决以上提到的种种问题。

通常来说,目前的了解视频次要集中在以人为核心的角度进行的,又因为视频自身是动静的,因而形容视频中的物体随着工夫变动,在进行什么动作是一个很重要的工作,能够认为动作辨认在视频了解中占据了一个很重要的位置。因而本文的了解视频将会和视频动作了解大抵地等价起来,这样可能未免过于粗略,不过还是能提供一些探讨的中央的。

视频剖析的次要难点集中在:

  1. 须要大量的算力,视频的大小远大于图片数据,须要更大的算力进行计算。
  2. 低质量,很多实在视频拍摄时有着较大的静止含糊,遮挡,分辨率低下,或者光照不良等问题,容易对模型造成较大的烦扰。
  3. 须要大量的数据标签!特地是在深度学习中,对视频的时序信息建模须要海量的训练数据能力进行。时间轴不仅仅是增加了一个维度那么简略,其比照图片数据带来了时序剖析,因果剖析等问题。

视频动作了解——新手村

视频数据模态

然而视频动作了解也是一个非常广阔的钻研畛域,咱们输出的视频模式也不肯定是咱们常见的 RGB 视频,还可能是 depth 深度图序列,Skeleton 关节点信息,IR 红外光谱等。

<div align=’center’>

<b>
    Fig 3.1 多种模态的视频模式
</b>

</div>

就目前而言,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)般的信息。这是对早交融和晚交融的一种均衡。

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

<div align=’center’>

<b>
    Fig 3.2 交融多帧信息的不同形式。</b>

</div>

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

<div align=’center’>

<b>
    Fig 3.3 不同帧间交融办法在 sport-1M 数据集上的体现。</b>

</div>

另外说句,[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]。

<div align=’center’>

<b>
    Fig 3.4 不同形式的时序池化。</b>

</div>

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

如果单纯思考 CNN+RNN 的端到端训练的形式,那么咱们就有了 LRCN 网络 [9],如 Fig 3.5 所示,咱们能够发现其和[8] 的不同在于其是齐全的端到端网络,无论是时序和空间信息都是能够端到端训练的。同样的,[9]的作者的输出同样进行了若干种联合,有单纯输出 RGB 视频,单纯输出光流,联合输出光流和 RGB 的,论断发现联合输出光流和 RGB 的成果最为优越。这点其实值得细品,咱们晓得光流信息是传统 CV 中对静止 motion 信息的手工设计的特色,须要额定补充光流信息,阐明光靠这种奢侈的 LSTM 的构造去学习视频的时序信息,motion 信息是不足够的,这点也在侧面反映了视频的时序组织的困难性。

<div align=’center’>

<b>
    Fig 3.5 LRCN 网络应用在动作辨认问题。</b>

</div>

比照之后咱们将谈判到的 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 流显式地宰割开进行模型组织的,也是一大思路。

<div align=’center’>

<b>
    Fig 3.6 双流网络的网络示意图,须要输出视频的光流信息作为 motion 信息,和其中某个采样失去的单帧信息作为 appearance 信息。</b>

</div>

这里须要留神一些其中的技术细节,不然前面探讨咱们可能会产生纳闷。咱们的光流别离须要对 x 和 y 方向进行计算,因而对于同一张图而言,会产生 x 方向的光流和 y 方向的光流,如上图的 (d) 和(e)所示。因而,在实践中,如果咱们取片段长度 $L=10$,那么对于一个片段咱们便会有 20 个光流通道,因而咱们的 motion 流的输出张量尺寸为 $(batch\_size, 224,224,20)$,而 appearance 流的输出张量尺寸为 $(batch\_size, 224,224,3)$。咱们发现 motion 流的通道数为 20,不能间接用在通过 ImageNet 预训练过后的模型进行初始化,因为个别 ImageNet 上预训练的模型的输出通道都是 3。为了解决这个问题,咱们能够用通过 ImageNet 预训练的模型,比方 VGG 的第一层卷积层,比方为 $kernel = (3,3,3,64)$,在输出通道那个阶求均匀,也就是 $kernel.mean(dim=2)$,而后失去一个尺寸如 $(3,3,1,64)$ 的张量,用这个张量去初始化咱们的 motion 流的输出的第一层卷积,这样尽管咱们的 motion 流有 20 个输出通道,然而这个 20 个输出通道的参数是初始化为雷同的。除去第一层卷积层,其余后续的层持续沿用通过预训练的 VGG 的层。因而,motion 流和 appearance 流最初的输入特色图张量尺寸都是统一的,举个例子比方是 $(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\times3\times3$ 的尺寸。这个网络创始了 3D 卷积在视频上利用的先河,然而其也有不少毛病,第一就是其不是端到端可训练的,还是波及到了手工设计的特色,其二就是其设计的 3D 卷积核尺寸并不是最为适合的,启发自 VGG 的网络设计准则,咱们心愿把单层的卷积核尽可能的小,尽量把网络设计得深一些。

<div align=’center’>

<b>
    Fig 3.7 3D 卷积网络的最后尝试。</b>

</div>

这些毛病带来了 C3D[12]网络,与 [11] 最大的不同就是,C3D 其应用的卷积核都是雷同的尺寸大小,为 $3\times3\times3$,并且其不波及到任何手工设计特色输出,因而是齐全的端到端可训练的,作者尝试把网络设计得更深一些,最终达到了过后的 SOTA(state-of-the-art)后果。作者发现联合了 iDT 特色,其后果能有 5% 的大幅度提高(在 ufc101-split1 数据上从 85.2% 到 90.4%)。

<div align=’center’>

<b>
    Fig 3.8 C3D 网络框图示意。<b/>

</div>

<div align=’center’>

<b>
    Fig 3.9 3D 卷积动图示意。</b>

</div>

只管在过后 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_{ST}CN$ [14], 其网络示意图如 Fig 3.10 所示。

<div align=’center’>

<b>
    Fig 3.10 FstCN 网络的构造框图。</b>

</div>

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

<div align=’center’>

<b>
    Fig 3.11 组成 P3D 的 3 种根本单元,别离是 P3D-A,P3D-B,P3D-C。</b>

</div>

<div align=’center’>

<b>
    Fig 3.12 P3D ResNet 比 C3D 的模型更小,深度更深,体现性能却更高。</b>

</div>

<div align=’center’>

<b>
    Fig 3.13 在 UCF101 上,泛滥模型的体现,P3D ResNet 有着杰出的体现。</b>

</div>

不仅如此,将 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 成果。

<div align=’center’>

<b>
    Fig 3.14 泛滥联合 2D 卷积和 3D 卷积的办法,其中试验发现 R(2+1)D 成果最佳。</b>

</div>

<div align=’center’>

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

</div>

至此,咱们探讨了视频动作辨认中的若干根底思路: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. CNN+RNN:这种类型的网络以 LRCN[9]为代表,利用 CNN 提取单帧图片的空间特色,而后利用 RNN 系列的网络对提取好的单帧图片特色进行时序建模,最初失去视频片段的预测后果。

    • 长处:能够间接天然地利用在大规模图像数据集比方 ImageNet 上的预训练后果。
    • 毛病:后端的 RNN 网络是对高层次的语义特色进行建模,对于低层次的静止 motion 特色则心有余而力不足,因为低层次的 motion 信息很多时候都取决于了前端的 CNN 的能力,而前端的 CNN 在此时并没有 motion 建模的能力。

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

  2. 3D-ConvNet:3D 卷积网络以 C3D[12]为典型代表,将 2D 卷积核在工夫方向延长了一个维度,天然地造成了 3D 卷积核,以冀望用 3D 卷积核的层叠学习到视频的时空语义特色。

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

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

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

    • 长处:能够间接天然地利用预训练的大多数 CNN 网络,如 VGG,ResNet 等。成果良好,当初很多工作都是基于双流网络进行革新而成。间接用光流信息去建模 motion 信息,使得在较小样本的数据集中也能有不错成果。
    • 毛病:大部分工作的光流信息都是须要预训练的,这样无奈提供一个端到端的预训练场景,同时,光流计算消耗较多的计算资源。

    总结:双流网络是目前动作辨认畛域较为罕用的根本模型,其成果良好,模型参数量在三种根本模型之间。

<div align=’center’>

<b>
    Fig 4.1 三种根本的对视频动作进行剖析的模型框架。</b>

</div>

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

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

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

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

时空域信息交融

咱们之前谈到过,咱们个别的双流网络的输入无论是 motion 流还是 appearance 流,其最初一层的输入张量尺寸都是统一的,咱们能够用式子 (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}
$$

其中 $\mathbf{x}_t^a$ 示意 motion 流特色输入,$\mathbf{x}_{t}^b$ 示意 appearance 流特色输入,$H$ 示意 height,$W$ 是 width,$D$ 示意最终输入通道数 depth。咱们对两个流的信息交融能够示意为(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$ 就是咱们须要指定的信息交融函数,通常为了不便,咱们假设 $H = H^{\prime}, W = W^{\prime}, D=D^{\prime}$,并且把下标 $t$ 省略。咱们期待的信息交融,如 Fig 4.2 所示,应该能够找到 motion 流和 appearance 流之间的对应关系,而不应该是割裂开的。在传统的双流网络 [10] 中,因为双流信息交融只在最初进行各自流的预测合并(比如说均匀操作)的时候才体现进去,因而 motion 流信息其实并没有在各个档次(hierarchy)上和 appearance 流信息很好地对应。咱们心愿的双流信息交融应该如 Fig 4.2 所示。

<div align=’center’>

<b>
    Fig 4.2 现实的 motion 流和 appearance 流特色交融应该能找到两个流之间的对应特色局部。</b>

</div>

在文章 [16] 中,作者对若干种双流信息交融形式进行了介绍和试验比照,同时对何处进行信息交融进行了试验。通过联合最佳的信息交融形式和信息交融层的地位,作者提出了所谓的双流交融网络(Two Stream Fused Network)。

个别,有以下几种形式交融信息:

  1. sum fusion,加和交融,示意为 $y^{sum} = f^{sum}(\mathbf{x}^a, \mathbf{x}^b)$。如果 $i,j$ 别离示意第 $d$ 个通道的 $i,j$ 空间地位,那么咱们有 $y_{i,j,d}^{sum} = x^{a}_{i,j,d}+x^{b}_{i,j,d}$。因为通道数的排序是任意的,因而并不意味着 $\mathbf{x}_{i,j,1}^a$ 和 $\mathbf{x}_{i,j,1}^b$ 有着对应的语义含意,当然这种任意的对应关系咱们能够通过后续设计网络进行学习,以求达到最好的优化成果。
  2. max fusion,最大交融,示意为 $y^{max} = f^{max}(\mathbf{x}^a, \mathbf{x}^b)$。同样有着:$y_{i,j,d}^{max} = \max(x^a_{i,j,d}, x^b_{i,j,d})$。和 sum fusion 相似的,其对应关系也是任意的。
  3. Concatenation fusion,拼接交融,示意为 $y^{concat} = f^{concat}(\mathbf{x}^{a},\mathbf{x}^{b})$,其叠在通道叠加了两个流的特色图。同样咱们有:

    $$
    \begin{aligned}
    y^{cat}_{i,j,2d} &= x^{a}_{i,j,d} \\
    y^{cat}_{i,j,2d-1} &= x^{b}_{i,j,d}
    \end{aligned}
    \tag{4.3}
    $$

    拼接交融没有指定显式的对应关系,因而必须通过后续的网络设计进行学习这种对应关系。

  4. Conv fusion,卷积交融,示意为 $y^{conv} = f^{conv}(\mathbf{x}^a, \mathbf{x}^b)$。首先,咱们须要对两个特色图进行在通道上的叠加,而后用一系列的卷积核 $\mathbf{f} \in \mathbb{R}^{1 \times 1 \times 2D \times D}$ 和偏置 $\mathbf{b} \in \mathbb{R}^{D}$ 进行卷积操作,有:

    $$
    \mathbf{y}^{conv} = \mathbf{y}^{concat} * \mathbf{f}+\mathbf{b}
    \tag{4.4}
    $$

    咱们发现这里的卷积操作是 1 ×1 卷积,同时进行了通道数的放大,放弃了输入输出尺寸的统一。

  5. Bilinear fusion,双线性交融,示意为 $y^{bil} = f^{bil}(\mathbf{x}^a, \mathbf{x}^b)$,其在每个像素地位,计算了两个特色图的矩阵外积,定义为:

    $$
    \mathbf{y}^{bil} = \sum^{H}_{i=1}\sum_{j=1}^{W}(\mathbf{x}^{a}_{i,j})^{\mathrm{T}}\mathbf{x}^{b}_{i,j}
    \tag{4.5}
    $$

    这个产生的交融特色输入为 $\mathbf{y}^{bil} \in \mathbb{R}^{D^2}$,具备过高的维度,容易导致过拟合,因而在理论中比拟少利用。

作者对这几种交融形式进行了试验,得出了其模型准确度和模型参数量的试验后果。如 Fig 4.3 所示。

<div align=’center’>

<b>
    Fig 4.3 各种不同的双流信息交融形式的试验后果和模型参数量。</b>

</div>

咱们发现,Conv fusion 能在较少的模型参数量下,达到最好的试验性能。

同时,如上图所示,作者摸索了在双流网络的哪个层进行交融成果会最好,最初得出试验后果如 Fig 4.4 所示。咱们发现 ReLU5+FC8 的这个配置能达到最好的性能。

<div align=’center’>

<b>
    Fig 4.4 在双流网络的各个层进行交融获得的成果和模型大小试验后果。</b>

</div>

时序信息交融

咱们之前谈到的是时空信息交融,指的是将 motion 流和 appearance 流交融起来的形式摸索。而这个个别是在单个的片段中进行的操作,思考到如何交融视频中不同片段之间的信息,造成最终的对整个视频的分类后果,咱们就须要思考时序特色建模了。思考到如何将不同工夫 $t$ 的特色图 $\mathbf{x}_t$ 交融起来,个别也能够称之为时序信息建模或者时序特色集成,咱们接下来持续摸索时序信息交融。

当然一种最为简略的形式,正如在原始的双流网络 [10] 中提到的,间接对不同时刻的网络预测后果进行均匀,这种均匀操作疏忽了具体的时序构造,实践上,网络无奈分分明“开门”和“关门”的区别。在这种均匀的状况下,这种模型框架只是对空间上的像素或者特色进行了 2D 池化,如 Fig 4.5 (a)所示。

当初,让咱们将 $T$ 个空间特色图 $x^{\prime} \in \mathbb{R}^{H \times W \times D}$ 进行重叠,那么咱们就有了时序池化层的输出特色张量 $\mathbf{x} \in \mathbb{R}^{H \times W \times T \times D}$。咱们接下来定义两种不同的时序池化层,它们能够对时序信息进行集成。

  1. 3D pooling,在重叠的特色图 $\mathbf{x}$ 上作用以池化核尺寸为 $W^{\prime} \times H^{\prime} \times T^{\prime}$ 的 max-pooling 池化核,如 Fig 4.5 (b)所示。留神到,在不同通道 $D$ 上没有进行任何的池化。
  2. 3D Conv+3D Pooling,用一系列卷积核大小为 $\mathbf{f} \in \mathbb{R}^{W^{\prime\prime} \times H^{\prime\prime} \times T^{\prime\prime} \times D \times D^{\prime}}$ 的卷积核和尺寸为 $\mathbf{b} \in \mathbb{R}^{D^{\prime}}$ 的偏置对重叠的特色图 $\mathbf{x}$ 进行卷积后,进行 3D 池化,如 Fig4.5 (c)所示,有:

    $$
    \mathbf{y} = \mathbf{x}_t *\mathbf{f} + \mathbf{b}
    \tag{4.6}
    $$

<div align=’center’>

<b>
    Fig 4.5 三种不同的时序池化形式,注意图中的坐标轴的标签。</b>

</div>

如 Fig 4.6 所示,作者接下来对以上提到的若干种时序特色建模进行了试验,发现 3D conv+3D pooling 成果最好。

<div align=’center’>

<b>
    Fig 4.6 作者尝试了若干种时序特色建模的形式,发现 3D conv+3D pooling 的形式成果最好。</b>

</div>

双流交融网络

基于之前的探讨,作者依据 Fig 4.7 所示的根本框架提出了双流交融网络(Two-Stream Fusion Network),这个网络在双流信息交融上花了一番心理设计。作者在 conv5 层后进行双流信息的 3D conv fusion 交融,同时,作者并没有截断工夫流信息(这里的工夫流信息是多张 RGB 帧层叠而成,见 Fig 4.7 的右半局部),而是用方才提到的时序信息交融,用 3D Conv+3D Pooling 的形式交融了时序信息流,于是咱们有两个分支:一个是工夫 - 空间双流交融信息,一个是时序特色流。如 Fig 4.8 的 spatia-temporal loss 和 temporal loss 所示。

<div align=’center’>

<b>
    Fig 4.7 双流交融网络的骨干框架。</b>

</div>

<div align=’center’>

<b>
    Fig 4.8 双流交融网络的网络框图,次要有时空损失和时序损失组成,其前端和传统的双流网络没有太大区别,次要是在时序交融上采纳了 3D conv+3D pooling 的形式。</b>

</div>

整个网络的试验后果如下图所示:

双流交融网络在用少于 C3D 的参数量的同时,进步了模型性能,是双流信息交融网络系列的开山鼻祖。咱们之后的很多网络,包含 I3D 等,都是由它启发而来。

将 2D 卷积网络预训练模型扩大到 3D 卷积网络上

还记得咱们之前谈到 3D 卷积网络有个很大的毛病是啥吗?3D 卷积网络很难间接利用在图像数据上预训练的后果,导致常常须要大规模的标注视频数据集进行预训练,然而这种数据远比图片数据难收集。文献 [13] 的作者发现了这个问题,提出了两个解决方案:

  1. 采集大规模标注视频数据集 Kinetics ——这点很间接粗犷,然而很有用。
  2. 采纳将曾经预训练好了的 2D 卷积网络的 2D 卷积核“收缩”(inflate)到对应的 3D 卷积核的操作,利用了预训练的 CNN 模型。这个模型作者称之为 I3D(Inflated 3D ConvNets)。

如果把之前曾经介绍过了的几种模型都列成一个简图,那么咱们有 Fig 4.9。其中 (a)-(d) 咱们在之前的内容中介绍过了,而(e) Two-Stream 3D-ConvNet 也就是本节所说的 I3D 网络。咱们能够发现,这种网络的根本框架还是利用了双流网络的构造,不过扭转了以下几个要点:

  1. 齐全采纳 3D ConvNet 作为特征提取器,提取时空信息。
  2. RGB 输出不再是单帧了,而是把整个视频输出 3D 卷积网络进行特征提取,同样的,光流 motion 流的输出也不再是片段的长度了,而是整个视频的长度。

<div align=’center’>

<b>
    Fig 4.9 五种动作辨认的网络简图,前四种咱们曾经介绍过了。其中的 K 代表的是整个视频的长度,N 示意的是某个帧四周的街坊的长度,比方某个工夫帧 t,如果 N =10,那么就会在 [t-5,t+5] 的范畴内对视频采样。</b>

</div>

咱们先不关怀作者是怎么采集大规模数据集的,咱们关怀作者是怎么对 2D 卷积核进行“收缩”的。咱们思考到一个 2D 卷积核,其尺寸为 $(N \times N)$,那么咱们为它增加一个工夫维度,失去尺寸为 $(N \times N \times 1)$ 的卷积核,将这个卷积核在第三个维度复制 N 次,咱们就有了 $(N \times N \times N)$ 的 3D 卷积核。这个论断其实能够推导:

假如咱们想要找 ImageNet 上训练 3D 卷积网络,咱们能够思考一种最简略的形式,[13]的作者称之为 boring-video fixed point。咱们把一张图片,复制 M 次,层叠造成一个视频,只不过这个视频并没有时序上的信息,所有帧都是反复的,而后用这个视频去训练 3D 卷积网络。因为线性性,咱们能够将整个过程简化为将 2D 卷积核进行工夫维度的复制。这种形式使得 I3D 网络能够在 ImageNet 上进行预训练,如 Fig 4.10 所示,这种策略确实产生了不错的成果。

<div align=’center’>

<b>
    Fig 4.10 在 ImageNet 上预训练对于 I3D 网络的性能晋升。</b>

</div>

目前而言,I3D 网络在各个 benchmark 数据集上的体现都不错,是一个不错的 baseline 基线网络。

此外,在工作 [20] 中,作者提到了一种乏味的办法,其能够将 2D pretrain 的卷积网络的参数扩大到 3D 卷积网络上。如 Fig 4.11 所示,这种办法采纳了相似于 Teacher-Student Learning 的办法,次要有两个分支,第一个分支是蓝色显示的预训练好了的 2D 卷积网络,第二个分支是绿色显示的须要进行迁徙参数的 3D 卷积网络,咱们的蓝色分支对输出的 RGB 单帧进行解决,绿色分支对视频片段进行解决,咱们的绿色和蓝色分支的输出可能来自于同一个视频,称之为正样本对,也可能来自于不同视频,称之为负样本对,咱们的网络指标就是判断这两个输出是否是正样本还是负样本,用 0 / 1 示意。通过这种伎俩,咱们能够让 3D 卷积网络学习到 2D 卷积预训练网络的常识。

<div align=’center’>

<b>
    Fig 4.11 T3D 中提到的利用 2D 卷积网络的预训练模型去初始化 3D 卷积网络参数的办法。</b>

</div>

内嵌光流计算的深度网络

咱们之前谈到的网络利用了光流信息,而这里的光流信息无一例外是须要通过人工设计的办法进行预计算的,能不能思考一种办法能够利用深度网络提取光流信息呢?[17]的作者提出了 MotionNet,如 Fig 4.12 所示,在基于双流网络的骨干上,采纳深度网络提取光流信息。作者将光流提取问题视为图形重建(image reconstruction)问题,利用 bottleneck 的网络结构,对给定的 RGB 输出 $I_{RGB}$,给定其光流作为输入标签(能够通过传统算法计算失去)记为 $I_{flow}$,通过监督学习能够独自训练 MotionNet,待其独立训练完后,能够联结起整个网络端到端训练。

<div align=’center’>

<b>
    Fig 4.12 MotionNet 的网络框图。</b>

</div>

其余模态的视频序列动作剖析

之前介绍的都是 RGB 视频或者联合了依据 RGB 视频计算失去的光流信息作为输出模态,进行视频动作了解的一些办法。笔者自身的钻研方向是多视角动作辨认,数据输出模态多是骨骼点 skeleton 数据,如 Fig 5.1 所示。具体对于骨骼点数据的特点介绍,见笔者之前的文章[2]。在本站,咱们尝试探讨骨骼点序列的动作辨认和多视角动作辨认。

<div align=’center’>

<b>
    Fig 5.1 利用 Kinect v2.0[21]失去的骨骼点排序
</b>

</div>

总得来说,骨骼点数据能够看成是极其的将 motion 信息给提取了进去,而失落了所有的 appearance 信息。如 Fig 5.2 所示,咱们能很分明地判断人物的动作,然而波及到人物的衣着打扮,交互的物体是什么等信息,却是齐全没方法判断了。因而,用 skeleton 骨骼点数据去组织 motion 信息是一种十分好的伎俩,然而波及到与 appearance 无关的数据,就必须引入 RGB 视频信息,这类型的多模态问题,已有对于此的不少工作[23]。

<div align=’center’>

<b>
    Fig 5.2 利用 Openpose[22]对 RGB 视频预计进去的骨骼点数据
</b>

</div>

骨骼点数据个别有两种类型,2D 骨骼点数据或者 3D 骨骼点数据,2D 骨骼点数据多是从 RGB 视频中进行姿势预计失去,而 3D 骨骼点数据个别须要深度信息,在某些文献中[24],存在将依据 RGB 视频姿势预计失去的 2D 骨骼点姿势,通过深度网络推断出 3D 骨骼点姿势的工作,如 Fig 5.3 所示。

<div align=’center’>

<b>
    Fig 5.3 利用 RGB 模态信息进行 3D 关节点的姿势预计。</b>

</div>

对于骨骼点数据而言,个别能够示意为张量:

$$
\mathbf{S} \in \mathbb{R}^{\mathrm{nframes} \times \mathrm{njoints} \times \mathrm{ndimension}}
\tag{5.1}
$$

其中 nframes 示意帧数,njoints 示意关节点的数量,比方 25 个关节点一个人一帧,ndimension 是维度,比方 3D 骨骼点是 3,而 2D 骨骼点是 2。而这里的数据,个别都是骨骼点的空间坐标数据,比方 Fig 5.4 所示:

<div align=’center’>

<b>
    Fig 5.4 3D 骨骼点数据,个别用物理尺度作为单位,比方米。</b>

</div>

骨骼点数据的建模,特征提取和 RGB,光流等这类数据不同,骨骼点数据是属于 graph 图数据,属于典型的非欧几里德构造数据[25],而 RGB,光流图属于欧几里德构造数据。非欧几里德数据意味着在骨骼点上不能间接利用传统的 CNN,因为很直观的,每个节点四周的节点数都不统一,结构化的 CNN 基本无从下手。

依据笔者的钻研教训,对骨骼点数据进行深度网络建模,能够有以下三种次要思路:

  1. 利用 LSTM 时序网络对骨骼点进行建模,因为单帧的骨骼点数据能够拉平(flatten)成一个向量,通过最简略的全连贯层能够作为单帧提取器,而后用 LSTM 进行时序建模。
  2. 对骨骼点序列进行解决,将其拼成一个二维图像相似的数据结构后间接利用传统的 CNN 模型进行建模。在这类办法中,CNN 模型通常须要同时对工夫 - 空间信息进行建模。
  3. 把骨骼点序列看成时空图(spatia-temporal graph)数据,利用图神经网络,比方 GCN 图卷积网络进行建模[25,26,27]。

接下来笔者在各个大节将对这几点进行开展,劳动一下,咱们要开始了哦~

LSTM 时序组织模型

在本框架中,咱们须要对骨骼点序列进行两种最为次要的操作:

  1. 如何对单帧的骨骼点信息进行组织
  2. 如何组织时序信息

对单帧的骨骼点信息进行组织并不容易,因为单帧的骨骼点数据是一种 Graph 数据,或者也能够看成是一种 Tree 数据,须要指定特定的遍历策略将这种数据“拉平”成一维向量。单纯地依照关节点的程序从 1 到 25 的遍历一遍骨骼点显然不能无效组织空间信息。举个例子,某些动作如跑步,双腿的规律性静止通常也会随同着双臂的规律性摆动,这种身材部件与身材部件无关的关联,用这种简略的办法不能很好地进行建模。

在 P -LSTM[28]中,作者采纳 LSTM 作为根本的框架组织时序信息,同时,作者对 LSTM 的输出门,忘记门,和门控门进行了魔改。作者把身材划分为五大部件,如 Fig 5.5 所示。通过这种形式,对不同身材部件之间的空间语义关系进行了初步的建模。

<div align=’center’>

<b>
    Fig 5.5 在 P -LSTM 中,作者把人体部件分为五大部分,并且别离输出 P -LSTM 单元中。</b>

</div>

在 [29] 中,作者提出 ST-LSTM,利用 LSTM 进行 3D 骨骼点工夫序列的工夫 - 空间信息交融,并且开创性地采纳了人体骨骼点的树形索引进行骨骼点的检索,如 Fig 5.6 所示。3D 骨骼点数据不免存在一些因预计导致的噪声,因而并不是所有骨骼点都是可信的。在 [29] 中,不仅用 LSTM 对骨骼点数据进行时空上的信息组织,而且在传统的 LSTM 细胞中引入了相信门 (Trust Gate) 剖析每一个时空步中每个节点的牢靠水平。

<div align=’center’>

<b>
    Fig 5.6 对骨骼点数据的树形索引形式。</b>

</div>

<div align=’center’>

<b>
    Fig 5.7 在 ST-LSTM 中,在 Spatial 空间域和 Temporal 工夫域都有 LSTM 单元,对骨骼点序列的时空信息,包含带噪声的骨骼点进行了建模。</b>

</div>

总结来说,在这类型办法中对于骨骼点信息的空间信息组织是一件不容易的事件,单纯的分部件或者树形索引,在某些水平上也不能很好地遍历身材不同部件之间的关系,也没有显式地提供让后续网络学习到这种关系的通道。

二维图像化 CNN 建模

咱们之前剖析过骨骼点序列不能利用于 2D ConvNets 的起因。然而咱们能够思考把骨骼点序列转化为二维图像相似的数据结构,从而间接利用 2D 卷积网络。思考到骨骼点序列的通常输出张量尺寸为 $\mathbf{s} \in \mathbb{R}^{300,25,3}$,其中 300 是帧数,25 是节点数,3 是维度。咱们发现,如果把 300 看成是图像的 height,25 看成是图像的 width,3 看成是图像的通道数,如 Fig 5.8 所示,那么骨骼点序列就人造地变成了一种二维图像。

这种办法在 [30] 中失去了形容和试验,创始了一种利用二维图像化 CNN 建模的形式。在这类型的办法中,2D CNN 网络同时对空间 - 工夫信息进行了建模。不过和 LSTM 时序组织模型相似,其有一个很大的难点,就是咱们须要对单帧数据进行遍历,能力排列成二维图像的一列(也能够是一行),这种遍历规定通常须要指定,这里就波及到了人工设计排序的过程,不能很好地组织起身材部件之间的空间关联性。

<div align=’center’>

<b>
    Fig 5.8 Skel-CNN 对骨骼点序列进行二维图像化解决,将骨骼点序列转变为二维图像,从而后续能够采纳 2D CNN 模型进行特征提取。</b>

</div>

除此之外,还有和此无关的钻研办法。在 [31] 中,作者不是利用原始的空间坐标,而是找出人体某些绝对稳固的关节点(称之为根关节点),用其余关节点对其做欧式间隔后,同样依照时间轴方向拼接,造成多个以不同根关节点为基的二维特色图,此后用多任务卷积网络进行特征提取和分类,如 Fig 5.9 所示。这种办法利用不同骨骼点与根关节点(比方图中的 5,8,11,14 关节点)进行欧式间隔计算,失去了全身各个部件之间的彼此绝对间隔二维图,这种图显然是带有全身各个部件之间的关系信息的,在组织帧内的空间关系上做得更好,因而更加鲁棒。同时,作者还在模型中引入了多任务,使得模型的性能更加出众。

<div align=’center’>

<b>
    Fig 5.9 应用单帧内的骨骼点部件之间的绝对间隔作为信息源,造成了一系列的二维欧式间隔图像后进行卷积。</b>

</div>

这些谈到的办法都是对帧内骨骼点信息进行组织,还有一种办法思考组织帧间之间的 motion 流关系,这种组织办法对于拍摄角度和静止角度更为鲁棒。在工作 [32] 中,作者把骨骼点序列的关节点与关节点之间,在时序上的轨迹连贯可视化为二维图像,如 Fig 5.10 所示,因为这种可视化后果常常不够清晰,可能伴有较为重大的缺损,因而作者同时对其进行了图像增强后,用 2D 卷积网络进行特征提取。

<div align=’center’>

<b>
    Fig 5.10 对骨骼点序列的帧间信息进行 motion 流组织,并且将其可视化成二维图像后,对该二维图像进行加强,此后采纳 2D 卷积网络进行特征提取。</b>

</div>

<div align=’center’>

<b>
    Fig 5.11 对 motion 流的轨迹进行可视化,并且对可视化后的二维图像进行了加强解决
</b>

</div>

总的来说,这类型的办法中,采纳 CNN 同时对时空信息进来组织,成果有时候会比用 LSTM 进行组织更稳固,然而同样面对着如何设计单帧遍历节点规定的问题。

图神经网络建模

如 Fig 5.12 所示,骨骼点序列人造地是个时空 graph 图数据,能够思考用图神经网络(Graph Neural Network,GNN)进行解决。正如笔者在之前的博客上谈到的[25,26,27],已有多种对于图神经网络的钻研,其中以图卷积网络(Graph Convolutional Network,GCN)为代表,具体的对于 GCN 和信息传导的推导见笔者之前博客,在此不再赘述。

在工作 [33] 中,作者提出了 Spatial-Temporal GCN,STGCN,也就是时空图卷积网络。在这个工作中,作者对传统的卷积操作进行了延长扩大,如式子 (5.2) 所示,

$$
f_{out}(\mathbf{x}) = \sum_{h=1}^{K} \sum_{w=1}^{K} f_{in}(\mathbf{p}(\mathbf{x}, h,w) \cdot \mathbf{w}(h,w))
\tag{5.3}
$$

其中的 $K$ 为卷积核的大小。作者从新定义了畛域采样函数 $\mathbf{p}(\mathbf{x}, h, w)$,即是对于一个以后的像素或者图节点,怎么去对四周的节点或者像素进行采样,对于二维图像来说,只须要简略的找街坊就行了,而 graph 数据则不能这样进行了。作者依据从新定义的畛域采样函数,定义了对应的权值函数 $\mathbf{w}(h,w)$。当然,这里只是对于空间的图卷积,作者在工夫域也定义了类似的畛域采样和权值,因而能够延长到时空图卷积,STGCN。最终对每个 STGCN 单元进行重叠,如 Fig 5.13 所示,并且受到 ResNet 的启发,引入 short-cut 和 block 设计,达到了 SOTA 的成果。

<div align=’center’>

<b>
    Fig 5.12 骨骼点序列人造地是个时空 graph 图数据。</b>

</div>

<div align=’center’>

<b>
    Fig 5.13 ST-GCN 的解决 pipeline,其中 ST-GCN 就是次要的特征提取网络,输出的骨骼点序列能够是 3D 骨骼点序列,也能够是通过姿势预计失去的 2D 骨骼点序列。</b>

</div>

Fig 5.14 列出了以上探讨的诸多模型在 NTU RGBD 60 数据集上的体现,咱们发现 STGCN 的性能确实达到了 SOTA。

<div align=’center’>

<b>
    Fig 5.14 诸多基于骨骼点序列进行动作辨认的模型在 NTU RGBD 60 数据集上的体现。</b>

</div>

ST-GCN 是一个十分经典的网络,笔者十分喜爱这个网络,这个网络设计十分的直观,性能高效,占用内存少。间接采纳图卷积的形式对空间和工夫的语义信息进行组织,防止了人工去设计遍历规定,在数据量大的状况下性能通常都会更好。当初相当多对于骨骼点动作辨认的工作都是基于 STGCN 上进行的[34,35,36,37]。

多视角动作了解

所谓多视角动作了解,就是动作可能在多种不同的摄像头姿势下产生,咱们设计的模型必须能在多种不同不同的摄像头姿势下对动作进行辨认。这种需要面对着诸多实在场景,比方监控场景,摄像头姿势通常都千差万别,比方实在场景的动作辨认(包含在移动机器人上部署的摄像头),摄像头姿势通常都是不定的,甚至是静止的,如果算法对多视角或者挪动视角的摄像头拍摄的视频不够鲁棒,显然是不可能满足咱们的日常生产需要的。

多视角动作辨认的一个很要害的问题在于多视角数据集很短少,带有标注的,比方标注了相机姿势的数据集更是稀少。如此少多视角标注视频数据很难让模型具备跨视角的能力,这里指的跨视角指的是在某个或者某些视角的样本上进行模型训练,在未见过的视角样本上进行模型测试。

多视角动作辨认还有一个关键问题在于提取多视角之间的共有特色,这种在多视角样本上共享的特色通常是和动作类别严密相干的特色,具备较好的视角不变性(view-invariant)。

因而,在多视角动作了解问题上,依据笔者的钻研教训,大抵能够归为三种办法:

  1. 采纳一些伎俩裁减多视角样本数据。
  2. 提取多视角样本的公共特色。
  3. 提取视角不变特色——手工设计或者模型深度学习。

依据这个总结,接下来咱们探讨在 RGB 视频上进行多视角动作了解的一些办法。

在 RGB 视频上进行多视角动作辨认

文章 [38] 是思考在深度图序列上进行多视角样本裁减,因为深度图和 RGB 视频较为相像,咱们归到这里探讨。[38]的作者提出了一种很天然的生成多视角样本的办法是:对人体模型进行三维建模,而后设置多个虚构相机机位,纪录下这些样本,随后再进行后处理,如 Fig 6.1 所示能够设置任意多个虚拟机位,个别抉择 180 个笼罩全身即可。

<div align=’center’>

<b>
    Fig 6.1 虚拟机位生成虚构多视角样本。</b>

</div>

有很多 3D 建模软件能够对人体模型进行很好地建模,问题在于让这个模型依照须要的动作“流动”起来,以达到模仿实在人体流动的需要。咱们能够通过 MoCap[46]失去的骨骼点后果(是比拟精确的,通过多轴传感器后果失去的骨骼点序列,对遮挡鲁棒),让模型动起来,如 Fig 6.2 所示。同时,咱们在其外表“附上”一层膜,因而人体模型不同深度的点就有了深度信息,最初进行深度图生成即可。

<div align=’center’>

<b>
    Fig 6.2 通过 MoCap 的骨骼点信息,进行 3D 人体模型的虚构静止后进行多机位虚构多视角样本提取。</b>

</div>

在工作 [39] 中,作者同样相似的思路,采纳了 MoCap 的骨骼点序列对 3D 建模好的人体模型进行动作生成,不同的是,这次作者是把不同视角的序列信息提取时序间的轨迹,具体来说,就是对于一个多视角样本,对其雷同部件(比方手部,胳膊)进行时序上的跟踪,失去秘籍的轨迹图。如 Fig6.3 所示,最初用字典学习去学习不同视角样本的码表(用 K -means 进行学习)。

<div align=’center’>

<b>
    Fig 6.3 利用生成的多视角密集轨迹,进行字典学习,学习出多视角下的码表。</b>

</div>

在测试阶段,咱们须要利用这里学习到的码表,对输出的密集轨迹进行构建动作轨迹形容子,随后进行辨认,如 Fig 6.4 所示。

<div align=’center’>

<b>
    Fig 6.4 利用学习到的码表,在预测阶段进行动作类别预测。</b>

</div>

当然,方才的解释并不齐全,[39]的作者认为,不同视角之间存在一种所谓的榜样视角(canonical view)的关系,也就是说,所有视角样本,通过某种形式,都应该能转化成榜样样本,更进一步,不同视角样本之间都应该能通过榜样样本作为中继,进行互相转换。之前的工作 [47,48] 大多假如这种关系是线性的,如 Fig 6.5 (a)(b)所示,然而这个并不能精确形容视角样本之间的迁徙关系,因而在本工作中,作者认为这种关系应该是非线性的,如 Fig 6.5 (c)所示,不同样本之间共享着高层的语义空间。然而通过咱们之前探讨的码表的形式可不能形容这种非线性,因为码表的码元的组织是线性的操作,因而咱们须要引入一个网络进行这种非线性关系的学习,比方 [39] 中提出的 Robust Non-linear Knowledge Transfer Model , R-NKTM 模型,正如 Fig 6.3 和 Fig 6.4 所示。

<div align=’center’>

<b>
    Fig 6.5 作者假如不同视角样本之间的迁徙并不是线性的,如果假如存在一种所谓的榜样样本,那么通过高维的非线性映射才是正当的形式。</b>

</div>

有些办法尝试去提取视角不变(view-invariant)的特色,自相似性矩阵(Self-Similar Matrix,SSM)[40]是一种经典的实践上的角度不变性的特色,其做法很简略,就是在工夫上求帧 $i$ 与帧 $j$ 的欧式间隔 $d_{i,j}$ 并把它组成矩阵,如 Fig 6.6 所示。这类型的办法还有一些后续工作,比方 [41-42],如 Fig 6.7 所示。同时,咱们能够发现,在一些工作对人体的各个身材部件之间进行绝对间隔的计算,而后拼接成特色矩阵的办法,比方[31] 中,都体现了视角不变性的思维。

<div align=’center’>

<b>
    Fig 6.6 SSM 模型尝试结构视角不变性特色。</b>

</div>

<div align=’center’>

<b>
    Fig 6.7 其余尝试结构视角不变性特色的办法,受到了 SSM 的启发。</b>

</div>

确实,从实践上说,进行工夫帧的绝对间隔计算(或者身材部件之间的绝对间隔),这个绝对间隔计算应该是和视角无关的,因为你不论视角怎么扭转,这个绝对间隔也不会变动,因而是视角不变的。然而咱们留神到,正如文章 [2] 中所说到的,骨骼点信息多多少少会因为遮挡导致变形扭曲,如 Fig 6.8 所示,在大面积的遮挡状况下这种景象更为显著。在存在有这种噪声的骨骼点序列中,应用咱们方才提到的依据绝对间隔计算失去的视角不变性特色,却容易引入更多的噪声,所谓的实践上的视角不变性便在这里被突破了。

<div align=’center’>

<b>
    Fig 6.8 用 Kinect 对遮挡动作进行姿势预计,左手局部被遮挡,然而 Kinect 还是对时序上的上下文进行了预计,然而这种预计经常成果不佳,容易引入预计噪声。</b>

</div>

在 [45] 中,作者指出咱们能够把多视角样本特色合成为多视角之间共享的共享特色(share features)和各个视角独有的公有特色(private features),通过这两种类型的特色的线性组合,对样本特色进行重建,公式如 (6.1)。其余具体内容因为过于多数学的形容,限于篇幅,倡议读者有须要的间接翻阅[45] 原文。

$$
f = \sum_{i=1}^{N_v} \alpha_i f_i + f_{private}
\tag{6.1}
$$

<div align=’center’>

<b>
    Fig 6.9 提取共享特色和公有特色,通过线性组合失去样本特色。</b>

</div>

在骨骼点序列上进行多视角动作辨认

之前说到的都是在 RGB 上或者 Depth 数据上进行解决的办法,而在骨骼点序列上,也有很多对于多视角相干的算法。依据笔者的教训来说,骨骼点数据人造具备较好的角度不变性,如果模型设计切当,在没有显式地设计视角不变性特色的前提下,其跨视角辨认能力通常都不会很差(甚至会比拟现实)。然而骨骼点序列的问题在于噪声,骨骼点序列因为遮挡,会引入很多噪声,这点笔者始终在强调。笔者的一篇工作 [37] 也正是在尝试靠近这个噪声带来的问题。

不论怎么样说,还有不少办法在尝试对不同视角的骨骼点序列进行对齐(alignment)的,这里的对齐指的是使得不同视角的同一种动作类别的样本看起来视角差异性尽量小一些。最简略的办法如 P -LSTM[28]所示,间接将身材的节点的连线(比方髋部连线)进行二维立体的旋转对齐。这种办法蛮粗犷的,还有些办法在三维空间进行旋转,如 [32] 和 Fig 6.10 所示。

<div align=’center’>

<b>
    Fig 6.10 尝试在三维空间对骨骼点序列进行旋转对齐。</b>

</div>

不过笔者在这里想要介绍的是所谓的 View Adaptation 网络,这种网络受到了 Spatial Transformer Network, STN 的启发,引入了一种主动学习对齐骨骼点序列的子网络。如 Fig 6.10 所示,这个 View Adaptation Subnetwork 能够主动学习不同视角之间样本间的旋转矩阵 $\mathbf{R}_t$ 和偏移向量 $\mathbf{d}_t$,使得同一种动作类别,不同视角的样本看起来更加地靠近,留神到三维空间的旋转能够分解成 $x,y,z$ 轴的旋转的组合,那咱们有:

$$
\mathbf{R}_t = \mathbf{R}_{X}(\alpha) \mathbf{R}_{Y}(\beta) \mathbf{R}_{Z}(\gamma)
\tag{6.2}
$$

其中的 $\alpha,\beta,\gamma$ 是别离围绕坐标轴 $X,Y,Z$ 的旋转角度。

那么具体到其中的各个旋转轴矩阵,咱们有:

$$
\mathbf{R}_{X}(\alpha) = \left[\begin{matrix}1 & 0 & 0 \\0 & \cos(\alpha) & -\sin(\alpha) \\0 & \sin(\alpha) & \cos(\alpha)\end{matrix}\right]\tag{6.3}
$$

$$
\mathbf{R}_{Y}(\beta) = \left[\begin{matrix}\cos(\beta) & 0 & \sin(\beta) \\0 & 1 & 0 \\-\sin(\beta) & 0 & \cos(\beta)\end{matrix}\right]\tag{6.4}
$$

$$
\mathbf{R}_{Z}(\gamma) = \left[\begin{matrix}\cos(\gamma) & -\sin(\gamma) & 0 \\\sin(\gamma) & \cos(\gamma) & 0 \\0 & 0 & 1\end{matrix}\right]\tag{6.5}
$$

那么咱们通过对齐后的,新的骨骼点坐标是:

$$
\mathbf{v}^{\prime}_{t,j} = [x_{t,j}^{\prime}, y_{t,j}^{\prime}, z_{t,j}^{\prime}]^{\mathrm{T}} = \mathbf{R}_{t} (\mathbf{v}_{t}-\mathbf{d})\tag{6.6}
$$

其中的参数 $\mathbf{d}_t = [d_1,d_2,d_3]^{\mathrm{T}}$ 和 $\alpha,\beta,\gamma$ 等齐全由网络学习失去,其旋转和平移如 Fig 6.11 所示。

<div align=’center’>

<b>
    Fig 6.10 尝试在三维空间对骨骼点序列进行旋转对齐。</b>

</div>

<div align=’center’>

<b>
    Fig 6.11 骨骼点在三维空间的旋转和平移。</b>

</div>

View Adaptation 网络是能够随处安插的,有点像 BN 层和 Dropout 层,你能够在模型中随便安插这个子网络。最终后果证实了这个对齐网络的有效性,如 Fig 6.12 所示。

<div align=’center’>

<b>
    Fig 6.12 在 NTU RGBD 60 数据集上的后果证实了 View Adaptation 网络的有效性。</b>

</div>

在视频动作了解中利用自监督学习

家喻户晓,深度学习是数据驱动的(data-driven),十分须要有标注的良好数据去喂养模型。然而事实中咱们并没有那么多有标注的数据,标注数据是十分耗时耗力耗财的。而咱们在一开始就曾经说过,每天互联网上产生着那么多的无标签的视频数据,不加以使用过于惋惜,咱们须要思考如何让模型在无标签的视频上“吸取”常识和营养,在不进行人工标注的状况下,进步模型的性能。

自监督学习背景

自监督学习(self-supervised Learning)是无监督学习中的一个乏味的分支,在介绍自监督学习之前,笔者打算举个例子。如果咱们当初有一个 8 位灰度图像,其尺寸为 10*10,也就是灰度级为 256。那么显然的,如果对所有可能的像素值的状况进行遍历,咱们的图片像素空间十分大,为 $256^{100}$。这还只是在如此小的尺寸下的一个灰度图的像素空间。

然而,大多数状况下,很多像素组合是没有任何语义的,也就是说,你在事实中基本见不到这种像素组合,咱们把所有可能在事实中见到的像素组合在高维空间中示意为一个点,那么所有的点的组合形成了流形(manifold)。也就是说,咱们的所有可能的样本采样都来自于这个流形。

对这个流形的形态进行建模很重要,然而显然不可能齐全准确地形容这个流形,因为你须要简直有数的样本才足以形容。在强监督学习中,咱们当初有的只是这个流形上的一些有过标注的样本(流形上的某些点可能代表一个类别,某些点可能是另一个类别),然而咱们能够用无标签的样本去填补这个流形的缺口,尝试去尽可能地形容这个流形,这是无监督学习整体来说在做的事件。

然而咱们这个假如有个前提,每个像素之间的独立无关的,然而事实是像素与像素之间很可能存在有语义关系,咱们通常能够用一个像素去预计其四周的像素,个别变动都不会特地大,就阐明了这一点。因而咱们能够进一步放大无监督中须要的样本数,咱们因而有了自监督学习。

在自监督学习中,咱们让无标签的样本本人产生本人的标签,因而咱们就能够在无标签样本上进行强监督训练了。咱们须要定义出一个 pretext 工作,咱们在无标签的数据集上训练这个 pretext 工作,通常咱们并不很在意这个 pretext 模型的性能体现。在失去了模型参数之后,咱们以这个模型的参数作为初始化,再在有标签的数据集上进行训练失去最初的模型。就实质上而言,自监督学习对模型进行了正则,缩小了对标签样本的需要。

让无标签的样本本人产生本人的标签显得很神奇,但其实并不难,比方一张图片,咱们能够把其中某一块扣掉,而后让模型依据没有扣掉的局部去填充扣掉局部的图形,这种叫 inpainting,如 Fig 7.1 所示。

<div align=’center’>

<b>
    Fig 7.1 利用 inpainting 进行图片的自监督学习。</b>

</div>

对于文本序列样本来说,更为间接的 self-supervision 办法就是 Word2Vec 语义嵌入了,咱们能够用之前的词语去预测后续的词语,也能够用后续的词语回测之前的词语,也能够给词语挖个空,依据四周的词语去预测核心词语等等,如 Fig 7.2 所示。

<div align=’center’>

<b>
    Fig 7.2 对于序列的自监督学习能够参考的办法,文本序列相似。</b>

</div>

当然基于图像的 pretext 工作还有很多,比方对输出图像进行指定角度的旋转 [54],训练模型去判断这个图像旋转角度是多少,因为旋转角度是本人指定的无限集中的一个,因而是有标签的,如 Fig 7.3 所示。也有一种是十分闻名的办法,通过拼拼图(jigsaw puzzle)[55] 的形式进行 pretext 工作的定义。如 Fig 7.4 所示,咱们在图像上指定了九个拼图块,每一个块都有其固定的编号从 1 -9。咱们随便进行打乱后,冀望网络能够对其从新排序,恢复正常的程序。

<div align=’center’>

<b>
    Fig 7.3 在这种自监督策略中,模型须要判断图像的旋转角度是多少。</b>

</div>

<div align=’center’>

<b>
    Fig 7.4 对图片块进行拼拼图(jigsaw puzzle)的形式进行自监督学习。</b>

</div>

这些 pretext 工作,都是让无标签的数据本人产生了标签,让模型学习到了样本自身的语义特色,尽管这个 pretext 工作和咱们的指标工作(比方动作辨认,物体检测,定位)等天壤之别,然而它们的数据流形是一样的,共享着语义特色空间,因而通过自监督学习的形式,能够利用海量的无标签的数据学习出更为理想的表征(representation)。

在文章 [51] 中,研究者针对多种不同的视觉工作,对自监督的成果进行了宽泛的基线测试。研究者次要关注两个问题:自监督工作的辅助数据集的大小尺度和 pretext 工作的工作难度对于整个预训练过程的影响。作者发现自监督的无标签数据集数据量越大,模型的成果越好,如 Fig 7.5 所示。同时作者发现,对于设定 pretext 工作的复杂度,对于整体模型的性能也是有很大影响的,如 Fig 7.6 所示。

<div align=’center’>

<b>
    Fig 7.5 自监督的数据集越大,成果越好。</b>

</div>

<div align=’center’>

<b>
    Fig 7.6 管制自监督 pretext 工作的问题复杂度对于性能有很大影响。</b>

</div>

该文章还进行了很多其余试验,在多种视觉工作中提供了自监督学习的松软的(solid)基线规范,值得各位读者认真研读。

基于视频的自监督学习

咱们之前谈到的是在图像数据上进行的自监督工作的例子。自监督学习的要点常常就体现在怎么依据具体的上游工作和数据模态去设计适合的自监督 pretext 工作,在视频数据上,其 pretext 工作和图像数据有所不同。视频蕴含着一系列在时间轴上具备语义关系的图像帧,工夫上邻近的帧比其余更远的帧可能具备着更强的语义关联关系。这种特定的视频序列排序形容了物理世界逻辑的因果逻辑和推断:比方物体的静止应该是平滑的,重力方向总是朝下的(体现在物体着落)。对于视频数据来说,一种通用的模式是:在海量的无标签数据上进行一种或者多种 pretext 工作的训练,而后提取出其特征提取层,用有标签的数据进行 fine-tune 上游工作,例如动作分类,宰割,定位或者物体跟踪等。

对于设计基于视频的自监督 pretext 工作,有着以下几种逻辑。

基于帧序列程序

视频帧天然地是依照工夫顺序排列的。咱们的模型理当能学习到视频帧的正确程序,因此研究者们提出了若干基于帧序列程序的办法。其中一类办法被称之为验证帧程序(validate frame order)[53],这里的 pretext 工作在于判断给定的一小段视频帧是否是依照正确的工夫顺序排列的(所谓的无效工夫程序,valid temporal order)。模型须要具备可能从视频帧中的轻微静止线索中跟踪和推理的能力,从而能力实现这个工作。

首先,训练帧序列从所谓的高静止窗区域(high-motion windows)提取,每次采样 5 帧,记为 $(f_a, f_b, f_c, f_d, f_e)$,并且其工夫戳程序为 $a < b < c < d < e$。在这 5 帧中,咱们从中构建一个正样本三元组(也就是工夫程序是失常的),记为 $(f_b, f_c, f_d)$,构建两个负样本三元组(工夫程序乱序),记为 $(f_b, f_a,f_d)$ 和 $(f_b, f_e,f_d)$。超参数 $\tau_{\max} = |b-d|$ 决定了正样本训练实例的难度(也就是越大,难度越强),超参数 $\tau_{\min} = \min(|a-b|, |d-e|)$ 管制了负样本的难度(也就是越小,难度越强)。研究者曾经证实了在动作辨认类型的上游工作中,基于验证帧序列程序的办法能够进步性能。整体框图如 Fig 7.7 所示。

<div align=’center’>

<b>
    Fig 7.7 验证帧程序自监督办法的框图。</b>

</div>

在 O3N(Odd-One-Out Network)[56]中,作者同样定义了一种新的基于验证帧序列程序的 pretext 工作。这个工作尝试从一堆小视频片段中挑选出乱序的一个视频片段,而其余是失常程序的。假如给定 $N+1$ 个输出视频片段,其中的一个被人为地乱序了,其余的 $N$ 个片段是失常程序的,咱们的模型须要从中确定乱序的片段的地位。

基于跟踪

视频序列中物体的挪动能够被视频的时序关系所追踪。在时间轴上相邻的帧中呈现的物体,通常差异不会特地大,通常只会有因为细小静止或者摄像头抖动造成的烦扰。因而,任何对于雷同物体在相邻的视频帧上学习到的表征,在特色空间上应该是类似的。基于这个启发,[57]提出了通过跟踪视频中静止物体,达到自监督目标的办法。

在具备静止信息的小工夫视频窗口(比方 30 帧),咱们从中依照工夫程序截取 patch 块,其中第一个块 $\mathbf{x}$ 和最初一个块 $\mathbf{x}^+$ 被抉择作为训练样本点。咱们能够预想到,因为是在小工夫窗产生的动作,因而这两个工夫窗的特色应该是靠近的。然而如果咱们简略最小化这两个 patch 之间的特征向量,模型最终会陷入平庸解——也就是所有的特征向量都会趋同,没有任何区别,这样并没有带来任何信息量。为了靠近这个问题,咱们引入第三个 patch,咱们同样通过乱序的形式结构了负样本 $\mathbf{x}^-$。因而,咱们最终冀望有:

$$
D(\mathbf{x}, \mathbf{x}^+) > D(\mathbf{x}, \mathbf{x}^-)\tag{7.1}
$$

其中的 $D(\cdot)$ 是余弦间隔,为

$$
D(\mathbf{x}_1, \mathbf{x}_2) = 1 – \dfrac{f(\mathbf{x}_1)f(\mathbf{x}_2) }{||f(\mathbf{x}_1)|| \cdot ||f(\mathbf{x}_2)||}\tag{7.2}
$$

损失函数为:

$$
\mathcal{L}(\mathbf{x}, \mathbf{x}^+, \mathbf{x}^-) = \max(0, D(\mathbf{x}, \mathbf{x}^+)-D(\mathbf{x}, \mathbf{x}^-)+M) + R\tag{7.3}
$$

其实就是triplet loss,其中的 $R$ 是正则项,具体见笔者之前博文[58]。整个网络框图见 Fig 7.8。

<div align=’center’>

<b>
    Fig 7.8 对短时间窗口的物体进行跟踪自监督办法。</b>

</div>

基于视频着色

在 [59] 中,研究者提出将视频着色(video-colorization)作为自监督办法伎俩,这样产生的丰盛表征能够在不通过额定 fine-tune 的状况下,在视频宰割中应用。和在图像中进行着色不同,在这里的着色是,将黑白的指标视频的像素拷贝到对应的灰度化的视频上(灰度化能够由 RGB 视频转化而来),而并不是间接生成的。为了可能做到这种拷贝,模型理当可能对不同帧的相关联的像素进行跟踪。

<div align=’center’>

<b>
    Fig 7.9 基于视频着色的自监督办法。</b>

</div>

这个想法简略而无效,咱们用 $c_i$ 示意在参考的黑白视频的第 $i$ 个像素,用 $c_j$ 示意灰度化的指标视频的第 $j$ 个像素。那么对指标视频的第 $j$ 个像素的预测 $\hat{c}_j$ 是一个对参考视频的所有像素的加权和:

$$
\hat{x}_j = \sum_{i} A_{ij}C_i \\A_{ij} = \dfrac{\exp(f_i f_j)}{\sum_{i^{\prime}}\exp(f_{i^{\prime}}f_j)}\tag{7.4}
$$

其中的 $f$ 是学习到的对应像素的嵌入特色。$i^{\prime}$ 示意了在参考视频中的像素。这种加权实现了注意力机制,相似于 matching network[60]和 pointer network[61]。

总结

基于视频的自监督办法还有很多,有波及到视频拼图复原的,光流工作嵌入的等等,不管怎么,这些 pretext 工作都是尝试在无标签数据中学习到视频的 motion 和 appearance 信息,作为良好的正则引入模型,缩小模型对有标签样本的需要,进步了性能。

视频动作剖析为什么能够视为视频了解的外围

咱们在上文中提到了十分多的视频动作辨认的办法,波及到了各种视频模态,为什么咱们着重于探讨视频动作了解呢?明明视频了解工作有着那么多类型。无论具体的视频了解工作是什么,笔者认为视频了解的外围还是在于如何组织视频的 motion 流和 appearance 流语义信息,而动作辨认工作是很好地评估一个模型是否对 motion 和 appearance 信息进行了无效组织的规范(而且对视频进行动作标签标注也比较简单),如果一个模型可能对视频动作辨认工作体现良好,那么其特征提取网络能够作为不错的视频表征提取工具,给其余上游的工作提供良好的根底。

说在最初

这一路过去道阻且长,咱们说了很多算法,对整个视频动作了解的倒退做了一个简略的梳理,然而限于篇幅,意犹未尽,还有很多最新的论文内容在这里没有失去总结,咱们在当前的拾遗篇将持续咱们的视频剖析的旅途。路漫漫其修远兮,吾将上下而求索。

Reference

[1]. http://www.cac.gov.cn/wxb_pdf…

[2]. https://blog.csdn.net/LoseInV…

[3]. https://research.google.com/y…

[4]. Wang H, Kläser A, Schmid C, et al. Dense trajectories and motion boundary descriptors for action recognition[J]. International journal of computer vision, 2013, 103(1): 60-79.

[5]. https://hal.inria.fr/hal-0083…

[6]. Karpathy A, Toderici G, Shetty S, et al. Large-scale video classification with convolutional neural networks[C]//Proceedings of the IEEE conference on Computer Vision and Pattern Recognition. 2014: 1725-1732.

[7]. Tran D, Wang H, Torresani L, et al. A closer look at spatiotemporal convolutions for action recognition[C]//Proceedings of the IEEE conference on Computer Vision and Pattern Recognition. 2018: 6450-6459.

[8]. Yue-Hei Ng J, Hausknecht M, Vijayanarasimhan S, et al. Beyond short snippets: Deep networks for video classification[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 4694-4702.

[9]. Donahue J, Anne Hendricks L, Guadarrama S, et al. Long-term recurrent convolutional networks for visual recognition and description[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 2625-2634.

[10]. Simonyan K, Zisserman A. Two-stream convolutional networks for action recognition in videos[C]//Advances in neural information processing systems. 2014: 568-576.

[11]. Ji S, Xu W, Yang M, et al. 3D convolutional neural networks for human action recognition[J]. IEEE transactions on pattern analysis and machine intelligence, 2012, 35(1): 221-231.

[12]. Tran D, Bourdev L, Fergus R, et al. Learning spatiotemporal features with 3d convolutional networks[C]//Proceedings of the IEEE international conference on computer vision. 2015: 4489-4497.

[13]. Carreira J, Zisserman A. Quo vadis, action recognition? a new model and the kinetics dataset[C]//proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 6299-6308.(I3D)

[14]. Sun L, Jia K, Yeung D Y, et al. Human action recognition using factorized spatio-temporal convolutional networks[C]//Proceedings of the IEEE international conference on computer vision. 2015: 4597-4605.

[15]. Qiu Z, Yao T, Mei T. Learning spatio-temporal representation with pseudo-3d residual networks[C]//proceedings of the IEEE International Conference on Computer Vision. 2017: 5533-5541.

[16]. Feichtenhofer C, Pinz A, Zisserman A. Convolutional two-stream network fusion for video action recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 1933-1941.(TwoStreamFused)

[17]. Zhu Y, Lan Z, Newsam S, et al. Hidden two-stream convolutional networks for action recognition[C]//Asian Conference on Computer Vision. Springer, Cham, 2018: 363-378. (HiddenTwoStream)

[18]. Wang L, Xiong Y, Wang Z, et al. Temporal segment networks: Towards good practices for deep action recognition[C]//European conference on computer vision. Springer, Cham, 2016: 20-36. (TSN)

[19]. Girdhar R, Ramanan D, Gupta A, et al. Actionvlad: Learning spatio-temporal aggregation for action classification[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 971-980. (ActionVLAD)

[20]. Diba A, Fayyaz M, Sharma V, et al. Temporal 3d convnets: New architecture and transfer learning for video classification[J]. arXiv preprint arXiv:1711.08200, 2017. (T3D)

[21]. https://medium.com/@lisajamho…

[22]. https://github.com/CMU-Percep…

[23]. Baradel F, Wolf C, Mille J. Human action recognition: Pose-based attention draws focus to hands[C]//Proceedings of the IEEE International Conference on Computer Vision Workshops. 2017: 604-613.

[24]. Pavllo D, Feichtenhofer C, Grangier D, et al. 3D human pose estimation in video with temporal convolutions and semi-supervised training[J]. arXiv preprint arXiv:1811.11742, 2018.

[25]. https://blog.csdn.net/LoseInV…

[26]. https://blog.csdn.net/LoseInV…

[27]. https://blog.csdn.net/LoseInV…

[28]. A. Shahroudy, J. Liu, T. T. Ng, et al. Ntu rgb+d: A large scale dataset for 3d human activity analysis[C]. IEEE Conference on Computer Vision and Pattern Recognition, 2016, 1010-1019 (P-LSTM)

[29]. Liu J, Shahroudy A, Xu D, et al. Spatio-temporal lstm with trust gates for 3d human action recognition[C]//European Conference on Computer Vision. Springer, Cham, 2016: 816-833. (ST-LSTM)

[30]. Y. Du, Y. Fu, L. Wang. Skeleton based action recognition with convolutional neural network[C]. Pattern Recognition, 2016, 579-583 (Skel-CNN)

[31]. Ke Q, Bennamoun M, An S, et al. A new representation of skeleton sequences for 3d action recognition[C]//Computer Vision and Pattern Recognition (CVPR), 2017 IEEE Conference on. IEEE, 2017: 4570-4579.

[32]. Liu M, Liu H, Chen C. Enhanced skeleton visualization for view invariant human action recognition[J]. Pattern Recognition, 2017, 68: 346-362.

[33]. S. Yan, Y. Xiong, D. Lin. Spatial temporal graph convolutional networks for skeleton-based action recognition[C]. The Association for the Advance of Artificial Intelligence, AAAI, 2018, 5344-5352 (ST-GCN)

[34]. Yang D, Li M M, Fu H, et al. Centrality Graph Convolutional Networks for Skeleton-based Action Recognition[J]. arXiv preprint arXiv:2003.03007, 2020.

[35]. Gao J, He T, Zhou X, et al. Focusing and Diffusion: Bidirectional Attentive Graph Convolutional Networks for Skeleton-based Action Recognition[J]. arXiv preprint arXiv:1912.11521, 2019.

[36]. Li M, Chen S, Chen X, et al. Symbiotic Graph Neural Networks for 3D Skeleton-based Human Action Recognition and Motion Prediction[J]. arXiv preprint arXiv:1910.02212, 2019.

[37]. Ji Y, Xu F, Yang Y, et al. Attention Transfer (ANT) Network for View-invariant Action Recognition[C]//Proceedings of the 27th ACM International Conference on Multimedia. 2019: 574-582.

[38]. Rahmani H, Mian A. 3D action recognition from novel viewpoints[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 1506-1515.

[39]. Rahmani H, Mian A, Shah M. Learning a deep model for human action recognition from novel viewpoints[J]. IEEE transactions on pattern analysis and machine intelligence, 2018, 40(3): 667-681.

[40]. Junejo I N, Dexter E, Laptev I, et al. Cross-view action recognition from temporal self-similarities[C]//European Conference on Computer Vision. Springer, Berlin, Heidelberg, 2008: 293-306.

[41]. Kacem A, Daoudi M, Amor B B, et al. A Novel Geometric Framework on Gram Matrix Trajectories for Human Behavior Understanding[J]. IEEE transactions on pattern analysis and machine intelligence, 2018.

[42]. Hernandez Ruiz A, Porzi L, Rota Bulò S, et al. 3D CNNs on distance matrices for human action recognition[C]//Proceedings of the 2017 ACM on Multimedia Conference. ACM, 2017: 1087-1095

[43]. Jaderberg M, Simonyan K, Zisserman A. Spatial transformer networks[C]//Advances in neural information processing systems. 2015: 2017-2025.

[44]. Zhang P, Lan C, Xing J, et al. View adaptive recurrent neural networks for high performance human action recognition from skeleton data[J]. ICCV, no. Mar, 2017.

[45]. Kong Y, Ding Z, Li J, et al. Deeply learned view-invariant features for cross-view action recognition[J]. IEEE Transactions on Image Processing, 2017, 26(6): 3028-3037.

[46]. Rogez G, Schmid C. Mocap-guided data augmentation for 3d pose estimation in the wild[C]//Advances in Neural Information Processing Systems. 2016: 3108-3116.

[47]. A. Gupta, J. Martinez, J. J. Little, and R. J. Woodham,“3D pose from motion for cross-view action recognition via non-linear circulant temporal encoding,”in Proc. IEEE Conf. Comput. Vis. Pattern Recognit., 2014, pp. 2601–2608.

[48]. A. Gupta, A. Shafaei, J. J. Little, and R. J. Woodham,“Unlabelled 3D motion examples improve cross-view action recognition,”in Proc. British Mach. Vis. Conf., 2014

[49]. Jaderberg M, Simonyan K, Zisserman A. Spatial transformer networks[C]//Advances in neural information processing systems. 2015: 2017-2025.

[50]. https://lilianweng.github.io/…

[51]. Goyal P, Mahajan D, Gupta A, et al. Scaling and benchmarking self-supervised visual representation learning[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 6391-6400.

[52]. Wang J, Jiao J, Bao L, et al. Self-supervised spatio-temporal representation learning for videos by predicting motion and appearance statistics[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 4006-4015.

[53]. Misra I, Zitnick C L, Hebert M. Shuffle and learn: unsupervised learning using temporal order verification[C]//European Conference on Computer Vision. Springer, Cham, 2016: 527-544.

[54]. Gidaris S, Singh P, Komodakis N. Unsupervised representation learning by predicting image rotations[J]. arXiv preprint arXiv:1803.07728, 2018.

[55]. Noroozi M, Favaro P. Unsupervised learning of visual representations by solving jigsaw puzzles[C]//European Conference on Computer Vision. Springer, Cham, 2016: 69-84.

[56]. Fernando B, Bilen H, Gavves E, et al. Self-supervised video representation learning with odd-one-out networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 3636-3645.

[57]. Wang X, Gupta A. Unsupervised learning of visual representations using videos[C]//Proceedings of the IEEE International Conference on Computer Vision. 2015: 2794-2802.

[58]. https://blog.csdn.net/LoseInV…

[59]. Vondrick C, Shrivastava A, Fathi A, et al. Tracking emerges by colorizing videos[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 391-408.

[60]. Vinyals O, Blundell C, Lillicrap T, et al. Matching networks for one shot learning[C]//Advances in neural information processing systems. 2016: 3630-3638.

[61]. Vinyals O, Fortunato M, Jaitly N. Pointer networks[C]//Advances in neural information processing systems. 2015: 2692-2700.

退出移动版