找了很多资料,这篇博客写的最好,对理论的解释更清晰,转载留存
感谢大神们的解读,小白学到很多
总览
多目标跟踪问题通常被转换为tracking by detection问题,也就是说,通过目标检测算法来实现对上一帧目标在当前帧的预测或重识别操作。但是这里面会遇到很多问题:
1.如何依据上一帧目标的位置来生成当前帧的位置
2.如何应对目标的遮挡、交叉以及颜色变化等问题
3.如何判别目标消失,以及消失后重新出现的问题(重识别问题)
该论文中的跟踪思路非常简洁明确,就是利用一些耦合的检测与判别架构,将目标检测的backbone结合在一起形成一个tracktor。
1.如果判别架构太过复杂,则会产生大量的计算负担,因此一定要简单并且有效
2.如果目标检测算法对全图进行检测,势必浪费大量的计算资源,也是不可取的,因此需要对目标检测算法进行一定程度的修改与限制,在精度与速度之间做一个不错的权衡
在过去也有一些tracking by detection方式的多目标跟踪算法,通常是让检测算法对全图进行目标检测,而后将产生的所有boundingbox与上一帧的通过几何方法进行一一对应,从而找到上一帧目标在下一帧中对应的boundingbox,这样的方式依赖于多对多的图结构,当目标增多后,对应关系将会以指数形式增长。
本文中的算法,将目标检测的过程与tracking的过程联系到一起,缩小了搜索范围,同时兼顾了目标检测算法的高精度。
如上图所示,整个tracking过程有两条主要的流程,分别由蓝色和红色两个线产生:
蓝色线:用来对t-1帧已有的框进行重新回归判定,利用Regression模块获取t帧时候的新位置,同时用Classification模块对这个新的位置进行判断,以确定该物体是否仍然存在;
红色线:用来检测新产生的目标,这些目标来自于Detection模块,能够产生一个新目标的集合而后,将其与已经有的框通过IoU进行判别,保留那些与t-1帧没有足够重叠率的框,作为新目标参与到下一帧的迭代。
论文的整体思路大致就是这样,最后实现的效果是将一个目标检测器变成了一个跟踪器,当然,这个跟踪器和我们标准tracking任务中的跟踪器不一样,它是面向某些类别的跟踪器,而不是传统意义上的跟踪器(无类别跟踪器)。因此,这样的跟踪器需要首先对该特有类别进行离线的训练,而非传统跟踪器的在线学习模式。这样的结构,绕开了目标丢失后的重识别问题,作者认为他们最大的亮点在于,通过改造一个detection方法很好的解决了一个multiple objects tracking问题。
转载至:探索笔记《Tracking without bells and whistles》_Cannol-CSDN博客