动作识别的表示流
首先是背景介绍
在动作识别领域,CNN的使用成为了标准方法,因为它们可以学习到更多的光学信息。双流网络把RGB帧和光流两者都作为输入,取得了SOTA成果并非常流行。3D 空间-时间CNN模型,比如使用了XYT卷积的I3D,也发现这种RGB+光流的双流设计能提升它的精度。总的来说,表观信息(即RGB信息)和显式运动流(即光流)都能使动作识别受益。
表达了光流计算的重要性。
但是,光流计算十分昂贵。每一帧画面都经常需要上百次的优化迭代,并且导致需要学习两个分离的CNN流(比如RGB流和光流)。这需要巨大的计算代价,以及需要学习的模型参数数量的暴增。更进一步,这意味着模型在推理时要为每一帧计算计算光流并且运行两个平行的CNN,限制了实时运用。
但是光流计算的缺陷也很明显:计算太昂贵(时间上和空间上)
已经有一些不用光流作为输入捕捉运动信息的学习表征的工作,比如运动特征网络和ActionFlowNet。不过,尽管它们在模型参数数量和计算速度上有优势,但是它们也有在诸如Kinetics和HMDB的公开数据集上表现不如双流模型的缺点。(基于此)我们假设光流法中使用的迭代优化能产生其他模型捕捉不到的重要特征。
尽管有些现有方法可以代替光流法,但是它们性能不足,因此我们还是应该认为光流法有它的可取之处。
在这篇文章中,我们提出了一种受到光流的算法的启发而来的CNN层,但它不需要计算光流,它可以学习动作识别中的运动表征。我们的“表征流层”是一种被设计来捕捉模型中任何表征通道中的“流”的完全可微的层。它的迭代优化流的参数是和模型中其它参数一起被学习,以最大化动作识别的性能。这个方法也不需要使用和训练多个模型流,减少了模型参数数量。进一步的,我们引入了通过叠堆多个表征流层学习“流到流”表征的概念。我们对在何处计算光流和各种超参数,学习参数以及融合技术进行了广泛的动作分类实验评估。
文章提出了用CNN网络来学习提取运动流信息,以达到类似光流的效果。
表示流层算法
中间的相关方法介绍略过,直接看文章核心部分:表示流层
首先表示流层是一个用于扩展上述通用算法的完全可微的、可学习的卷积层结构。主要(与光流法)的不同在于,我们可以让表示流层从任何CNN特征图中捕捉流,我们学习它的包括θ,λ和τ以及散度权重等参数。我们也做了一些关键改变以减少计算时间:(1)我们只使用单一尺度。(2)我们不做任何弯曲。(3)我们在空间尺度上更小的CNN张量上计算流。多尺度和弯曲在计算上都很昂贵,都需要多次迭代。通过学习流参数,我们可以不需要额外的步骤。我们的方法是应用在低分辨率的CNN特征图上而不是RGB输入,并且用端到端的风格进行训练。这不仅提升了速度,还让模型可以为优化动作识别学习动作表征。
我们注意到明亮度连续假定可以相似地作用在CNN特征图上。我们捕捉特征图上值的连续性而不是捕捉(输入的RGB图)的像素的明亮度。这个同样的假定成立是因为CNN是被设计为空间不变的。也就是说,在相同对象移动时CNN会产生大致相同的特征值。
已知输入F1和F2,顺序CNN特征图(或输入图像)中的单个通道,我们使用Sobel滤波器对输入特征图进行卷积计算特征图梯度:
我们初始设u=0,p=0, 每个都有与输入匹配的宽度和高度。然后我们计算ρ_c=F_2-F_1。接着,按照算法1,我们按照修正的迭代次数反复的执行等式2-5中的操作,来实现迭代优化。为了计算散度,我们用零填充p的第一列或第一行,然后把它和权重wx , wy 做卷积,来计算等式6。
初始化:w_x=[-1,1] w_y=[■([email protected])]。注意这些参数也都是可微且可以通过反向传播来学习的。我们计算∇u为:
用CNN的表示流
算法1和插图2描述了表示流层的流程。我们的具有多次迭代的流层也可以解释为具有一系列共享参数的卷积层(即,图2中的每个蓝色框),而每个层的行为取决于其上一层。 这种公式化的结果是,该层变得完全可微,并且允许学习所有参数,包括(τ,λ,θ)和散度权重(wx,wy)。 这使我们学习到的表示流层可以针对其任务(即动作识别)进行优化。
计算流到流
标准的光流算法可计算两个连续图像的流量。 光流图像包含有关运动方向和幅度的信息。 将流算法直接应用于两个流图像意味着我们正在跟踪在两个连续帧中显示相似运动的像素/位置。 实际上,由于不一致的光流结果和非刚性运动,通常会导致性能变差。另一方面,我们从数据中“学习了”表示流层,并通过在流层之间具有多个规则卷积层来抑制这种不一致性和更好的抽象/表示运动。 图6说明了这种设计,我们在实验部分确认了它的好处。 通过堆叠多个表示流层,我们的模型能够捕获更长的时间间隔并考虑运动一致性的位置。
CNN特征图可能具有数百或数千个通道,而我们的表示流层会计算每个通道的流,这可能会花费大量时间和内存。为了解决这个问题,我们应用了一个卷积层,以在流层之前将通道的数量从C减少到C0(请注意,C0仍然比传统的光流算法要多得多,传统的光流算法仅应用于单通道灰度图像)。为了数值稳定,我们将此特征图标准化为[0,255],匹配标准图像值。我们发现CNN特征值平均而言非常小(<0.5),TVL-1算法的默认超参数是为[0,255],因此我们发现此标准化步骤很重要。使用归一化的功能,我们计算流量并堆叠x和y流,从而产生2C’通道。最后,我们应用另一个卷积层将2C’个通道转换为C个通道。这将传递到其余的CNN层进行预测。我们对来自许多帧的预测求平均以对每个视频进行分类,如图3所示。
未完待续
课程链接:https://aistudio.baidu.com/aistudio/education/group/info/1340