前言
本文的主要思想是通过状态估计网络优化目标位置,提升跟踪精度;通过分类网络区分前景和背景,提升跟踪准确率。前者是通过大规模数据集进行离线训练的,后者是通过改进的GN梯度下降策略在线学习的。
背景
在单目标跟踪领域,最近的改进主要是针对于算法鲁棒性方面,也就是提升了跟踪目标的中心点和类别的预测准确性,但在预测目标框的精确性方面没有太多的进展,只是简单的使用多个尺度系数来找到最适合的尺度框,作为最终的预测尺度。跟踪目标在运动过程中可能会发生姿态变化,物体的长宽比会发生较大的改变,单纯的计算某个尺度系数并不能较好的表示目标的精确位置。
在本文中尝试将跟踪任务分为物体分类和位置估计两部分,并通过两个网络分支分别计算不同的任务,最后融合这两个任务构建一个全新的多任务跟踪网络模型。本文算法在NFS、UAV123、TrackingNet和VOT2018四个跟踪数据集上进行了实验,成为了新的领头羊,并在UAV123数据集上取得了11%的提升。
创新点
- 离线训练IoU网络,将预测位置框进一步精确
- 使用创新的梯度优化策略,提升梯度下降的速度,在线学习基于目标的分类器
位置估计分支
本文中使用改进IoU-Net来对预测的位置进一步精确,主要分为以下几个部分:
- 输入图像的深度特征$ x\in \mathbb{R}^{W\times H\times D} $和标定的目标位置$ B\in \mathbb{R}^4 $$ (Cx/w, Cy/h, \log{w}, \log{h}) $,并使用Precise ROI Pooling层对特征进行池化,该层可视为一个关于坐标值的可微连续函数,因此可以通过最大化IoU目标函数进行优化
- 相比于检测任务,跟踪任务的目标类别是未知的,而且在图像中仅有前景和背景两个类别,因此需要对IoU-Net进行改进,使其变为基于目标的位置估计,改进后的结果如图,基本网络为ResNet-18
- 第一个分支提取第一帧的目标信息,输入图像特征和目标位置,输出modulation vector$ (1\times1\times D_z) $;第二个分支提取当前帧的图像信息,在全连接层之前,要将池化层的输出和上一分支的modulation vector进行channel-wise相乘,得到与第一帧目标信息相关的modulation vector$ (K\times K\times D_z) $,之后再通过一个全连接层得到最终的IoU预测值,即$ IoU(B)=g(c(x_0,B_0)\cdot Z(x,B)) $
- 该网络可以使用带有标注信息的视频进行端到端的训练,本文中使用LaSOT、TrackingNet和COCO数据集进行训练,训练时图中reference image为目标大小的25倍,对于每一个图像对,在坐标上加入高斯噪声使其产生16个区域来进行训练,测试图像是在原有目标图像的基础上进行了尺度和位置的随机扰动而进行的
- 基础网络ResNet的参数是不变的,使用MSE Loss作为目标函数,batch-size设置为64,并使用Adam梯度优化迭代40个周期,学习率设置为0.01并每隔15个周期学习率变化0.2倍
物体分类分支
通过位置估计分支可以得到目标的精确位置,但由于缺乏类别信息,并不能对目标和干扰物进行有效区分,因此需要在线训练一个分类器来完成此任务,主要目的是提供物体的粗略位置,提升网络的辨别能力并最小化错误检测率,尺度为上一帧预测的尺度大小,具体过程如下:
- 在第一帧视频图像中,对图像进行旋转、模糊等数据增强方法得到30个训练样本
- 设计一个由两层全卷积层组成的分类器,输入为ResNet提取的图像特征,输出为热度图
- 损失函数为$ L(\omega)=\sum^m_{j=1}\gamma_j|f(x_j;\omega)-y_j|^2+\sum_k\lambda_k|\omega_k|^2 $,其中$j\in(1,2,…,30),k\in(1,2)$
- 由于常规梯度优化方法学习速度较慢,无法满足在线学习和实效性的需求,本文中设计了一种新的梯度优化方法,将上式中的两项用残差来统一表示,转化为$ r_j(\omega)=\sqrt{\gamma_j}(f(x_j;\omega)-y_j),r_{30+k}(\omega)=\sqrt{\lambda_k}\omega_k $
- 通过残差表示的方法可以将损失函数转化为$ L(\omega)=|r(\omega)|^2 $,并根据高斯牛顿近似忽略二阶微分可得$ \tilde{L}_\omega\approx L(\omega+\Delta\omega) $,之后在$ \omega+\Delta\omega $处将$ r(\omega) $函数展开,即$ r(\omega+\Delta\omega)\approx r_\omega+J_w\Delta\omega $,这样就可以把损失函数展开,表示为$ \tilde{L}_w=\Delta\omega^TJ_\omega^TJ_\omega\Delta\omega+2\Delta\omega^TJ_\omega^Tr_\omega+r_\omega^Tr_\omega $,此处$ r_\omega=r(\omega),J_\omega=\frac{\partial r}{\partial \omega} $,我们需要的就是通过$ \Delta\omega $来更新参数$ \omega $,这里可以直接求$ L(\omega+\Delta\omega)-L(\omega) $对$ \Delta\omega $的梯度即可,本文中作者采用PyTorch中的反向传播并通过简单的代码巧妙的解决了这一问题,改进的梯度优化策略如下
跟踪过程
ATOM算法通过PyTorch实现,在GTX1080的GPU上速度为30fps。
基本网络ResNet-18为在ImageNet数据集上与训练的网络,使用block3和block4的输出作为图像特征,图像输入尺寸为$ 288\times288 $。
在物体分类分支中,提取图像特征后,首先经过一个$ 1\times1 $的卷积层使特征降至64维度,以此来减小内存占用和计算量,之后一个卷积层的卷积核为$ 4\times4 $,并使用PELU$ =\begin{cases} t & t\ge0 \\ \alpha(e^{\frac{t}{\alpha}}-1) & t<0 \end{cases}$激活函数。
在目标估计分支中,通过分类分支得到一个粗略的目标位置,尺度为上一帧的尺度大小,之后在此坐标位置上增加随机噪声得到10个建议框,然后根据IoU通过5次梯度下降来分别优化每个建议框,取IoU值最高的前三个目标框的平均值作为最终的预测结果。
Hard Negative Mining: 如果在当前帧的热度图中出现了干扰峰,将学习率加倍并对分类器诶进行一轮优化,当分数低于0.25时判定为目标丢失。
实验结果
- 作者对比了在IoU-Net中移除reference分支,性能下降了5.5%;之后对比了Baseline网络和Siamese网络,结果是Siamese网络更优;最后对比了使用Block3和Block4的特征有效性,结果为融合两层特征更好。
- 在位置估计方面对比了多尺度系数查询和IoU的方法,在物体分类方面对比了GD、GD++以及本文的GN方法,结果为GN方法更好,而且还说明了增加梯度优化次数并不能提升算法性能。
- NFS、UAV123、TrackingNet、VOT2018四个数据集的结果如图
总结
最近基于单目标跟踪的算法都是集中在对Siamese网络模型的各种创新上,致力于提升分类器的判别性能,而忽略了目标状态估计的重要性。本文从bounding-box的精确性角度出发,构建了位置估计分支,为了提升判别性能构建了物体分类分支,并进行了多任务的融合,在多个数据集上达到了最好的效果。本文作者在分析问题的时候能挖掘别人没有注意到的地方,如之前优化KCF时作者提出DSST通过滤波器计算合适的尺度从而提升性能。