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

news2024/11/18 2:42:33

在这里插入图片描述

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

    • 什么是计算机视觉中的对象跟踪?
    • 对象跟踪有哪些不同类型?
      • 图像跟踪
      • 视频跟踪
      • 单目标跟踪
      • 多对象跟踪
    • 计算机视觉中对象跟踪的用例
      • 监测
      • 零售
      • 自动驾驶汽车
      • 医疗保健
    • 对象跟踪方法
      • 步骤 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.coloradmin.cn/o/1462458.html

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

相关文章

Flink双流(join)

一、介绍 Join大体分类只有两种:Window Join和Interval Join Window Join有可以根据Window的类型细分出3种:Tumbling(滚动) Window Join、Sliding(滑动) Window Join、Session(会话) Widnow Join。 🌸Window 类型的join都是利用window的机制…

mac 安装H3C iNode + accessClient mac版

一、下载安装 官网下载地址 https://www.h3c.com/cn/Service/Document_Software/Software_Download/IP_Management/ 可以使用文末参考博文中的账号 yx800 密码 01230123登录下载 选择版本 下载 下载 H3C_iNode_PC_7.3_E0626.zip 文件后,解压下载到的PC端压缩包…

linux单机巡检脚本并发送邮箱的巡检报告

#!/bin/bash # Author: HanWei # Date: 2020-03-16 09:56:57 # Last Modified by: HanWei # Last Modified time: 2020-03-16 11:06:31 # E-mail: han_wei_95163.com #!/bin/bash #安装mail yum -y install mailx#主机信息每日巡检IPADDR$(ifconfig eth0|grep inet addr|aw…

2023数据要素市场十大关键词

2023数据要素市场十大关键词 导读 2023年即将过去。一年之前,《中共中央国务院关于构建数据基础制度更好发挥数据要素作用的意见》(简称“数据二十条”)正式对外发布,为数据要素市场的建设举旗定向。 图片 2023年是“数据二十条…

python自动化接口测试

前几天,同组姐妹说想要对接口那些异常值进行测试,能否有自动化测试的方法。仔细想了一下,工具还挺多,大概分析了一下: 1、soapui:可以对接口参数进行异常值参数化,可以加断言,一般我们会加http…

Zabbix 6.2.1 安装

目录 1、监控介绍 监控的重要性 网站的可用性 监控范畴 如何监控 2、Zabbix 介绍 zabbix 简介 zabbix 主要功能 zabbix 监控范畴 Zabbix 监控组件 zabbix 常见进程 zabbix agentd 工作模式 zabbix 环境监控中概念 3、搭建LNMP 拓扑规划 安装MySQL 安装 Nginx …

【Vulkan Tutorials 01】【环境搭建】三角形例子

Development Environment(开发环境) 1. 安装Vulkan SDK 官网 2. 安装cmake和minGW 2.1 cmake 官网 双击可执行文件,然后直接安装,注意环境变量选择设置,否则需要自己操作。 2.2 minGW 官网 下载如下图所示&am…

Qt应用-天气预报实例

本文讲解Qt实现天气预报实例。 实现的功能 网络实时获取和显示6天的天气参数并绘制温度趋势曲线; 测试当前网络连接情况; 获得当前的IP地址的行政位置信息; 设计界面如下: 创建保存天气数据的类 #ifndef WEATHERDATA_H #define WEATHERDATA_H #include <QString>…

如何使用ArcGIS Pro生成等高线

无论在制图还是规划中&#xff0c;经常会使用到等高线&#xff0c;大多数情况下&#xff0c;从网上获取的高程数据都是DEM文件&#xff0c;我们可以通过ArcGIS Pro来生成等高线&#xff0c;这里为大家介绍一下生成方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的…

【转载】企业资产收集与脆弱性检查工具

简介 云图极速版是针对拥有攻击面管理需求的用户打造的 SaaS 应用&#xff0c;致力于协助用户管理互联网资产攻击面的 SaaS 化订阅服务产品。可实现对备案域名、子域名、IP、端口、服务、网站、漏洞、安全风险等场景进行周期性监控&#xff0c;支持多维度分析攻击面。利用可视化…

下一代自动化爬虫神器--playwright,所见即所得,配合逆向不要太香!!!

文章目录 1.Playwright介绍2.与 Selenium 和 pyppeteer 相比&#xff0c;Playwright 具有以下几个区别和优势3.在爬虫中使用 Playwright 的好处4.环境安装5.屏幕录制6.保留记录cookie信息7.playwright代码编写详解1.第一个Playwright脚本&#xff08;1&#xff09;同步模式&…

小米标准模组+MCU 快速上手开发(二)——之模组串口调试

小米标准模组MCU 开发笔记之固件调试 背景技术名词简介● 小米IoT开发者平台● 小米IoT 模组● 固件● OTA● CRC32 固件双串口调试● MHCWB6S-IB 模组资料下载● MHCWB6S-IB 模组管脚图● 上电调试 背景 小米标准模组MCU的开发过程中&#xff0c;由于部分官方资料较为古早&am…

解决MobaXterm网络错误连接超时问题

报错页面&#xff1a; 报错原因&#xff1a; ①网络断开了 ②网络端口&#xff0c;端口号改变 解决办法&#xff1a; ①重新连接网络按R ②固定端口号 第一步&#xff1a;编辑------>虚拟机网络编辑器&#xff08;我的Linux在虚拟机里&#xff09; 第二步&#xff1a;用…

【触想智能】工业平板知识分享|选购工业平板电脑需要注意的7大事项

工业平板电脑是一种将显示器、工控主板、触摸屏和其他电子设备整合在一起的电子产品。它广泛应用于工业控制和自动化领域。 在购买工业平板电脑时&#xff0c;需要考虑一些关键性因素&#xff0c;以确保工业平板电脑是安全可靠、运行稳定的。那么我们在购买工业平板电脑的时候&…

js设计模式:计算属性模式

作用: 将对象中的某些值与其他值进行关联,根据其他值来计算该值的结果 vue中的计算属性就是很经典的例子 示例: let nowDate 2023const wjtInfo {brithDate:1995,get age(){return nowDate-this.brithDate}}console.log(wjtInfo.age,wjt年龄)nowDate 1console.log(wjtInf…

5 原型模式 Prototype

1.模式定义: 指原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象 2.应用场景&#xff1a; 当代码不应该依赖于需要复制的对象的具体类时&#xff0c;请使用Prototype模式。 Spring源码中的应用 org.springframework.beans.factory.support.AbstractB…

飞天使-k8s知识点24-kubernetes实操9-数据存储2配置存储

文章目录 高级存储pvc生命周期 配置存储secret 高级存储 前面已经学习了使用NFS提供存储&#xff0c;此时就要求用户会搭建NFS系统&#xff0c;并且会在yaml配置nfs。由于kubernetes支持的存储系统有很多&#xff0c;要求客户全都掌握&#xff0c;显然不现实。为了能够屏蔽底层…

排序算法1:冒泡排序、快速排序、插入排序

排序算法&#xff1a;交换类排序&#xff0c;插入类排序、选择类排序、归并类排序 交换类排序&#xff1a;冒泡排序、快速排序 一、冒泡排序 #include <stdio.h> #include <stdlib.h> #include <time.h> typedef int ElemType; typedef struct{ElemType *e…

C++面试宝典第31题:有效的数独

题目 判断一个9 x 9的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 1、数字1-9在每一行只能出现一次。 2、数字1-9在每一列只能出现一次。 3、数字1-9在每一个以粗实线分隔的3 x 3宫内只能出现一次。 下图是一个部分填充的有效的数独,数独部分空格内已…

Django学习笔记-HTML实现MySQL的图片上传

1.django项目编写index.html代码 创建form表单,路由指向upload,请求方式post,enctype设置"multipart/form-data", post请求添加{% csrf_token %},编写两个input,上传和提交 2.添加upload路由 3.views中创建upload 1).获取上传的文件,没有上传则返回"没有指定…