• 计算机视觉中的对象跟踪(完整指南)


    计算机视觉中的对象跟踪(完整指南)

    目标跟踪是计算机视觉中的一项重要任务。 对象跟踪器是许多处理摄像机视频流的计算机视觉应用程序的组成部分。 在本文中,我们将讨论最先进的对象跟踪算法、不同的方法、应用程序和对象跟踪软件。
    如果您希望为商业项目开发带有对象跟踪的视频分析,请查看我们的企业计算机视觉平台 Viso Suite 。 全世界的大型组织都使用它来构建、部署和扩展具有深度学习的对象跟踪系统。 作为无代码平台,Viso 提供模块化构建块和可视化开发工具。

    特别是,本文将涵盖以下内容:

    • 什么是对象跟踪,它是如何使用的?
    • 视频跟踪和图像跟踪
    • 跟踪对象的挑战
    • 单目标和多目标跟踪
    • 你需要知道的目标跟踪算法
    • 最先进的方法(OpenCV 对象跟踪、Matlab 跟踪、MdNet 和 DeepSort 对象跟踪)

    什么是对象跟踪?

    对象跟踪是深度学习的一种应用,程序获取一组初始对象检测并为每个初始检测开发一个唯一标识,然后在检测到的对象在视频中的帧周围移动时跟踪它们。
    换句话说,对象跟踪是自动识别视频中的对象并将它们解释为一组高精度的轨迹的任务。
    通常,被跟踪的对象周围有一个指示,例如,跟随对象的周围正方形,向用户显示对象在屏幕上的位置。
    在这里插入图片描述

    对象跟踪的用途和类型

    对象跟踪用于涉及不同类型输入素材的各种用例。 无论预期输入是图像还是视频,还是实时视频还是预先录制的视频,都会影响用于创建对象跟踪应用程序的算法。
    输入的类型也会影响对象跟踪的类别、用例和应用。 在这里,我们将简要介绍几种流行的对象跟踪用途和类型,例如视频跟踪、视觉跟踪和图像跟踪。

    视频跟踪

    视频跟踪是对象跟踪的一种应用,其中移动对象位于视频信息中。 因此,视频跟踪系统能够处理实况、实时镜头以及录制的视频文件。
    用于执行视频跟踪任务的进程因目标视频输入类型而异。 当我们在本文后面比较批处理和在线跟踪方法时,将对此进行更深入的讨论。

    不同的视频跟踪应用程序在视频分析、安全、军事、交通和其他行业的场景理解中发挥着重要作用。 今天,广泛的实时计算机视觉和深度学习应用程序使用视频跟踪方法。 我建议您查看我们 最流行的计算机视觉应用程序 的广泛列表。

    视觉追踪

    视觉跟踪或视觉目标跟踪是计算机视觉中的一个研究课题,应用于大量的日常场景。 视觉跟踪的目标是估计在没有视频其余部分可用的情况下初始化的视觉目标的未来位置。

    图像追踪

    图像跟踪旨在检测给定输入中感兴趣的二维图像。 然后,当他们在设置中移动时,会持续跟踪该图像。 因此,图像跟踪 非常适合 具有高对比度图像(例如黑白)、不对称、少量图案以及感兴趣图像与图像集中其他图像之间存在多个可识别差异的数据集。
    图像跟踪依赖于计算机视觉在图像目标被预先确定后检测和增强图像。 探索我们关于 图像增强 的文章。

    物体跟踪相机

    现代对象跟踪方法可以应用于基本上任何摄像机的实时视频流。 因此,USB 摄像机或 IP 摄像机的视频馈送可用于执行对象跟踪,方法是将各个帧馈送到跟踪算法。 跳帧或并行处理是通过一个或多个摄像机的实时视频馈送来提高对象跟踪性能的常用方法。
    在这里插入图片描述

    是什么让对象跟踪变得困难

    对象跟踪的常见挑战和优势是什么? 主要挑战通常源于图像中的问题,这些问题使对象跟踪模型难以有效地对图像执行检测。
    在这里,我们将讨论跟踪对象任务中最常见的几个问题以及预防或处理这些挑战的方法。

    1. 训练和跟踪速度

    跟踪对象的算法不仅应该准确地执行检测和定位感兴趣的对象,而且还应该在尽可能少的时间内完成。 提高跟踪速度对于实时对象跟踪模型尤为重要。
    为了管理模型执行所需的时间,用于创建对象跟踪模型的算法需要定制或谨慎选择。 Fast R-CNN 和 Faster R-CNN 可用于提高最常见的 R-CNN 方法的速度。
    由于 CNN(卷积神经网络) 通常用于对象检测,因此 CNN 修改可以成为更快的对象跟踪模型和较慢的对象跟踪模型之间的区别因素。 除了检测框架之外的设计选择也会影响目标检测模型的速度和准确性之间的平衡。
    在这里插入图片描述

    2. 背景干扰

    输入图像或用于训练对象跟踪模型的图像的背景也会影响模型的准确性。 要跟踪的对象的繁忙背景可能会使小对象更难被检测到。
    对于模糊或单一颜色的背景,人工智能系统更容易检测和跟踪对象。 太忙、与对象具有相同颜色或太杂乱的背景会使跟踪小对象或浅色对象的结果变得困难。

    3. 多空间尺度

    要跟踪的对象可以有各种大小和纵横比。 这些比率可能会混淆对象跟踪算法,使其认为对象的缩放比例大于或小于其实际大小。
    尺寸误解会对检测或检测速度产生负面影响。
    为了解决空间尺度变化的问题,程序员可以实现特征图、锚框、图像金字塔和特征金字塔等技术。

    • 锚框 : 锚框 是具有指定高度和宽度的边界框的汇编。 这些框旨在获取感兴趣对象的比例和纵横比。
      它们是根据给定数据集中对象的平均对象大小选择的。 锚框允许检测各种类型的对象, 而无需 在定位期间交替边界框坐标。
    • 特征图 :特征图是当 卷积神经网络 (CNN) 用于捕获对输入图像应用过滤器的结果时层的输出图像。 特征图 可以更深入地了解 CNN 检测到的特征。 单次检测器必须考虑多尺度问题,因为它们只需通过 CNN 框架即可检测对象。 这将发生在小图像的检测减少中。 小图像 在池化层的下采样 过程中可能会丢失信号,这是当 CNN 在这些较小图像的一个低子集上训练时。 即使对象的数量相同,也会发生下采样,因为 CNN
      无法检测到小图像并将它们计入样本大小。 为了防止这种情况,可以使用多个特征图来允许单次检测器在 CNN 层中寻找对象——包括具有更高分辨率图像的早期层。 单次检测器 (SSD) 仍然不是小物体跟踪的理想选择,因为它们在检测小物体时遇到困难。
      紧密的分组可以证明是特别困难的。 例如,使用单次检测器很难跟踪一群群动物的头顶无人机拍摄。
    • 图像和特征金字塔表示 :特征金字塔,因其 金字塔结构 也称为多级特征图,是使用对象跟踪数据集时对象尺度变化的初步解决方案。
      因此,特征金字塔以自上而下的表示形式对有关不同大小对象的最有用信息进行建模,因此更容易检测不同大小的对象。
      图像金字塔和特征金字塔等策略对于防止缩放问题很有用。 特征金字塔基于多尺度特征图,其使用的计算能量比图像金字塔少。
      这是因为图像金字塔由一个输入图像的一组调整大小的版本组成,然后在测试时发送到检测器。
      在这里插入图片描述

    4. 遮挡

    遮挡有很多定义。 在医学上,闭塞是由于血管汇合而造成的“血管阻塞”; 在深度学习中,它具有类似的含义。
    在使用深度学习的 AI 视觉任务中,当多个对象靠得太近(合并)时会发生遮挡。 这会导致 对象跟踪系统出现问题,因为被遮挡的对象被视为一个对象,或者只是不正确地跟踪对象。 系统可能会感到困惑并将最初跟踪的对象识别为新对象。
    遮挡敏感性 通过允许用户了解图像的哪些部分对对象跟踪系统进行分类最重要来防止这种错误识别。 遮挡敏感度是指衡量网络对不同数据区域中遮挡的敏感度。 它是使用原始数据集的小子集完成的。

    对象跟踪级别

    对象跟踪由多个子类型组成,因为它的应用非常广泛。 对象跟踪的级别因被跟踪对象的数量而异。

    多目标跟踪 (MOT)

    多对象跟踪被定义为自动识别视频中的多个对象并将它们表示为一组高精度的轨迹的问题。
    因此,多目标跟踪旨在跟踪数字图像中的多个目标。 它也称为多目标跟踪,因为它试图分析视频以识别属于多个预定类别的对象(“目标”)
    多目标跟踪在自动驾驶中非常重要,用于检测和预测行人或其他车辆的行为。 因此,这些算法通常在 KITTI 跟踪测试中进行基准测试。 KITTI 是一个具有挑战性的现实世界计算机视觉基准和图像数据集,广泛用于自动驾驶。
    2022 年,性能最佳的多目标跟踪算法是 DEFT(88.95 MOTA,Multiple Object Tracking Accuracy)、CenterTrack(89.44 MOTA)和 SRK ODESA (90.03 MOTA)。

    多目标跟踪 (MOT) 与一般目标检测

    对象检测通常会产生一组边界框作为 输出 。 多目标跟踪通常几乎没有关于目标外观和数量的事先培训。 使用它们的高度、宽度、坐标和其他参数来识别边界框。
    同时,MOT 算法还为每个边界框分配了一个目标 ID。 此目标 ID 称为检测,它很重要,因为它允许模型区分类中的对象。
    例如,MOT 算法不是将照片中存在多辆汽车的所有汽车都识别为“汽车”,而是尝试将不同的汽车识别为彼此不同,而不是所有汽车都属于“汽车”标签。 有关此隐喻的直观表示,请参阅下图。

    在这里插入图片描述

    单个对象跟踪

    单对象跟踪 (SOT) 边界框 根据输入图像的第一帧创建提供给跟踪器的 。 单个对象跟踪有时也称为视觉对象跟踪。
    SOT 意味着跟踪一个单一的对象,即使在涉及其他对象的环境中也是如此。 单个对象跟踪器旨在专注于一个给定的对象,而不是多个。
    在第一帧中确定感兴趣的对象,这是第一次初始化要跟踪的对象。 然后跟踪器的任务是在所有其他给定帧中定位该唯一目标。
    SOT 属于免检测跟踪类别,这意味着它需要在第一帧中手动初始化固定数量的对象。 然后将这些对象定位在后续帧中。 免检测跟踪的一个 缺点
    是它无法处理新对象出现在中间帧中的场景。 SOT 模型应该能够跟踪任何给定的对象。

    对象跟踪算法

    多目标跟踪(MOT)算法介绍

    大多数多目标跟踪算法都包含一种称为检测跟踪的方法。
    逐检测跟踪方法涉及一个独立的检测器,该检测器应用于所有图像帧以获得可能的检测,然后是一个跟踪器,该跟踪器在检测集上运行。 因此,跟踪器尝试执行
    数据关联 (例如,链接检测以获得完整的轨迹)。 从视频输入中提取的检测通过连接它们并将相同的 ID 分配给包含相同目标的边界框来指导跟踪过程。

    • 批量方法: 批量跟踪算法在推断某个帧中对象的身份时使用来自未来视频帧的信息。 批量跟踪算法使用关于对象的非本地信息。
      这种方法可以提高跟踪质量。
    • 在线方法: 虽然批量跟踪算法访问未来帧,但在线跟踪算法仅使用当前和过去的信息来得出关于某个帧的结论。

    用于执行 MOT 的在线跟踪方法通常比批处理方法执行 得更差 由于在线方法受限于当前框架的限制, 。
    但是,由于用例的原因,这种方法有时是必要的。
    例如,需要跟踪对象的实时问题,如导航或自动驾驶,无法访问未来的视频帧,这就是为什么在线跟踪方法仍然是一个可行的选择。

    多目标跟踪算法阶段

    大多数多目标跟踪算法都包含一组基本步骤,这些步骤随着算法的变化而保持不变。 大多数所谓的多目标跟踪算法共享以下阶段:

    • 阶段#1:指定或检测: 在指定阶段记录并突出显示感兴趣的目标。 该算法分析输入帧以识别属于目标类的对象。
      作为算法的一部分,边界框用于执行检测。
    • 阶段#2:运动: 特征提取算法分析检测以提取外观和交互特征。 在大多数情况下,运动预测器用于预测每个跟踪目标的后续位置。
    • 阶段#3:召回: 特征预测用于计算检测对之间的相似度分数。 然后使用这些分数来关联属于同一目标的检测。 ID 分配给相似的检测,不同的 ID 应用于不属于对的检测。

    一些对象跟踪模型是使用这些步骤彼此分开创建的,而另一些则结合并结合使用这些步骤。
    算法处理中的这些差异创建了独特的模型,其中一些模型比其他模型更准确。

    流行的对象跟踪算法

    卷积神经网络 (CNN) 仍然是用于对象跟踪的最常用和最可靠的网络。 但是,也正在探索多种架构和算法。 这些算法包括 循环神经网络 (RNN) 、自动编码器 (AE)、 生成对抗网络 (GAN) 、连体神经网络 (SNN) 和自定义神经网络。
    尽管 对象检测器 如果逐帧应用 可以用于跟踪对象,但这是一种计算限制,因此是执行对象跟踪的一种相当低效的方法。
    相反,对象检测应该应用一次,然后对象跟踪器可以处理第一帧之后的每一帧。 这是执行对象跟踪的计算更有效且更简单的过程。

    1. OpenCV 对象跟踪

    OpenCV 对象跟踪是一种流行的方法,因为 OpenCV 内置了许多算法,专门针对对象或运动跟踪的需求和目标进行了优化。
    特定 的Open CV 对象跟踪器 包括 BOOSTING、MIL、KCF、CSRT、MedianFlow、TLD、MOSSE 和 GOTURN
    跟踪器。 这些跟踪器中的每一个都最适合不同的目标。 例如,当用户需要更高的对象跟踪精度并且可以容忍较慢的 FPS 吞吐量时,CSRT 是最好的。
    OpenCV 对象跟踪算法的选择取决于该特定跟踪器的优缺点和优点:
    与 CSRT 相比,KCF 跟踪器不如 CSRT 准确,但提供了相对较高的 FPS。
    MOSSE 跟踪器非常快,但其准确性甚至低于使用 KCF 跟踪。 不过,如果您正在寻找最快的目标跟踪 OpenCV 方法,MOSSE 是一个不错的选择。
    GOTURN 跟踪器是 进行基于深度学习的对象跟踪 使用 OpenCV 的唯一检测器。 GOTURN 的原始实现是在 Caffe
    中,但它已被移植到 OpenCV 跟踪 API。

    2. 深度排序

    DeepSORT 是一个很好的目标跟踪算法选择,是使用最广泛的目标跟踪框架之一。 外观信息 集成 在算法中,极大地提高了 DeepSORT
    的性能。 由于集成,对象可以通过更长的遮挡时间进行跟踪——减少了身份切换的数量。
    有关 DeepSORT 内部工作原理的完整信息以及 DeepSORT 与其他算法之间的具体算法差异,我们建议阅读 Anushka Dhiman 的
    文章 “在 TensorFlow 2 中使用 DeepSORT 进行对象跟踪”。

    3. 对象跟踪 MATLAB

    MATLAB 是一个数值计算平台,与 DeepSORT 和 OpenCV 相比,它的实现方式有所不同,但它仍然是视觉跟踪任务的不错选择。
    MATLAB 中的计算机视觉工具箱提供 视频跟踪算法 ,例如连续自适应均值偏移 (CAMShift) 和 Kanade-Lucas-Tomasi(KLT),用于跟踪单个对象或用作更复杂跟踪系统中的构建块。

    4.MDNet

    MDNet 是一种快速准确的基于 CNN 的视觉跟踪算法,其灵感来自 R-CNN 对象检测网络。 它通过对候选区域进行采样并将它们传递给 CNN
    来发挥作用。 CNN 通常在庞大的数据集上进行预训练,并在输入视频的第一帧进行细化。
    因此,MDNet 对于实时对象跟踪用例最有用。 然而,虽然它 。 在速度和空间方面的计算复杂度很高,但它仍然是一个准确的选择
    MDNet 的计算量大的方面可以通过执行 RoI(感兴趣区域)池化来最小化,然而,这是一种避免重复观察和加速推理的相对有效的方法。

    下一步是什么?

    对象跟踪用于识别视频中的对象并将它们解释为一组高精度的轨迹。 因此,主要挑战是在计算效率和性能之间取得平衡。
    查看我们的文章 人数统计系统:如何在不到 10 分钟的时间内创建自己的系统 ,我们在实时视频片段中检测和跟踪人员。
    如果您喜欢阅读本文并想阅读相关主题,请查看以下文章:

    • 什么是模式识别? 温柔的介绍
    • 什么是深度学习? 易于理解的指南
    • 阅读有关 卷积神经网络 (CNN)的更多信息
    • 查看 您需要了解的前 5 个深度学习框架

    实施对象跟踪

    在 viso.ai,我们为企业提供领先的 AI 视觉平台,以开发深度学习对象跟踪应用程序,并通过一个端到端解决方案将它们部署到生产中。 Viso Suite 为 AI 视觉开发提供了一套集成的无代码和低代码工具。 下一代技术可帮助 零售 、 智慧城市 、 医疗保健 和 农业 等行业的行业领导者提供真实世界的对象跟踪系统。

    reference

    @article{Klingler2022Aug,
    author = {Klingler, N.},
    title = {{Object Tracking in Computer Vision (Complete Guide) - viso.ai}},
    journaltitle = {Viso},
    year = {2022},
    month = aug,
    url = {https://viso.ai/deep-learning/object-tracking},
    abstract = {{Object tracking in deep learning for single and multiple object tracking. The most popular algorithms and tools to use in 2022.}}
    }

  • 相关阅读:
    文档管理是什么?都有哪些?
    第二十章《Java Swing》第5节:常用组件
    图扑数字孪生屋顶光伏,推进光伏建筑一体化监管
    “KeyarchOS:国产Linux新星的崛起与创新之路“
    概率 | 考研 —— 复习知识点及方法 大总结
    音频基础学习——声音的本质、术语与特性
    JavaWeb项目(四)
    11.物联网lwip,网卡原理
    Linux Java环境变量设置教程
    Windows也能拥有好用的命令行吗?Powershell+Terminal折腾记录(v1.0版本)
  • 原文地址:https://blog.csdn.net/orDream/article/details/127770499