| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> [MOT] DeepSORT简单理解 -> 正文阅读 |
|
[人工智能][MOT] DeepSORT简单理解 |
DeepSORT是一种tracking_by_detection框架的算法 虽然性能一般,但速度不错,GitHub上有很多基于不同检测器的实现 而且JDE、FairMOT、CSTrack等JDE的追踪器,匹配思路其实都是DeepSORT的思路 给出yolov3、yolov4和centernet的开源链接 https://github.com/theAIGuysCode/yolov4-deepsort https://github.com/kimyoon-young/centerNet-deep-sort 基础知识: 1. 卡尔曼滤波? 应用非常广的一种多传感器融合算法 对理论不感兴趣的话,其实可以把MOT中的卡尔曼滤波当做一个运动预测的黑箱来使用,用于预测当前帧中目标在下一帧的位置 (ps:我大二的时候robomater的比赛中就一直在用这个算法,融合摄像头数据和机器人云台电机数据进行目标预测,但迷迷糊糊用了一年多,是到后来用卡尔曼滤波搞简单的slam,才大概弄懂的原理) 这部分原理很典型的是温度/小车的例子,网上原理很多,这里主要讲在MOT中的使用 协方差矩阵:描述内部变量的相关性的矩阵 MOT中kalman主要用于运动预测,在DeepSORT中只使用了一个最简单的匀速运动模型 在DeepSORT中,描述一个检测框需要四个状态:
对应的,匀速运动模型还需要有:
该代码定义了个KalmanFilter类,总共分为6部分:
2. 匈牙利算法 匈牙利算法(Hungarian Algorithm)与KM算法(Kuhn-Munkres Algorithm)都是用来解决多目标跟踪中的数据关联问题的 匈牙利算法与KM算法都是为了求解二分图的最大匹配问题。二分图的描述参考自这里 匈牙利算法解决的是一个分配问题。SK-learn库的linear_assignment_和scipy库的linear_sum_assignment都实现了这一算法,只需要输入cost_matrix即代价矩阵就能得到最优匹配。不过要注意的是这两个库函数虽然算法一样,但给的输出格式不同。 DeepSORT的优化主要就是基于匈牙利算法里的这个代价矩阵。它在IOU Match之前做了一次额外的级联匹配,利用了外观特征和马氏距离。 正文: DeepSORT是在SORT基础上进行改进的。 ????????SORT算法利用卡尔曼滤波算法预测检测框在下一帧的状态,将该状态与下一帧的检测结果进行匹配,实现车辆的追踪。但由于遮挡和漏检等情况的影响,SORT容易出现大量的ID切换。 ??????? 为了降低ID切换,DeepSORT利用了前面检测到的物体的外观特征,DeepSORT中采用了一个简单(运算量不大)的CNN来提取被检测物体(检测框物体中)的外观特征(低维向量表示),在执行完每帧检测+追踪后,进行一次物体外观特征的提取并保存。 ???????? 之后每执行一步时,都要执行一次当前帧被检测物体外观特征与之前存储的外观特征的相似度计算,这个相似度将作为一个重要的判别依据(不是唯一的,因为作者说是将运动特征与外观特征结合作为判别依据,这个运动特征就是SORT中卡尔曼滤波做的事) ??????? DeepSORT只使用了一个简单的CNN网络(也所以速度才更能快),网络的输出是一个128维的特征向量。 DeepSORT对追踪的初始化、新生与消失进行了设定。
SORT中解决分配问题使用的是匈牙利算法(仅使用运动特征来计算代价矩阵),该算法卡尔曼滤波算法预测的位置与下一帧目标检测出来的位置间的匹配。DeepSORT中,作者结合外观特征(由上述的CNN提取的128维特征向量)和运动特征(卡尔曼滤波预测的结果)来计算代价矩阵,从而根据该代价矩阵使用匈牙利算法进行目标的匹配。
????????马氏距离通过测量卡尔曼滤波器的追踪位置均值(mean track location)之间的标准差与检测框来计算状态估计间的不确定性,即 D(i,j)? 为第i个追踪分布和第j个检测框之间的马氏距离(不确定度)。使用对马氏距离设定一定的阈值,可以排除那些没有关联的目标。
????????作者对每个目标k创建了一个gallery,该gallery用来存储该目标在不同帧中的外观特征(128维向量),论文中用 Rk 表示(k表示track ID)。在某一时刻,作者获得出检测框(编号为j)的外观特征,记作 Rj 。然后求解所有已知的gallery中的外观特征与获得的检测框(编号为j)的外观特征的最小余弦距离。
???????在DeepSORT中, motion特征和appearance特征是相辅相成的
????????DeepSORT中使用一个简单的加权运算进行特征融合 这里的?为马氏距离,为余弦距离。??为权重系数。所以当??时,那么就是改进版的SORT,??时,仅仅依靠外观特征进行匹配也是可以进行追踪的。 部分参考自 【多目标跟踪】FairMOT(原理与代码详解)_怡宝2号-CSDN博客_fairmot代码详解 感谢大佬们 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 20:34:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |