DeepSort 解读

1 摘要

DeepSort是在Sort目标追踪基础上的改进。引入了在行人重识别数据集上离线训练的深度学习模型,在实时目标追踪过程中,提取目标的表观特征进行最近邻匹配,可以改善有遮挡情况下的目标追踪效果。同时,也减少了目标ID跳变的问题。

2 核心思想

算法的核心思想还是用一个传统的单假设追踪方法,方法使用了递归的卡尔曼滤波和逐帧的数据关联。

2.1 轨迹处理和状态估计

该部分的思路和sort很接近。

  • 运动状态估计:

使用8个参数
在这里插入图片描述
来进行运动状态的描述,其中(u,v)是bounding box的中心坐标,r是长宽比,h表示高度。其余四个变量表示对应的在图像坐标系中的速度信息。使用一个基于常量速度模型和线性观测模型的标准kalman滤波器进行目标运动状态的预测,预测的结果为(u,v,r,h)。

  • 目标的创建与移除
    对每一个追踪目标,记录自其上一次检测结果与追踪结果匹配之后的帧数 a k a k a k akak a_k akakakλ=0,Amax=30

    和sort对比,好处是:
    • 减少了45%的ID switch;

    • 结合了深度外观信息,对遮挡目标的追踪效果大大提升;

    • FP的升高很多,文章中提出这主要是由于静态场景中detection的错误以及过长的允许丢失的track age所导致的(相对于SORT只用相邻帧进行匹配来说,Deep SORT允许高达30帧的丢失,而Kalman的等速运动模型没有改变,这主要造成了FP的升高)。

    • 20Hz,依旧实用;

    • 达到了state-of-art online tracking的效果。

    以下是deepsort的工作过程
    在这里插入图片描述
    1.读取当前帧目标检测框的位置以及各检测框图像块的深度特征。(这里实际处理时要自己来提取)

    2 根据置信度对检测框过滤,对置信度不够高的检测框和特征予以删除

    3.对检测框进行非极大抑制,消除一个目标多个框(这里如果用python的接口,可以省去着一个环节)

    4 预测:使用kalman滤波预测目标在当前帧的位置

    转自:https://blog.youkuaiyun.com/cdknight_happy/article/details/79731981

                                    </div><div><div></div></div>
                <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet">
                                </div>
    </article>
    
### DeepSort中的遮挡感知特征增强技术 在多目标跟踪领域,DeepSort作为一种广泛应用的方法,在处理复杂场景下的对象追踪方面表现出色。然而面对遮挡情况时,其性能可能会受到影响。为了提高DeepSort对于遮挡物体的识别能力,可以借鉴一些先进的遮挡感知特征增强方法。 一种有效的方式是从基于点云的目标检测算法中获取灵感。例如,在单个对象跟踪上采用盒子感知特征增强的技术被证明能够显著改善模型对部分可见目标的理解[^2]。该研究通过引入空间注意力机制来加强那些可能受到遮挡影响区域内的特征表示,从而使得网络更加关注于未被阻挡的部分并减少误判的可能性。 类似的思路也可以应用于改进DeepSort框架: 1. **融合外观与运动信息**:除了利用CNN提取的人脸或其他生物特征外,还可以加入光流法计算得到的速度向量作为额外输入给关联度评估模块; 2. **应用时空上下文建模**:考虑前后帧之间的关系,当某个ID突然消失后再重新出现时,可以通过预测轨迹位置辅助匹配决策; 3. **实施对抗训练策略**:通过对抗样本生成器制造人工遮蔽效果来进行数据扩充,并让分类器学会区分真实和伪造案例,进而提升鲁棒性[^1]。 ```python import numpy as np from deepsort import DeepSort def enhance_features_with_occlusion_awareness(deepsort_model, detections): enhanced_detections = [] for detection in detections: bbox = detection.to_tlbr() # 增强局部特征描述子 local_feature = extract_local_descriptor(detection.feature, bbox) # 考虑时间序列上的变化趋势 motion_vector = estimate_motion_vector(bbox) # 组合多种线索形成最终表征 combined_representation = fuse_multi_cues(local_feature, motion_vector) enhanced_detection = Detection( tlwh=detection.tlwh, confidence=detection.confidence, feature=combined_representation ) enhanced_detections.append(enhanced_detection) return deepsort_model.update(np.array([d.tlwh for d in enhanced_detections]), [d.feature for d in enhanced_detections]) ``` 上述代码片段展示了如何将这些概念集成到现有的DeepSort工作流程当中去。具体来说就是针对每一个检测框,先抽取它周围的局部视觉特性,再估计这个边界框中心点相对于前一时刻位移了多少距离,最后把两者结合起来构成更丰富的表达形式供后续步骤使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值