CenterTrack算法详解

news2024/11/26 11:01:52

背景:

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

简介:

基于点的跟踪思想,通过预测目标的中心点来进行跟踪,同时实现检测与跟踪的同步,结合目标检测和运动估计,使得在处理动态场景时更高效、更准确。通过同时处理目标的位置信息和运动轨迹,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,每行显示三个连续帧

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

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

相关文章

LLM在Reranker任务上的最佳实践?A simple experiment report(with code)

知乎:车中草同学(已授权)链接:https://zhuanlan.zhihu.com/p/987727357 引言 在BERT时代,对于Reranker任务,我们使用encoder-only的BERT为基座,拼接query和doc输入到BERT中去,在使用CLS的向量通过一个MLP&a…

身份证识别JAVA+OPENCV+OCR

一、相关的地址 https://github.com/tesseract-ocr/tessdata Releases - OpenCV opencv要装好,我装的是4.5.3的,最新版的没试过。 tessdata就下载了需要用的。好像还有best和fast的版本,我试了一下报错,不知道是不是版本不支持…

华为配置 之 远程管理配置

目录 简介: 知识点: Telnet远程管理 (1)配置接口IP并确保R1和R2处于同一个网段 (2)使用password认证模式远程登录 (3)使用AAA认证模式远程登录 SSH远程管理 (1&a…

基于springboot的网上服装商城推荐系统的设计与实现

基于springboot的网上服装商城推荐系统的设计与实现 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:idea 源码获取&#xf…

【deathStarBench】2.安装k8s集群

安装docker 通过以下命令安装docker: sudo yum install docker-ce-26.1.4 docker-ce-cli-26.1.4 containerd.io随后通过查看docker --version,可以确定是否安装的版本一样 启动docker systemctl start docker && systemctl enable docker.se…

《纳瓦尔宝典:财富和幸福指南》读书随笔

最近在罗胖的得到听书中听到一本书,感觉很有启发,书的名字叫《纳瓦尔宝典》,从书名上看给人的感觉应该财富知识类、鸡汤爆棚哪类。纳瓦尔,这个名字之前确实没有听说过,用一句话介绍一下,一个印度裔的硅谷中…

【LeetCode】修炼之路-0006-Zigzag Conversion (Z 字形变换)【python】

题目 The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility) P A H N A P L S I I G Y I R And then read line by line: “PAHNAPLSIIGYIR” …

荣耀电脑管家-系统重装之查询设备序列号

winr输入cmd,再命令行中输入 wmic bios get serialnumber 如下所示

代码随想录算法训练营第六天|454四数相加II、 383赎金信、15三数之和、18四数之和

day06 1. 454四数相加II 首先定义 一个unordered_map,key放a和b两数之和,value 放a和b两数之和出现的次数。遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中。定义int变量count,用来统计 …

YAML格式校验API:免费工具的使用指南

YAML(YAML Ain’t Markup Language)是一种人类可读的数据序列化格式,广泛用于配置文件、数据交换等场景。由于其简洁的语法和良好的可读性,YAML 在开发和运维领域中越来越受到欢迎。然而,在使用 YAML 时,格…

Xcode文件默认存储位置-使用c++file保存文件默认路径以及设置为路径为当前项目路径

Xcode文件默认存储位置-使用cfile保存文件默认路径以及设置为路径为当前项目路径 1.概述 使用Xcode工具开发时候,遇到C调用file创建文件后,在当前项目中找不到文件路径。这是由于xcode会将文件保存到默认设置的路径。下面是查看文件默认存储路径和修改…

数组中的算法

目录 1.什么是数组 2.数组上的算法 2.1二分查找算法 什么是二分查找算法? 算法步骤 算法时间复杂度 一个问题 例题 题目分析 解题代码 2.2双指针法 什么是双指针法? 例题 题目分析 解题代码 1.什么是数组 数组是在一块连续的内存空间…

C++,STL 047(24.10.24)

内容 对set容器的元素进行查找与统计。 运行代码 #include <iostream> #include <set>using namespace std;void printSet(set<int> &s) {for (set<int>::iterator it s.begin(); it ! s.end(); it){cout << *it << " ";…

linux-牛刀小试

题目一&#xff1a; 1.第一问 首先创建用户tab在超级用户root的终端输入useradd tab 切换到tab用户&#xff1a; 推出重新登录到tab用户或者su – tab切换到tab用户 2.第二问 在桌面创建SHEGNCHAN目录 在SHENGCHAN文件夹下创建相应的文件&#xff1a; 3.第三问 首先&#…

哈希表【闭散列/开散列】

&#x1f33b;个人主页&#xff1a;路飞雪吖~ &#x1f320;专栏&#xff1a;C/C 目录 一、unordered系列关联式容器 &#x1f31f;unordered_map ⭐unordered_map接口说明 二、底层结构 &#x1f31f;哈希概念 &#x1f31f;哈希冲突 &#x1f31f;哈希函数 &#x1f3…

基于Leaflet和SpringBoot的全球国家综合检索WebGIS可视化

目录 前言 一、Java后台程序设计 1、业务层设计 2、控制层设计 二、WebGIS可视化实现 1、侧边栏展示 2、空间边界信息展示 三、标注成果展示 1、面积最大的国家 2、国土面积最小的国家 3、海拔最低的国家 4、最大的群岛国家 四、总结 前言 在前面的博文中&#xff…

【随手笔记】远程升级之如何平衡下载包大小与速率?

1. 远程升级基本信息 使用NB_BC26模组&#xff0c;通过AT指令使用TCP的协议与公司后台交互升级的固件为BIN文件&#xff0c;使用原始固件包升级&#xff0c;未使用差分方式原始固件包有110K,大小左右&#xff0c;固件的存储为外置的FLASH W25Q16,w25q16最小存储单位为页&#…

AListFlutter(手机alist)——一键安装,可在手机/电视上运行并挂载各个网盘

前面提到软路由系统OpenWRT的时候&#xff0c;当时说过可以在OpenWRT里安装alist&#xff0c;然后挂载网盘&#xff0c;这样就可以通过webdav的方式在家庭局域网下的任何设备都可以访问操作这些网盘&#xff0c;摆脱硬盘空间不够的问题。 但alist的官方版本是没有手机版本的&a…

【Java】探秘正则表达式:深度解析与精妙运用

目录 引言 一、基本概念 1.1 元字符 1.2 预定义字符类 1.3 边界匹配符 1.4 数量标识符 1.5 捕获与非捕获分组 二、Java中的正则表达式支持 三、正则表达式的使用示例 3.1 匹配字符串 3.2 替换字符串 3.3 分割字符串 3.4 使用Pattern和Matcher 3.5 捕获组和后向…

我了个超绝MATLAB——基础

由于要参加美赛&#xff0c;不想拖对队友们的后腿&#xff0c;于是一怒之下……怒了一下 创建MATLAB脚本 创建脚本 在主页——新建——脚本 中新建脚本&#xff08;Ctrln&#xff09; 保存 编辑器——保存&#xff08;Ctrls&#xff09; 运行 编辑器——运行&#xff08;F5&…