CenterTrack算法详解

背景:

  • 早期追踪器在缺乏强的低水平线索下,容易失败
  • 检测后跟踪的模型依赖于检测器,且需要一个单独的阶段匹配
  • 关联策略的时间长

简介:

基于点的跟踪思想,通过预测目标的中心点来进行跟踪,同时实现检测与跟踪的同步,结合目标检测和运动估计,使得在处理动态场景时更高效、更准确。通过同时处理目标的位置信息和运动轨迹,CenterTrack 能够实时跟踪多个物体。

实现过程:

  • 通过时间跟踪中心点
  • 在两个连续帧上调节检测器以及先前轨迹的热图,表示为点
  • 基于预测偏移与前一帧中检测到的中心点之间的距离的贪婪匹配做对象关联

CenterNet检测器:

采用CenterNet定位对象中心,每个对象都由其边界框中心的一个点表示

Backbone DLA:

核心思想:

DLA将网络中不同层级的特征进行融合,以捕获图像的语义信息和空间信息。这种融合方式包括了DenseNet的密集连接,以聚合语义信息,还包括空间特征金字塔(Feature Pyramids)以聚合空间信息。通过这种结合方式,更好地获取目标的类别和位置信息。

DLA-34架构:

在CenterNet中,DLA-34由多个阶段组成,每个阶段都包含了一系列的卷积层和聚合操作。DLA-34的特点是它在不同的阶段之间使用了迭代深聚合(Iterative Deep Aggregation, IDA)和层次深聚合(Hierarchical Deep Aggregation, HDA)技术,有助于在不同分辨率和尺度上聚合特征。

CenterNet中对DLA的改进:

添加可变形卷积(Deformable Convolution)来增强模型对目标几何变化的鲁棒性;改进后的网络被称为DLASeg,它在DLA-34的基础上,引入可变形卷积和上采样层,提高空间分辨率,更好地进行目标分割。

ADAM优化器:

Adam优化器,全称Adaptive Moment Estimation(自适应矩估计),是一种用于深度学习中的优化算法。结合了动量和RMSprop两种优化方法的优点,通过计算梯度的一阶和二阶矩估计来调整每个参数的学习率,从而实现自适应学习率调整。

工作原理:

  1. 初始化:在训练开始前,Adam会初始化两个关键参数:一阶矩估计(m)和二阶矩估计(v),分别对应梯度的指数加权平均值和梯度平方的指数加权平均值。

  2. 计算梯度:在每次迭代中,计算当前参数下的梯度。

  3. 更新一阶矩估计:一阶矩估计(m)是梯度的指数加权平均值,考虑了过去的梯度信息,类似于动量项,有助于平滑训练过程。

  4. 更新二阶矩估计:二阶矩估计(v)是梯度平方的指数加权平均值,用于调整每个参数的学习率,类似于RMSprop。

  5. 偏差校正:由于一阶矩和二阶矩估计在初始阶段可能会有偏差,Adam通过偏差校正来调整这些估计值,以提高优化的准确性。

  6. 更新参数:使用校正后的一阶矩和二阶矩估计值来更新模型的参数。

Adam优化器的特点:

  • 自适应学习率
  • Adam引入动量项,有助于处理梯度中的高方差或低方差情况,平滑训练过程
  • 只需要存储梯度的一阶和二阶矩估计值,内存需求低
  • 超参数具有直观的解释,通常需要较少的调整。

数据增强策略:

随机水平翻转、随机调整大小裁剪、颜色抖动

训练集:

crowdhuman

训练输出:

当前对象中心到前一帧对象中心的偏移向量

学习属性:

偏移量

损失函数:

点跟踪:

挑战:

  • 查找每帧中的所有目标(包括被遮挡目标)
  • 通过时间将目标关联

解决①:

为检测网络提供当前帧和前一帧为输入,可从前一帧中恢复当前帧被遮挡的目标

基于每个检测对象由一个点表示,将所有检测目标呈现在热图

使用高斯渲染增加平滑

使用阈值筛选满足一定置信度分数的对象

解决②:

增加两个附加输出通道的2d位移

捕捉当前帧和上一帧的位移差

作用:

  • 简化了跟踪条件检测,若单目标由点表示,那么多目标用热力图表示,跟踪器以热力图为输入,跨帧关联时间联合推理
  • 简化跨时间的对象关联,通过位移预测(稀疏光流:预测运动向量来进行跟踪的帧间关联)允许不同帧中的对象被链接,该位移预测以先前检测为条件

Centertrack采取有效目标跟踪的策略:

  • 利用前一帧的热图:将前一帧的热图作为输入,可让模型更容易地重复前一帧的预测。减少了错误跟踪的可能性,使模型能通过历史信息更好地做出决策
  • 数据增强:为防止模型过于依赖前一帧而产生不准确的跟踪,CenterTrack 使用了积极的数据增强策略,包括旋转、缩放、裁剪等,增加数据的多样性,帮助模型更好地学习不同情况的特征。
  • 从静态图像学习:由于增强方案非常有效,CenterTrack 可以在没有真实视频输入的情况下,仅使用静态图像数据集进行训练。能够学习到“幻觉”运动,即通过增强后的图像数据,模型能模拟出物体的运动特征。

跟踪特点:

简单、快速、高精度

舍弃重新连接远程轨迹能力

仅关联相邻帧中的对象,不会初始化丢失的长距离轨迹

改进:

Tracking-by-detection:

之前跟踪算法的缺点:

  • 数据关联丢弃图像的外观特征
  • 特征提取器造价高
  • 检测与跟踪分离

改进:

关联与检测联合学习

检测器将之前的跟踪结果作为输入,从这个输入中恢复丢失或遮挡的对象

Joint detection and tracking:

之前联合跟踪检测方法的缺点:

使用Faster-RCNN+FPN,边界框在帧间有较大重叠,低帧率效果差

改进:

输入上一帧基于点跟踪的热图

作用:
  • 目标位置的表示:热图用于表示每个像素点是目标中心的概率,模型可在热图中清晰地识别出目标的位置,减少由于目标重叠造成的误判。
  • 平滑性和连续性:热图是通过卷积等操作生成的,能够保留空间上的平滑性。即使在目标位置重叠的情况下,热图也能通过周围像素的信息提供更稳定的预测。
  • 整合历史信息:将前一帧的热图作为输入可帮助模型整合历史信息,使其更容易区分重叠目标。模型能根据之前的热图和当前的输入更准确地进行跟踪。
  • 增强目标的辨识能力:通过热图,CenterTrack 可根据目标的置信度和位置进行选择,有效地减少因帧重叠带来的跟踪误差。即使多个目标在相邻帧中重叠,热图仍能帮助模型更好地分辨这些目标。

Motion prediction:

稀疏光流

Heatmap-conditioned point estimation:

利用先前热图背景:

  • 前一帧信息自由可用
  • 可推断当前帧中不可见的被遮挡物体

方法:

  • AutoContext:一种允许模型利用上下文信息来逐步改进预测的迭代式方法,在迭代中,模型会将之前的预测作为输入,引导模型更好地捕捉细节和信息,提升准确性
  • Iterative Error Feedback (IEF):是一种用于减少预测误差的迭代反馈机制。通过对预测结果的反馈,模型能逐步调整和优化热图。有助于提高热图的鲁棒性,尤其在处理重叠目标或复杂场景时
  • PoseFix :通过对初步预测的位置进行微调,利用热图的信息来优化目标的位置

3D object detection and tracking:

3D跟踪器通过单目图像和点云进行3D检测

使用现成的关联

贪婪匹配

原理:

对于在位置p处的目标,与其在上一帧中距离p最近的未匹配目标按照降序关联;若在半径r(预测边界框的宽高平均值)内,如果当前帧中没有找到与之前跟踪的目标(即先验信息)相匹配的目标检测结果,那么系统会生成一个新的跟踪轨迹(tracklet)

过程:

  • 获取中心点热图:CenterTrack首先通过神经网络生成目标中心点的热图。热图中每个点的值表示该位置是目标中心的置信度(得分)。
  • 提取候选点:从当前帧的热图中提取出置信度高于某一阈值的点。这些点是潜在的目标中心位置。
  • 上一帧中心点:在匹配过程中,CenterTrack会使用上一帧的目标轨迹中心点作为候选点。这些点是上一帧中被检测到的目标的中心位置。
  • 距离计算:对于当前帧的每个候选中心点,计算与上一帧中心点的距离(通常是欧几里得距离)。
  • 置信度降序排序:将当前帧中提取到的候选中心点根据置信度进行降序排序。这个步骤确保了置信度高的目标优先匹配。
  • 贪婪选择:根据距离和置信度的排序结果进行贪婪匹配。选择与当前帧中置信度最高的候选点相匹配的上一帧中心点,确保在保证准确性的同时,也尽量选择距离较近的点。
  • 更新轨迹:一旦找到匹配,更新对应的轨迹。如果没有找到匹配,则可能将其标记为新的目标,或者保持为不活动状态。

Centertrack:

输入:

热图、偏移量、先前帧热图、先前帧偏移量、当前图

输出:

新的热图、新的偏移量、检测框

难点:

tracklet heatmap(轨迹热图):表示在前一帧中已经检测并正在跟踪的目标的中心点信息

产生的问题:

任意数量的轨迹缺失

错误定位目标

误报

解决方法:

  • 在每个中心添加高斯噪声来局部抖动前一帧每个轨迹
  • 渲染虚假噪声峰值,在GT附近随机添加假阳性(错误检测出不存在的目标)
  • 随机删除检测目标,模拟假阴性(未能检测到真实存在的目标)
  • 避免帧速率过拟合,随机采取某时刻附近的帧

视频数据:

通过随机缩放和平移模拟前一帧

3D目标跟踪:

采用CenterNet的单目3D检测形式,训练检测头,预测2D到3D中心偏移

实验:

2D:MOT17 KITTI

单目3D:nuScenes

Track rebirth:

  • 当一个轨迹在某一帧未能匹配到检测到的目标时不会立即被删除,而是进入“不活动(inactive)”状态。这个轨迹将继续保持非活动状态,直到它在K个连续帧内都没有被检测到。
  • 非活动轨迹再次与检测到的目标匹配时,它们可以“重生”,并恢复使用原来的ID,继续跟踪目标
  • 当非活动轨迹重生后,它们过去的“非活动”时间段的信息并不会被展示出来。
  • 每一帧都会实时地进行检测和跟踪
  • 除MOT外,K可以设置为0

实验结果:

第一行MOT、第二行KITTI、第三行第四行nuScenes,每行显示三个连续帧

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【开源免费】基于SpringBoot+Vue.JS蜗牛兼职平台 (JAVA毕业设计)

本文项目编号 T 034 ,文末自助获取源码 \color{red}{T034,文末自助获取源码} T034,文末自助获取源码 目录 一、系统介绍1.1 平台架构1.2 管理后台1.3 用户网页端1.4 技术特点 二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景…

SSCI/SCI/EI/Scopus/期刊合集,周期短,快速发表,见刊快!

【期刊合集专场】本期为计算机、材料、工程技术、医学、社科经管、农林科学类领域的SCI&SSCI、Scopus、EI,涵盖:人工智能、纳米材料、工程材料、肿瘤学、管理学、农作物保护等征稿方向! 期刊推荐一、Intelligence & Robotics 学科领域…

【C++篇】继承之巅:超越法则束缚,领略面向对象的至臻智慧

文章目录 C 继承详解:虚拟继承与进阶实战前言第一章:继承与友元、静态成员1.1 继承与友元1.1.1 友元函数的定义 1.2 继承与静态成员1.2.1 静态成员的继承与访问 第二章:复杂的菱形继承及虚拟继承2.1 菱形继承问题2.1.1 菱形继承的基本结构 2.…

「漏洞复现」东胜物流软件 GetProParentModuTreeList SQL注入漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删…

数据结构——树——二叉树——大小堆

目录 1>>导言 2>>树 2.1>>树的相关术语 2.2>>树的表示和应用场景 3>>二叉树 3.1>>完全二叉树 3.2>>大小根堆 4>>结语 1>>导言 上篇小编将队列的内容给大家讲完了,这篇要步入新的篇章,请宝…

基于Spark的共享单车数据存储系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

ML 系列:机器学习和深度学习的深层次总结(17)从样本空间到概率规则概率

一、说明 概率是支撑大部分统计分析的基本概念。从本质上讲,概率提供了一个框架,用于量化不确定性并对未来事件做出明智的预测。无论您是在掷骰子、预测天气还是评估金融市场的风险,概率都是帮助您驾驭不确定性的工具。本篇将讲授概率的原理和…

Linux使用Dockerfile部署Tomcat以及jdk

资源准备 首先提供本教程所有资源包。 当然也可以根据自己需求去官网下载。 链接:百度网盘 请输入提取码 提取码:f31y #我们开始吧 首先我们需要一台linux操作系统的机器,当然windows也是可以的,本系列教程是基于Linux的&#…

【网络】H3C交换机配置

1. 网关配置(web管理界面) 默认S5048PV2_EI交换机 第一步:若是首次配置,通过Console口配置以太网交换机管理VLAN的IP地址,默认的网关是192.168.0.253。 system-view [H3C] interface Vlan-interface 1(进入…

[mysql]聚合函数GROUP BY和HAVING的使用和sql查询语句的底层执行逻辑

#GROUP BY的使用 还是先从需求出发,我们现在想求员工表里各个部门的平均工资,最高工资 SELECT department_id,AVG(salary) FROM employees GROUP BY department_id 我们就会知道它会把一样的id分组,没有部门的就会分为一组,我们也可以用其他字段来分组,我们想查询不同jb_id…

ArcGIS计算多个面要素范围内栅格数据各数值的面积

本文介绍在ArcMap软件中,基于面积制表工具(也就是Tabulate Area工具),基于1个面要素数据集与1个栅格数据,计算每一个面要素中各栅格数据分布面积的方法。 首先,来看一下本文的需求。现有一个矢量面的要素集…

水陆两栖车应对应急事件发挥的作用_鼎跃安全

随着气候变化,城市内涝等问题日益严重。为了应对可能出现的洪水灾害,许多城市开始将水陆两栖车纳入应急救援装备体系。在暴雨引发城市积水时,水陆两栖车可以作为一种高效的救援和运输工具,及时疏散被困群众,运送应急物…

Hallo2 长视频和高分辨率的音频驱动的肖像图像动画 (数字人技术)

HALLO2: LONG-DURATION AND HIGH-RESOLUTION AUDIO-DRIVEN PORTRAIT IMAGE ANIMATION 论文:https://arxiv.org/abs/2410.07718 代码:https://github.com/fudan-generative-vision/hallo2 模型:https://huggingface.co/fudan-generative-ai/h…

执行Django项目的数据库迁移命令时报错:(1050, “Table ‘django_session‘ already exists“);如何破?

一、问题描述: 当我们写Django时,由于自己的操作不当,导致执行数据库迁移命令时报错,报错的种类有很多,例如: 迁移文件冲突:可能你有多个迁移文件试图创建同一个表。数据库状态与迁移文件不同…

Javascript数据结构——哈希表

18_哈希表_深入链地址法_哔哩哔哩_bilibili 哈希表(Hash Table),又称为散列表,是一种通过哈希函数组织数据以实现快速访问的数据结构。下面将从其概述、底层实现和前端应用场景等方面进行详细阐述。 概述 哈希表的基本思路是&a…

C#与C++交互开发系列(九):字符串传递的几种形式

前言 在C#与C交互开发中,字符串的传递是非常常见的需求。字符串作为数据类型在托管代码(C#)和非托管代码(C)之间的传递存在一些特殊的挑战,因为两者的字符串内存管理和编码方式不同。本篇博客将详细介绍几…

gitlab不同账号间·仓库转移

背景:公司业务调整,原先在海外仓库的代码转移回国内 诉求:完整的保留项目记录 操作: 步骤一: 定位到需要迁移的原项目地址 步骤二:创建新项目 步骤三:打开命令行,创建好文件路径为需要clo…

软件工程中的建造者模式:用于构建复杂对象

在软件工程中,我们经常会遇到需要构建复杂对象的场景。这些对象可能包含多个组件,而这些组件的创建过程可能相当繁琐。为了解决这个问题,设计模式提供了一种优雅的方法,这就是建造者模式(Builder Pattern)。…

HTTP之响应消息Response

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ HTTP之响应消息Response 1 Response 组成2 状态…

基于SpringBoot+Vue+MySQL的实践性教学系统

系统展示 用户前台界面 后台界面 系统背景 随着信息技术的快速发展,企业对于高效、智能的管理系统需求日益迫切。传统的管理系统大多采用单机版或C/S架构,存在操作复杂、维护困难、数据共享性差等问题。而基于SpringBootVueMySQL的全栈管理系统&#xff…