kcf算法中cos_window是什么意思_工程实践中,目标检测为何要加目标追踪?

上一篇文章提到了如何实现目标检测工程落地的几个重要环节,一个是神经网络模型的训练,核心在于调参,针对不同对象训练出精度和速度较高的模型;另一个环节是将模型移植到嵌入式开发板中,核心在于函数集成,难点有相机图像的处理、C++接口函数的调用,输出接口的处理,编译也是较为麻烦的事情,添加开发板中所需的链接库,CMakelists文件编写等。这里仍然安利用Nvidia的开发板,界面还是友好些,与Pc端的编译环境差别不是很大,换成车载的控制器模块,所需的编译链接库就比较麻烦了,这个编译、链接有一次深刻的体验,感觉还是很酸爽的。

回归到本篇文章的重点,我们知道目标神经网络训练出的模型(这里先指2d检测),2d检测网络回归出的是一个2d检测框,输出内容有:[image_id, conf, label, xmin, ymin, xmax, ymax],image_id:图像的帧;conf:检测的置信度;label:检测物体的类别;xmin,ymin:检测框左上角的像素坐标归一化值;xmax,ymax:检测框右下角的像素坐标归一化值;
可以看到这些信息只能给出被检测物体在图像中的像素信息(定位)与类别信息(分类),在实际工程中,这些信息是远远不够的,比如本车前方检测到了有行人通过,此时应该及时刹车,刹车的前提是需要知道人与车之间的距离信息,所以检测加测距是分不开的,这样的感知才有意义;同样,实际检测过程中,外界环境复杂(光照、遮挡等)、相机会抖动等多因素影响,仅依赖检测的结果,检测框是很不稳定的,这里展示仅有检测和追踪的视频结果的对比:

3170f3d8e8238575fb4e77e275b4d333.png
仅有目标检测视频结果https://www.zhihu.com/video/1125741340193050624
71b5c003ac2b610b01ab1f42e3cd22cc.png
带有追踪后处理的检测视频结果https://www.zhihu.com/video/1125741502307233792

可以看到,加入追踪后的检测框极其稳定,输出结果更平滑,几乎不存在抖动,同时还给出了不同物体的label,和同一类型物体的不同的id信息,既对不同物体做了区分,又对同一类型物体做了区分,即实现了多目标追踪;通过对轨迹特征的自动分析和提取,弥补视觉目标检测的不足,有效的去除错误的检测,增加遗漏的检测,为进一步的行为分析提供基础

多目标追踪(Multi-object Tracking, MOT)有两种思路:一种是基于检测和匹配的方法,即通过目标检测结合帧间的数据关联来实现;基本思路是基于常规的目标检测算法(ssd/yolo/faster rcnn),将每一帧的目标检测出来,然后使用KM等匹配算法将相邻帧之间检测到的目标进行关联,得到每个特定目标的运动轨迹;最重要的方法是带权图模型。这里又分为离线跟踪算法和在线跟踪算法,离线跟踪算法主要是使用每一帧检测到的目标构成图的结点基于运动、外观等参考量作为边的费用或权值(相似性度量),构造一个全局图结构,求解最短路径、最小费用流等得到最优结果;实时跟踪则直接使用KM算法求解相邻两帧的最优匹配。这种方法的核心主要是目标检测性能的好坏,帧间的匹配算法几乎是固定的,影响不大,目标检测器性能越好,最终的追踪输出效果也会更好。数据关联和目标检测是这个算法的核心。

887e4ccf8036d2e186be7d76c78d31e7.png
检测追踪匹配算法框架

第二种是基于单目标跟踪器的目标跟踪;因为多目标追踪相当于同时追踪多个目标,可以为每个目标分配一个跟踪器(KCF),然后间接使用匹配算法来修正那些跟踪失败或新出现的目标;这种方法很明显的劣势在于“吃硬件”,需要较高的计算力资源,工程中应用难度较大。当然还有基于神经网络的多目标跟踪算法,(基于YOLOV3和Deep_Sort实现的实时多人追踪)。
这里提供一些参考链接:
https://blog.csdn.net/zziahgf/article/details/85344859https://blog.csdn.net/xiao__run/article/details/84374959

具体的一些算法上文提到了,KM匹配算法、KCF(核相关滤波算法)、Deep-sort;针对自己的需要,可以有选择性的选择某类算法。

最后复盘总结一下,以百度Apollo3.5的感知框架图做说明:

48d0ae7deecbe9518e9102ef66c7eb81.png

我们这里主要关注相机视觉感知的部分,重点在于标红框的部分,跟上一篇文章提到的图像预处理-->网络推理-->输出检测结果,可以看到在检测任务中,还需要加入深度信息-->多目标跟踪的后处理过程,这样最后的结果才是完善的。

下面这个视频较大,建议用wifi浏览,

f524a9dbe28ab6df4b994b936a53cfb7.png
城市复杂路况下的检测追踪https://www.zhihu.com/video/1125808763340414976

这里展示的是对交通标识类小物体的检测追踪,要检测追踪车辆和行人,训练对于车辆行人相应的模型即可。

总结一下,目前主流的多目标追踪算法为分三类:

1.以匈牙利、KM匹配的后端追踪优化算法。(代表性的应用有SORT、DEEP-SORT),这类算法特点在于能达到实时性,但依赖于检测算法效果要好,特征区分要好,这样追踪效果会好,id切换少。相关论文和代码如下:

  • DeepSort : Wojke, Nicolai and Bewley, Alex and Paulus, Dietrich "Simple Online and Realtime Tracking with a Deep Association Metric" [paper] [code] In ICIP 2017
  • Sort : Bewley, Alex and Ge, Zongyuan and Ott, Lionel and Ramos, Fabio and Upcroft, Ben "Simple Online and Realtime Tracking"[paper] [code] In ICIP 2016.

2. 基于多线程的单目标跟踪器的多目标追踪算法(代表性的算法有KCF、LEDS),这类算法特点是 跟踪效果会很好,毕竟为每一类物体都单独分配了一个跟踪器。但该算法对目标尺度变化要求较大,参数调试需要合理,同时该算法极耗cpu资源,实时性不高。

3. 基于深度学习的多目标跟踪算法。现阶段end-to-end的算法还不多,大多处于实验室刷榜阶段,有进一步落地应用的及时更新。相关论文和代码如下:

列个提纲,近期会更新多目标跟踪的内容,敬请期待~

各位看官收藏的同时,顺便点个赞吧

ヾ(≧∪≦*)ノ〃

完!

未经授权,请勿转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值