基于YOLOv5和DeepSort的实时地铁客流量检测
2022-02-24何宇李丹
何宇,李丹
(四川大学锦城学院计算机与软件学院,四川成都,611371)
0 引言
地铁作为现如今最为流通的交通出现方式之一,已经成为了人们生活中必不可少的一部分。对于本文主要提出的问题,则是在地铁的实时监控录像中,识别行人的数目,实时反应地铁上具体的人数情况,从而有利于选择更好的出行方式。
针对于此,本文提出基于YOLOv5和DeepSort的算法,着重要实现的目标是如何保障在嘈杂的地铁环境中保证行人能够尽可能被正确识别检测,提高检测识别精确率。利用yolov5目标检测算法和DeepSort算法结合,达到有效地提升行人的检测精度。
1 相关背景
1.1 YOLOv5
YOLOv5是一种单阶段目标检测算法,该算法主要是在YOLOv4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。整个YOLOv5网络结构空语分成四部分:输入端、Backbone、Neck、Prediction。
输入端的主要操作任务也就是在用户输入多个数据的同时需要进行各种数据增强,因此YOLOv5继承了YOLOv4所使用的Mosaic数据增强方式,对图片进行随机组合缩放、随机组合裁剪、随机组合排布等多种方式进行随机拼接,实现了既对数据集进行增强又同时解放了对于GPU的依赖[6]。YOLOv5针对不同的数据集,采用自定义不同长宽锚框的自适应锚框,同时运用自适应图片缩放,达到数据增强的目的。
Backbone主要被划分为了两大结构:Focus和CSP,Focus结构就是yolov5新提出的一种结构,可以将原始的设定为608*608*3的图片大小,经过切片后改变为304*304*12的特征结构图,利用32个卷积核的卷积,得到304*304*32的图片特征结构图。CSP模块借鉴之前CSPNet的网络结构,由卷积层和X个Res unint模块通过concate构成,每个CSP模块前面的卷积核的大小都被设定成是3*3,stride=2,因此它们可以起到对图片进行下采样的作用,降低了内存的使用成本[5]。YOLOv5中的CSP结构如YOLOv4类似,但分别划分了两处不同的使用范围,CSP1_X类型结构广泛应用于现在Backbone主干网络,另一种CSP2_X类型结构则广泛应用于Neck中。
图1
YOLOv5中的Neck网络采用FPN+PAN的结构,FPN是自顶向下的,将高层的特征信息通过上采样的方式进行传递融合,得到进行预测的特征图,而PAN特征金字塔则自底向上传达强定位特征,两两联手,从不同的主干层对不同的检测层进行参数聚合[6]。相较于YOLOv4其改进的部分在于,通过借鉴CSPnet网络而设计CSP2网络,进一步加强网络特征融合。
目标检测任务的损失函数一般由分类损失回归函数和回归损失函数两个子部分组合构成,YOLOv5的Prediction中的端口损失采用了GIOU_Loss函数作为回归损失函数,计算不同状态下的GIOU的数值,解决了在边界框不完全重合的问题;同时利用加权DIOU_nms实现非极大值抑制,抑制冗余框,只保留我们所需要的框,可以对被遮挡的物体进行更为有效地识别。
YOLOv5算法具有4个版本,具体包括:YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四种,可根据自身对准确度和精确度的需求选择不同版本,由于Yolov5s网络最小,速度最少,AP精度也最低,所以本文算法的权重文件是基于YOLOv5s而建立的。
1.2 DeepSort
DeepSort是在整个Sort算法在对目标追踪基础上的改进,整体设计框架没有大的修改,还是完全延续了卡尔曼滤波加匈牙利算法的设计思路,在这个算法基础上又新增加了一个Deep Association Metric,此外还重新加入了外观图像信息以便于实现了如何在较长时间内对被遮挡的目标进行跟踪时的问题。其主要特点之处在于,DeepSort加入了更多外观特征信息,借用了新的ReID应用领域特征模型来快速提取外观特征,减少了REID特征转换的发生次数。
在跟踪方面,DeepSort采用的级联匹配算法,可以针对每一个检测器都会分配一个跟踪器,每个跟踪器会设定一个time_since_update参数;对于运动信息和外观信息的变换和模糊问题,利用马氏距离与余弦距离计算;添加了深度学习ReID的模块,有利于更好地区别不同的人物或物体。
DeepSort的运算完成流程,第一步依赖卡尔曼滤波器预测轨迹Tracks;第二步,使用匈牙利算法将通过预测轨迹得到的帧中轨迹数据tracks和当前帧中的轨迹detections组合进行匹配(包括级联匹配和IOU匹配);第三步,卡尔曼算法滤波器的更新。DeepSort算法通过将使用目标跟踪检测的算法(如YOLO)计算得到的目标检测框与之前预测的目标跟踪框的iou(称为交并比)进行输入组合。输入到匈牙利这个算法中进行线性分配来直接关联这个帧中的ID,目标的物体外观位置信息可以加入连接到帧间匹配的过程计算中,这样在目标被物体遮挡但后续目标再次出现的实际情况下,还可以正确的来匹配这个帧间ID,在进行实时检测目标追踪过程中,可以改善在有遮挡目标情况下的实时目标自动追踪检测效果。同时,也大大减少了目标id之间跳变频繁的问题,达到持续跟踪的目的。
2 实时检测地铁人流量系统
地铁列车人流量的实时检测往往需要受到各种因素的直接影响,比如根据天气或者环境因素,采取自动网络售票及电子检票机等设备的实时通过人流能力以及地铁列车实时输送人流能力等。近年来,由于普通人出行频率快速增长,地铁客流量的目标检测技术成为一大研究热点,该研究方向对维持交通秩序,减少出行拥挤很大的意义。
此实验模型可以实时观测到进出地铁的人流量,如图2所示,该模型实时检测三个数据量:实时客流总数,进出两不同方向各自的数目,以及正在进入和正在离开的具体目标。
图2 实时检测图像
本文采用的方法,是将yolov5的目标检测封装成了一个Person_detect类,通过它的detect方法可以检测到视频中的每一个行人目标。通过给定线条两端的坐标在视频画面中设定一条基准线,以这条基准线为轴,判断行人的前进方向,同时确定进出两个方向的人数。同时创建跟踪器,开始对yolov5检测出的目标进行跟踪,该思路可以运用于对于地铁当中某些可疑人员进行实时追踪。
本文中算法对行人人流量实行了两种判断模式,一、以视频前后两帧的中心点所连成的直线和预先设定的基准线相交,如若此时行人的目标位置锚点以超过该交点,则判定该行人已经越线,进入地铁站;二、利用了三角形的正切与反正切原理,使用math模块中的degrees方法来判断,如果行人所处锚点与上述交点所连线成的角度大于零,说明是向上走,反之则为向下走。
使用yolov5实现行人检测,deepsort进行跟踪,在遮挡的情况下能较好的防止reid模型误识别,做到可以实时观察到具体到某个人物进入地铁监控范围。
该应用可以广泛应用于各大地铁的实时拥挤情况,可以提供人们实时地铁拥挤信息,利于群众选择更为便捷方便的出行方式。
3 实验结果与分析
3.1 实验数据集
本实验使用的数据集是一个位于地铁闸门通过口附近的一段实时监控录像,该数据集中同时时间段的人数众多,充分体现了地铁人流量的现状,可提供多种目标种类和位置信息,可保证训练的数据尽可能多以及数据集集的普遍性,方便进行实时监控或录制。
3.2 实验结果分析
从实验结果上看,实验中使用yolov5 网络和DeepSort算法模型进行训练,训练效果如图3所示。当两人正在通过黄线,但实时检测只判定了一人正在通过,且存在有人物距离过近未被标识的情况。但总体而言,可看出yolov5 算法和DeepSort算法对于目标检测与跟踪的效果准确率处于较为可观的状态,能够较为准确的检测识别出正确的人物,但仍需要进一步训练以提高准确率。后续可尝试对训练参数进行修改或改变权重文件,且yolov5 的损失函数并不是现在最优的,可替换为更为准确地函数。
图3 YOLOv5s loss函数图像
3.3 网络训练
本次实验的训练环境:利用谷歌云盘提供的环境,CPU为 Intel i7 7800X,GPU 为 Tesla T4,内存为 16 G,操作系统为 ubuntu 18.04 64位 安装CUDA10.0库文件,开发语言为 Python,Pytorch 框架。
首先输入视频数据,使用yolov5 检测算法,通过对相应人物识别训练模型的训练,得到训练好的检测模型,测试相关的行人标识,选择置信度最高的边框输出,以便完成基于yolov5 的行人目标检测这一目标。再通过deep sort跟踪目标,实时监控每个物体锚点的移动,最后输出视频。
4 结束语
本文围绕如何利用 yolov5 网络模型和DeepSort算法来实现地铁场景下的对行人数量的检测,介绍yolov5的网络模型,通过实验结果来说明yolov5 可以保证相应目标的检测得以实现,且检测精确率也较为恰当。但事实结果表明该模型的检测精确度有所提高,但仍然不够完善,如图2所示,仍存在多个目标识别为一种目标的现象。如何进一步提高目标检测的准确率,使其能应用到更多的领域中,是需要进一步探索的问题。