当前大部分的单目标跟踪算法都是以卷积神经网络为基础提出的,卷积神经网络没有很好的时序关联性,对于目标跟踪这个视觉任务来说,目标先前帧的运动状态及位置信息对于预测下一帧目标所在位置,提高跟踪性能有很大的帮助,所以很多学者将能对前面的信息进行记忆并应用于当前输出计算的循环神经网络引入到目标跟踪算法中。然而这些方法中循环神经网络对序列化数据处理的优势没有充分体现出来,同时目标跟踪的性能很大程度上依赖于目标检测的性能,使得目标检测性能提升的瓶颈限制了目标跟踪性能的提升。因此,为了充分利用循环神经网络的时序关联性,减少跟踪算法对于目标检测的依赖,同时实现实时的跟踪系统,本节介绍了一种基于运动方向预测的目标检测与跟踪方法,如图3-1所示。
在给定一个视频帧的情况下,首先设计基于循环神经网络的运动方向预测模型,来预测目标下一帧大致的运动方向;然后结合运动方向模型预测得到的目标下一帧的运动方向确定感兴趣区域,为了便于获取更多的上下文信息,设定一个阈值β,ROI的大小一般设置为上一帧边界框的β倍;接下来在ROI内进行目标检测,确定目标下一帧的位置;最后将得到的bounding box回传到方向预测模型,作为方向预测模型下一帧的输入,完成整个跟踪系统。下面将对网络框架中的每个模块进行详细阐述。
图3-1 基于运动方向预测的目标检测与跟踪系统流程示意图
1.运动方向预测模块
Tracking-by-detection的方法是指在整张输入图像上进行目标检测,这样不仅没有充分利用视频序列的时序信息,还使得跟踪算法的好坏取决于检测器的好坏。因此,基于LSTM的运动方向预测模型,首先预测出目标下一帧的运动方向,然后在目标运动方向上确定感兴趣区域,这样可以缩小搜索区域,降低对检测器的依赖性,同时充分利用了视频序列的帧间信息。
视频中目标的运动状态由它本身的运动状态和相机的运动状态组成,如图3-2所示。可以被定义为如下形式
式中,D表示目标的运动状态,Dt表示它本身的运动状态,Dc表示相机的运动状态。
图3-2 目标的运动状态组成示意图
然而,由于尺度变化、镜头清晰度等原因,目标运动方向本身是无限的,无法标签化,所以需要对其进行量化。首先建立一个简单的模型,确定量化的目标为目标本身运动和镜头运动相叠加的方向,然后将目标的运动方向划分为多个区域,最后对每个区域向量化或标签化,如图3-3所示。这样就可以利用循环神经网络的时序关联性构建运动方向预测模型。
图3-3 目标运动方向的向量化/标签化
图3-4是本文设计的第一个运动方向预测分类模型。在每一个时间步,输入为先前15帧的运动方向,将方向向量化后内嵌到与LSTM隐藏层单元数相匹配的空间,作为LSTM的输入。此时,LSTM的输出为目标下一帧运动方向可能性的高维表达,最后采用一个全连接层,将高维表达转化为与方向向量同一维度的表达,得到下一帧在每一个方向上的可能性,即可获得当前时间步目标下一帧最大可能的运动方向。
图3-4 输入15帧预测15帧的运动方向预测分类模型
同时,为了对比分类模型和回归模型的好坏,将模型换为回归模型,如图3-5所示。即输入为标签化的方向,将LSTM的高维输出直接通过全连接层获得预测的目标下一帧运动方向的标签,而不是得到各个方向的可能性值。
然而,上述两个模型都是通过历史的15帧运动方向信息得到下一个15帧的运动方向信息,相对于输入的信息量,输出的信息量过于庞大,造成了数据本身和输入输出信息量的不对称。因此,将模型修改为输入历史多帧方向,输出单帧方向的预测模型,同时在输入中增加帮助运动方向预测的速度信息,相应的分类和回归模型如图3-6和图3-7所示。
图3-5 输入15帧预测15帧的运动方向预测回归模型(www.xing528.com)
图3-6 输入15帧预测1帧的运动方向预测分类模型
图3-7 输入15帧预测1帧的运动方向预测回归模型
为了设计分类和回归两种不同的模型,既采用了目标区域向量化的方法,同时也采用了目标区域标签化的方法,向量化用于分类模型,标签化用于回归模型。分类模型的损失函数为交叉熵损失函数
式中,pi表示N个类别的概率分布值,yi表示目标下一帧的真实方向标签。回归模型的损
失函数为均方误差损失函数(MSE)
式中,yi表示真实值,y′i表示预测值。
2.感兴趣区域确定模块
结合运动方向预测模型得到的目标下一帧运动方向确定感兴趣区域,这样做可以缩小搜索范围,从而降低时间成本,使得跟踪算法具有能够适用于连续的视频序列的实时跟踪速度,同时降低对目标检测性能的依赖。目标跟踪中感兴趣区域大多数是由目标检测的结果确定的。输入一张图像,利用目标检测算法预测目标所在的大致位置,选定目标的最小矩形边界为感兴趣区域,然后在原始图像对应的感兴趣区域中进行特征提取等一系列操作。然而,直接在预测的目标下一帧运动方向上,以上一帧目标所在位置边界框的中心为起点向外延伸,延伸的区域大小是上一帧边界框大小的β倍,以便获取更多的背景信息。
3.目标检测模块
Tracking-by-detection的目标跟踪算法性能依赖于检测器的好坏,同时为了实现实时的目标检测与跟踪系统,选择SSD作为目标检测模块。SSD的网络模型结构如图3-8所示。
SSD是全卷积网络,将VGGNet的后面两个全连接层换为卷积层,这样输入图像的大小可以是任意的。同时在VGGNet的原网络结构基础上,新增了conv6_2,conv7_2,conv8_2和conv9_2四个卷积层,结合浅层特征conv4_3和conv7(fc7),利用特征金字塔结构,在这些不同大小的特征图上同时进行softmax分类和边界框回归。这样不仅可以实现多尺度的目标检测,还提升了对小目标的检测效果。然而,如何将不同大小的特征图组合在一起进行预测是一个问题。如图3-8中的网络结构用到了permute层、flatten层和concat层,原来的blob维度为[batch_num,channel,height,weight],经过permute层之后的维度变为[batch_num,height,weight,channel],再经过flatten层之后的维度变为[batch_num,height*weight*channel],最后经过concat层进行通道合并,将不同大小的特征图组合在一起进行预测。
由于SSD的网络结构是端到端的,因此损失函数包含分类损失和回归损失两部分,分类损失函数为交叉熵损失加上softmax分类,回归损失函数为smoothL1损失函数。SSD的损失函数定义如下
另外,为了提高检测精度,SSD使用了难例挖掘和数据增广。将confidence loss从高到低排列,选取loss最高的top-k个先验框,使得正负样本比例在1∶3左右,保持正负样本数量均衡;同时数据集不仅仅使用原图,还随机采样patch,采样后将每一个patch resize到固定大小,并且以0.5的概率随机水平翻转,这样不仅能够加快网络收敛,还能提升小目标的检测性能。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。