【问题标题】:How to track Fast Moving Objects?如何跟踪快速移动的物体?
【发布时间】:2020-06-20 21:19:08
【问题描述】:

我正在尝试创建一个能够跟踪视频/相机源中快速移动的对象的应用程序,但是还没有找到任何足够好的 CV/DL 解决方案。你能推荐任何计算机视觉解决方案来跟踪普通笔记本电脑和网络摄像头上快速移动的物体吗?一个演示应用程序将是理想的。

例如看这个视频,其中跟踪是在硬件中完成的(我正在寻找软件解决方案):https://www.youtube.com/watch?v=qn5YQVvW-hQ

【问题讨论】:

    标签: opencv deep-learning


    【解决方案1】:

    跟踪问题很复杂。它也更多地属于控制系统领域,而不是计算机视觉。更多地了解您的情况也会有所帮助,因为所选方法的性能很大程度上取决于您的问题限制。您对实时跟踪感兴趣吗?您是否正在尝试重建现有轨迹?是否有多个目标?只有一个?目标的物理特性(即速度、方向、加速度)是否恒定?

    最基本的跟踪方法之一是通过线性动态系统 (LDS) 描述实现的,具体而言,是离散实现,因为我们正在处理离散的信息帧。这种方法纯粹基于物理学,其预测非常灵敏。根据您的应用程序,错误率可以接受……也可以不接受。

    卡尔曼滤波器是一个更强大的解决方案,当需要跟踪时,它几乎是首选答案。它基于模型生命周期内迄今为止获得的所有测量值来实现预测。它主要适用于基于常数的测量(速度和加速度),尽管它可以扩展到处理非常量模型。如果您正在处理的目标的速度不会发生剧烈变化,那么这就是您(可能)应该实现的。

    很抱歉,我无法为您提供更多信息,但该主题相当广泛,而且诚然,细节超出了我的专业领域。希望这些信息能为您提供一些寻找解决方案的背景信息。

    【讨论】:

      【解决方案2】:

      目标跟踪是一个非常困难的问题。在目标跟踪中,您将遇到两个主要问题:运动不确定性问题和原点不确定性问题。第一个是指您对对象运动进行建模的方式,以便您可以预测其未来状态,第二个是指数据关联的问题(什么测量对应什么轨道,文献中充斥着scientific这种方式问题可以解决)。

      在您想出解决问题的方法之前,您必须自己回答一些关于您要解决的跟踪问题的问题。例如:您要跟踪的值是什么(这将定义您的状态向量),这些值如何相互关联,您是尝试执行单个对象跟踪还是多个对象跟踪,对象如何移动(执行它们具有相对恒定的加速度或速度)与否,物体是否会转弯,物体是否也可以被遮挡等等。

      卡尔曼滤波器是预测系统下一个状态的好解决方案(一旦您确定了流程模型)。卡尔曼滤波器的深度学习替代方案是所谓的Deep Kalman Filter,它本质上用于做同样的事情。如果您的过程或测量模型不是线性的,您必须在预测下一个状态之前对其进行线性化。处理非线性过程或测量模型的一些解决方案是扩展卡尔曼滤波器 (EKF) 或Unscented Kalman Filter (UKF)。

      现在与快速移动的对象相关,您可以使用一个更大的协方差矩阵,因为如果对象快速移动,它们可以移动得更多,因此正确关联的搜索空间必须更大一些。此外,您可以使用多个运动模型,以防您的运动模型仅满足一种模型。 如果出现遮挡,我会留给您this 堆栈溢出线程,我已经给出了一个答案,其中涵盖了有关跟踪情况下的遮挡处理的更多详细信息。我添加了一些参考资料供您阅读。如果您想收到有关解决方案的更多信息(例如,您应该根据相机帧速率定义快速移动的对象),您将必须在您的问题中提供更多详细信息。

      我个人认为跟踪问题没有灵丹妙药的解决方案,我更愿意为我要解决的问题量身定制解决方案。

      【讨论】:

        【解决方案3】:

        跟踪快速移动物体 (FMO) 的问题是计算机视觉领域的一个已知研究课题。 FMO 被定义为在一个视频帧中移动的距离大于其大小的对象。已经提出的解决方案使用经典的图像处理和能量最小化来建立它们的轨迹和清晰的外观。

        如果您需要演示应用程序,我建议您使用这个 GitHub 存储库:https://github.com/rozumden/fmo-cpp-demo。该演示使用 OpenCV/C++ 编写并实时运行。作者还提供了一个移动应用程序版本,该版本仍处于测试模式。使用此演示应用程序,您可以实时跟踪任何快速移动的对象,甚至无需提供对象模型。但是,如果您以真实世界单位提供对象大小,该应用还可以估计对象速度。

        这里开源了一个更复杂的算法:https://github.com/rozumden/deblatting_python,用 Python 和 PyTorch 编写以加快速度。该存储库包含一个解决去污(去模糊和消光)问题的解决方案,这正是当快速移动对象出现在摄像机前时会发生的情况。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多