首页 > 其他分享 >DeepSORT及SORT的说明

DeepSORT及SORT的说明

时间:2023-03-27 11:45:16浏览次数:30  
标签:SORT DeepSORT 检测 物体 说明 算法 ID

整体思路
SORT 算法的思路是将目标检测算法得到的检测框与预测的跟踪框的 iou(交并比)输入到匈牙利算法中进行线性分配来关联帧间 Id。而 DeepSORT 算法则是将目标的外观信息加入到帧间匹配的计算中,这样在目标被遮挡但后续再次出现的情况下,还能正确匹配 Id,从而减少 Id Switch。

算法思路
状态估计(state estimation)和轨迹处理(track handing)
状态估计

用一个 8 维空间表示轨迹在某个时刻的状态即( u , v , γ , h , x ˙ , y ˙ , γ ˙ , h ˙ ) (u, v, \gamma, h, 
 ),( u , v ) (u,v)(u,v)表示 bbox 的中心坐标,γ \gammaγ表示宽高比,h hh表示高度,最后四个变量代表前四个变量的速度信息。使用一个基于匀速模型和线性观测模型的标准卡尔曼滤波器进行目标状态的预测,预测结果为( u , v , γ , h ) (u,v,\gamma , h)(u,v,γ,h)。
 

相比于SORT算法,DeepSORT到底做了哪部分的改进呢?这里我们简单了解下SORT算法的缺陷。

SORT算法利用卡尔曼滤波算法预测检测框在下一帧的状态,将该状态下一帧的检测结果进行匹配,实现车辆的追踪。

那么这样的话,一旦物体受到遮挡或者其他原因没有被检测到,卡尔曼滤波预测的状态信息将无法和检测结果进行匹配,该追踪片段将会提前结束。

遮挡结束后,车辆检测可能又将被继续执行,那么SORT只能分配给该物体一个新的ID编号,代表一个新的追踪片段的开始。所以SORT的缺点是

受遮挡等情况影响较大,会有大量的ID切换

那么如何解决SORT算法出现过多的ID切换呢?毕竟是online tracking,不能利用全局的视频帧的检测框数据,想要缓解拥堵造成的ID切换需要利用到前面已经检测到的物体的外观特征(假设之前被检测的物体的外观特征都被保存下来了),那么当物体收到遮挡后到遮挡结束,我们能够利用之前保存的外观特征分配该物体受遮挡前的ID编号,降低ID切换。

当然DeepSORT就是这么做的,论文中提到

We overcome this issue by replacing the  association metric with a  more informed metric that combines  motion and appearance information.In particular,we apply a  convolutional neural network (CNN) that has been trained to  discriminate pedestrians on a large-scale person re-identification dataset.

很显然,DeepSORT中采用了一个简单(运算量不大)的CNN来提取被检测物体(检测框物体中)的外观特征(低维向量表示),在每次(每帧)检测+追踪后,进行一次物体外观特征的提取并保存。

后面每执行一步时,都要执行一次当前帧被检测物体外观特征之前存储的外观特征相似度计算,这个相似度将作为一个重要的判别依据(不是唯一的,因为作者说是将运动特征外观特征结合作为判别依据,这个运动特征就是SORT中卡尔曼滤波做的事)。

标签:SORT,DeepSORT,检测,物体,说明,算法,ID
From: https://www.cnblogs.com/lidabo/p/17261043.html

相关文章

  • 关于python编程中try...except的嵌套使用说明及注意事项
    今天笔者在写一个脚本时,情况比较复杂,在脚本中使用了try...except的嵌套,遇到了一些与预期不一样的结果于是笔者又研究了一下,try...except的嵌套使用,首先有一点是肯定的,那......
  • python中sorted排序
     key是自定义函数reverse=False,升序(默认)reverse=True,倒序#不区分大小写排序sorted(['bob','aBout','ZOO','Credit'],key=str.lower)#按绝对值排序sorted([36,5,-12......
  • 配置项功能说明介绍
    1./etc/passwdroot@root:~#cat/etc/passwdroot:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologi......
  • 学生成绩的[排名算法][课程排名计算范围]选项及成绩[总评]的解释说明
    中高等职业类或普通高校类院校的学生成绩管理,和初高中学生的成绩管理是不一样的。初高中同一个年级的学生的学习课程一般都是一样,排名采用班级排名和年级排名就可以了,但......
  • 数据类型-Sorted Set(待补充)
    Redis为什么使用skiplist而不是平衡树Redis中的skiplist主要是为了实现sortedset相关的功能,红黑树当然也能实现其功能,为什么redis作者当初在实现的时候用了skiplist而不......
  • MySQL order by limit 分页数据重复或丢失问题说明
    mysql中当orderby与limit同时使用,数据可能出现重复或丢失问题使用了下面的方法发现也没什么问题Db::name('users')->where(['is_disabled'=>0])->field('id,nickn......
  • C++ sort 函数 以及 priority_queue 的使用
    1.sort函数的使用sort函数的定义:sort(first,end,compare);sort对[first,end)范围内的元素进行排序。默认为升序排序(此时不需要传入compare)。当需要降......
  • Program Size部分说明
    在Keil中编译工程成功后,在下面的BulidOuput窗口中会输出下面这样一段信息:ProgramSize:Code=6320RO-data=4864RW-data=44ZI-data=1636代表的意思:Code:是程序......
  • ADB使用说明
    安卓日志相关:adblogcat->C:\Users\1\Desktop\pkqlog\pkq.txt该指令的含义是将app运行的日志存储到C:\Users\1\Desktop\pkqlog\pkq.txt当中需要先建立好文件夹,如果......
  • sort函数之cmp
        bool static cmp(const  pair<int,int>&a,const pair<int,int>&b)    {        return a.second < b.second ;//从小到大returna.s......