opencv目标跟踪

需要openCV_contrib,从OpenCV3以后,这些常用的算法OpenCV的Release版本中并不存在,因为他们是存放在opencv_contrib目录下面的未稳定功能模块,所以如果我们想要使用这些功能,需要自己下载代码并且自行编译。

跟踪算法

需要注意跟踪和识别的区别,通常来说跟踪可以比识别快很多,且跟踪失败了可以找回来。

Opencv3.3算法种类是6种-BOOSTING, MIL, KCF, TLD, MEDIANFLOW ,GOTURN

BOOSTING

基于在线的AdaBoost, 这个分类器需要对对象的正、负例进行训练。用户提供的初始化框(或通过其它算法检测到对象,必须MOG2,KNN检测到小车)来作为对象的正例,并将边界框外的图像块作为背景(负类)

优点:没有。这个算法已经有10年的历史了,找不到一个很好的理由去使用它,特别是当其他基于类似原理的高级跟踪器(MIL, KCF)也可用的时候。
缺点:跟踪性能平庸。不知道什么时候跟踪失败。

MIL–Multiple Instance Learning

这个跟踪器基于前面两个跟踪器中提出的想法。该跟踪器在MIL跟踪器中使用的多个正样本具有较大的重叠区域。

优点:精度和速度都比MIL好,如果使用OpenCV 3.1和以上,建议在大多数应用程序中使用该算法。
缺点:还是完全遮挡

TLD

如果有一个视频序列,对象隐藏在另一个对象后面,这个跟踪器可能是一个不错的选择。

优点:在多帧的情况下,在遮挡的情况下工作最好。此外,该算法能很好的应对尺度变化。
缺点:大量的假阳性使得其几乎无法使用

MEDIANFLOW

经过测试中,发现这个跟踪器在小运动情况下表现最好。不像其他跟踪器,即使跟踪失败了还继续跟踪,这个跟踪器知道什么时候失败。

优点:跟踪失败报告,小运动下表现好
缺点:大运动,该算法失灵

GOTURN

在跟踪器类的所有跟踪算法中,这是唯一基于卷积神经网络(CNN)的算法。也是唯一一个使用离线训练的模型,因此它比其他跟踪器更快。从opencv文档可以看出该算法对视角变化、光照、变形都具有很好的鲁棒性,但是对于遮挡性能较差。

你可能会惊讶OpenCV竟然有八种不同的目标追踪工具,他们都可以运用到计算机视觉领域中。

这八种工具包括:

BOOSTING Tracker:和Haar cascades(AdaBoost)背后所用的机器学习算法相同,但是距其诞生已有十多年了。这一追踪器速度较慢,并且表现不好,但是作为元老还是有必要提及的。(最低支持OpenCV 3.0.0)

MIL Tracker:比上一个追踪器更精确,但是失败率比较高。(最低支持OpenCV 3.0.0)

KCF Tracker:比BOOSTING和MIL都快,但是在有遮挡的情况下表现不佳。(最低支持OpenCV 3.1.0)

CSRT Tracker:比KCF稍精确,但速度不如后者。(最低支持OpenCV 3.4.2)

MedianFlow Tracker:在报错方面表现得很好,但是对于快速跳动或快速移动的物体,模型会失效。(最低支持OpenCV 3.0.0)

TLD Tracker:我不确定是不是OpenCV和TLD有什么不兼容的问题,但是TLD的误报非常多,所以不推荐。(最低支持OpenCV 3.0.0)

MOSSE Tracker:速度真心快,但是不如CSRT和KCF的准确率那么高,如果追求速度选它准没错。(最低支持OpenCV 3.4.1)

GOTURN Tracker:这是OpenCV中唯一一深度学习为基础的目标检测器。它需要额外的模型才能运行,本文不详细讲解。(最低支持OpenCV 3.2.0)

我个人的建议:

如果追求高准确度,又能忍受慢一些的速度,那么就用CSRT

如果对准确度的要求不苛刻,想追求速度,那么就选KCF

纯粹想节省时间就用MOSSE

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×