苏州中材建设有限公司 崔 俊
近年来,目标检测主要通过卷积神经网络(CNN)提取图片的特征,根据应用场景相应地诞生了许多目标检测算法。对于安全帽与人体的目标检测这一应用场景,国内外根据各种算法已经有很多实际的应用,并取得了很好的效果。2004年,Alexey等人根据YOLO v3提出了YOLO v4算法,在速度与精度上有了非常好的提升,与YOLO v3相比,YOLO v4的AP和FPS分别提升了10%和12%。
随着建筑行业的发展,无论是企业规模、相关从业者的数量,还是经济总产值都有不同程度的增长。然而在繁荣兴盛的背后,由于疏忽大意而时常发生的建筑事故给工人的生命安全带来了巨大的威胁。本文所提出的工地工人安全帽佩戴监测系统的安全帽监测部分主要基于YOLO v4的图像特征提取处理,通过在工地布置的相关设备获取即时的图像,并以人体识别为前提判断其安全帽的佩戴情况,并且通过后台通知系统进行相应的预警和提醒,保证进入人员的人身安全,后台系统整体是MVC架构,后台进程通过socket与监测部分进程进行通信,同时将实时的结果通知系统管理员,进行及时的提醒。
Alexey等人在2020年4月23发表了论文《YOLO v4: Optimal Speed and Accuracy of Object Detection》,提出了YOLO v4算法。从图1的结果来看,相对于YOLO v3在准确率上提升了近10个点,然而速度并几乎没有下降,论文主要贡献如下:提出速度更快、精度更好的检测模型,仅需要单张1080Ti或2080Ti即可完成训练;验证了目前SOTA的Bag-ofFreebies(不增加推理成本的trick)和Bag-of-Specials(增加推理成本的trick)的有效性;修改了SOTA方法,让其更高效且更合适地在单卡进行训练,包括CBN、PAN、SAM等。许多特征可以提高CNN的准确率,然而真正实行起来,还需要在大型数据集上对这些特征组合进行实际测试,并且对测试结果进行理论验证。某些特征仅在某些模型上运行,并且仅限于特定的问题,或是只能在小型数据集上运行;而另外有些特征(如批归一化和残差连接)则适用于大多数模型、任务和数据集。YOLO v4使用了以下特征组合,实现了新的SOTA结果:(1)加权残差连接(WRC);(2)Cross-Stage-Partial-connection,CSP;(3)Cross mini-Batch Normalization,CmBN;(4)自对抗训练(Self-adversarialtraining,SAT);(5)Mish激活(Mish-activation);(6)Mosaic数据增强;(7)DropBlock正则化;(8)CIoU 损失。
YOLO v4的基本目标是提高生产系统中神经网络的运行速度,同时为并行计算做出优化,而不是针对低计算量理论指标(BFLOP)进行优化。YOLO v4的作者提出了两种实时神经网络:(1)对于GPU,研究者在卷积层中使用少量组(1-8组):CSPResNeXt50/CSPDarknet53;(2)对于VPU,研究者使用了分组卷积(grouped-convolution),但避免使用Squeeze-andexcitement(SE)块。具体而言,它包括以下模型:EfficientNetlite/MixNet/GhostNet/MobileNetV3。
图1 YOLO v4网络结构图
YOLO v4包含了以下三部分:(1)骨干网络:CSPDarknet53;(2)Neck:SPP、PAN;(3)Head:YOLO v3。
YOLO v4的网络结构图如图1所示。
在模型结构选择时,主要考虑了三个问题:为了检测较小的物体,输入图片需要较高的分辨率,为了更大的感受野需要更多层的网络,为了网络的容量需要更多的参数。其中关于感受野作者分析了三种不同level的感受野:能看到整个目标的感受野,能看到整个图像的感受野,大于整个图像的感受野。作者选择了CSPDarknet53作为主干网络,SPP与modified-PAN作为Neck,沿用了YOLO v3的Head。
数据集的制作:
数据集来源主要根据建筑工地架设的各个摄像头,图像的角度包括后方、侧方和前方的各个图像,其光照和可见度变化不大,主要集中在白天的不同时间段。根据此数据集得到的训练集具有代表性,训练集的制作在Windows10系统下进行,使用NVIDIAGeForce GTX2060通过TensorFlow深度学习框架进行运算。
图2 检测结果
图3 系统整体设计
训练集制作过程中参数设置控制其bath参数为16,表示每一次迭代到网络的图片数量,经过实验采用16,在训练时使其不溢出显存,classes类别数目设置为3,num设置为9,表示YOLO中每个cell预测框的数量,filters=3*(classes+5)=24,表示输出特征图的数量。进行训练后,YOLO v4可以监测到动态的训练过程的loss值图像,当图像的loss值下降区域平稳时,表示学习的速度变慢,损失函数幅度减小,此时进行了800次的迭代。最终将图片输入建立好的模型中得到的结果如图2所示。
根据结果可知监测部分的功能符合需求,对于单个的图片可以完成对安全帽佩戴的监测。
系统分为两个部分,监测模块、后台实现模块,架构如图3所示,各个模块的进程间通过socket进行通信。
(1)图像分析:工程运行在windows系统上,通过相应摄像头驱动设备提供的接口每隔一段时间获取一张待检测的样本图片,存至特定的缓存目标目录,用于记录日志,检测程序也从该目录读取样本进行检测。
(2)后台系统的设计:系统的整体设计由控制部分、后台日志记录部分、检测部分组成。控制部分:界面由C++/QT开发,主要用于提供管理员的操作界面并负责与后台系统的交互,方便查询服务器上保存的监控日志等信息。后台日志记录部分:由传统的MVC架构搭建,与前端分离,降低系统的耦合性,主要提供各种API进行数据的交互。后台部分主要负责管理监控部分检测分析到的各种监控数据,并将其按照时间日期生成日志并整理保存进数据库,方便管理人员进行查看。
本系统架构设计简洁,功能可根据需求对接口进行相应的拓展即可实现扩大,具有可维护性与泛用性,系统可以很好地实现对安全帽佩戴情况的进行实时的监测,并且通知相关责任人采用应对措施。
结论:安全防护从头做起,在我国各处建筑工地上,因为不戴安全帽等防护设施,每年发生的意外的事故约3100起。有时候如果多一个及时的提醒,往往就能避免一场事故的发生。本文提出了安全帽佩戴检测系统,可以实现工地工人的安全帽快速检测,通过及时的提醒与记录,保障了工人的生命安全。同时整个系统架构清晰高效,管理员可以方便的查看记录与操作系统,各个部分相互间耦合度低,便于后期的修改维护和功能扩展。