• BoT-SORT与Strong-SORT论文对比及思考总结


    BoT-SORT与Strong-SORT论文对比及思考总结

    接上篇BoT-SORT论文阅读笔记
    并对Strong-SORT论文研读与BoT-SORT的更新点对比有了以下的思考总结
    Strong-SORT论文
    Strong-SORT代码

    通过这两篇论文的阅读以及对作者提供的代码也有细致的通读理解,BoT-SORT代码是基于ByteTrack的基础上进行改进,而Strong-SORT代码是基于原生DeepSort修改,两篇论文有其相似的更新点
    论文的改进点方向大致都类似(KF、CMC、Reid特征融合)

    一、相同点

    1、两者都使用了EMA的方式来对特征进行更新,对于特征池的概念也就没有了,使用的是前一次EMA特征与当前的检测特征做融合操作,具体公式如下:
    在这里插入图片描述
    其中参数值α = 0.9,由此可以看出每次匹配的特征值都是由之前特征作为基础。

    在这里博主在想为什么两篇论文都使用到了这个更新点,不是没有道理的,在原生DeepSort中是使用了一个特征池的概念budget,数量可自由设置,每次更新特征都会将特征放入其中,按照队列形式,此处会出现一个问题,当目标在一个位置长时间不动的时候,特征池里面的特征可能都几乎为相同的特征,而当快速变化时,由于特征池来不及更新,会导致自身特征匹配不上导致id变换,轨迹丢失。而EMA方式可能长时间的不动也仍然存在之前特征的影子,并不是单一的姿态特征。

    2、两者都使用了 appearance cost Aa and motion cost Am之间的融合,公式如下:
    在这里插入图片描述
    参数值λ=0.98,起初没看代码前将Am理解成了iou cost矩阵,实质Am是指的是gating distance(马氏距离值),如果当做是iou cost的话就会陷入一个误区,iou没什么作用,一直都是reid中的特征在做匹配。
    而与马氏距离做融合机制会有一个好处就是它会限制reid的匹配距离,虽然说马氏距离值在公式中占的权重少,但是其实是有影响的,由于Aa值在区间[0, 1]之间,而马氏距离值会是一个很大的值,当马氏距离小,C值会比较小,马氏距离大,C值可能会让整体的值更大,对reid匹配起到一个直接不去匹配的作用。

    二、不同点
    1、BoT-SORT

    (1)IOU-fuse (fuse_score)
    论文中此策略并未提及,而在阅读代码时确实使用到了,主要是通过计算完的iou cost矩阵后,通过每个检测框与预测框匹配计算完的cost矩阵后,在cost值对应的检测框乘上其检测得分进行融合输出,计算公式可总结为: [1 - (1 - iou_cost) * det_score]

    此种方式猜测作者是想通过检测得分低的框做iou匹配时当做不可靠对象来降低最终的匹配得分,不可靠检测可以为遮挡对象或者半身之类的。

    (2)IOU-ReID fuse
    在BoT-SORT中作者将原生DeepSort的级联匹配(先reid匹配,若reid未匹配成功会进行下一次的iou匹配)修改成单次匹配,通过计算出IOU cost与ReID cost 最后通过融合机制进行判断匹配,公式如下:
    在这里插入图片描述
    其中注意的是θiou = 0.5,θemb = 0.25,iou值为1-iou表示,主要通过iou的得分与reid的匹配得分做最后的特征余弦相似度融合,去其中两者最小值来决定匹配程度。
    (3)卡尔曼预测KF的改进
    作者将a = w/h 的预测改成了 w宽度的单独预测,目的是为了能让预测框更好的框住目标。
    具体可见BoT-SORT论文阅读笔记
    (4)CMC 相机运动补偿
    近年来论文貌似都在往这个方向发展,通过外部因素的补偿让预测效果更好,主要原因可能还是因为KF为线性预测方式,而运动为非线性的。
    CMC方法作者使用的是ORG全局采样特征角点,前后帧进行特征点匹配计算出其中的变换矩阵来校正预测的矩阵参数从而达到补偿的目的,不过这种方式是非常耗时的,暂在端侧应用不太可行。

    2、Strong-SORT

    (1)级联匹配中的改进
    论文中尚未提及此处改动,通过代码处看到,在级联匹配中,按照原始匹配策略,是通过等级机制一层一层优先匹配,而作者改成了全局匹配,不分层级先后顺序。暂未想到这么匹配有什么好处,有清楚的小伙伴可以互相交流一下呀。
    (2)卡尔曼预测KF的改进
    作者提出检测的得分高低应该与检测噪声有一个共有关系,若检测得分高,应该相信检测,检测得分低就不太可相信检测,自此作者引用论文GIAOTracker提出的自适应噪声协方差的更新公式如下:
    在这里插入图片描述
    ck代表的是检测的得分,从而可以通过检测得分自适应噪声协方差的值。
    (3)相机运动补偿 ECC
    Strong-SORT中作者也使用到了相机运动补偿这个更新点,但是计算的方式不同,ECC方式在耗时方面也存在较大的优势,并且是通过迭代的方式计算最后的校正补偿矩阵。(具体查看代码)
    (4)轨迹插值

    • AFLink ( appearance-free link model
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    • GSI (Gaussian-smoothed interpolation
      在这里插入图片描述
      在这里插入图片描述

    论文提及两种轨迹插值的方式,即插即用,看代码时确实也只是分开的方式将这一部分单独作为一大块。GSI是采用高斯平滑插值的方式来拟合无检测更新的轨迹,AFLink是通过轨迹片段训练的小网络作为分类输出判断两个轨迹是否为同一轨迹的相似度得分。
    最后总结这两篇论文改进点都比较类似,可作为更新参考点尝试改进,或许会有意想不到的收获!有写的不对的地方,欢迎随时交流!

  • 相关阅读:
    【MySQL进阶】深入理解B+树索引底层原理
    第一章、Spring基础
    Python之OS模块
    RabbitMQ概述,死信队列
    PMP 11.27 考试倒计时22天!冲刺啦!
    再生之术:Root 密码遗忘的 CentOS8 Stream 解决方案
    appium操作微信小程序
    微信小程序——语法篇
    【无标题】微信小程序登录流程详解
    【c++每天一题】 小小演唱家
  • 原文地址:https://blog.csdn.net/ganbelieve/article/details/126664525