DeepSORT的碰撞线计数方法和匈牙利算法(行人目标跟踪)

一、介绍

多目标跟踪过程是检测和跟踪多个对象的过程。目标检测算法用于确定视频序列每帧中的目标位置,并以空间信息的形式表达出来。

Alex Bewley等人提出了SORT算法,该算法利用卡尔曼滤波器结合检测算法给出目标的当前状态信息和前一状态的预测信息,以估计目标的当前状态。然后通过并集相交(IOU)距离进行权重分配,通过匈牙利计算进行数据关联,并将检测到的结果分配给估计轨迹以解决跟踪问题。这种方法具有很高的速度和准确性。由于该方法不使用物体的任何外观特征,当物镜丢失时,物镜的ID只能由检测器更新。

为了提高跟踪器的鲁棒性,在排序算法的基础上,采用卷积神经网络(CNN)来添加目标的外观信息,基于这一特征,Nicolai Wojke等人提出了DeepSORT ,它结合了对象的外观信息,并在IOU距离匹配之前另外增加了级联匹配。与SORT算法相比,由于DeepSORT算法增加了外观信息并改进了算法的结构,因此可以减少跟踪过程中的ID切换次数,并提高跟踪的准确性和精度。

本文采用YOLO目标检测算法和DeepSORT多目标跟踪算法对人群进行实时检测和跟踪,提出通过线路碰撞计数法间接计算某处行人密度。

二、算法分析

卷积神经网络是一种单输入多层处理模型,包括用于图像输入和输出的输入层和输出层,以及卷积层、池化层和全连接层等中间处理层。卷积运算是卷积神经网络的核心组件。

卷积神经网络的结构图:

DeepSORT的碰撞线计数方法和匈牙利算法(行人目标跟踪)_第1张图片

 YOLO算法

YOLO算法的主要过程是将整个画面作为输入,直接返回输出层中的候选帧及其类别,使用与Faster-RCNN不同的锚帧。将要检测的图像划分为大小相等的 S×S 网格。如果生成的目标的中心落在某个网格上,则利用该网格对目标进行预测。

YOLO算法基本原理的流程图:

DeepSORT的碰撞线计数方法和匈牙利算法(行人目标跟踪)_第2张图片

 本文选择YOLOv4算法作为检测框架。(YOLOv5之前测试过)

目标跟踪算法

深度排序跟踪方法是一种基于卡尔曼滤波和匈牙利算法的单假设跟踪框架。(u, v, γ, h, u′, γ', h') 的 8 个参数用于描述跟踪目标的状态信息。其中(u,v)是物镜检测帧的中心坐标,γ是物镜检测帧的纵横比,h是物镜检测帧的高度。其余参数是它们在图像坐标系中的速度。检测跟踪目标后,采用标准均速卡尔曼滤波和线性观测模型对新帧中目标的空间轨迹信息进行估计。

深度多目标跟踪算法使用成本矩阵来表示新检测与现有轨迹之间的相似性,其中成本矩阵由Mahalanobis距离和余弦距离表示。Mahalanobis 距离表示 Kalman 预测的状态与物镜新位置的测量值之间的距离,公式:

其中, (yiSi)表示第 i 个轨迹分布到测量空间中的投影,以及dj表示第 j 个检测框。余弦距离表示外观信息的相关程度,公式:

 

 其中,r 是外观描述符,║rj║ = 1。Ri 表示第 i 个轨道的最后 100 个对象的外观特征。每个距离都有一个阈值。当距离小于设置的阈值时,将其设置为不可能的关联。同时,每个距离所属的门控函数等于0,否则为1。成本矩阵拟合 Mahalanobis 距离和余弦距离为 :

 仅当 Mahalanobis 距离和余弦距离的门控函数都等于 1 时,门控矩阵 bi,j=∏m=12b(m)i,j 等于 1,表示 (i, j) 是空间运动和外观特征之间的有效匹配。即使 λ 等于零,关联结果仍受门控函数的 Mahalanobis 距离和余弦距离的约束。只有当关联位于两个变量的门控区域中时,才称为可接受的关联。

当新检测成功与现有轨迹关联时,使用级联匹配和交叉联合匹配将新检测与轨迹进行匹配,并将轨迹miss age设置为零。当新检测无法与现有轨迹匹配时,新检测将暂时指定为新轨迹。当不匹配的年龄超过设定的最大 age,并且目标可以在连续三帧中检测到时,新的检测被设置为新的轨迹,否则检测目标将被删除。当轨迹长时间与新检测不匹配时,轨迹将被删除。迭代循环上述过程,完成实时目标跟踪过程。

三、阶段

利用线路碰撞计数法对行人密度进行间接计数的方法分为三个阶段,即目标检测目标跟踪行人计数。每个阶段将在下面单独介绍。

A.目标检测

目标检测的主要任务是识别所需的目标,并标出目标的位置。为了实时监测视频中的目标,采用加权YOLOv4算法进行目标检测,并在CoCo数据集上对其权重进行训练和评估。选择YOLOv4带权算法的原因是:

  • 使用权重训练实时多目标跟踪检测器,可以直接调用以降低训练成本。

  • YOLOv4算法在yolo系列算法中具有更高的准确度和精密度。而且对硬件设备的要求也比较低。

  • 在后续跟踪过程中,只需要将当前帧图像中检测到的目标与后续帧中的目标进行关联,即可获得所有目标的运行轨迹,以达到实时跟踪的效果。

B.目标跟踪

跟踪目标时,DeepSORT 算法使用卡尔曼滤波器来估计当前帧中每个目标的预测位置及其运动状态信息。然后采用匈牙利算法进行级联匹配,将每个检测帧与预测帧之间的IOU距离大小作为权重信息进行比较,以匹配检测帧和预测帧。IOU比率用于测量两个框之间的行对应关系。

假设物镜的检测帧面积为 A,预测帧的面积为 B,则两个帧之间的 IOU 计算公式为:
 

 在跟踪过程中,除了通过检测获得的预训练权重外,还需要行人外观描述的权重。本文使用清华大学提供的Market1501数据集来训练行人外观描述。该数据集包含 1501 个行人和 32,668 个行人矩形。训练组有751人,测试组有750人。

DeepSORT的碰撞线计数方法和匈牙利算法(行人目标跟踪)_第3张图片

 训练结果:

DeepSORT的碰撞线计数方法和匈牙利算法(行人目标跟踪)_第4张图片

 C.行人计数

本文提出了用于行人密度统计的碰撞线计数方法。首先,填充视频序列中的黄色和蓝色线条,如下图:( 左上角的OUT表示离开食堂的人数。IN是进入食堂的人数。)

DeepSORT的碰撞线计数方法和匈牙利算法(行人目标跟踪)_第5张图片

方法流程图:

DeepSORT的碰撞线计数方法和匈牙利算法(行人目标跟踪)_第6张图片

 流程图显示了具体过程,当检测到行人通过黄线时,判断轨迹是否通过蓝线。如果轨迹通过蓝线,则 OUT 递减 1,否则不计算在内。当检测到行人通过蓝线时,将判断其轨迹是否通过黄线。如果轨迹通过黄线,则 IN 将递增 1,否则不计算在内。最后,对OUT和IN之和进行计数,以间接计算人员密度信息的流量。

四、对比

结果(v5请看上一篇)

DeepSORT的碰撞线计数方法和匈牙利算法(行人目标跟踪)_第7张图片

跟踪 

当跟踪系统检测到行人时,会为其分配一个特定的标识ID并记录其相应的轨迹。这使系统能够在不同的视频帧中跟踪相同的对象。

DeepSORT的碰撞线计数方法和匈牙利算法(行人目标跟踪)_第8张图片

 DeepSORT的碰撞线计数方法和匈牙利算法(行人目标跟踪)_第9张图片

 但是,当行人被过度遮挡时,有时可能会发生ID切换。如下图:

DeepSORT的碰撞线计数方法和匈牙利算法(行人目标跟踪)_第10张图片

 DeepSORT的碰撞线计数方法和匈牙利算法(行人目标跟踪)_第11张图片

 由此表明,本文提出的碰撞线计数方法仅考虑通过两条线时目标的轨迹和ID变化,而不考虑其他时间的ID切换。因此,有效减少了ID切换引起的误计数。

目标计数统计

碰撞线计数效果:

DeepSORT的碰撞线计数方法和匈牙利算法(行人目标跟踪)_第12张图片

 DeepSORT的碰撞线计数方法和匈牙利算法(行人目标跟踪)_第13张图片

 比较这两张图,可以看到两条计数线的位置和形状并不相同。这是因为每个入口的环境都不同。通过改变线路的位置和形状,可以满足准确计算行人数量的要求。

通过对5人进出食堂5次,每次间隔1分钟,再对比人工记录的数据,判断该方法是否有效,对比结果:

DeepSORT的碰撞线计数方法和匈牙利算法(行人目标跟踪)_第14张图片

 在5个统计中。对于第三次进入食堂的人数,通过碰撞线计数法和人工统计法进入食堂的人数相差5.8%。对于第四次进入食堂的人数,线路碰撞计数法与人工统计法相差5.8%。在第 1、2 和 5 统计中,命中线计数方法和手动计数方法的统计结果完全相同。

通过5个实验证明,该方法间接计算进出食堂的人数,得到食堂的密度。与通过检测算法直接检测食堂学生人数相比,无需部署大量检测设备,具有速度快、成本低廉的特点。

五、结论

通过计算食堂人流量,验证了本文的模型。实验证明,这种方法可以避免ID切换引起的计数不准确,还可以降低全局检测和计数带来的成本压力。

这种方法在处理复杂环境时也存在相应的缺点。在未来的工作中,需要训练更多的数据集来提高模型的准确性。

你可能感兴趣的:(YOLO,目标跟踪,人工智能,计算机视觉)