【论文解读】Hybrid-SORT: Weak Cues Matter for Online Multi-Object Tracking

因为Hybrid-SORT的baseline是基于OCSORT进行改进的,在这之前建议先了解byteTrack和【】的相关知识

1.介绍

1.1 基本框架

多目标跟踪(MOT)将问题分为两个子任务。第一个任务是检测每个帧中的对象。第二个任务是将它们在不同的框架中联系起来。关联任务主要通过显式或隐式地利用强线索来解决,包括空间和外观信息。

1.2 当前方法的局限性

当两个物体在当前帧中高度重叠时,检测和估计轨迹位置之间的交集(IoU)会变得模糊,两个物体的外观特征都被前景特征所主导。

2. Hybrid-SORT

修改了当前最先进的SORT-like算法OCSORT作为我们的强基线。首先,对OC-SORT中的速度方向建模进行修正,即以观测为中心的动量(OCM),将盒中心扩展到四个盒角,将固定的时间间隔扩展到多个时间间隔;其次,我们在ByteTrack之后加入了一个额外的低置信度检测关联阶段。

2.1 弱条件建模

2.1.1 Tracklet 置信度建模

 增加了两个额外的状态:轨迹置信度c及其速度分量\dot{c}

如下图所示,Kalman Filter在试图估计置信状态的突然变化时表现出明显的滞后,且置信度状态的变化趋势呈现出明显方向性

 基于以上特点,因此本文使用基于轨迹历史的简单线性预测来估计轨迹置信度

 置信度代价计算为根据式4估计的轨迹置信度\widehat{c}_{trk}与检测置信度c_{det}之间的绝对差值

2.1.2 Height Modulated IoU(HMIOU)

引入height状态有助于提高association :

(1)物体的高度在一定程度上反映了深度信息,使得高度状态成为区分高度重叠对象的有效线索。

(2)其次,高度状态对不同姿态具有较强的鲁棒性,是一种准确估计的状态,是物体的高质量表征。

公式化表述为:

HIoU代表高度状态,这是一个弱线索,而IoU代表空间信息,这是一个强线索,我们使用HIoU来调制IoU,实现对遮挡或聚类对象的增强识别

2.2 Hybrid-SORT

2.2.1 Robust OCM

2.2.1.1 原始OCM存在的局限性

 原始OCM的建模容易受到固定时间间隔和稀疏状态(即只有目标中心)引起的噪声的影响。

2.2.1.2 Robust OCM

  • 首先,将3帧的固定时间间隔扩展为1 ~ 3的多个时间间隔的叠加;
  • 其次,我们用物体的四个角代替它的中心点来计算速度方向。

避免由于姿态的突然变化,轨迹和轨迹到检测中心的速度方向可能完全相反,从而导致匹配错误

 

2.2.2 外观建模

 首先检测对象,然后将结果裁剪的补丁提供给ReID模型。我们使用指数移动平均(EMA)对轨迹图外观信息建模,并利用余弦距离作为度量来计算轨迹图外观特征与检测外观特征之间的相似度。

2.2.3 算法架构

关联阶段主要包括三个阶段:第一阶段是高置信度对象的关联阶段,第二阶段是低置信度对象的关联阶段(ByteTrack中的BYTE),第三阶段是用最后一次检测恢复丢失的轨迹(OC-SORT中的OCR)。

3.代码

3.1 卡尔曼滤波器KalmanBoxTracker建模

3.1.1 引入轨迹置信度c及其速度分量\dot{c}·

        if not orig:from .kalmanfilter_score_new import KalmanFilterNew_score_new as KalmanFilter_score_newself.kf = KalmanFilter_score_new(dim_x=9, dim_z=5)

3.1.2 轨迹置信度的预测

简单线性预测来估计轨迹置信度

        if not self.confidence_pre:return self.history[-1], np.clip(self.kf.x[3], self.args.track_thresh, 1.0),np.clip(self.confidence, 0.1, self.args.track_thresh)else:return self.history[-1], np.clip(self.kf.x[3], self.args.track_thresh, 1.0), np.clip(self.confidence - (self.confidence_pre - self.confidence), 0.1, self.args.track_thresh)

返回值分别是 分别是九位预测量,置信度预测值,置信度的速度分量\dot{c}·

3.2 Robust OCM

3.2.1 四个角代替它的中心点

 lt, rt, lb, rb : 代表bbox四个角点的速度

    Y1, X1 = speed_direction_batch_lt(detections, previous_obs)Y2, X2 = speed_direction_batch_rt(detections, previous_obs)Y3, X3 = speed_direction_batch_lb(detections, previous_obs)Y4, X4 = speed_direction_batch_rb(detections, previous_obs)cost_lt = cost_vel(Y1, X1, trackers, lt, detections, previous_obs, vdc_weight)cost_rt = cost_vel(Y2, X2, trackers, rt, detections, previous_obs, vdc_weight)cost_lb = cost_vel(Y3, X3, trackers, lb, detections, previous_obs, vdc_weight)cost_rb = cost_vel(Y4, X4, trackers, rb, detections, previous_obs, vdc_weight)angle_diff_cost = cost_lt + cost_rt + cost_lb + cost_rb

speed_direction_batch_XX用来计算四个角点的速度

cost_vel 用来计算某个交点速度的cost

3.3 Height Modulated IoU(HMIOU)

def hmiou(bboxes1, bboxes2):"""Height_Modulated_IoU"""bboxes2 = np.expand_dims(bboxes2, 0)bboxes1 = np.expand_dims(bboxes1, 1)yy11 = np.maximum(bboxes1[..., 1], bboxes2[..., 1])yy12 = np.minimum(bboxes1[..., 3], bboxes2[..., 3])yy21 = np.minimum(bboxes1[..., 1], bboxes2[..., 1])yy22 = np.maximum(bboxes1[..., 3], bboxes2[..., 3])o = (yy12 - yy11) / (yy22 - yy21)xx1 = np.maximum(bboxes1[..., 0], bboxes2[..., 0])yy1 = np.maximum(bboxes1[..., 1], bboxes2[..., 1])xx2 = np.minimum(bboxes1[..., 2], bboxes2[..., 2])yy2 = np.minimum(bboxes1[..., 3], bboxes2[..., 3])w = np.maximum(0., xx2 - xx1)h = np.maximum(0., yy2 - yy1)wh = w * ho *= wh / ((bboxes1[..., 2] - bboxes1[..., 0]) * (bboxes1[..., 3] - bboxes1[..., 1])+ (bboxes2[..., 2] - bboxes2[..., 0]) * (bboxes2[..., 3] - bboxes2[..., 1]) - wh)return (o)

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

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

相关文章

Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)

文章目录 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)前情提要客户端部分 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三) 前情提要 单例泛型类 using System.Collections; using System.Collections.Generic; …

sql:知识点记录一

1.Mysql逻辑架构:连接层、服务层、引擎层、存储层 2.show engines:查看存储引擎 3.Mysql两种存储引擎的区别: 建立索引:比如说用户很喜欢用name去查询表,就可以给数据库的name字段建立索引,提高查询效率&a…

【潮州饶平】联想 IBM x3850 x6 io主板故障 服务器维修

哈喽 最近比较忙也好久没有更新服务器维修案例了,这次分享一例潮州市饶平县某企业工厂一台IBM System x3850 x6服务器亮黄灯告警且无法正常开机的服务器故障问题。潮州饶平ibm服务器维修IO主板故障问题 故障如下图所示: 故障服务器型号:IBM 或…

zotero在不同系统的安装(win/linux)

1 window系统安装 zotero 官网: https://www.zotero.org/ 官方文档 :https://www.zotero.org/support/ (官方)推荐常用的插件: https://www.zotero.org/support/plugins 入门视频推荐: Zotero 文献管理与知识整理最佳实践 点击 exe文件自…

SpringBoot 插件化开发

SpringBoot 插件化开发 介绍使用插件的好处1 模块解耦2 提升扩展性和开放性3 方便第三方接入 插件化常用实现思路Java常用插件实现方案ServiceLoader方式1 java spi2 java spi 简单案例 自定义配置约定方式添加配置文件自定义配置文件加载类自定义测试接口启动类项目结构 自定义…

puzzle(0414)六边形拼图

目录 六边形拼图 简单 中等 困难 六边形拼图 taptap小游戏 简单 (3) (4) 中等 (3) (4) 困难 (2) (3) (4&#xff…

基于GUI的卷积神经网络和长短期神经网络的语音识别系统,卷积神经网的原理,长短期神经网络的原理

目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 长短期神经网络的原理 基于GUI的卷积神经网络和长短期神经网络的语音识别系统 代码下载链接:基于MATLABGUI编程的卷积神经网络和长短期…

初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式

STM32CubeMx配置定时器的编码器模式 上次文章写了编码器是如何工作的,今天就来用STM32F103C8T6的TIM3的通道1跟通道2编写一个编码器识别程序。 编程思路: A相:TIM3_CH1 B相:TIM3_CH2 SWITCH:PB5(外部中断的方式) 实现效果&a…

视频集中存储EasyCVR视频汇聚平台定制项目增加AI智能算法

安防视频集中存储EasyCVR视频汇聚平台,可支持海量视频的轻量化接入与汇聚管理。平台能提供视频存储磁盘阵列、视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联、H.265自动转码等功能。为了便…

Linux笔记

Linux基础命令 Linux的目录结构 /,根目录是最顶级的目录了Linux只有一个顶级目录:/路径描述的层次关系同样适用/来表示/home/itheima/a.txt,表示根目录下的home文件夹内有itheima文件夹,内有a.txt ls命令 功能:列出…

大文本的全文检索方案附件索引

一、简介 Elasticsearch附件索引是需要插件支持的功能,它允许将文件内容附加到Elasticsearch文档中,并对这些附件内容进行全文检索。本文将带你了解索引附件的原理和使用方法,并通过一个实际示例来说明如何在Elasticsearch中索引和检索文件附…

Spring中JavaBean的生命周期及模式

( 本篇文章大部分讲述了是底层知识,理念及原理 ) ( 如果只想了解,看我标记的重点即可,如果想明白其中原理,请耐心看完,对你大有受益 ) 目录 一、简介 ( 1 ) 是什么 ( 2 ) 背景概述 ( 3 ) 作用 二、生命周期 2.1 …

RK3588平台开发系列讲解(AI 篇)RKNN-Toolkit2 API 介绍

文章目录 一、RKNN 初始化及对象释放二、RKNN 模型配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解 RKNN-Toolkit2 API 详细说明。 一、RKNN 初始化及对象释放 在使用 RKNN Toolkit2 的所有 API 接口时,都需要先调用 RKNN()方法初始化 RKNN 对象,…

STM32 串口复习

按数据通信方式分类: 串行通信:数据逐位按顺序依次传输。传输速率较低,抗干扰能力较强,通信距离较长,I/O资源占用较少,成本较低。并行通信:数据各位通过多条线同时传输。 按数据传输方向分类&…

Flink源码之StreamTask启动流程

每个ExecutionVertex分配Slot后&#xff0c;JobMaster就会向Slot所在的TaskExecutor提交RPC请求执行Task&#xff0c;接口为TaskExecutorGateway::submitTask CompletableFuture<Acknowledge> submitTask(TaskDeploymentDescriptor tdd, JobMasterId jobMasterId, RpcTi…

常见指令以及权限理解

常见指令以及权限理解 命令格式&#xff1a; command [-options] parameter1 parameter1 命令 选项 参数1 参数2 1.command为命令名称&#xff0c;例如变化目录的cd等 2.中括号[ ]实际在命令中是不存在的&#xff0c;这个中括号代表可选&#xff0c;通常选项前面会添加一个符号…

AI 绘画Stable Diffusion 研究(十二)SD数字人制作工具SadTlaker插件安装教程

免责声明: 本案例所用安装包免费提供&#xff0c;无任何盈利目的。 大家好&#xff0c;我是风雨无阻。 想必大家经常看到&#xff0c;无论是在产品营销还是品牌推广时&#xff0c;很多人经常以数字人的方式来为自己创造财富。而市面上的数字人收费都比较昂贵&#xff0c;少则几…

stm32单片机开关输入控制蜂鸣器参考代码(附PROTEUS电路图)

说明&#xff1a;这个buzzer的额定电压需要改为3V&#xff0c;否则不会叫&#xff0c;源代码几乎是完全一样的 //gpio.c文件 /* USER CODE BEGIN Header */ /********************************************************************************* file gpio.c* brief Thi…

【华为认证数通高级证书实验-分享篇2】

实验拓扑 注&#xff1a;代码块为各交换机路由器中的配置命令 配置拓扑文件 实验要求 实现全网通 实验配置 SW3 [SW3]v b 10 20 [SW3]int e0/0/1 [SW3-Ethernet0/0/1]po link-t a [SW3-Ethernet0/0/1]po de v 10 [SW3-Ethernet0/0/1]int e0/0/2 [SW3-Ethernet0/0/2]po li…

table 根据窗口缩放,自适应

element-plus中&#xff0c;直接应用在页面样式上&#xff0c; ::v-deep .el-table{width: 100%; } ::v-deep .el-table__header-wrapper table,::v-deep .el-table__body-wrapper table{width: 100% !important; } ::v-deep .el-table__body,::v-deep .el-table__footer,::v-d…