双流法 (Two-Stream) 以及 C3D卷积

简介

双流法 以及 C3D 算是行为识别中比较经典也是比较基本的两种方法,一下就对这两种方法进行一个简单的记录。
简单来说,其实双流法与C3D卷积网络所要处理的问题都是在一段视频中的类别信息(这里的信息根据数据集暂时都是为单一的信息),通过找到这个类别信息来表明这一段视频的分类。

双流法 (Two-Stream)

双流法,顾名思义就好像是两条小溪流各自流动最后汇聚到了一块;其中一条小溪流的名称为“RGB”图信息,可以是3通道的信息,也可以是 RGB-D 的灰度图信息; 而另一条小溪流的名称是“光流”图的信息,一般的光流图为2通道的信息,分别为在X轴上的信息变化与Y轴上的信息变化。【光流是通过对两张图进行梯度计算得到,抽象层面可以理解成是其关键点的像素点信息移动的信息】

如图所示,其实做法非常的简单,相当于训练两个CNN的分类器。一个是专门对于 RGB 图的, 一个专门对于光流图的, 然后将两者的结果进行一个 fushion 的过程。RGB图的选择,是对于所给的一段视频随机挑选出视频中的任意一帧;而光流图是选择视频中的任意一帧的时间然后及其后面的N帧叠合成一个光流栈进入训练。【这种光流的训练方式是论文作者认为,这样子的光流叠加可以获得它的运动信息流,但是实际上光流图并不是以motion的信息来得到结果,有兴趣可以参看(参考资料2)的内容】

P.S: 因为这个双流法是训练了两个网络,在最后 softmax 前进行了fushion,显示效果不错。这是一篇14年的开篇之作,在16年时候,有人对fushion的位置进行了研究。(有兴趣可以去阅读论文:https://arxiv.org/abs/1604.06573)

TSN

这里顺便提一下 TSN ,一个根据 two-stream 改进的网络框架。这一个框架的改进初衷是因为最原始版本的two-stream对长视频的内容分类效果并不好。这里可以简单的举个例子想象一下,比如各个学校都是有运动会的,现在我们来到跳远场地拍了一段一位选手的跳远过程视频。然后我们将这段视频丢给原先的 Two-stream 框架进行测试,结果得到了一个跑步的结果。这是为什么呢?就是因为我们抽取机制的方式,我们随机抽取与训练的方式,不能覆盖的这段视频的过程。因为跳远是一个助跑与跳的过程,他有比较强烈的时间序列性质。而TSN改进的方面非常的简单,它只是将整段视频切割成了3段(可以是3段),然后对每段进行 two-steam的训练,最后再进行叠加。如下图所示:

C3D 卷积网络

C3D 网络其实也非常简单,其实就是在2D卷积的过程中加上了时间维度的信息进行时间维度上的卷积。一个2D的卷积对于一个3维的【这里说3维是 一般我们的图像是 C * W * H ,这里先解释成三维来进行说明】,最后得到的是一个二维的feature map,假设当我们有 K 个卷积核时,进行面的堆叠,最后就形成一个三维结构 K * W * H (这里默认卷积不降维)。同理, C3D相当于是设计了一个3D的卷积对一个4维【抽象来看也可以是一个3维结构 (C * L)* W * H 】的结构进行卷积最后得到一个3维的结构。然后假设当我们有K个卷积核时,其实也可以算是3维deep时的叠加,也可以看做是堆叠成四维向量。【这里你可以想象成,先进行了一步 2D 卷积得到 feature map 后,对这些 feature map 再在空间上进行卷积】

下图,我们可以有一个直观理解2D卷积和3D卷积的差别。【摘自论文】

我们可以根据这个箭头的顺序信息来理解卷积的过程【这里最好将图片先看做 RGB-D 来理解,比较容易,因为这种方式它的通道数是 1 】,先进行一个平面的卷积来得到这张图的 feature map 之后在其时间序列上再进行卷积。

得到 feature map 后的图形卷积过程,可以类似如下图所示:

笔者个人认为,C3D的卷积过程其实可以看做时序序列的附近信息逐步叠合的过程。可以用感受野来去想象,他有点类似从散到点的过程(如下图的类似过程)。笔者个人认为可能在这样的一个过程中,对于动作的序列信息比如最开始一张图片对于后续的动作影响比重比例稍有欠妥,可能是可以提升的地方。【这里也就是个人的推测而已,可以当做笑话】

【参考资料】

  1. https://www.jianshu.com/p/0b4964261673
  2. https://blog.csdn.net/elaine_bao/article/details/80891173【光流在视频识别中的作用】
  3. https://zhuanlan.zhihu.com/p/34929782 【two-stream】

你可能感兴趣的:(双流法 (Two-Stream) 以及 C3D卷积)