基于YOLOv3的安全帽佩戴检测方法研究

2021-03-12 07:53
自动化仪表 2021年2期
关键词:安全帽卷积特征

王 珩

(上海工业自动化仪表研究院有限公司,上海 200233)

0 引言

近年来,随着工业4.0概念的提出和深度学习等高新技术的发展,场景目标物体检测逐渐成为计算机视觉领域的研究热点[1-2]。传统视频监控系统对于工厂生产过程中设备或人为的异常情况,只能通过即时的人为监视或人工巡检,以及事后通过历史数据,查找当时事件发生状况。而智能检测系统能够在无人值守监控的情况下,随时随地使用一套固定的逻辑,及时记录不遵循规范的现场人员并通知相关人员[3]。因此,研究如何从监控中提取有用信息,并对感兴趣的信息进行处理,具有重要的实际意义。

对于安全帽识别任务,目前大多数学者是基于传统方法。其中,刘晓慧等[4]利用肤色信息定位,再借助支持向量机(support vector machine,SVM),通过交叉验证选定合适的核函数,最终实现安全帽佩戴状态的识别;刘云波等[5]通过连续图像检测运动目标,根据颜色特征判断运动目标是否佩戴安全帽。上述研究已经取得了一些成果。但由于头盔颜色形状差异,以及相机角度、距离、光线等外界因素变化,这些安全帽识别算法的鲁棒性较差,易受外界环境干扰。

综上所述,对于安全帽识别任务,目前欠缺一种高鲁棒性的分类算法。随着深度学习技术的不断发展[6],提出了多种基于深度学习的目标检测[7-8]和目标跟踪算法[9],为研究者提供崭新的思路。本研究将基于深度学习地神经网络识别方案,通过对工厂区域的视频图像机型处理,进而识别工人安全帽的佩戴状态。

1 YOLO网络结构模型

YOLO网络是一个以目标检测为目的而设计的网络。由于YOLO本身端到端的特性,它的计算速度比大多数深度网络快,具有良好的实时性;此外,该网络可以在具有良好鲁棒性的前提下保持较高的准确率。基于以上两大优势,它被认为可以满足大部分工业检测场景准确性和实时性需求,具有良好的工业应用前景,因而在最近几年被广泛研究。YOLOv3网络是YOLO网络作者根据初代YOLO网络,经过数次改良的产物,具有更好的性能。这也是本文选用YOLOv3进行一系列研究的原因。

Darknet 53结构单元如图1所示。

图1 Darknet 53结构单元 Fig.1 Darknet53 structure units

YOLO网络仅使用卷积层,属于全卷积网络。这在减少了参数变量的同时,加快了网络的运行速度。相比于其他神经网络,YOLO系列神经网络通过合理的设计,成功地将目标检测问题转化为回归问题,因而直接通过网络产生物体的位置和所属类别信息。而其他主流网络[10],大多数需要对已经过神经网络处理输出的图像进行再处理。

YOLOv3主体卷积网络是以Darknet 53[11]结构为基础。由图1可知,Darknet 53结构由53层卷积层搭建而成。为了防止梯度消失以及梯度爆炸现象,Darknet-53网路之间由加入了残差单元,这样可以让网络进行层数更深的训练。由于残差单元过多会导致其他不良的结果,因此Darknet-53选择加入五个残差单元(Resnetunit)[12]。每个残差单元的搭建如图1(a)所示,上层原始输入不仅仅会通过两个DBL单元输入到更下层,还会跳过DBL单元直接到下层。换而言之,下层会收到原始上层数据以及处理过的上层数据。通过这种方式,构建了一个残差单元。DBL 单元结构包含卷积层、批归一化(batch normalization)层和leaky-relu激活函数层,共计3层结构。

YOLOv3相比Darknet 53架构,作出了一些改进。YOLOv3整体架构如图2所示。

图2 YOLOv3 整体架构示意图 Fig.2 YOLOv3 overall structure

YOLOv3加入了更多的卷积层,用于提取物体的深层特征。YOLOv3共有75个卷积层,包括跳跃连接和上采样层。此外,它以2步长的卷积层替代了传统的最大池化层。卷积与池化层相比,有了更多变化的可能。YOLOv3网络对输入图片总共进行了5 次降采样,并分别在最后3次降采样中对目标进行预测。最后3 次降采样的输出,可以理解为分别包含了3 个尺度目标检测的特征图。当尺度越大时,其提取的特征图就越小。这些大小不同的特征图也有各自的作用:小特征图提供了深层次语义信息,大特征图则提供了目标位置信息。此外,YOLOv3网络中事先准备了通路,使得小特征图可以经过上采样和大特征图融合,从而使大特征图中含有小特征图中的特征信息。即使模型设定的检测目标较大,图中小特征的丢失也较少。因此,YOLOv3网络对于大小各异的目标均有不错的定位效果。

不同尺度的特征图通过YOLOv3最底层的探测层,输出为一张包含多尺度信息的最终特征图。最终特征图中,每一个尺寸下网格单元中包含了[B×(5+C)]的数据。其中,B为每个单元中预测框的个数,用于预测某一类特定物体,每个预测框有5个数据(即x、y、w、h、S+C)。其中:(x,y)为预测框的中心相对于单元格的偏移,(w,h)为预测框相对与对应锚点的宽高偏移,S为置信值。

S=Pobject×U

(1)

式中:Pobject为预测框中物体的概率,1为存在,0为不存在;U为预测框与真实框的交并比(intersection over union,IOU);C为C个类别的条件概率Pclass|object。

一般每个YOLO网络单元中预测框个数B=3。最后,对这些预测框使用回归算法,并通过非极大值抑制(non-maximum suppression,NMS)合理化输出判断结果,完成目标检测任务。

此外,YOLOv3算法使用了锚点框,以提高检测的准确性。因此,本次安全帽识别任务中也应用了此方法。这部分内容学习方法和前两段的图像特征学习有一定的区别,因此放在最后进行说明。为了合理确定初始的锚点框的初始尺寸,本文使用Kmeans聚类方法,以训练样本中已标注的边界框尺寸作为样本,确定锚点框尺寸。选择k个聚类中心(k为9),以式(2)作为距离函数进行聚类。其中,Ubbox,kmeans表示边界框和聚类尺寸的交并比[13]。

dbbox,kmeans=1-Ubbox,kmeans

(2)

2 YOLO的迁移学习

如果将每一个网络从头到尾进行训练,直到其能应用于实际工程任务,那么有两个条件是必要的。一是大量的训练数据集,二是有不进入、反向传播的验证集。前者是训练网络性能,得到更深层、有效的图像特征;后者是为了防止过拟合现象,避免出现训练集精度变高而实际任务精度变低的情况。

为了将YOLOv3网络应用于安全帽识别任务,第一步就是得到上述两类数据。本研究通过调用厂区工人作业的现场监控视频,得到原始图像;然后,以人工标注的方式,建立安全帽佩戴识别检测数据集。然而,由于人工标注信息消耗时间较大,加之原始有效图像较少,因而有类标的数据集共有465张图片。因此,即使不将数据集分为训练集和数据集而是全部应用于训练,所需要的训练数据集也是远远不够的。不仅如此,YOLOv3是全卷积网络。用于特征提取部分的卷积层更需要大量的样本训练,才能提取到更易于分类的深层特征。可以预见,如果直接用此数据集训练YOLO网络,必然很难得到具有泛化性的结果。

针对以上问题,本文采用迁移学习[14]的方法训练卷积神经网络。由于YOLOv3已经Image-Net上试验过千分类任务,因此YOLOv3网络的每个节点,实际上均已经过参数训练。因此,可以将ImageNet[15]的分类数据集作为源域。首先,在YOLOv3的每个参数点载入这些参数。这是因为使用ImageNet数据集训练完分类网络后,卷积核的权值经过训练,已经具备了可以提取泛化特征的能力。然后,使用模式识别的微调的方式,冻结网络层的绝大部分,只对最后几层(尤其是最后用于将特征向量转化成概率输出softmax[16]层)启用反向传播,进行节点参数的数据更新。这是为了让最后几层的深度卷积层提取特定任务下的深层特征,从而使得YOLOv3可以应用于本次任务。对于本研究而言,所希望提取的特征信息就是安全帽以及其相关像素点的计算机视觉特征。在使用了迁移学习后,就可以将数据集的一部分分割到验证集之中,以防止过拟合现象的发生。在使用迁移学习后,将网络性能训练到满足要求已经不再需要大量的训练集。在本次任务中,训练集有360个样本集,用于训练回归预测部分的卷积核参数;测试集有105个样本,不进入反向传播而直接输入网络计算结果,用于客观评价网络的实际性能。

3 试验结果及分析3.1 试验方案设计

在试验之前的准备数据集阶段,使用lableImg工具将数据集标定为三类,即A类、B类、C类。A类表示人体上半身,B类正确佩戴安全帽的头像,C类是没有佩戴安全帽的头像。将标定好的数据集在服务器上,使用上述方式对YOLOv3网络进行训练,最后得到该网络的模型参数。

试验阶段,每隔时间N秒从视频图像中取待测帧图像,对待测图像预处理,转换待测图像数据格式以及调整图像尺寸;将预处理好的图像载入已经训练好的YOLO模型中,模型输出A类、B类、C类。A类记作An,B类记作Bn,C类记作Cn。其中:n为检测到各个类别的个数,n=1,2,…,N。

算法流程如图3所示。

图3 算法流程图 Fig.3 Algorithm flowchart

3.2 试验平台

本试验分模型训练阶段和检测阶段。模型训练阶段对硬件环境要求很高,使用了GTX1080Ti的GPU服务器进行运算。检测阶段对硬件环境也有一定要求:使用了GTX1050的GPU台式机,搭建了用于试验的环境,包括Ubuntu16、CUDA、python、OpenCV、gcc 等常用环境,YOLOv3使用了Darknet-53 框架。使用YOLOv3官网上提供的权重参数作为网络训练的初始化参数,对已标定的安全帽佩戴检测训练数据集中的图片进行网络参数微调,从而使整个网络检测达到最好效果。

3.3 试验数据集

对深度学习而言,试验数据集是该算法能否有效的重要条件。然而,安全帽检测的数据集目前在公开数据集中不存在。故本文使用工厂监控视频自制了安全帽的数据集,主要包括以下步骤。

①数据收集:数据主要来源于厂区工人作业的现场监控视频,以及没有佩戴安全帽的头部图像。其中以厂区现场监控视频为主。

②数据预处理:厂区使用的是高清视频摄像头,因此数据预处理需要使用Opencv视频开发库把视频文件转换成图像的PNG格式。转化的图像作为图像数据集。图像统一尺寸为(640×480)像素。

③数据标定:使用labelImg数据标定工具对安全帽佩戴检测数据库的图片进行标记。该工具需要手工标记出对图片的自定义目标,最后可根据输入的标记信息生成相关的配置文件。

3.4 YOLO模型训练

试验使用360个样本数据作为反向传播迁移学习的训练数据。数据分辨率和自制数据集分辨率相同,均为(640×480)像素,检测的类别包括A类、B类、C类。将标定好的数据集在服务器上使用YOLOv3网络进行训练,最后得到该网络的模型参数。使用360训练样本训练YOLO模型。将105个样本图像输入训练好的模型,进行对场景类别和目标位置的预测。当YOLO神经网络预测的目标边界框与手工标定的边界框交并比u大于等于0.5时,则任务预测成功。本试验采用准确率、召回率作为评价标准。

训练效果如下。本试验共进行了2 500训练,每次喂入网络图片数量BATCH_SIZE为8。随着训练轮数的增加,预测类别和真实类别、预测尺寸和真实尺寸的损失值都在逐渐减小。但是由于训练样本不大,导致训练集和测试集最后出现过拟合。随着以后增大训练样本,该问题可以得到解决。

3.5 结果分析

在实际测试时,算法可以检测出目标未佩戴安全帽或者佩戴其他帽子的情况,准确率在95%以上。同时,在实际测试中,基于YOLOv3安全帽检测算法对多目标检测也有效果。试验结果表明,本检测方法能够在保持较高检测速率的同时,基本满足实时检测要求。

4 结论

本文使用YOLOv3网络对是否正确佩戴安全帽的检测方法进行了研究。配合使用厂区监控视频作为数据集进行了安全帽佩戴的检测试验,使用了YOLOv3网络中多尺度特征检测、目标框尺寸聚类以及对输出类进行交并比检测等方法,在保证较高检测准确率的同时,仍能够有较快的检测速度。下一步工作是增大数据集的图片数量,以及每个标定类别增加更多的图片和样式,从而增加检测准确率。

猜你喜欢
安全帽卷积特征
根据方程特征选解法
小小安全帽,生命保护伞
基于3D-Winograd的快速卷积算法设计及FPGA实现
如何表达“特征”
爆笑四格
从滤波器理解卷积
不忠诚的四个特征
基于傅里叶域卷积表示的目标跟踪算法
抓住特征巧观察
一种基于卷积神经网络的性别识别方法