Dense trajectories and motion boundary descriptors for action recognition 密集轨迹:DT算法

论文:Dense trajectories and motion boundary descriptors for action recognition
2013年发表在IJCV上的一篇文章,被引1871次,介绍了DT(密集轨迹)算法。
论文:Action Recognition with Improved Trajectories
iDT_code : http://lear.inrialpes.fr/people/wang/improved_trajectories
2013年发布在ICCV上的一篇文章,被引3542次,介绍了改进的iDT(改进密集轨迹)算法。
这两篇都是H. Wang的文章,前者要更早一些,介绍了DT(Dense Trajectories)算法。后者则在前者的基础上进行了改进(improved),主要是引入了对背景光流的消除方法,使得特征更集中于对人的运动的描述。

1 密集轨迹算法(DT算法)

1.1算法基本框架

Dense trajectories and motion boundary descriptors for action recognition 密集轨迹:DT算法_第1张图片
如图所示即为算法的基本框架,包括密集采样特征点,特征点轨迹跟踪和基于轨迹的特征提取几个部分。后续的特征编码和分类过程则没有在图中画出。下面分别介绍一下这几个部分:

  • 密集采样特征点

DT方法通过网格划分的方式在图片的多个尺度上分别密集采样特征点。在多个空间尺度上采样能保证采样的特征点覆盖了所有空间位置和尺度,通常8个空间尺度已经非常足够了,若图像很大,可以适当增加。后续的特征提取也是在各个尺度上分别进行的。特征点采样的间隔(即网格的大小)W根据经验通常取W=5(其实W=5是可以通用的一个比较好的值)。

由于下一步的目标是在时间序列上跟踪这些特征点,但在没有任何结构的均匀区域(比如一块白色墙壁中间的点,或者一件黑色大衣中的点)中跟踪特征点是无法实现的。因此在进行特征点跟踪前要先去除一些这样的特征点。

此处的方法是计算每个像素点自相关矩阵的特征值,并设置阈值去除低于阈值的特征点。阈值由下式决定,式中0.001是经验值,(λ1i,λ2i)是图像I中像素点
i 的特征值:

在这里插入图片描述

应用上式,下图即为密集采样的一个示例效果图片,可以看出,同质区域的大部分采样点已被删除。
Dense trajectories and motion boundary descriptors for action recognition 密集轨迹:DT算法_第2张图片

  • 特征点轨迹跟踪

得到了密集采样后的特征点,现在我们要对这些点进行跟踪得到轨迹,对轨迹的追踪是通过光流。设上一步中密集采样到的某个特征点的坐标为Pt=(xt,yt),则我们用下式来计算该特征点在下一帧图像中的位置,这样该点在后续连续帧的位置连起来就形成了一个轨迹。

在这里插入图片描述

式中ωt=(ut,vt)为密集光流场,是由It和It+1计算得到的,u和v分别代表光流的水平和垂直分量。而M则代表中值滤波器,尺寸为3*3。也就是说该式是通过计算特征点邻域内的光流中值来得到特征点的运动方向的。

另外作者提到,由于特征点的跟踪得到的轨迹随着时间会存在漂移现象,也就是从初始位置移动到很远的地方,故长时间的跟踪是不可靠的,所以每L帧要重新密集采样一次特征点,重新进行跟踪。在DT/iDT算法中,选取L=15。这个漂移现象我觉得解释应该是说,跟踪本身就不是绝对的,因为要计算光流场,也取决于中值滤波器的平滑操作,越跟踪,跟踪得到的轨迹可能与原始绝对轨迹之间存在更大误差,进而导致作者所说的长时间的跟踪是不可靠的,需要L帧重新采样一次再跟踪。

对于每个帧,如果在W×W邻域中找不到跟踪点,则会采样一个新点并将其添加到跟踪过程中,以确保轨迹的密集覆盖。至于为什么要在没有跟踪点的W * W邻域添加新点然后跟踪它?我认为就是要保证每一帧的W * W邻域都要有跟踪点,这样来实现密集轨迹,后续在得到众多轨迹后,会删除静态的轨迹和突出增大位移的轨迹,保留正常轨迹。

  • 轨迹描述子

(1)轨迹形状描述子:

轨迹本身也可以构成轨迹形状特征描述子。对于一个长度为L的轨迹,其形状可以用(ΔPt,...,ΔPt+L−1)
来描述,其中位移矢量ΔPt=(Pt+1−Pt)=(xt+1−xt,yt+1−yt)
。在进行正则化后就可以得到轨迹特征描述子了。正则化方式为:
在这里插入图片描述
最终得到的轨迹特征为15*2=30维向量。

除了轨迹形状信息,我们还设计了描述子来嵌入外观 ( appearence ) 和运动 ( Motion ) 信息。

下图展示了HOG/HOF/MBH描述子捕获信息的图示:摄像机从右向左移动,而该人正从摄像机中走开。渐变/流动方向由颜色(色调)和饱和度大小表示。通过光流计算得到的HOF光流信息(第一行第二列这个图),在背景中显示出恒定的运动,(可以看出光流整体向右流动)说明这是由于相机的运动,但是作者觉得还不够完善,因为我们知道有相机的运动,但同时人也在从车里走出,和背景之间本身也会有一个相对运动,为了在一定程度上克服相机运动的影响,我们主要应该看的其实就是背景和前景之间的相对运动,于是作者使用了MBH描述子(不是作者提出的)。运动边界MBH(最右边这一列的两张图)编码人与背景之间的相对运动。
Dense trajectories and motion boundary descriptors for action recognition 密集轨迹:DT算法_第3张图片

(2)在1.1节中的算法框架中右边就是对轨迹描述子的可视化,包括HOG/HOF/MBH。首先在1.1节这个图中,是在NNL(实验设置N:32像素、L:15帧)的时空体范围内去计算描述子的。而描述子的计算范围是nσ * nσ * nτ(σ:2 、τ:3)这样一个细分的时空网格。
下面是对3个描述子展开介绍:

  • HOG (histograms of oriented gradients) :这里论文没有细讲,参考下面这篇博客。
    目标检测的图像特征提取之(一)HOG特征
    HOG特征描述子的主要思想是:在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。(本质:梯度的统计信息,而梯度主要存在于边缘的地方)在上图中也能看出,经过HOG计算后,图像的轮廓得到了展现。
    HOG的实现方法:首先将图像分成小的连通区域,我们把它叫细胞单元cell。然后采集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来就可以构成特征描述器。

  • HOF (histograms of optical flow):光流直方图。
    同样参考下面这篇博客:HOF特征
    HOF(Histogramsof Oriented Optical Flow)与HOG类似,是对光流方向进行加权统计,得到光流方向信息直方图。通常用于动作识别中。由于目标的尺寸会随着时间发生变化,相应的光流特征描述子的维度也会变化,同时,光流的计算对背景噪声、尺度变化以及运动方向都较敏感,因此需要寻找一种基于光流的既能表征时域动作信息,又对尺度和运动方向不敏感的特征。HOF则是基于此需求提出来的。

  • MBH(Motion boundary histograms):作者认为如果只计算光流信息来描述运动信息的话,光流表示两帧之间的绝对运动,其中包含来自多个来源的运动,即前景对象运动和背景相机运动。 如果将摄影机运动视为动作运动,则可能会破坏动作分类。在真实视频中可以观察到各种类型的相机运动,例如缩放、倾斜、旋转等。在许多情况下,相机运动是局部平移的,并且在图像平面上平滑变化。(这是作者在这篇文章考虑的相机运动情况,被称为DT算法,但是后面作者又提出了改进克服相机运动的考虑,更好的克服了相机运动的影响,因此改进的DT被称为iDT算法。)
    由于MBH代表光流的梯度,因此去除了局部恒定的摄像机运动,并保留了关于流场变化(即运动边界)的信息。MBH对摄像机运动的鲁棒性比光流更强,因此对动作识别更具辨别力。

小结:DT算法介绍了一种基于密集轨迹和运动边界直方图描述子的高效视频描述方法
解决了上一篇博客的疑问:

  • 如何对输入视频获得密集轨迹:密集采样特征点,通过计算密集光流场对采样得到的特征点进行密集跟踪(同时也解决了另外的一个疑问:为什么在基于时空体方法做车辆异常检测的论文中需要两个输入,一个是stvv时空视频体,一个是对应的光流场?因为得到密集轨迹对它跟踪需要计算密集光流场)
  • 对获得的密集轨迹进行外观和运动的描述:HOG、MBH描述子

你可能感兴趣的:(算法,人工智能,机器学习)