文章总览
论文地址:https://arxiv.org/abs/1903.05625?context=cs.CV
论文代码:https://github.com/phil-bergmann/tracking_wo_bnw
多目标跟踪问题通常被转换为tracking by detection问题,也就是说,通过目标检测算法来实现对上一帧目标在当前帧的预测或重识别操作。但是这里面会遇到很多问题:
- 如何依据上一帧目标的位置来生成当前帧的位置
- 如何应对目标的遮挡、交叉以及颜色变化等问题
- 如何判别目标消失,以及消失后重新出现的问题(重识别问题)
该论文中的跟踪思路非常简洁明确,就是利用一些耦合的检测与判别架构,将目标检测的backbone结合在一起形成一个tracktor。
- 如果判别架构太过复杂,则会产生大量的计算负担,因此一定要简单并且有效
- 如果目标检测算法对全图进行检测,势必浪费大量的计算资源,也是不可取的,因此需要对目标检测算法进行一定程度的修改与限制,在精度与速度之间做一个不错的权衡
在过去也有一些tracking by detection方式的多目标跟踪算法,通常是让检测算法对全图进行目标检测,而后将产生的所有boundingbox与上一帧的通过几何方法进行一一对应,从而找到上一帧目标在下一帧中对应的boundingbox,这样的方式依赖于多对多的图结构,当目标增多后,对应关系将会以指数形式增长。
本文中的算法,将目标检测的过程与tracking的过程联系到一起,缩小了搜索范围,同时兼顾了目标检测算法的高精度。
4 contributions
这是一篇基于实践结果的应用性论文,理论性不强,主要是提供了一种special use of detector’s head
- We introduce the Tracktor which tackles multi-object tracking by exploiting the regression head of a detector to perform temporal
realignment of object bounding boxes.- We present two simple extensions to Tracktor, a reidentification Siamese network and a motion model. The resulting tracker tields
state-of-the-art performance in three challenging multi-object
tracking benchmarks.- We conduct a detailed analysis on failure cases and challenging tracking scenarios, and show non of the dedicated tracking methods
perform substantially better than our regression approach.- We propose our method as a new tracking paradigm which exploits the detector and allows researchers to focus on the remaining complex
tracking challenges. this includes an extensive study on promising
future research directions.
上面是原文中的内容,由于本文是利用现有的目标检测方法、孪生重检测方法和相机运动估计法,重新组合逻辑而得到的一套可以实现端到端输出的新架构,因此,其主要贡献在于充分利用了目标检测的head使其具有tracking的功能,同时利用孪生网络和运动估计模型提高模型鲁棒性,剩下的就是大量对实验结果的分析,给依赖于检测的多目标跟踪提供了一个新思路。
如上图所示,整个tracking过程有两条主要的流程,分别由蓝色和红色两个线产生:
- 蓝色线:用来对t-1帧已有的框进行重新回归判定,利用Regression模块获取t帧时候的新位置,同时用Classification模块对这个新的位置进行判断,以确定该物体是否仍然存在;
- 红色线:用来检测新产生的目标,这些目标来自于Detection模块,能够产生一个新目标的集合 D t D_t Dt,而后,将其与已经有的框通过IoU进行判别,保留那些与t-1帧没有足够重叠率的框,作为新目标参与到下一帧的迭代。
论文的整体思路大致就是这样,最后实现的效果是将一个目标检测器变成了一个跟踪器,当然,这个跟踪器和我们标准tracking任务中的跟踪器不一样,它是面向某些类别的跟踪器,而不是传统意义上的跟踪器(无类别跟踪器)。因此,这样的跟踪器需要首先对该特有类别进行离线的训练,而非传统跟踪器的在线学习模式。这样的结构,绕开了目标丢失后的重识别问题,作者认为他们最大的亮点在于,通过改造一个detection方法很好的解决了一个multiple objects tracking问题。
具体方法
tracking by detection
利用detector的好处:
- 不需要任何关于tracking特定任务的训练
- 在测试阶段,不需要进行复杂的优化操作
Detector的选用:
- Faster R-CNN:based on ResNet-101 and Feature Pyramid Network
- 训练:在MOT17Det的行人检测数据集上对detector进行训练
Faster R-CNN的利用方式(就还是原来的使用方式……):
- Region Proposal Network:用来产生一系列的候选目标框
- Region of Interest (RoI):用来对特征图的最后一层产生统一大小的特征图,从而被后面的分类和回归模块使用
- Non-maximum-suppession (NMS):对生成的一系列候选区域结合score和iou进行筛选,得到最终detect出来的结果
Tracktor的实现主要是两个过程,在本文开头的图中,表示为红色和蓝色两个线索:
- bbox的回归(蓝色):将t-1帧的bbox输入,重新回归该框,并在该框附近重新获得一个新的bbox,这种方式假设摄像机的帧频较高,以至于目标在前后两帧之间的位置没有过多的改变。如果分类得到的结果显示为负样本,则kill掉这个bbox,表示目标已经消失。
- bbox的初始化(红色):当t帧检测到的有效目标的bbox与t-1帧已有的bbox的iou小于一定值,就把该bbox当作新的目标添加到targets列表中,参与下一帧的跟踪。
流程图大致如下:
tracking extensions
加上这一部分功能后的Tracktor叫做Tracktor++
由于上面通过回归和初始化两种方式,对目标的跟踪不具有持久性,表现在:
- 一旦目标被kill掉,就标志着对这个目标的跟踪结束,然而,实际情况是,一个目标有可能只是临时被遮挡了一下,还会再次出现;或者目标因为光照变化等原因,在某一帧没有被检测器检测到,从而彻底丢失。
- 拍摄的时候,仍然会遇到相机剧烈运动的情况,或者被拍者目标运动过快,而帧率不够快,这就使得上面回归部分的操作假设不成立,必然会导致目标丢失。
对于这两种跟踪中常见的问题,作者分别使用了两种方法去纠正:
- Motion model:通过使用ECC(Enhanced Correlation Coefficient) 方法对相机的运动进行估计(CMC),该方法是利用图像配准的方式,将t帧的图像纠正回t-1帧,从而尽可能的减少相机运动带来目标的大幅度位移;另外,对于低帧率(或高速运动的物体)采用一种基于运动假设的目标位置估计方法(constant velocity assumption, CVA),通过前后帧目标的速度估计出下一帧的位置,在估计的位置进行回归。
- Re-identificatioin:为了能够让Tracktor在线的去学习目标的特征,从而能够在丢失后重新把它找回来,作者使用了一个基于孪生的神经网络,来作短时记忆,用于在t+i帧找回在第t帧丢失的目标(被kill掉)。因此那些被kill掉的目标,都不会被彻底清除,而是被保存下来。后续,如果在目标初始化模块发现了新的目标,则先将其与这些保存的被kill掉的目标进行比对,如果他们的很相似,就认定为先前丢失的目标,否则,就当作新目标。同时,为了减少重识别的错误,对于在第t帧丢失的目标,仍然对其进行motion model的速度预测,如果预测的位置与新目标的位置iou过小,则认定该目标不是原来的目标。(个人觉得这样的操作,是默认物体的运动速度不会变化巨大为前提的,对于由于光照、短暂遮挡等导致的较短时间内的目标丢失,应该会有比较好的效果)
实验结果分析
数据集来源:MOT Challenge
实验数据集:2DMOT2015, MOT16, MOT17
检测训练数据集:MOT17Det
实验评估:Multiple Object Tracking Accuracy (MOTA) and ID F1 Score (IDF1)
ps: 下面内容先贴上,后续看了代码后再进行补充