【阅读笔记】ATOM: Accurate Tracking by Overlap Maximization

这篇文章是cvpr2019的oral,讲的是目标跟踪,作者martin是tracking领域的一个大神,有很多经典的文章,ECO就出自他之手。由于文章涉及一些先验知识,因此有些地方我可能会加入一些其他文章的内容,帮助理解,已经了解的话跳过就好了~

论文:https://arxiv.org/abs/1811.07628
代码:https://github.com/visionml/pytracking

目录

  • 1.Introduction
  • 2.Related Work
    • 2.1 Correlation Filter-based Tracking
    • 2.2 Siamese Network for Tracking
  • 3.Proposed Method
    • 3.1 Target Estimation
      • 3.1.1 IoU-Net
      • 3.1.2 Target Estimation by Overlap Maximization
      • 3.1.3 Training
    • 3.2 Target Classification
      • 3.2.1 Fast Online Training
    • 3.3 Online Tracking Approach
  • 4.Experiments
  • 5.Conclusion

1.Introduction

作者首先指出,现在的目标跟踪的研究主要都放在了目标定位上,而忽略了目标形态的估计。虽然很多跟踪器使用简单的multi-scale的方法来估计目标的bounding box,但是局限性还是很大的,因为判断物体的形状是需要较高层次信息的。
在此基础上,作者提出了一个新的目标跟踪框架,把目标跟踪划分成目标粗定位和目标形状估计两个子任务,并且设计了两个模块来分别实现这两个子任务。对于前者,文章提出了一种在线训练的方法快速训练一个网络头部用于目标粗定位。对于目标形状估计,作者借用了iou-net的方法最大化iou来得到精细的预测框。本文在五个数据集上取得了新的最好成绩。

2.Related Work

作者认为现在的目标跟踪网络在定位这个任务上做的比较成功,特别是基于相关滤波的跟踪网络。这里,我简单介绍一下基于相关滤波的方法。

2.1 Correlation Filter-based Tracking

【阅读笔记】ATOM: Accurate Tracking by Overlap Maximization_第1张图片
基于相关滤波方法的目标就是要找到一个滤波模板h,与输入图像f求相关性,得到一个confidence map,和输入图像f相对应,即可确定目标位置。为了加快运算速度,引入了傅里叶变换,将复杂的互相关计算转化为了点乘运算,这样即可快速的得到密集的目标响应图。如下:
在这里插入图片描述
这里的F即为傅里叶变换,这里注意点乘的后面的F(h)是共轭。基于相关滤波的流程大致如下:
【阅读笔记】ATOM: Accurate Tracking by Overlap Maximization_第2张图片

  1. 首先对于初始帧,进行网络的初始化,主要就是滤波模板的初始化。
  2. 对于当前帧,对其提取特征,这里可以使用cnn等。
  3. 对特征乘以一个余弦窗口,目的是增大图像中心的权重(目标出现在中间的可能性大一些),相当于一个attention。
  4. 对特征和滤波模板分别进行快速傅里叶变换,然后进行点乘操作,再经过逆傅里叶变换得到响应图。
  5. 根据响应图得到预测。
  6. 根据预测区域提取特征,使用一些在线学习的方法对滤波模板进行快速的更新。
  7. 当前帧预测完成,进行下一帧的预测,至步骤2。

总的来说,这种方法通过傅里叶变换来进行高效的计算,加上一些快速的更新算法,能够在线的更新模型,因此鲁棒性比较强,能够较为精确的找到目标的位置。然而作者认为这种方法逃避了目标形状估计的问题,大多数都只是借助于粗暴的多尺度来解决。

2.2 Siamese Network for Tracking

除了基于相关滤波的跟踪方法,现在的主流方法就是基于孪生网络框架的跟踪器。这里我就不对其展开介绍了,如果不太了解的可以看我的上篇【阅读笔记】SiamMask,里面对基于孪生网络的跟踪器进行了简单介绍。
【阅读笔记】ATOM: Accurate Tracking by Overlap Maximization_第3张图片
作者认为SiamRPN这种方法虽然在后面加了一个回归头用于预测目标的形状(上图的下面分支),但是这种网络主要精力还是在定位上,其回归能力有限。另外,这种网络还有一个不足就是,由于没有在线更新网络,导致不能够很好的区分distractor,也就是那些容易产生混淆的物体,比如打篮球时目标球员和其他球员。尽管这个问题被DaSiamRPN通过使用简单的template更新策略在一定程度上解决了,但是效果仍然比不上那些较强的在线学习的模型。

3.Proposed Method

本文没有follow前面提到的两种主流框架,而是将目标跟踪划分为了目标定位和形状估计两个子任务,并提出了两个模块来实现。分别为一个离线训练的目标估计模块,一个在线训练的目标分类(定位)模块。这两个任务被融合进了一个统一的网络结构。如下图:
【阅读笔记】ATOM: Accurate Tracking by Overlap Maximization_第4张图片
和siamese network结构类似,上面是reference branch,也就是目标模板的分支,下面是test branch,也就是当前帧的分支。和基于siamese network的tracking不一样的是,在模板分支,最后生成的并不是一个feature map,而是在经过backbone提取特征之后,将特征经过"IoU Modulation"模块编码成了一个“调制向量”,用于后面每一帧bounding box的iou预测。下面这个分支中,当前帧的图像经过backbone后分成了一个分类分支和一个iou预测分支,分类分支用于初步定位目标,得到初始的bounding box。iou预测分支结合前面生成的调制向量,推断bounding box的iou,并经过反向传播,优化bounding box使得iou最大化,以此得到精细的预测框。
橙色的resnet-18直接使用预训练模型,不经过fine-tune;蓝色的模块为目标估计模块,是经过线下训练得到的;绿色的为在线训练的目标分类模块,也就是说在tracking的时候才进行训练。下面就来详细讲一下这两个模块。

3.1 Target Estimation

目标估计模块也就是上图中蓝色的模块,用于估计目标的具体形状。作者借鉴了iou-net的方法,最大化bounding box的iou来得到预测框。在具体讲这个模块之前,我们先来简单回顾一下iou-net。

3.1.1 IoU-Net

iou-net是做目标检测的一篇文章,主要提出了两个问题:

  1. 用预测框的分类得分(classification score)作为nms的依据存在问题。因为分类得分高的预测框不一定比分类得分低的预测框好,比如下面这幅图。
    【阅读笔记】ATOM: Accurate Tracking by Overlap Maximization_第5张图片
    以第一幅图中的鸟为例,黄色框为ground truth,红色框的分类置信度较高,然而很明显其与gt的重合度不如绿框。如果使用分类得分作为nms的依据的话,那红框将会保留,而绿框将被剔除。
  2. 传统的基于回归的bounding box优化迭代存在缺点。如下图,上面那一行是基于回归的来优化bounding box,可以看到随着迭代次的进行,预测框的坐标准确性逐渐降低。而下面这一行是基于iou方式的迭代优化,就不存在这个问题。
    【阅读笔记】ATOM: Accurate Tracking by Overlap Maximization_第6张图片
    下面简单讲一下iou-net是如何解决这两个问题的。其实也很简单,作者就是在目标检测网络上增加了一个iou分支,用于预测bounding box与gt的iou。如下图:
    【阅读笔记】ATOM: Accurate Tracking by Overlap Maximization_第7张图片
    首先,这个预测出来的iou用于nms,即nms阶段不再使用分类得分进行排序,而是基于预测iou score,也就解决了前面提到的第一个问题。
    另一方面,在推断阶段,当经过回归得到初步的bbox之后,使用iou-net分支再次预测其iou,并通过梯度上升最大化iou,来调整bbox的四个值。也就是相当于把iou分支网络固定,将bounding box作为变量,通过梯度上升使得bbox的iou最大化,经过几次迭代得到更加精细的预测。这样也就解决了前面提到的第二个问题。

3.1.2 Target Estimation by Overlap Maximization

本文的目标估计模块也就是使用了iou-net的最大化iou来调整bounding box的思想。网络结构如下:
【阅读笔记】ATOM: Accurate Tracking by Overlap Maximization_第8张图片
这个网络其实就是整体结构图去除了test branch的分类分支。其推断流程大致如下:

  1. reference branch通过resnet-18作为backbone提取特征,然后对目标区域进行PrPool (iou-net里的),最后通过全连接层编码成两个modulation vector。这里只需要进行一次,也就是初始化的时候需要,后面推断的时候就只需要用到保存下来的modulation vector了。
  2. test brach也是先用resnet-18对当前帧提取特征,而后对bounding box进行PrPool得到固定尺寸的特征图。这里的bounding box是classifier那边得来的一个大概的框,后面讲那个部分的时候会讲是怎么生成的。
  3. 使用reference branch生成的两个vector分别对两个特征图进行channel-wise multiplication,也就相当于channel维度上的attention。
  4. 通过几个全连接层得到预测的iou。
  5. 对iou求bounding box的梯度,经过几次迭代,调整bounding box最大化iou,得到精细的预测框。
    下面讲一下这个模块的训练。

3.1.3 Training

作者认为iou的预测需要高层次的信息,因此在线训练或者是fine-tune是不可行的,需要对iou的预测器进行离线的训练。本文的image pairs从LaSOT和TrackingNet数据集中采样得来,这两个数据集都是跟踪数据集,是视频数据,有每一帧的bounding box的标注。每一对图片的间隔不大于50帧。并且对训练数据使用coco数据集中的合成图片对其进行增强以得到更多的类别。对于每对image pair,通过对gt的坐标加入高斯噪声来产生16个候选bbox,但同时保证其iou大于0.1,用于训练iou-net。在训练的时候,backbone是固定不动的,其使用的是预训练模型。另外,在PrPool之前的网络,两个分支是共享权重的,也就是Siamese network的结构。

3.2 Target Classification

前面讲的模块的作用是输入一个粗糙的bounding box,通过iou分支优化,得到精细的预测框。但是这个粗糙的bounding box怎么来的呢,也就是文章的另一个主要部分,目标分类(粗定位),如下图的红色框部分。
【阅读笔记】ATOM: Accurate Tracking by Overlap Maximization_第9张图片
这里的classifier是一个两层的全卷积网络,通过这个分类头,输出一个置信度图,即可确定目标的大致位置。这里的classifier是在线训练的,也就是在做tracking的时候才临时训练的。问题来了,为什么要这么做呢,为什么不离线训练好一个分类头,在tracking的时候直接用呢?
原因很简单,因为tracking是一个target-specific的任务而不是class-specific的任务,他没有预定义的类别,而只有实体的概念,跟踪的类别是可以任意的。就算你使用了大量的类别来离线训练这个头部,也是不可用的,因为图像中可能包含多个有语义信息的实体,这样的分类器是没有办法区分开这些实体的。所以我们需要使用在线训练的方法,在tracking的时候来临时训练一个分类头部,用于输出目标物体的响应。
由于需要在线训练,也就意味着模型需要快速的训练收敛。这就是下面要介绍的文章的另一个主要部分了。

3.2.1 Fast Online Training

首先,作者定义分类头的预测函数和loss函数如下:
在这里插入图片描述
在这里插入图片描述
这里的loss函数类似于相关滤波,加号左边项即为均方差,右边的项即为正则项,两者进行了加权。其中,j从1到m,表示m个样本;k从1到2,表示两层神经网络;w表示网络权值。学习的目标就是最小化这个loss函数,但是很明显,使用随机梯度下降法SGD的话会收敛的很慢,因此这里作者提出了一个快速训练的方法。
首先,作者把loss函数中的残差项和正则项的表达式统一起来了:
在这里插入图片描述
在这里插入图片描述
而后loss函数即可表达成:
在这里插入图片描述
在w+Δw 对r函数进行一阶泰勒展开,根据高斯牛顿近似忽略二阶微分,那么L(w+Δw )即可表达为:
在这里插入图片描述
其中Jw代表r对w的雅克比矩阵。我们需要的是求解Δw来更新w,由于这个高斯牛顿法得到的式子是一个正定的二次多项式,因此可以使用共轭梯度下降法CG来求解Δw。算法流程如下:
【阅读笔记】ATOM: Accurate Tracking by Overlap Maximization_第10张图片
可以看到,这里包含了两个循环,大循环使用高斯牛顿法更新w,小循环使用共轭梯度下降法得到Δw。通过这个算法,就能实现分类头部的快速训练。
分类头部的在线训练发生在两个时间,一个是网络初始化的时候,根据用户框出的目标区域再加入一些数据增强作为训练样本,训练的target即为以目标点为中心的高斯分布的confidence map。此时需要的训练轮次较多一点。另一个时间是每隔10帧,进行一次fine-tune,此时的训练样本为中途生成的特征图,需要训练的轮次较少。

3.3 Online Tracking Approach

最后,再来看看本文网络的整体tracking流程。

  1. 对于第一帧,模板分支产生调制向量,快速训练classifier。
  2. 对于当前帧,提取特征,经过classifier确定位置,再结合前一帧的bounding box形状,生成当前帧的初始bounding box。
  3. 将bounding box传入iou predictor产生预测的iou。
  4. 通过最大化iou,来优化bounding box,经过几次迭代产生当前帧的预测框。
  5. 预测下一帧,至步骤2
    需要说明的是,步骤2中,作者发现根据位置信息,结合随机的形状生成的多个初始化bounding box能够更好的避免局部最优。这样,也就是通过优化多个bbox,并取出iou最高的三个bbox,取平均得到最后的预测。

4.Experiments

实验部分就不细讲了,大概就是消融实验验证了其各个模块的有效性,最后在多个数据集上和其他模型进行了效果比较。

5.Conclusion

这篇文章我认为是cvpr2019的几篇跟踪论文中较为突出的一篇(毕竟oral),其主要贡献在于提出了一个新的框架,将跟踪划分成了目标粗定位和目标形状估计两个子任务,并分别提出了快速训练算法和iou分支实现了这两个模块,取得了很好的效果。

你可能感兴趣的:(【阅读笔记】ATOM: Accurate Tracking by Overlap Maximization)