目前基于边缘设备arm优化了下多目标跟踪算法deepsort,优化后的算法只需基于CPU运行无各种环境或者框架依赖,大大提高了跟踪算法的可移植性,该算法在RK3399 pro上面同时跟踪20个目标的耗时可以做到5ms左右,真正的实时多目标跟踪。目前多目标跟踪算法已经应用在Arm边缘设备(RK3399, jetson nx)用来做人流量统计算法 和车流量统计算法。
基于深度学习的多目标跟踪算法的几种改进方向,其中有一种便是将深度表观特征应用到多目标跟踪问题中,deep-sort多目标跟踪算法便是这类算法中较为常用的一个。deep-sort 是在 sort 目标跟踪的基础上引入了表观特征提取网络,该网络是在行人重识别数据集上离线训练得到的,在目标跟踪过程中提取目标的表观特征进行最近邻匹配,这样可以有效的改善遮挡情况下的目标追踪效果。
算法可以分为四个核心部分,轨迹处理和状态估计、相关性度量、级联匹配、深度特征描述器。轨迹处理和状态估计部分的算法和 sort 算法类似,主要分为运动状态估计和目标创建与移除。deep-sort 算法通过(u,v,gama,h,x1,y1,gama1,h1), 这八个参数描述目标的运动状态,其中 (u,v) 为目标锚点框的中心坐标,gama是目标锚点框的长宽比,h 表示目标锚点框的高度,其余四个变量为目标对应在图像坐标种的运动信息。通过一个基于常量速度模型和线性观测模型的标准卡尔曼滤波器对目标的运动状态进行预测,预测的结果为(u,v,gama,h)。设置一个阈值Amax,设置一个计数器ak 表示第 k 个追踪目标最后一次出现到当前帧所间隔的帧数,每次目标出现都将刷新计数器,即将计数器置为 0,若ak>Amax则,目标 k 追踪结束。若目标匹配过程中,有目标始终无法与已存在路径相匹配,则认为该目标可能为新出现的目标,如果接下来的 3 帧都连续检测到了该目标,则该目标将被认定为新出现的跟踪目标,并以此目标为起始目标生成新的跟踪路径,否则不生成新的跟踪路径。
##什么是deepsort?
多目标追踪算法:核心思想是将目标检测和目标跟踪分离开来,首先使用目标检测算法对视频帧中的目标进行检测,然后将检测到的目标转化为特征向量,使用深度学习模型对目标特征进行学习, 最后使用卡尔曼滤波器对目标进行跟踪,实现对目标的连续跟踪。 DeepSort的优点是实时性高、准确率高、鲁棒性强,可以应用于多种场景,如人脸识别、车辆跟 踪等。同时,DeepSort还具有可扩展性强的优点,可以根据不同的应用场景进行定制化的优化。
##卡尔滤波器:
**原理:**通过对现有数据和模型的分析,对系统状态进行预测,并将预测结果与实际观测数据进 行比较,得出系统状态的估计值。然后,利用估计值更新模型,进一步提高状态估计的准确性。
**原理解析:**基于前一帧图像的状态估计值和当前帧图像的观测值,对目标在下一帧图像中的状态进行预测,因此可以说是对目标轨迹的预测。但由于卡尔曼滤波器具有较高的准确性和鲁棒性, 所以预测的轨迹往往可以较好地反映目标的真实运动状态,从而实现对目标的连续跟踪。 卡尔滤波器本质是根据现有数据的分析进行预测而表现出追踪的效果 例子: 假设有一个视频,场景是狗在追一个人,我们用DeepSort算法对这个视频进行目标跟踪。我们假 设视频的帧率为10fps,以下是前三帧的预测过程: 第一帧:狗和人的位置都被检测出来,我们将它们的位置信息输入到卡尔曼滤波器中,得到狗和人 的状态估计值。假设狗和人的状态估计值分别为(x1, y1, vx1, vy1)和(x2, y2, vx2, vy2),这里的(x, y)表示位置,(vx, vy)表示速度。由于这是第一帧,我们无法进行预测,因此直接将状态估计值作 为当前状态。 第二帧:狗和人在第二帧中的位置发生了变化,我们将它们的位置信息输入到卡尔曼滤波器中,得 到狗和人的状态估计值。假设得到的状态估计值为(x1’, y1’, vx1’, vy1’)和(x2’, y2’, vx2’, vy2’)。由 于卡尔曼滤波器具有较好的预测性能,我们可以根据前一帧的状态估计值和当前帧的观测值,对狗 和人在下一帧中的状态进行预测。假设预测得到的状态为(x1’‘, y1’‘, vx1’‘, vy1’‘)和(x2’‘, y2’‘, vx2’‘, vy2’‘),则可以将它们作为下一帧的状态估计值。 第三帧:狗和人在第三帧中的位置发生了变化,我们将它们的位置信息输入到卡尔曼滤波器中,得 到狗和人的状态估计值。假设得到的状态估计值为(x1’‘’, y1’‘’, vx1’‘’, vy1’‘’)和(x2’‘’, y2’‘’, vx2’‘’, vy2’‘’)。同样地,我们可以根据前一帧的状态估计值和当前帧的观测值,对狗和人在下一帧中的状 态进行预测。假设预测得到的状态为(x1’‘’‘, y1’‘’‘, vx1’‘’‘, vy1’‘’‘)和(x2’‘’‘, y2’‘’‘, vx2’‘’‘, vy2’‘’'),则 可以将它们作为下一帧的状态估计值。
##匈牙利算法
在deepsort的应用: 匈牙利算法在DeepSORT中的作用是将当前帧中的目标与前一帧中的目标进行匹配。具体怎么匹配 呢?用==马氏距离==来匹配 对于每一帧,DeepSORT会使用卡尔曼滤波来预测目标的位置和速度,然后通过匈牙利算法来将当 前帧中的目标与前一帧中的目标进行匹配。如果匹配成功,就更新目标的位置和速度;如果匹配失 败,则将当前帧中的目标作为新的目标进行跟踪。 匈牙利算法简介: 一种解决二分图最大匹配问题的算法,也叫做增广路算法。它的基本思想是通过不断寻找增广路来 不断扩展匹配,直到找不到增广路为止。
马氏距离
马氏距离在deepsort的应用: DeepSORT使用一个预训练的深度学习模型来提取目标的外观特征,然后使用这些特征来计算目标 之间的马氏距离,马氏距离计算数值表达的是目标之间的相似度。计算马氏距离后,DeepSORT会 将相似度用于匈牙利算法进行目标关联。具体来说,匈牙利算法会将当前帧中的目标与前一帧中的 目标进行匹配,以实现目标的跟踪。在匹配时,匈牙利算法会使用计算得到的马氏距离来判断目标 之间的相似度,从而确定它们之间的匹配关系。
547691062@qq.com