无人驾驶实战-第六课(动态环境感知与Tracking)

news2024/10/1 5:37:21

跟踪是在连续帧中根据物体信息关联(确定)同一物体

运动模型(motion model):根据历史的位置和速度 ( 大小和方向) 建立模型,预测当前帧中物体的大致位置 

外观模型(appearance model):根据历史外观(颜色 尺寸 2D/3D框 轮廓等)建立特征模型,在预测位置附近进行搜索得到更准确的位置信息。

Online:根据物体的历史信息(位置 颜色 形状等)找到当前帧中的位置 (单目标跟踪的常见模式 ),随视频实时跟踪。

Offline:根据每一帧中每个物体的信息在整个时间序列上关联得到轨迹(多目标跟踪 / 统筹考虑),视频已结束,回放跟踪。

跟踪的意义:

  • 跟踪保持ID一致
  • 跟踪辅助检测:检测失败时,有些跟踪可以处理 
  • 跟踪比检测更快: 检测没有利用历史信息每一次都是从0开始。 而跟踪可以提前知道要跟踪物体的“历史”信息,基于这些信息可以大致预测下一帧的位置,在附近做小幅搜索匹配得到最终预测框。
  • 检测辅助跟踪:跟踪可能会跟丢(遮挡 运动模糊等) 
  • 检测纠正跟踪的累计误差:一般间隔执行检测,检测中间执行跟踪,每隔一段时间用检测来重新纠正跟踪 
  • 检测使用大规模样本数据训练出来的它对某一类别理解更深刻,跟踪对某一具体物体理解更深刻

跟踪分为单目标跟踪与多目标跟踪

单目标跟踪的分类:

  • 产生式模型:经典目标跟踪方法(2010年之前), Meanshift、Particle Filter、Kalman Filter、基于特征点光流跟踪 (无法处理和适应复杂的跟踪变化,鲁棒性和准确度都被前沿的算法所超越) 
  • 鉴别式模型:检测与跟踪相结合的方法,BOOSTING、MIL、MEDIANFLOW 、TLD(2010之后) 
  • 基于相关滤波的跟踪算法: MOSSE KCF(2012) 
  • 基于深度学习的跟踪方法: GOTURN ........

1.产生式模型

Meanshift:

  • 对目标建模(比如利用目标的颜色分布来描述目标,计算目标在下一帧图像上的概率分布) 
  • 目标的搜索一直沿着概率梯度上升的方向,迭代收敛到概率密度分布的局部峰值上 
  • 适用于目标的色彩模型和背景差异比较大的情形,计算速度快

基于特征点的光流算法:

  • 对目标进行建模:在目标上提取一些特征点(用特征点的集合来表征目标) 
  • 下一帧计算这些特征点的光流匹配点,统计得到目标的位置(稀疏光流法) 
  • 在跟踪的过程中,不断补充新的特征点,删除置信度不佳的特征点,以适应目标在运动中的形状变化

Kalman Filter

本质上就是这五个公式

运动方程、观测方处、卡尔曼增益等。

Particle Filter

一个形象的比喻:放一群警犬去寻找犯人

  • step1: 让狗熟悉犯人的气味:对目标建模(例如颜色直方图)得到目标特征表达 
  • step2: 均匀分布几只狗的初始位置(开始时不知道犯人的大概位置)让他们通过附近的气味判断是否有犯人的踪迹:按照均匀分布撒下一些“粒子”,提取“粒子”附近的特征,通过某种形似读度量确定“粒子”与目标的匹配程度 
  • step3: 有些狗发现了犯人的踪迹,有些没有发现。那就把没有发现踪迹的那些狗放置到发现踪迹的位置附近继续进行搜索。按照高斯分布在可疑点附近撒下更多粒子,提取特征,判断与目标的匹配度。确保更大概率跟踪上目标。 
  • step4: 重复step3

2.判别式模型

运动模型:一般在上一帧位置附近生成几个候选框

外观模型:利用分类器计算候选框得分(“物体” or “背景”),判断候选框是否是预测位置    

跟检测的思路几乎一样(候选框+分类) 判别式跟踪方法更能适应跟踪过程中的复杂变化,利用检测来做跟踪(Tracking By Detection)逐渐成为主流

BOOSTING 

外观模型: onlie版本的AdaBoost,正样本:初始框  负样本: 正样本之外许多图片块 

原理:在新图像中“之前框位置”附近的每一个位置计算分类得分。取得分最高的做为新的位置。 新位置的框再次作为正样本训练分类器(每一帧都如此) 

特点:算法比较老,效果一般,跟踪失败不可知 

MIL 

外观模型: 改进正样本选择: 物体框+框周围的小区域生成的框;大多数正样本框内物体不居中(包括新位置框),正负样本包(“bags”) 只需要正样本包里有一个居中的正样本即可 

原理:在新图像中“之前框位置”附近的每一个位置计算分类得分。取得分最高的做为新位置。 新位置+周围生成的框再次作为正样本训练分类器(每一帧都如此) 

特点:效果很好,部分遮挡的情况下表现也不错,相比BOOSTING偏移没有那么大,跟踪失败不可知, 全遮挡不行 

MEDIANFLOW 

原理:前后向都进行跟踪,最小化两段轨迹的误差 

特点:可靠的反馈跟踪丢失,可靠的轨迹, 适用于小幅运动无遮挡场景,大幅运动容易跟踪失败

TLD (Tracking-Learning-Detection

原理: 

    跟踪器:帧间跟踪物体,用经典的方法跟踪目标,论文中采用基于光流的特征点统计方法确定目标在下一帧的跟踪位置 

    检测器:检测所有出现过的物体,并与跟踪结果综合得到最终的输出结果 

    学习器:评估检测器的错误并更新检测器防止再次出现类似错误。确定目标的最佳位置之后,学习模块(Learning)负责对跟踪器和检测器进行修正(在目标的周围选取更多的正负样本在线更新检测器的模型) 

特点:适用于尺度变化大的物体,运动物体,多帧被挡住,遮挡较多(例如被另外一个物体完全挡住)过多错误的正样本导致它几乎不可用(容易跟踪非目标物体)

3.基于相关滤波的跟踪算法

始于2012 年 P.Martins 提出的 CSK 方法,从数学上完美解决密集采样与分类器学习问题。密集采样的过程可以通过循环矩阵来实现,分类器的学习过程可以用快速傅立叶变换转化成频域内的计算,不受 SVM 或 Boost 等学习方法的限制。无论是用线性分类还是核分类,整个学习过程十分高效 

  • 优点:实时性 
  • 缺点:目标的快速移动,形状变化大导致更多背景被学习进来等都会对 CF 系列方法造成影响

MOSSE(Minimum Output Sum of Squared Error ) 

外观模型:adaptive correlation for object tracking which produces stable correlation filters   (引入CF:一种可学习的相似性度量) 

 特点: 

  • 光照,尺度,姿态,非刚体形变都很鲁棒 
  • 可以检测遮挡(peak-to-sidelobe ratio)暂停并恢复跟踪 
  • 高帧率(450 fps ) 
  • 容易实现但是精度和复杂的跟踪算法差不多 
  • 效果不如基于深度学习的方法

KCF(Kernelized Correlation Filters) 

外观模型:利用多个正样本间的重叠关系同时提升跟踪的速度和精度: 新位置极其周围产生的正样本可以通过循环矩阵来快速生成,循环矩阵傅利叶对角化性质大大简化计算加速分类器的学习过程,基于 HOG 特征的分类器,(DeepSRDCF:深度学习提取的特征+KCF 的方法) 

特点:精度速度都比MIL高,反馈跟踪失败比BOOSTING and MIL更好, 无法解决全遮挡情况

4.基于深度学习的跟踪法

GOTURN

原理:卷积神经网络 

特点:对视角变化 光照变化 形状变化 都很鲁棒。无法有效处理遮挡情况 

多目标跟踪

单个目标 -> 多个目标 既有单目标的难点又新增了多目标自身的难点

按照轨迹形成的时间顺序:  

  • 在线:逐帧,类似人眼实时跟踪目标,获得每帧图像检测结果,把检测结果跟已有的跟踪轨迹进行关联 
  • 离线:跟踪算法运行是在视频已经获取结束,所有检测结果都已经提前获取。离线多目标跟踪算法把检测结果集合作为观察,把轨迹看作检测集合的一种划分,因此跟踪问题转化为子集优化的过程。 
  • 按照算法机制: 预测校正 / 关联方式 
  • 按照算法的数学表示: 概率统计最大化 / 确定性推导

匈牙利算法

二分图匹配是很常见的算法问题,一般用匈牙利算法解决二分图最大匹配问题

  • 什么是二分图? 二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。 
  • 什么是匹配? 把右图想象成3位工人和4种工作,连线代表工人愿意从事某项工作,但最终1个工人只能做一种工作,最终的配对结果连线就是一个匹配。匹配可以是空。 对应到跟踪任务中就是运动轨迹与当前帧内物体的匹配  
  • 什么是最大匹配? 在愿意从事工作的基础上,能够最多配成几对。

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

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

相关文章

开发运营监控

DevOps 监控使管理员能够实时了解生产环境中的元素,并有助于确保应用程序平稳运行,同时提供最高的业务价值,对于采用 DevOps 文化和方法的公司来说,这一点至关重要。 什么是开发运营监控 DevOps 通过持续开发、集成、测试、监控…

如何将超大文件传输给别人,超大文件如何传输呢?

我们在日常生活和工作中,经常会遇到需要把超大文件发送给别人的情况。但是,在互联网发展如此迅速的今天,我们还有哪些方法可以快速地传输超大文件呢?超大文件应该怎样传输才能保证效率和安全呢?这些问题一直困扰着我们…

利用PostGIS自带工具导入shp数据

一、shapefile导入PostGIS 1、利用PostGIS自带工具导入 开始程序搜索如下工具 打开工具界面如下图,点击View conncetion details进行数据库连接,点击Add File进行Shapefile所在路径加载,点击Option进行编码设置,设置完成后点击Im…

mac录屏怎么打开?很简单,让我来教你!

mac电脑作为一款广受欢迎的电脑系统,提供了多种方式来满足用户录屏的需求。无论您是要录制教学视频、制作演示文稿,还是记录游戏精彩瞬间,mac电脑都能帮助您实现这些目标。本文将为您介绍两种mac录屏的方法。通过本文的指导,您将能…

8.4一日总结

1.远程仓库的提交方式(免密提交) a.ssh:隧道加密传输协议,一般用来登录远程服务器 b.使用 git clone 仓库名 配置(生成公私钥对) ssh-Keygen [-t rsa -C 邮箱地址] 通过执行上述命令,全程回车,就会在~/.ssh/id_rsa(私钥)和id_rsa.pub(公钥),私钥是必须要保存好的,并不能…

明白均线信号的投资者就知道如何交易

在Forexclub上的交易的投资者,都在使用5、25和50周期的均线来分析收盘价。其中,5周期的均线为红色,25和50周期的均线为黄色。同时使用抛物面SAR指标,保留其默认参数。 开立多头头寸的条件是:5周期的红色均线从下方突破…

身体原来是一份宝贵的“情绪地图”, 疾病都在教导我们如何与世界相处

当我们生病时 很多时候,是一个契机 让我们来倾听自己内心的压抑的真实 聆听身体的声音 身体能够教会我们如何对待情绪 进而教导我们如何与世界相处 -1- 身体上,有你的情绪地图 皮肤是身体的镜子,身体则是心灵的镜子。生病&#xff0c…

亿欧智库:2023中国功效型护肤产品成分解析研究报告(附下载

关于报告的所有内容,公众【营销人星球】获取下载查看 核心观点 消费端:“纯净美妆〞概念火热,消费驱动因素向成分来源硬核转变 新冠疫情过后,消费者对于生活健康:自然,可持续的关注度持续上升。在消费者…

【小吉带你学Git】idea操作(1)_配置环境并进行基本操作

🎊专栏【Git】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题🥰 文章目录 🍔环境准备⭐配置Git忽略文件🎄方法🌺创…

【音视频】edge与chrome在性能上的比较

目录 结论先说 实验 结论 实验机器的cpu配置 用EDGE拉九路​编辑 google拉五路就拉不出来了 资源使用情况 edge报错​编辑 结论先说 实验 用chrome先拉九路,再想用edge拉九路,发现拉五路后怎么也拉不出; 后面发现cpu爆满;切…

Intellij IDEA运行报Command line is too long的解决办法

想哭,vue前端运行起来,对应的后端也得起服务。 后端出的这个bug,下面的博客写的第二种方法,完整截图是下面这个。 ​​​​​​​​​​​​​​​​​​​​Intellij IDEA运行报Command line is too long的解决办法 - 知乎 (zh…

中小企业的数字化营销应该如何着手?数字化营销到底要怎么做?

从侠义角度讲,数字化营销就是在数字化的媒体上做营销。传播本质上是一种营销的形式 从广义角度讲,我们不仅可以将营销数字化,也可以数字化很多事物,甚至行业,比如数字化制造业、数字化工厂、数字化商会等等 ​而这个…

致远A8+数据库账密信息泄露

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 文章作者拥有对此文章的修改和解释权。如欲转载或传播此文章&#xff0c…

智慧工地3D可视化大屏数据展示提供实时数据和设备状态信息

智慧工地3D可视化大屏数据展示是一种基于数字化技术和虚拟仿真技术的智能化管理系统,可以为工地管理提供更加直观和高效的支持。以下是智慧工地3D可视化大屏数据展示可以提供的实用功能: 1.实时监测:数字孪生可视化系统可以将传感器数据与虚拟…

字符串的替换(两种方式)

文章目录 前言 一、使用Template模块中的函数template去替换 二、使用正则表达式替换字符串 总结 前言 记录使用正则表达式替换字符串的操作,和使用Template模块中的函数template去替换字符串的操作。 一、使用Template模块中的函数template去替换 注意&#…

有利于提高xenomai /PREEMPT-RT 实时性的一些配置建议

版权声明:转自: https://www.cnblogs.com/wsg1100 一、前言 1. 什么是实时 “实时”一词在许多应用领域中使用,人们它有不同的解释,并不总是正确的。人们常说,如果控制系统能够对外部事件做出快速反应,那么它就是实时运行的。根据这种解释,如果系统速度快,则系统被认…

【MapGIS精品教程】015:栅格数据地理配准

文章目录 1.标准分幅栅格地图校正2.非标准(无坐标)分幅影像校正3.非标准分幅影像校正1.标准分幅栅格地图校正 ①打开MapGIS中的GDB企业管理器,找到“我的第一个数据库”,找到“栅格数据集”,右键“导入影像”,找到“H50G037007”,转换格式,备用。 ②从MapGIS本地数据目…

ResNet-残差网络二

文章目录 残差结构的一般表达形式残差结构中的信息传播clean path propagation前向传播反向传播 h(x)为恒等映射的重要性h(x)的实验证明 激活层的位置 和其他网络的对比 上一篇讲了 ResNet 论文中的第一篇:Deep Residual Learning for Image Recognition&#xff0c…

python+django+mysql项目实践二(前端及数据库)

python项目实践 环境说明: Pycharm 开发环境 Django 前端 MySQL 数据库 Navicat 数据库管理 前端模板 添加模板 在templates下创建 views文件中添加 创建数据库 连接数据库 在setting文件中进行配置 创建表

mybatisplus之setSql动态更新语句

一、概念 这是mybatis-plus官方文档介绍 二、具体实现 1.我们定义这样一个接口 PostMapping ("update")public boolean update(Integer id,boolean demo){return studentservice.update(id,demo);} 2.impl public boolean update(Integer id,boolean demo) {retu…