【深度学习:对象跟踪】对象跟踪完整指南 [教程]

在这里插入图片描述

【深度学习:对象跟踪】对象跟踪完整指南 [教程]

    • 什么是计算机视觉中的对象跟踪?
    • 对象跟踪有哪些不同类型?
      • 图像跟踪
      • 视频跟踪
      • 单目标跟踪
      • 多对象跟踪
    • 计算机视觉中对象跟踪的用例
      • 监测
      • 零售
      • 自动驾驶汽车
      • 医疗保健
    • 对象跟踪方法
      • 步骤 1:目标初始化
      • 第 2 步:外观建模
      • 第 3 步:运动估计
      • 第 4 步:目标定位
    • 对象跟踪的挑战
      • 背景杂波
      • 照度变化
      • 闭塞
      • 低分辨率
      • 比例变化
      • 目标形状的变化
      • 快动作
    • 用于目标跟踪的深度学习算法
      • 深度排序
      • MDNet
      • SiamMask
      • GOTURN
    • Encord 中的对象跟踪指南
      • 步骤 1:创建新项目
      • 第 2 步:添加数据集
      • 步骤 3:设置本体
      • 第 4 步:设置质量保证
      • 一切准备就绪!
    • 结论

视觉对象跟踪是计算机视觉中的一个重要领域。迄今为止,已经提出了许多具有有希望结果的跟踪算法,包括最近出现的基于深度学习的算法,并因其出色的跟踪性能而引起了许多人的兴趣。在我们深入研究一些最著名的对象跟踪深度学习算法之前,让我们首先了解对象学习及其在计算机视觉领域的重要性。

什么是计算机视觉中的对象跟踪?

对象跟踪涉及一种算法,用于跟踪目标对象的运动,并预测图像或视频中对象的位置和其他相关信息。

对象跟踪与对象检测不同(许多人会熟悉 YOLO 算法):对象检测仅限于单个帧或图像,并且仅在输入图像中存在感兴趣的对象时才有效,而对象跟踪是一种用于预测目标对象位置的技术, 通过跟踪物体的轨迹,无论它是否存在于图像或视频帧中。

对象跟踪算法可以根据任务和它们所训练的输入类型分为不同的类型。让我们来看看四种最常见的对象跟踪算法类型:

  • Image tracking 图像跟踪
  • Video tracking 视频跟踪
  • Single object tracking 单对象跟踪
  • Multiple object tracking 多对象跟踪

对象跟踪有哪些不同类型?

图像跟踪

图像跟踪的目的是检测给定输入中感兴趣的二维图像。然后,当图像在环境中移动时,图像会被持续跟踪。因此,影像追踪最适合具有鲜明对比度图像、不对称性、图案以及感兴趣影像与影像数据集中其他影像之间存在若干可识别差异的数据集。

视频跟踪

顾名思义,视频跟踪是跟踪视频中感兴趣对象的任务。它涉及按顺序分析视频帧,并通过预测和创建周围的边界框,将对象的过去位置与当前位置拼接在一起。它广泛用于交通监控、自动驾驶汽车和安全监控,因为它可以实时预测有关物体的信息。

图像和视频对象跟踪算法都可以根据它们所跟踪的对象数量进一步分类:

单目标跟踪

顾名思义,单对象跟踪涉及在视频或图像序列中一次仅跟踪一个目标。目标和边界框坐标在第一帧或图像中指定,并在后续帧和图像中识别和跟踪。

单对象跟踪算法应该能够跟踪给定的任何检测到的对象,甚至是没有训练可用分类模型的对象。

在这里插入图片描述

多对象跟踪

另一方面,多对象跟踪涉及跟踪多个对象。跟踪算法必须首先确定每帧中的对象数量,然后跟踪每个帧中每个对象的身份。

在这里插入图片描述
既然我们已经对物体追踪有了一个简单的了解,那就让我们来看看它的几个使用案例,然后深入了解物体追踪算法的各个组成部分。

计算机视觉中对象跟踪的用例

监测

实时物体跟踪算法可用于多种监控。它们既可用于跟踪活动,也可用于跟踪物体–例如,物体跟踪算法可用于检测某个监控地点内是否有动物,并在检测到入侵者时发出警报。在大流行病期间,物体跟踪算法经常被用于人群监控,即跟踪人们在公共场所是否保持社交距离。

零售

在零售业,物体追踪通常用于追踪顾客和产品–亚马逊 Go 商店就是一个例子,在那里,这些算法对于建立无收银员结账系统至关重要。多物体跟踪系统不仅会跟踪每个顾客,还会跟踪顾客拿起的每个物体,从而使算法能够实时确定顾客将哪些产品放入购物篮,然后在顾客穿过结账区时生成自动收据。这是计算机视觉任务如何为顾客带来切实利益(如更快结账和更流畅的体验)的一个实际例子。

自动驾驶汽车

人工智能驱动的物体检测和跟踪技术最广为人知的用途可能就是自动驾驶汽车。视觉物体跟踪在汽车中被用于多种用途,包括障碍物检测、行人检测、轨迹估计、避免碰撞、车速估计、交通监控和路线估计。人工智能是自动驾驶交通的核心,而图像分类和移动物体检测将对这一领域的未来产生巨大影响。

医疗保健

视觉物体跟踪技术在医疗保健行业的应用日益广泛。例如,制药公司使用单个和多个目标跟踪来实时监控药品生产,确保实时检测和处理任何紧急情况,如机器故障或药品生产线故障。

在重点介绍了物体跟踪的几个示例之后,让我们来深入了解其组成部分。

对象跟踪方法

步骤 1:目标初始化

对象跟踪的第一步是定义目标和感兴趣对象的数量。通过在目标对象周围绘制一个边界框来识别感兴趣的对象——在图像序列中,这通常位于第一张图像中,而在视频中则位于第一帧中。

然后,跟踪算法必须预测对象在剩余帧中的位置,同时识别对象。

此过程可以手动或自动完成。用户进行手动初始化,以使用边界框或省略号注释对象的位置。另一方面,对象检测器通常用于实现自动初始化。

第 2 步:外观建模

外观建模涉及对对象的视觉外观进行建模。当目标物体经历许多不同的场景时(例如不同的照明条件、角度或速度),物体的外观可能会有所不同,从而导致错误信息和算法失去对物体的跟踪。必须执行外观建模,以便建模算法能够捕获感兴趣对象移动时引入的不同变化和变形。

这种类型的优化主要由两个部分组成:

  • 视觉表示:使用视觉特征构建可靠的对象描述
  • 统计建模:使用统计学习技术为对象识别构建有效的数学模型

在这里插入图片描述

第 3 步:运动估计

一旦定义了对象并对其外观进行了建模,就可以利用运动估计来推断模型的预测能力,以准确预测对象的未来位置。这是一个动态状态估计问题,通常通过使用线性回归技术、卡尔曼滤波或粒子滤波等预测变量来完成。

第 4 步:目标定位

运动估计近似于最有可能找到物体的区域。一旦确定了物体的大致位置,就可以利用视觉模型来精确定位目标的确切位置——这是通过贪婪搜索或基于运动估计的最大后验估计来执行的。

对象跟踪的挑战

在构建对象跟踪算法时,会出现一些常见的挑战。在笔直的道路或简单的环境中跟踪物体很简单。在现实世界中,感兴趣的对象会受到许多因素的影响,使对象跟踪变得困难。在设计对象跟踪算法时,意识到这些常见挑战是解决这些问题的第一步。对象跟踪的一些常见挑战是:

背景杂波

当背景人口稠密时,很难提取特征、检测甚至跟踪目标对象,因为它会引入更多的冗余信息或噪声,使网络对重要特征的接受度降低。

在这里插入图片描述

照度变化

在现实生活中,感兴趣物体上的照明会随着物体的移动而发生巨大变化,这使得其定位更难跟踪和估计。

在这里插入图片描述

图 5:目标对象被阴影。

闭塞

当不同的物体和物体进入和离开画面时,目标物体的边界框通常会被遮挡,从而阻止算法识别和跟踪它,因为背景或前景会干扰它。当多个对象的边界框靠得太近时,通常会发生这种情况,从而导致算法混淆,并将跟踪对象标识为新对象。

在这里插入图片描述

低分辨率

根据分辨率的不同,训练数据集边界框内的像素数可能太低,无法使对象跟踪保持一致。

在这里插入图片描述

比例变化

比例也是一个因素,当第一帧和当前帧的边界框超出范围时,算法跟踪目标对象的能力可能会受到挑战。

在这里插入图片描述

目标形状的变化

在图像和帧中,感兴趣对象的形状可能会旋转、变暗、变形等。这可能是由于多种因素造成的,例如视点变化或对象比例的变化,并且通常会干扰算法的对象跟踪直觉。

在这里插入图片描述

快动作

特别是在跟踪快速移动的物体时,物体的快速运动通常会影响跨帧和图像准确跟踪物体的能力。

现在,我们已经讨论了构建对象跟踪算法所需的每个组件,以及在现实世界中使用该算法时面临的挑战。我们正在构建的算法是针对现实世界中的应用,因此,构建强大而高效的对象跟踪算法至关重要。深度学习算法已被证明可以在对象跟踪方面取得成功。以下是一些著名的算法:

用于目标跟踪的深度学习算法

对象跟踪已经存在了大约 20 年,并且已经开发了许多方法和想法来提高跟踪模型的准确性和效率。

一些方法中使用了传统或经典的机器学习算法,例如 k 最近邻或支持向量机——这些方法可以有效地预测目标对象,但它们需要专业人员提取重要和歧视性信息。

另一方面,深度学习算法会自行提取这些重要的特征和表示。因此,让我们来看看其中一些用作对象跟踪算法的深度学习算法:

深度排序

DeepSORT是一种众所周知的对象跟踪算法。它是简单在线实时跟踪器或 SORT(一种在线跟踪算法)的扩展。SORT 是一种使用卡尔曼滤波器根据物体过去位置估计物体位置的方法。卡尔曼滤波器对遮挡非常有效。

SORT 由三个组件组成:

  • 检测:首先,检测初始感兴趣的对象。
  • 预测:使用卡尔曼滤波器预测感兴趣对象的未来位置。卡尔曼滤波器预测了物体的新滤波器,需要对其进行优化。
  • 关联:需要优化已预测的目标对象的大致位置。这通常是通过使用匈牙利算法检测未来的位置来完成的。

深度学习算法用于改进SORT算法。它们允许 SORT 以更高的精度估计对象的位置,因为这些网络现在可以预测目标图像的特征。卷积神经网络 (CNN) 分类器本质上是在特定于任务的数据集上训练的,直到达到高精度。一旦实现,分类器将被移除,只留下从数据集中收集的特征。然后,SORT 算法使用这些提取的特征来跟踪目标对象。

DeepSORT的工作频率为20Hz,特征生成占用了近一半的推理时间。因此,在给定现代 GPU 的情况下,系统保持计算效率并实时运行。

在这里插入图片描述

MDNet

Multi-Domain Net 或 MDNet 是一种基于 CNN 的对象跟踪算法,它使用大规模数据进行训练。它被训练为使用带注释的视频来学习目标的共享表示,即它需要属于不同域的多个带注释的视频。它的目标是学习广泛的变化和空间关系。

MDNet 中有两个组件:

  • 预训练:这里需要深度学习网络来学习多域表示。该算法在多个带注释的视频上进行训练,以学习表示和空间特征。
  • 在线视觉跟踪:然后删除特定于域的图层,网络具有共享图层。这包括学习的表示。在推理过程中,会添加一个二元分类层,然后对其进行进一步训练或在线微调。

在这里插入图片描述

SiamMask

SiamMask的目标是提高全卷积暹罗网络的离线训练技术。暹罗网络是卷积神经网络,它使用两个输入来创建密集的空间特征表示:裁剪图像和较大的搜索图像。

暹罗网络只有一个输出。它比较两个输入图像的相似性,并确定两个图像是否包含相同的目标对象。通过使用二元分割任务来增加损失,这种方法对于对象跟踪算法特别有效。经过训练后,SiamMask 可以在线运行,只需要边界框初始化,提供与类无关的对象分割掩码,并以每秒 35 帧的速度旋转边界框。

在这里插入图片描述

GOTURN

大多数通用对象跟踪器都是从头开始在线训练的,尽管有大量视频可供离线训练。使用回归网络的通用对象跟踪(GOTURN)利用基于回归的神经网络来监控通用对象,以便通过对带注释的视频进行训练来提高其性能。

该跟踪算法采用基本的前馈网络,无需在线训练,允许其在测试期间以每秒 100 帧的速度运行。该算法从标记的视频和大量图像中学习,防止过度拟合。跟踪算法学习在通用对象在不同空间中移动时实时跟踪它们。

在这里插入图片描述
所有这些算法都是在公开可用的数据集上进行训练的,这凸显了标注良好的数据的重要性。这对于机器学习和计算机视觉领域的任何人来说都是一个关键话题,因为建立精确的物体跟踪算法首先要有一个强大的标注数据集。

帮助您高效注释视频和图像流数据集的平台通常还包括内置的自动物体跟踪等功能。这有助于减少构建良好数据集所花费的时间,并快速启动深度学习解决方案来进行物体跟踪。让我们来看看如何使用 Encord 为物体跟踪算法构建数据集:

Encord 中的对象跟踪指南

步骤 1:创建新项目

在主页上,点击 "新建项目 "开始,并添加项目名称和描述–这将有助于其他人在团队中共享数据集,或在将来引用数据集。

在这里插入图片描述

图 15

第 2 步:添加数据集

在这里,您可以使用现有的数据集,也可以添加新的数据集。我已经使用 "新数据集 "图标添加了数据集,因此我选择了它。

添加说明还有助于其他团队成员共享您创建和注释的数据集。作为一项安全措施,它还可以保存在私有云中。

在这里,我从 VOT2022 挑战赛数据集中选择并上传了 100 张汽车图片。

在这里插入图片描述

图 16

步骤 3:设置本体

你可以把本体看作是你对数据提出的问题。在这里,我在本体中添加了“汽车”作为对象——您可以在任何给定的图像或帧中根据需要跟踪任意数量的对象。要了解有关本体的更多信息,您可以阅读 Encord 的更多文档。

在这里插入图片描述

图 17

第 4 步:设置质量保证

在处理大型数据集时,此步骤至关重要,以确保在每个阶段都保持一定的质量。这可以手动或自动完成 - 更多详细信息在 Encord 的文档中。

在这里插入图片描述

图 18

在这里插入图片描述

图 19

一切准备就绪!

通过 4 个简单的步骤创建一个项目,您就可以开始(并自动化)标签了。如何自动执行视频注释博客文章将帮助您自动执行对象跟踪的标记过程。

结论

对象跟踪用于识别视频中的对象,并将其解释为一系列高精度轨迹。根本的困难是在计算效率和性能之间取得平衡,而深度学习算法提供了这种平衡。

在本文中,我们讨论了对象跟踪的一些实际用例,以及构建对象跟踪算法的一些主要挑战,以及这些深度学习算法如何为准确性和效率铺平道路。我们希望这篇文章能激励您构建高效的对象跟踪算法!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/695317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

客户端web开发工具

文章目录 安全网络Linter-->捕获代码错误-->eslint源代码控制-->Git代码格式化-->Prettier打包工具--Parcel--Webpack 转换--Babel开发后阶段测试工具配置工具其他 node,npm、yarnnode.js包管理器npmyarn https://developer.mozilla.org/zh-CN/docs/Lea…

安卓系统和iOS系统的手机备忘录同步数据方法

在这个智能手机时代,安卓与iOS系统犹如两位王者,各自拥有庞大的用户群体。有人钟情于安卓的开放与多样,有人偏爱iOS的流畅与稳定。甚至,有些人为了满足不同需求,同时使用着两个系统的手机。我就是其中的一员。 工作中…

攻防世界-web-Training-WWW-Robots

题目信息 In this little training challenge, you are going to learn about the Robots_exclusion_standard. The robots.txt file is used by web crawlers to check if they are allowed to crawl and index your website or only parts of it. Sometimes these files rev…

你正在读的书,暴露了你的阶层!丰富自己吧!——早读

明天大概率可以看鸽子了 引言Python代码第一篇 人民日报 全网等的图来了!当故宫“遇上”龙年初雪第二篇 人民日报【夜读】一个人最好的生活方式,是丰富自己第三篇(跳) 洞见 你正在读的书,暴露了你的阶层第四篇&#xf…

Maven私服搭建Nexus3

第一部分:仓库部署 下载地址:https://help.sonatype.com/en/download.html 备用下载链接,部分已经失效了 解压后会有两个文件夹: nexus-3.20.1-01 sonatype-work 访问地址配置路径 \nexus-3.20.1-01\bin\nexus.vmoptions -Xms1…

喀秋莎画中画怎么设置 喀秋莎画中画视频怎么导出 喀秋莎什么意思 camtasia studio下载

画中画视频,顾名思义,就是在一个视频中有两个画面,游戏解说、微课等类型的视频常常就以画中画的形式出现。作为一款专业的视频编辑软件,使用camtasia可以轻松地制作画中画视频并导出。接下来我将为大家介绍:喀秋莎画中…

每日coding 337打家劫舍III

337. 打家劫舍 III 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。 除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。…

【Linux】日志命令行练习(持续更新)

文章目录 前言环境情景1. 获取实时日志2. 关键字定位3. 关键字取并集4. 关键字取交集5. 关键字取差集6. 关键字实时日志捕获7. 关键词上下文打印8. 关键词滚动搜索9. 看最早的日志信息 前言 公司生产问题需要登录堡垒机排查。 没有日志平台的情况下,生产问题同样要…

【Linux】自主WEB服务器实现

自主web服务器实现 1️⃣构建TcpServer2️⃣构建HttpServer3️⃣构建HttpRequest和HttpResponseHttp请求报文格式Http相应报文读取、处理请求&构建响应读取请求中的一行读取请求中需要注意的点 4️⃣CGI模式判断是否需要用CGI处理请求构建任务&线程池管理 5️⃣实验结果…

《图解设计模式》笔记(二)交给子类

三、Template Method模式:将具体处理交给子类 示例程序类图 public static void main(String[] args) {// 生成一个持有H的CharDisplay类的实例AbstractDisplay d1 new CharDisplay(H);// 生成一个持有"Hello, world."的StringDisplay类的实例AbstractD…

C++ Linux多线程

1. C语言线程安全问题 1.1 线程安全问题 #include <stdio.h> #include <tinycthread.h> #include <io_utils.h>int count 0; int Counter(void*arg) {for(int i 0;i<100000;i){count;/** int temp count;* counttemp1;* return temp;* */}return 0; …

大模型训练流程(三)奖励模型

为什么需要奖励模型 因为指令微调后的模型输出可能不符合人类偏好&#xff0c;所以需要利用强化学习优化模型&#xff0c;而奖励模型是强化学习的关键一步&#xff0c;所以需要训练奖励模型。 1.模型输出可能不符合人类偏好 上一篇讲的SFT只是将预训练模型中的知识给引导出来…

Vue+SpringBoot打造大学兼职教师管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 学生教师管理3.3 课程管理模块3.4 授课管理模块3.5 课程考勤模块3.6 课程评价模块3.7 课程成绩模块3.8 可视化图表 四、免责说明 一、摘要 1.1 项目介绍 大学兼职教师管理系统&#xff0c;旨…

基于 QUIC 协议的 HTTP/3 正式发布!

近期&#xff0c;超文本传输协议新版本 HTTP/3 RFC 文档&#xff0c;已由互联网工程任务组&#xff08;IETF&#xff09;对外发布。HTTP/3 全称为 HTTP-over-QUIC&#xff0c;指在 QUIC&#xff08;Quick UDP Internet Connections, 快速 UDP 互联网连接&#xff09;上映射 HTT…

基于Java+小程序点餐系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

如何使用CanaryTokenScanner识别Microsoft Office文档中的Canary令牌和可疑URL

关于CanaryTokenScanner CanaryTokenScanner是一款功能强大的Canary令牌和可疑URL检测工具&#xff0c;该工具基于纯Python开发&#xff0c;可以帮助广大研究人员快速检测Microsoft Office和Zip压缩文件中的Canary令牌和可疑URL。 在网络安全领域中&#xff0c;保持警惕和主动…

Leo赠书活动-17期 《基础软件之路:企业级实践及开源之路》

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 赠书活动专栏 ✨特色专栏&#xff1a;…

【网站项目】167校园失物招领小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Day10_面向对象-抽象类-接口-课后练习-参考答案

文章目录 代码编程题第1题第2题第3题 代码编程题 第1题 知识点&#xff1a;抽象类语法点&#xff1a;继承&#xff0c;抽象类按步骤编写代码&#xff0c;效果如图所示&#xff1a; 编写步骤&#xff1a; 定义抽象类A&#xff0c;抽象类B继承A&#xff0c;普通类C继承BA类中&…

Java,SpringBoot项目中,Postman的测试方法。

目录 展示查询搜索 根据id展示数据 根据id删除数据 根据id更新数据 添加数据 展示查询搜索 // 根据姓名分页查询用户GetMapping("/getUsersByName")public IPage<User> getUsersByName(RequestParam(defaultValue "1") Long current,RequestPar…