基于YOLOv4的新冠疫情感染者行迹识别
2022-03-18崔佳豪李丹
◆崔佳豪 李丹
基于YOLOv4的新冠疫情感染者行迹识别
◆崔佳豪 李丹
(四川大学锦城学院计算机与软件学院 四川 611371)
针对新冠疫情防控期间下对于已公布新冠疫情感染者在路口,火车站等场所下的行踪轨迹识别问题,本文基于YOLOv4目标检测模型,结合Mosaic数据增强和标签平滑,对该场所下的行人进行检测并记录下感染者在当前场所行踪,从而实现感染者行迹识别。
数据集;YOLOv4;深度学习;目标检测;新冠疫情
随着新冠疫情肆虐世界各国,如何更快,更精准掌握新冠疫情感染者轨迹,对于新冠疫情管控工作越来越重要。只要掌握精确的疫情感染者的行踪轨迹就能对于该场所下的密切接触者或风险接触者更快地进行疫情防控工作,防止感染范围继续扩大。如果还采用以前的人工检测方法会耽误很多的时间,因此我们需要更智能化,更精准,更快的方法去解决这样的问题。
新冠疫情感染者轨迹识别是一种目标检测任务,通过定位感染者与普通行人,对输入的图片或视频进行分类,从而达到判断目标是否为感染者,同时也标注目标目前所在的场所的目的。目前有很多较为经典的算法能够完成这项工作,例如FasterR-CNN算法是基于候选框从而实现检测,虽然有着还算不错的精准度,但对于这项需要少量时间完成任务的工作不太适合。所以我们自己构建了关于新冠疫情感染者行踪数据集(该数据集中感染者均为假设),通过Mosaic数据增强方法和对原始YOLOv4网络参数调整适应本次任务,从而进一步提高模型的鲁棒性,提高模型识别精度,使其更好地适应和预测本次实验。
1 YOLOv4简介
YOLO(You Only Look Once)是一种短阶段目标检测的算法,在YOLOv3的基础上,在backbone方面上用CSPDarknet53替换了Darknet53,同时YOLOv4在backbone后面进行了一个spp操作从而增加感受野。而且相比于YOLOv3,YOLOv4增加了很多训练技巧(tricks),例如Bagoffreebies(在训练过程中不用增加推理成本,不会对推理速度进行影响,但最终会提高精度)和Bagofspecials(对推理时间有轻微的影响,但在性能上有好的反馈),而YOLOv4最为精彩也是较为重要的地方还是在于YOLOv4本身的网络结构,如图1(引用于参考文献第2条)所示,主要分为三个部分,第一个部分为骨干网络(backbone)CSPDarkNet53,从而提取模型中的特征,第二部分则是脖颈部分(Neck),主要是SPP结构和PANet结构,在SPP结构中进行三次卷积后,是采用四种不同尺度的最大池化进行处理,而这种四种不同尺度分别为13*13,9*9,5*5,1*1。其中1x1即没有进行处理,所以在图1中并未标注。
在PANet结构中主要就是进行特征融合,采用上采样的方式通过从上到下的特征提取方式进行特征融合,从而使得第三个部分Yolo head部分能有特征进行预测。在骨干网络中,YOLOv4在YOLOv3的基础上主要是改变了两个地方,首先从主干特征提取网络由原先的Darknet53改进为CSPDarknet53,在该网络中例如输入的图像大小为416*416,当该图片输入到该网络中首先会对图像进行预处理即将原始输入图片的大小缩放到CSPDarknet53输入大小,再通过卷积操作,值得一提的是,在这里对Resblock_body的结构进行了修改,使用了CSPnet结构,就是将原来的残差块堆叠拆分成两个部分,主干部分继续原来残差块堆叠,而另外一个部分就像一个残差边一样直接连接到最后,最终两个部分通过张量拼接(concat)操作。最终特征图变化的规律为:416->208->104->52->26->13经过5个残差单元后得到13*13大小的特征图。而使用CSPDarkNet53网络结构主要有三个方面的好处:1、降低了内存成本;2、降级了计算所需的瓶颈;3、增强CNN的学习能力,同时减少了计算量。同时YOLOv4将DarknetConv2D的激活函数由LeakyReLU修改成了Mish激活函数。而YOLOv4中使用的Dropblock是缓解过拟合的一种正则化方式,就像常见网络中的Dropout功能一样,都是随机删除或减少神经元的数量,使得网络轻量化,更加简单。
图1 YOLOv4网络结构
在这次任务中,我们使用了YOLOv4的一个tricks(mosaic数据增强),mosaic每次读取四张图片,如图2所示,分别对四张图片进行翻转、缩放、色域变化等,并且按照四个方向位置进行放置,再进行图片的组合和框的组合,这样做的好处是可以丰富检测物体的背景,且在BN算法计算中的时候可以一次性计算四张图片的数据,使得实验mini-batch大小不需要很大,对CPU的需求不会过大。
图2 mosaic数据增强
1 数据集制作
由于以后的行人数据集中如(CoCo数据集)包含一些不需要的类,包含人体的图像数量也较少,且不太符合本次任务所需要的人物形象,无法较好地执行行人检测。所以我们通过使用网络爬虫,爬取了1000+不同情况,人群密度不同的图像且爬取图像未被标注。同时因为各种原因无法获取到真正的新冠感染者踪迹图片或录像,所以只能在制作数据集中假设目标存在此图像中(该数据集中感染者均为假设)。通过使用labelimg工具进行手动标注并划分数据集,按照训练集:验证集:测试集比例为8:1:1的比例进行划分。图3为训练集中一张图片,表1为其相对应的标注数据,第一列为标注类别,0代表普通行人,1代表为目标(即假设的感染者)。而第二列到第五列则为标注框的坐标信息,分别为标注框中心的X、Y轴的最小坐标和最大坐标,说明了标注框的位置与大小。
图3 数据集标注
表1 标注数据
NameXminYminXmaxYmax 0276755472150 074270013272075 0188281522922020 0307278534271890 0243769027872070 0226768525272020 0207772022871170
3 实验结果与分析
3.1 实验数据
新冠疫情感染者行踪数据集(感染者均为假设)样本来自网络爬虫,由我们进行手动标注,一共1005张图片,如图4。
图4 数据集爬取的图片
3.2 实验平台
实验操作系统为Windows 10,显卡为英伟达1050Ti,显存为4G,CPU为InterCorei7-8750h,内存为16G,深度学习框架为Pytorch。
3.3 实验过程及分析
由于实验平台搭建原因,无法使用计算平台CUDA进行对实验的加速,所以以下结果均为CPU训练所得出的。在本次实验中数据集输入均为416*416图像大小,且在本次实验中针对的为新冠疫情感染者与普通行人的检测,在分类上仅分为object(新冠疫情感染者)和person(普通行人),但同时因为搜集的数据中错综复杂的背景和行人之间相互遮挡,人与背景之间的遮挡,场景中的光照变化,同时还有原始图像存在模糊处理,马赛克处理都是行人精准检测中的难点。同时又因为行人在行走过程中千姿百态,骑行交通工具,站立或蹲下都会影响最终的检测精准效果。该实验不仅仅是预测图像,同时也会加入预测视频,但由于实验平台的原因FPS数值很低,无法达到预想到的结果,只能放弃。
本实验在原数据的基础采用了YOLOv4自带的Mosaic数据增强方法,同时也对有的训练出来的模型加入了平滑标签,而有的标签没有加入平滑标签。
在本次实验中,采用了YOLOv4自带的权重文件作为本次实验的预训练模型。在此基础上将自己Epoch为50,学习率为0.0001,如图5(b),称为模型2。将自己创建的Epoch为100,学习率为0.001,如图5(a),称为模型1。将模型1、2进行对比。而这次输入网络的两个图像大小都为416*416,同时两个模型Batch_size都为4,可以看到加入平滑标签和Epoch少的图5(b),在刚开始的时候,loss值还是比未加入平滑标签学习率高的图5(a)的loss值大。由于本次实验中没有对损失值进行归一化处理,可以看出loss值还是挺高的,平均在8.14。但可以从图5中看到最终loss值还是趋近与收敛,其中也包括了smoothloss。
图5 loss值
同时用两个不同的模型1、2,分别对同一张照片进行预测如图6所示,可以看出模型1所训练出来的不仅识别到的人数比模型2的多显示了11位(不包含目标),并且成功预测到了目标(并非真的新冠患者,仅为假设),而反观模型2只检测出8位且其中包含了原本应该是目标(object)的人数。这也是两个不同训练所呈现出来的一个成果。
4 模型应用流程
疫情感染者轨迹识别应用流程如图7所示。
图7 应用流程
该系统与当地疫情防控数据库相互连接,如果需要查找新冠疫情感染者行踪,通过对当时路口,街道,步行街,公共交通车站的摄像头所返回的图像和录像放入本次实验所实现的模型中进行预测,判断目标是否出现在当前场所,如若出现则记录下出现的地点,方便接下来进行疫情管控措施,也可对当前图片或视频进行标注,不仅标注新冠疫情感染者,也可标注密切接触人员,从而变得更快实现疫情防控工作。
5 结束语
本文通过使用YOLOv4深度卷积网络对网络爬虫爬到的新冠疫情感染者踪迹数据集(感染者均为假设)进行训练,通过在数据集上不断训练,由最终结果可以看出,在疫情感染者行迹识别的任务中取得了不错的预测结果,从而证明YOLOv4深度卷积神经网络在该方向任务中还是有一定话语权的。但由于作者制作的数据集还是存在一些不足,各种实际因素影响下,系统还是有一定的不足。同时由于作者自身原因,无法提供足够好的设备支持该算法的运算,无法较好的发挥其性能,这也是本次实验遗憾之一。
[1] Bochkovskiy,A.;Wang,C.-Y.;Liao,H.-Y.M. YOLOv4: Optimal Speed and Accuracy of Object Detection. arXiv 2020,arXiv:2004.10934.
[2]李越,穆晓芳,郭怡凡.基于YOLOv4卷积神经网络的监控行人重识别方法[J].电子技术与软件工程,2021(07):207-210.
[3]管军霖,智鑫.基于YOLOv4卷积神经网络的口罩佩戴检测方法[J].现代信息科技,2020,4(11):9-12.
[4]李旭冬,叶茂,李涛.基于卷积神经网络的目标检测研究综述[J].计算机应用研究,2017,34(10):2881-2886+2891.
[5]李航,朱明.基于深度卷积神经网络的小目标检测算法[J].计算机工程与科学,2020,42(04):649-657.
[6]徐天宇,曾丽君,魏丽.基于YOLOv3的人流量检测方法的研究[J].科技创新与应用,2021,11(19):32-35+38.