人工智能之目标追踪DeepSort源码解读(yolov5目标检测,代价矩阵,余弦相似度,马氏距离,匹配与预测更新)

要想做好目标追踪,须做好目标检测,所以这里就是基于yolov5检测基础上进行DeepSort,叫它为Yolov5_DeepSort。整体思路是先检测再追踪,基于检测结果进行预测与匹配。

一.参数与演示

这里用到的是coco预训练人的数据集:

二.针对检测结果初始化track

对每一帧数据都输出yolo5的检测结果(主要是四个坐标值)

上图是说在第一帧时检测到8个框,它们每个框的4个坐标值如上图。

置信度是指每个框是人的可能性是多少。

下面就看它取特征的网络结构:

最终输出的特征结果是每个框(一共8个框)对应的128维的向量。

上图是按置信度过滤掉分值低的,然后再从detections对象出取出过滤后的boxes与置信度值(得分)。

三.对track执行预测操作

对上二个张图中写的卡曼滤波更正为卡尔曼滤波。按上图所示下面就实例化Track了,如下图:

一个track只会保存100个特征,也就保存100帧结果。到此第一帧的追踪就完成(其实第一帧也只是初始化track,没做核心内容,从第二帧开始才执行核心内容),

上面二个方法也是卡尔曼滤波的预测与更新两个核心操作。

下面开始第二帧追踪了,这里track已经有值了:

四.状态量预测结果

上图中mean[3]就是指h的值,因为对人进行跟踪时,随着运动,距离越远h值变得越小,越近h值就会变得越大,其它的x,y值是固定的,a这个长宽比也是固定的,所以说h变化比较大,那么就用基于h来做噪声矩阵。

按h初始化得到一个噪声矩阵P:

得到状态转移矩阵A:

上图中写的FX中的F改成A,表示状态转移矩阵。

其实上图中写的F实际上是A来的,表示状态转移矩阵。

做8次后tracker.predict()就结束了,下面将进行tracker.update(detections)方法了。tracker.update(detections)不但完成更新还要完成匹配,是最核心的方法。

五.IOU代价矩阵计算

tracker.update(detections)流程是先匹配再更新操作的。匹配包括级联匹配,当未匹配上就做IOU。

因为3次确认上才会做级联匹配,那现在第2帧进来时不会做级联匹配,就会做IOU匹配:

IOU核心就是把代价矩阵做出来,使它的损失最小(距离最小),其实就是计算track与detection之间的IOU距离值出来。

初始化出一个全是0的8*8的代价矩阵cost_matrix出来。

六.参数更新操作

匈牙利匹配只需要一个代价矩阵cost_matrix参数,输入代价矩阵返回回来最合适的匹配。上面已经得到这个参数了,所以下面就直接调用这方法:

linear_assignment是scipy中已经实现好的,直接调用返回对应的ID值:

调用的结果如下图:

有返回ID后就对detection与track中的值进行匹配过滤,如下图:

返回后得到匹配后的结果,完成IOU代价矩阵计算:

由上图可见到匹配到8个对,那接下来就要做更新操作:

取前4个值:

将协方差矩阵映射到检测空间:

上图最后把均值向量映射到检测空间的4个值(mean),协方差映射到检测空间+初始化的噪声矩阵都返回回去。映射完后就计算卡尔曼增益了,如下图:

至此卡尔曼增益已算出,预测值与协方差距阵都做了更新。

七.级联匹配模块

上图中假设8个人都连续命中3次那也就是要进行级联匹配,

为什么先做级联匹配呢?因为级联匹配是对确定状态(连续3帧都匹配上,即比较有把握的匹配了)的匹配。IOU匹配主要是对新的detection的匹配。

八.ReID特征代价矩阵计算

进入级联匹配方法中,它主要做外观信息与运动信息的匹配:

它也一样要构建代价矩阵出来

求上面所说的代价矩阵用到的是余弦相似度计算

这里运用到二个特征向量之间做余弦相似度,取出距离最近的(相似度最大的)出来,值得其它地方运用。

九.匹配结果与总结

返回级联的代价矩阵后,也要做过滤:

IOU匹配都是每一帧都会去匹配的。追踪的核心思想是当前帧track是否与检测值bbox匹配上,其中核心是代价矩阵的求解。

总结:目标检测得到bbox,第一帧得到track(iou匹配),连续3帧确定的就进行级联匹配(包括iou匹配)。

本例是对人的目标做追踪,而如果换成其它物体追踪就要把ckpt.t7换一下。

.

相关推荐
思绪无限2 小时前
YOLOv5至YOLOv12升级:木材表面缺陷检测系统的设计与实现(完整代码+界面+数据集项目)
人工智能·深度学习·目标检测·计算机视觉·木材表面缺陷检测
kishu_iOS&AI2 小时前
深度学习 —— 损失函数
人工智能·pytorch·python·深度学习·线性回归
好运的阿财2 小时前
OpenClaw工具拆解之canvas+message
人工智能·python·ai编程·openclaw·openclaw工具
TechubNews2 小时前
新火集团首席经济学家付鹏演讲——2026 年是 Crypto 加入到 FICC 资产配置框架元年
大数据·人工智能
知识浅谈2 小时前
DeepSeek V4 和 GPT-5.5 在同一天发布了??我也很懵,但对比完我悟了
算法
蒸汽求职2 小时前
跨越 CRUD 内卷:半导体产业链与算力基建下的软件工程新生态
人工智能·科技·面试·职场和发展·软件工程·制造
DeepModel2 小时前
通俗易懂讲透 Q-Learning:从零学会强化学习核心算法
人工智能·学习·算法·机器学习
田梓燊2 小时前
力扣:19.删除链表的倒数第 N 个结点
算法·leetcode·链表
聊点儿技术3 小时前
LLM数据采集如何突破AI反爬?——用IP数据接口实现进阶
人工智能·数据分析·产品运营·ip·电商·ip地址查询·ip数据接口
小兵张健3 小时前
一场大概率没拿到 offer 的面试,让我更坚定去做喜欢的事
人工智能·面试·程序员