基于改进Faster R-CNN的小目标安全帽检测算法研究
2022-10-19朱玉华杜金月刘洋颉永鹏
朱玉华,杜金月,刘洋,颉永鹏
(沈阳工业大学 化工过程自动化学院,辽宁辽阳, 111003)
0 引言
安全一直以来是建筑行业、工业生产中永恒的话题。根据大量数据统计,建筑行业大量事故的发生,通常是人为因素造成的。建筑行业中最危险的来源是高空坠物,安全帽可以承受外物的撞击,减少因高空坠物而造成的头部受伤,对施工人员的安全起着极其重要的作用。在建筑工地上,通常采用人工监督的方法判断工人是否佩戴安全帽,因而存在施工人员作业范围广、易造成在施工现场不能及时追踪和管理所有工人等问题[1]。因此采用自动监控的方法代替人工监视,有利于减少疏漏,提高检测效率,减少人工浪费。
目标检测结合了目标定位和目标识别[2]。近几年来,目标检测在工业质检、行人检测、航空航天等各个领域应用广泛根据其网络结构不同可分为两类,一类是两阶段目标检测模型如R-CNN[3]、Fast R-CNN[4]、Faster R-CNN[5]等,其特点是检测精度高但检测速度慢;一类是单阶段目标检测模型如YOLO[6]、SSD[7]等,其特点是检测速度快但检测精度不高,且对小目标的检测效果较差。
小目标具有分辨率低、语义信息匮乏、携带信息少等特点。针对目标检测中的小目标检测问题不高的问题,近年来国内外大量学者提出了一系列对小目标检测的研究。赵文清等[8]将SENet和Faster R-CNN相融合,解决了定位不高的问题,根据绝缘子的尺寸大小,对区域建议网络RPN生成anchor的尺度进行调整,但是人为的调节anchor宽高比不具有普适性;熊俊涛等[9]提出了一种改进的YOLO v3算法,通过增加三次残差网络块提取特征,对于小目标、遮挡图像的检测精度高。张炳力[10]等人在RetinaNet的基础上对损失函数进行全面优化。构造了关联交并比的分类损失函数,利用负样本交并比使网络注重于训练难分类负样本,在定位损失函数方面,改进了传统L1损失的归一化方式,提高了小目标检测能力。王芋人等[11]证明了当anchor和标注框面积和比例相同时,交并比最大,然后用GMM算法分别对小目标数据集中的标注框的宽高比和面积进行聚类,在Faster R-CNN模型中设计出对标注框适应性更强的anchor。
本文针对小目标安全帽的检测,提出了一种基于Faster R-CNN的改进方法,为了解决主干网络VGG16训练时间长,深度大,小目标检测精度差等问题,将ResNet101[12]与FPN特征金字塔进行特征融合替代VGG16,以此来提高小目标的检测精度。根据安全帽尺寸的大小,对anchor尺寸进行调整,使之覆盖所有大小的安全帽。
1 Faster R-CNN网络结构
Faster R-CNN模型是在Fast R-CNN基础上设计出了RPN候选框,极大提升了region proposal质量,同时提高了模型的检测精度,降低了网络的冗余,能够让目标适应在不同的场景。Faster R-CNN网络结构,由四部分组成:(1)利用特征提取网络VGG16对输入进行特征提取产生feature map[13]。(2)将产生的feature map传入RPN网络产生建议框,利用全连接层对每个anchor做二分类和位置修正,输出精确的proposals。(3)采用ROI Pooling使用最大值池化将特征图上ROI固定为特定大小的特征图;(4)对候选区域特征图进行分类和回归,得到物体种类和位置。
2 改进的Faster R-CNN网络结构
针对现有模型对小目标检出精度不高、鲁棒性差等问题,对Faster R-CNN模型进行改进。特征提取网络采用ResNet101与FPN特征融合代替VGG16,增强网络对小目标的检测能力,提升不同大小检测目标的检出精度,并根据安全帽的尺寸设计anchor的大小,改进后的网络结构如图1所示。
图1 改进的Faster R-CNN模型结构
■2.1 特征提取网络
传统算法采用VGG16网络作为特征提取网络,VGG16网络的泛化性很好,但是在小目标的检测中容易出现梯度消失、网络深度大、训练时间长、部署耗时大等问题[14]。针对此问题本文引用ResNet网络,其残差模块很好地解决了在训练过程中网络退化的问题[15]。计算效率高,ResNet有不同的网络层次,常用的有50-layer,101-layer,152-layer。本文选用ResNet101,其网络结构如图2所示。
图2 ResNet101网络结构图
为了保证高维度特征,信息不丢失,以及更加突出低维度特征,特征提取网络采用ResNet101与FPN特征融合代替VGG16,该网络结构图如图3所示,图中的C1,C2,C3,C4,C5分别对应ResNet101网络Conv1_x~Conv5_x卷积块,随后采用1×1卷积横向连接与之求和生成新的特征图M2~M5,最后在合并的新图上进行3×3卷积以生成最后的特征图,最终的特征图记作P2,P3,P4,P5。
图3 特征提取网络图
■2.2 anchor的设计
在Faster R-CNN模型训练中,RPN中anchor尺寸设计对检测精度的影响非常大。原始Faster R-CNN对于每个滑动窗口生成3种长宽比{1:1,2:1,1:2}和3种缩放尺度{128×128,256×256,512×512}两两组合生成9种不同尺寸的anchor。为了确保模型对于不同位置、大小的识别准确度。本文将采用{16×16,32×32,64×64,128×128,256×256}作 为anchor的尺寸,长宽比不变。RPN共生成15种尺寸的目标框,可以覆盖安全帽检测中所有尺寸的目标区域。
3 实验及结果分析
■3.1 实验数据
本文所需的小目标数据集,部分来自建筑工地现场采集,部分来自网络爬虫。使用训练集训练网络之前,先对数据预处理,通过反转、加噪声等方式增强模型的泛化能力,得到5000张图片。部分图片如图4所示,采用Lableme软件对每张图片进行数据标注,最终形成我们的小目标安全帽数据集,且训练集、验证集、测试集三者的比例为8:1:1。
图4 数据集部分图像
■3.2 实验环境配置
本文实验环境配置如表1所示,pytorch是在2017年发布的简洁灵活的主流深度学习框架。pytorch设计简洁,代码易于理解,在很多模型上容易实现,且支持GPU,提高了代码的运行速度。因此本文选择pytorch框架。
表1 实验环境配置表
■3.3 实验结果
本文实验采用平均精度(AP)和平均精度均值(mAP)作为评价指标。为了更好地比较在传统Faster RCNN 基础上改进前后的识别效果,验证ResNet101+FPN作为特征提取网络的性能,并确定合适的网络层数。分别采用ResNet50+FPN、ResNet101+FPN、VGG16作为特征提取网络进行训练。得到检测结果如表 2 所示。
由表2测试集的对比结果可以看出,Faster RCNN模型中引入ResNet50+FPN结构,安全帽的识别平均精度达到90.9%,平均精度均值达到90.35%,采用ResNet101与FPN进行融合后,识别效果得到明显提升,平均精度达到90.9%,平均精度均值达到90.9%,相比于传统VGG16,平均精度提升了6.7%,平均精度均值提高了6.55%,说明提出的ResNet101与FPN融合作为特征提取网络,提升了特征表达能力,改进的算法是有效的。
在Faster RCNN训练过程中,将动量参数设为0.9,权重衰减参数设为0.0001,学习率设为0.02,训练16000次。其训练总体损失,RPN边框回归、分类损失如图5所示,从图中可以看出loss曲线在训练初期下降快,迭代16000次后逐渐趋于平缓,并最终稳定在0.1附近,说明模型已经基本收敛。
图5 训练损失变化
图6和图7为安全帽样本进行测试的结果示例图,图中红框为带有类别和概率信息的检测结果框。通过对比识别结果可以看出,本文改进的算法识别出安全帽的精确度更高,定位更加准确,并且能够识别出背景复杂、遮挡、尺寸较小的安全帽。
图6 传统Faster R-CNN识别结果
图7 改进后模型的识别结果
4 结束语
针对小目标安全帽检测精度低,提出了一种基于改进Faster R-CNN的小目标安全帽检测目标检测算法。特征提取网络采用ResNet101与FPN进行特征融合;根据安全帽尺寸大小的特点,对区域建议网络生成anchor尺度进行调整,提高了模型的检测精度,改善小目标识别的准确率。实验表明安全帽目标检测的平均精度达到90.9%,平均精度均值(mAP)达到90.9%,相比于传统VGG16,平均精度提升了6.7%,平均精度均值提高了6.55%,且模型有一定泛化能力和鲁棒性。