9

我在跟踪计算机视觉中的人。我有观察结果(斑点作为背景减法后斑点检测的输出),我想推断产生这些观察结果的对象。

我对一些卡尔曼滤波器代码感到困扰。我很清楚,但我的问题是多对象跟踪:我的问题是有时观察结果不完整/嘈杂。让我更好地解释一下 - 在一个有明确观察的测试中,我为每个人准备了 1 个 blob。卡尔曼滤波器可以帮助我将人的嘈杂路径平滑成平滑曲线。但是,这不是我的问题;问题是有时 blob 检测并不完美,我有 1 个人的 2 个 blob(例如,如果我要跟踪的人穿着背景颜色相同的 T 恤),或者有时我有 2 个 blob人(例如,如果 2 个人拥抱自己或彼此靠得太近)。

我搜索了一些理论,发现很多论文都在用粒子滤波器解决目标跟踪问题。所以我研究了贝叶斯滤波器,蒙特卡洛方法,重要性采样,它有点清楚(我没有关于概率的数学知识来理解一切,但想法很清楚)。

无论如何,我仍然不明白粒子过滤器如何帮助我检测 2 个 blob 对应于 1 个对象或 1 个 blob 对应于 2 个对象的情况。

有人可以帮助理解这个问题吗?

4

4 回答 4

7

好吧,首先,OpenCV VideoSurveillance项目是开始处理您的问题的好方法。

正如您所说,它执行检测响应的数据关联。此外,它通过简单的机制(初始化也基于帧阈值和删除)处理误报(如您所说的 2 个 blob 到 1 个对象)。另一个问题,正如您所提到的,大约 1 个 blob 对应于 2 个对象通常称为遮挡(在 VideoSurveillance 项目中使用了术语“碰撞”,但现在已经过时了)。VideoSurveillance 正在使用基于 3D 颜色直方图建模的粒子过滤器实现来解决这种情况。

简单解释:你如何根据他们的外表(他们的衣服)来区分两个不同的目标?您可以存储他们的颜色直方图并在以后的帧中使用它,对吗?但是,您如何进行搜索?您可以在下一帧中搜索所有可能的质心,或者使用散布在您认为对象所在区域周围的 200 个随机点。这 200 个点就是粒子。它们是如何工作的?他们比较他们所关注的区域并产生物体在那里的概率。距离越近,可能性就越大。最后,您总结所有可能性并找到“平均”质心。

简单来说,就是将每个目标的服装建模在概率函数内部,借助粒子滤波的思想,实现了近乎实时的计算。

最后,卡尔曼滤波器是一个预测器,它仅使用运动数据帮助跟踪器。它“过滤”极端运动行为,以防粒子过滤器结果变得比它应该的更疯狂。VideoSurveillance 也包括这一点。它与外观相得益彰,并且当同时使用两者时,跟踪器会更加复杂。

编辑:它对多目标跟踪有何用处?假设我们有一个带有数据关联的简单跟踪器,假设两个对象即将“碰撞”。跟踪器工作正常,直到对象被合并。在“合并”期间,跟踪器只看到一个对象。另一个丢失了。过了一会儿,它们分裂了,跟踪器将旧对象检测为新对象!我们如何解决这个问题?这次让我们从粒子过滤和外观建模重新开始:

  • 在合并之前,我们有 2 个对象相互靠近。物体是独立的,跟踪器可以清楚地看到它们。在此期间,外观建模器(一种“记住”对象外观的机制)正在学习这两个对象的外观。当然,随着帧的推移,两个对象的外观都略有变化。这就是为什么建模者有一个“学习率”,可以让他随着时间的推移调整他的“记忆”。

  • 在合并过程中,这一次,我们将跟踪器设置得更加耐心,不要像以前那样轻易杀死第二个对象。跟踪器让两个对象都处于活动状态。未遮挡的对象像以前一样被成功跟踪,另一个对象边界框尝试再次重新定位它的目标。如果我们幸运*,在很短的时间后,被遮挡(隐藏)的对象将重新出现(分裂),并且由于粒子,边界框将被吸引到那里。

*如前所述,被遮挡目标的边界框仍由建模者建模。如果被遮挡的人隐藏的时间过长,建模者会忘记旧对象并了解遮挡区域前面的内容(即未遮挡的对象),或者会像孤盒一样四处游荡(这称为漂移)。VideoSurveillance 没有这样的机制。一种简单的解决方案可能是在遮挡期间停止建模器适应。如何?当两个边界框重叠时。

于 2013-04-08T12:28:42.787 回答
3

卡尔曼滤波器或粒子滤波器无法处理数据关联问题(多个跟踪问题,其中多个检测必须与多个轨迹匹配)。

您需要的是联合概率数据关联过滤器 (JPDAF),它将以软方式将每个检测与轨道相关联(一个检测属于 X % 到第一个轨道,Y % 到第二个轨道......)。

底层跟踪算法可以是粒子滤波或卡尔曼滤波。

看一下 C# 中的 JPDAF 实现 - 为卡尔曼和粒子滤波器实现。此时的工作样本是用于卡尔曼和粒子滤波器的,JPDAF 稍后会出现 - 但它已经实现并准备就绪。

Accord.NET 扩展库: https ://github.com/dajuric/accord-net-extensions

于 2014-08-08T22:11:50.437 回答
2

我认为关键词是“碎片化”。示例论文

http://people.csail.mit.edu/cielbleu/pubs/BoseEtalCVPR07Multiclass.pdf

于 2013-04-08T20:27:52.817 回答
-2

在这种情况下,卡尔曼滤波器是一种背景减法器方法。它不能处理数据关联,只能处理高斯噪声。

最后,我重新实现了由对象检测激活的基于直方图的粒子滤波器。

如果有人对此感兴趣,请发表评论!

于 2014-08-09T10:04:31.623 回答