网站建设 自学,网站开发实现软硬件环境,网站建设制作心得团队,网络营销方式有哪几种因为Hybrid-SORT的baseline是基于OCSORT进行改进的#xff0c;在这之前建议先了解byteTrack和【】的相关知识
1.介绍
1.1 基本框架
多目标跟踪(MOT)将问题分为两个子任务。第一个任务是检测每个帧中的对象。第二个任务是将它们在不同的框架中联系起来。关联任务主要通过显式…因为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及其速度分量
如下图所示Kalman Filter在试图估计置信状态的突然变化时表现出明显的滞后且置信度状态的变化趋势呈现出明显方向性 基于以上特点因此本文使用基于轨迹历史的简单线性预测来估计轨迹置信度。
置信度代价计算为根据式4估计的轨迹置信度与检测置信度之间的绝对差值
2.1.2 Height Modulated IoUHMIOU
引入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及其速度分量·
if not orig:from .kalmanfilter_score_new import KalmanFilterNew_score_new as KalmanFilter_score_newself.kf KalmanFilter_score_new(dim_x9, dim_z5) 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) 返回值分别是 分别是九位预测量置信度预测值置信度的速度分量·
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 IoUHMIOU
def hmiou(bboxes1, bboxes2):Height_Modulated_IoUbboxes2 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)