论文笔记 - ATOM: Accurate Tracking by Overlap Maximization

前言

Martin Danelljan大神的最新力作,11月21日放到Arxiv上,应该是投稿CVPR的作品,该文章再一次将单目标跟踪的精确度拔高到了一个新的高度。
本文的主要思想是通过IoU-Net来优化网络预测的bounding box,提高定位精确度;并通过基于共轭梯度的策略来训练分类网络,提高分类准确率。通过二者的结合,ATOM在四个主要的跟踪数据集上达到了新的高度。

论文:ATOM: Accurate Tracking by Overlap Maximization

背景

在近些年,单目标跟踪算法大多集中在开发比较鲁棒的分类器方面,在bounding box的refine没有太多进展,大多是通过multi-scale的输入,来找到一个响应值最高的输入,作为bounding box的scale。但是,单目标跟踪的物体有些是非刚体,随着物体姿态的变化,物体会发生长宽比的改变,因此,单纯计算scale并不能得到一个很好的bounding box。
Background
本文尝试来桥接目标跟踪中物体分类和位置估计两部分。论文构建了一个全新的多任务跟踪模型,它由物体分类和位置估计两部分组成。受到最近的IoU-Net的启发,作者构建了一个融入了目标相关信息的IoU网络,该网络可以通过离线训练得到,在跟踪时,通过参考图像来估算出当前图像中proposals的IoU,选择IoU最大的proposal即可。

其次,作者尝试简化复杂的目标分类模块。该模块仅由两个全连接层组成,简单且有效,该模块是通过在线训练得到的,提供强大的区分目标和干扰物体的能力。为了保证实时性,作者改进了优化方法,通过使用基于共轭梯度的策略,从而使得梯度能够快速下降。

最后,作者在NFS、UAV123、TrackingNet和VOT2018四个单目标跟踪常用的数据集上进行了实验,ATOM的性能成为了新的标杆,并且在UAV123数据集上取得了11%的提升。

创新点

  • 通过离线训练IoU-Net,将网络输出的proposal进一步refine
  • 通过使用基于共轭梯度的策略,使梯度快速下降,从而提高分类器在线训练的速度

Pipeline

作者将目标跟踪分为两部分,一部分为离线训练的目标估计模块,一部分为在线学习的目标分类模块,两者融合在一个端到端的网络框架中进行训练,共享同一个backbone,ResNet-18网络。
Pipeline
目标估计模块由IoU预测网络组成,输入包括四部分:

  • backbone提取的当前帧feature
  • 当前帧预估的bounding box
  • backbone提取的参考帧feature
  • 参考帧的bounding box 其输出为预估bounding box和参考帧的bounding box的有效IoU

目标分类模块是通过在线训练得到的,其输入为backbone提取的当前帧的feature,并判断该feature是否属于目标。该模块是全卷积的,使用SGD方法进行训练的效果不一定是最优的,因此作者使用了一种基于共轭梯度和Gauss-Newton法的优化方法,该方法可以使梯度快速下降,同时在现有的深度学习框架如Pytorch中易于实现

通过最大化IoU来实现目标估计

在检测领域,最近开始使用IoU-Net来替代anchor-based的方法进行bounding box regression。作者借鉴了这种方法,使用IoU-Net,根据物体和bounding-box的proposal来预测IoU,即通过最大化IoU来获得最终的bounding box估计值。

IoU-Net的输入为图像特征和预测的bounding box坐标值,输出为IoU,它使用Precise ROI Pooling层对bounding box中的图像特征进行池化,该层可以视为一个对于坐标值可微的连续函数,因此可以通过最大化IoU(目标函数)来进行梯度下降,对Bounding box进行refine。

IoU-Net最早使用在目标检测领域,因此是在每个类别上分别进行训练得到的,即网络是与物体类别相关的,而对于tracking来说,目标类别是未知的,因此需要对IoU-Net进行改进,增加泛化能力。

在本篇论文论文中,作者提出了一个模块化的网络结构,该结构可以在只给定一帧参考帧的情况下,对任意物体预测IoU,如图所示,网络包含有两个分支,输入都为ResNet-18网络中Block3和Block4提取的特征。
IoU-Net
reference branch由卷积层、ParPool层和全连接层组成,输入为图像特征和bounding box,输出为modulation vector,尺寸为(1×1× Dz)(1 \times 1 \times \ D_z).
test branch稍微复杂一些,由两个卷积层、ParPool层、全连接层组成,并且在全连接层之前,要将ParPool层的输出和modulation vector进行channel-wise的相乘,最终得到一个和reference信息相关的modulation information,尺寸为K×K×DzK \times K \times D_z然后输入到三个全连接层组成的模块中,得到IoU。

该网络可以使用带有标注的图相对进行端到端的训练,作者使用了LaSOT和TrackingNet数据集进行训练,同时还使用了COCO数据集进行扩充训练。训练时,参考图像的面积为GT的525^2大,测试图像是在GT的基础上,进行了scale和position的随机扰动。对于每一个图片对,作者通过在坐标上加入了高斯噪声,产生16个proposals,进行训练。

在训练过程中,backbone的权重是不变的,使用的Loss为MSE Loss,batch size为64,使用ADAM optimizer训练了40 epochs,lr为0.01并且每隔15个epoch乘以0.2

通过快速在线学习实现目标分类

由于IoU-Net是离线训练的,虽然它可以提供精确的目标估计,但是由于缺乏类别相关的信息,它并不能对目标和干扰物进行有效地区分,因此需要在线训练一个分类器来区分目标和干扰物体。因此,作者设计了一个分类模块,用于提供粗略的物体位置,其首要目标是鲁棒的区分能力,以及最小的错误检测率,并且其对物体的大小和尺寸不敏感。

作者设计的分类器由两个全卷积层组成。输入为feature map,输入为热度图(高斯分布)

f(x;w)=ϕ2(w2ϕ1(w1x))f(x;w)=\phi_2(w_2 \ast \phi_1(w_1 \ast x))

Loss函数为:

L(w)=j=1mγjf(xj;w)yj2+kλkwk2L(w) = \sum_{j=1}^{m} \gamma_j \left | f(x_j ; w) - y_j \right | ^2 + \sum_{k}\lambda_k \left | w_k \right |^2

w则是卷积核的参数,由于传统的SGD算法下降速度较慢,因此作者设计了新的算法,将上式中的两项用残差统一表达,对于Loss项,转化为:

rj(w)=γj(f(xj;w)yj),j1,...,mr_j(w) = \sqrt{\gamma_j}(f(x_j;w)-y_j), j \in { 1,...,m }

对于正则项,有:

rm+k(w)=λkwk,k=1,2r_{m+k}(w) = \sqrt{\lambda_k}w_k, k = 1,2

这样,优化函数就转化为了

L(w)=r(w)2L(w) = \left | r(w) \right |^2

其中,r(w)为一个函数向量,每个元素都是之前定义的残差项。

根据高斯牛顿近似忽略二阶微分,则:

L~wL(w+Δw)\tilde{L}_w \approx L(w+\Delta w)

然后在w+Δww+\Delta w出将r(w)函数展开,即r(w+Δw)rw+JwΔwr(w + \Delta w) \approx r_w + J_w \Delta w,则Loss函数可以表示为:

L~w=ΔwTJwTJwΔw+2ΔwTJwTrw+rwTrw\tilde{L}_w = \Delta w^T J_w^T J_w \Delta w + 2\Delta w^T J_w^T r_w + r_w^T r_w

此处,rw=r(w)r_w = r(w)Jw=rwJ_w = \frac{\partial r }{\partial w},我们需要的就是通过 Δw\Delta w来更新ww,这里可以直接求L(w+Δw)L(w)L(w+\Delta w) - L(w)Δw\Delta w的梯度即可,由于算法比较复杂,有兴趣可以查阅原文。
Algorithm

整体算法

ATOM是通过Pytorch实现的,在1080GPU的速度为30FPS,作者表示代码将会开源

特征提取 特征提取网络为在ImageNet上预训练的ResNet-18,使用的特征为block3和block4的输出,输入的尺寸为288×288288 \times 288
目标分类 提取特征后,首先经过一个1×11 \times 1的卷积层降至64维,以此来减小内存需求和计算量,然后跟一个4×44 \times 4的卷积层,用ϕ1\phi 1表示,然后使用PELU作为激活函数,用ϕ2\phi 2表示,该函数连续可导,对于Loss函数的优化很有帮助。在第一针,作者使用了通过旋转、模糊以及dropout等方式得到了30个training sample,去拟合热度图(高斯分布),优化分类器的第二个卷积层。
目标估计 在提取特征后,作者首先通过目标分类网路得到一个粗略的位置信息,加上原来的长和宽得到一个初始的bounding box,然后在坐标上增加随机噪声,得到10个proposal,然后根据IoU通过5次梯度下降来分别优化每个proposal,取3个IoU最高的bounding box的平均值作为最红的预测结果。
Hard Negative Mining 如果在当前帧的热度图中出现了干扰峰,作者将lr加倍后对分类器进行一轮的优化,从而增加鲁棒性。

实验

作者在四大数据集(NFS、UAV123、Tracking Net、VOT2018)上分别进行实验。

IoU 结构分析

同时作者做了一些对比实验,在IoU-Net中移除参考分支,仅依靠test分支预测IoU,性能下降了5.5%;在IoU-Net中,reference信息和test信息的融合方式上,作者测试了简单concatenation和Siamese的区别,结论是Siamese更优;只使用Block3或者Block4的feature,表现不如二者都用。
Ablation-IoU

对比分析

目标估计 作者对比了粗暴Multi-scale search方法和IoU方法,结果自然是IoU完胜。
目标分类 作者对比了梯度下降、5倍轮数的梯度下降以及本文的Gauss-Newton方法,发现同样轮数,Gauss-Newton法性能更好,增加梯度下降轮数,但性能并没有提升。
Ablation-SGD
Hard Negative Mining 提升了0.4个百分点

与其他算法对比

自然是完爆其他算法…
NFS and UAV123TrackingNetVOT2018

总结

前段时间的单目标跟踪算法有不少都是集中在Siamese网络的各种创新,在其他研究人员致力于提升分类器的性能时,作者从bounding box的refine出发,进行了创新。以前大家都在优化KCF的核函数时,作者也曾提出了DSST算法,用相关滤波器来计算出合适的scale,提升了性能,可以说是能注意到大家不太注意到的点。另外得益于自己扎实的数学功底,优化了传统的SGD,非常solid的工作,等作者放出源码后(终于从matlab转到Pytorch了…),可以验证一下