发布时间:2023-05-11 11:00
目标检测和跟踪的区别在于对于运动中变化目标的跟踪能力。设想这样一个场景:孙悟空在飞行过程中完成了一次变化(这里假设他变成了一只鸟),但这个变化并不是像西游记拍摄中有烟雾特效完成的,而就是通过身体结构发生渐变来完成的,这种情况下,检测器应该会在后续的检测任务中失败,因为设计好的检测器只是为了检测目标孙悟空的存在,孙悟空变身之后已经不存在这个目标,检测器是不会有火眼金睛继续检测到变化后的孙悟空的。
但是,对于跟踪器就不一样了,跟踪目标,哪怕目标在跟踪过程中发生了巨大变化,这些都是跟踪器的本质能力。理想的跟踪器应该可以很好的跟上孙悟空渐变的整个过程,并且可以继续后面变身之后对鸟的跟踪。
现在所谓的目标跟踪方法都是基于检测的( tracking by detection )在很多人们设计的跟踪器的跟踪过程中,当目标出现遮挡或者运动出视野等情况时,直接使用检测器来对目标的位置进行重新检测。试想,如果目标在很长一段时间内一直出现被遮挡的状况,那么这一段时间内将会一直都是检测器在工作。理想的跟踪器应该不需要每一帧都暴力检测目标所在的位置,而是可以充分利用帧间信息,目标周围的环境信息,甚至根据周边环境推测得到的三维信息等,更加高效的确定目标所在的位置。理想的跟踪器应该可以对视频中的目标运动,周边环境有着更好的理解,这个理解不一定是和我们理解一致的语义理解,而是有助于跟踪任务的相关理解。
目标检测和跟踪的区别还应在于对于相同目标不同实例的跟踪能力。设想一个目标检测器,其被设计用来检测行人,如果将其应用到马路场景上,检测器将会检测到马路上的大量行人,但如何让他只检测一个人呢?这好像是不可能的,因为其任务已经被设计为检测行人,其检测结果并不违背其设计初衷,而结果却并不是人们想要的。但这时跟踪器就完全不一样了,跟踪器可以初始化为跟踪行人,但在给跟踪器指定初始跟踪行人后,它将可以在后续的过程中只跟踪指定的行人,做到“弱水三千,而我只取一瓢饮”。
比如在球场上我只想关注某一个球员、某几个球员的表现或是篮球的位置。
目标跟踪更多考虑的是对目标的表达,跟踪过程中对目标表示的更新,跟踪中对周围环境变化信息、对时空信息的利用等等。正因如此,跟踪任务才即可被看作是生成式任务,也可以被看作为判别式任务,既可以通过深度学习的方法来暴力解决,也可以通过传统统计学、机器学习的方法来解决优化。但无论哪种解决方案,现在都没有在跟踪任务上取得突破性的成功。但这也恰恰使得跟踪这一视觉任务成为测试众多技术的理想平台。
目标检测偏向于单帧下的物体定位识别,目标跟踪多帧之间的物体会有关联,重在跟踪和重识别,现在的跟踪算法有很大一部分是基于检测和滤波,目标检测会应用到目标跟踪中。
假设视频中有两辆车,实时目标检测可以检测到有两辆车,而目标跟踪需要区分出这辆车是这辆车,另一辆车是另一辆车(re-ID的目的也是完成类似的工作)。
简单来说:跟踪会比检测复杂一些.
检测:目的是找到(或者静态或者动态);
跟踪:目的是定位(动态)
二者的联系是:
(1) 跟踪是基于检测的,必须先定位目标,才能后续跟踪.
(2) 如果将动态的检测(例如视频序列检测)分割成一定时间段内的静态检测(每一帧),那么用检测是可以实现类似跟踪的效果(伪跟踪,因为其实还是每一帧做检测).
1.目标检测就是检测出一个图片或者一个视频中目标的位置(静态或者动态)如yolo检测目标
2.目标追踪是给视频中第一帧目标以及它的位置,然后跟踪这个目标,以及预测它的轨迹,(如果出现一些遮挡,也可以根据轨迹来跟踪这个目标,假如是yolo检测出的目标,有时候还会出现丢帧的情况,如果用了跟踪算法,那么即使丢帧了,也可以跟住目标而不丢失,而且如果使用yolo,虽然给定了目标的位置,但是如果同一类的目标的话,你知道很多的目标的坐标,但是很难求出它们的轨迹。
检测一般用到单帧的信息,主要是依据先验知识、或者显著等特性找到某些感兴趣的区域;
而跟踪是已有目标的位置,在后续帧中找到最佳匹配位置,更侧重目标的匹配上;
其实现在很多的跟踪算法是基于检测的,使得他们间联系更密切。
此外,当前目标跟踪领域也存在一些问题亟待解决:
部分表述及图示来源于知乎专栏--
文中部分观点及说法有混淆和不清晰之处,欢迎指正~
https://zhuanlan.zhihu.com/p/32826719
https://zhuanlan.zhihu.com/p/104228012?utm_source=wechat_session