基于改进SSD的口罩佩戴检测算法
2023-03-24林思海
林思海
关键词:口罩检测;SSD;SeNet;ResNet;特征融合;数据增强
新型冠状病毒是人类面临的第三次冠状病毒大流行。2020年1月30日WHO宣布新冠肺炎疫情构成国际关注的突发公共卫生事件。2020年3月13日,WHO评估认为新冠肺炎可被定为大流行病[1]。
新冠疫情期间,佩戴口罩成为出入公共场合的行为规范。在机场、地铁站、医院等公共服务和重点机构场所规定需要佩戴口罩,口罩佩戴检查已成为疫情防控的必备操作[2]。本文提出一种基于深度学习的复杂场景下口罩佩戴实时检测算法。与人工现场监督相比,基于深度学习的监督系统不需要管理人员实时监控和与人流密切接触。同时少量的管理人员即可在管理中心通过多块监视器管理大片区域,不仅提高了效率,还减少了管理人员与人流的长时间接触。
目前,主流的目标检测算法分为两阶段(twostage)方法如R-CNN[3]算法及其变体与一阶段(onestage)方法如SSD[4]和YOLO[5]。目前已有许多优秀的研究基于上述算法框架进行改进。张洁等基于Faster R-CNN框架,通过结合k-means++算法对标注人头检测框进行聚类[6],并优化原模型非极大值抑制(non-maximum suppression)[7]算法惩罚函数剔除无效人头预测框,改善行人之间由于遮挡导致的召回率低的问题。董艳花等人基于ResNet[8]残差结构加深网络的思想在SSD 网络的定位分类前添加残差结构,将特征提取网络和分类定位层进行分离,进而使得进入分类定位层的卷积特征更加抽象,有效解决SSD网络同时学习局部信息和高层信息双重任务的问题,维护特征提取网络的稳定性[9]。曾成等对YOLOv3框架的特征金字塔框架进行重构。通过增大尺寸和增加先验框数量[10],降低神经网络感受野,以此增强网络对小目标的敏感度。
1 改进SSD 算法
1.1 ResNet-B SSD 算法网络整体结构
本文提出的基于SSD改进的口罩佩戴检测算法(ResNet50-Bidirectional Attention Feature Fusion SSD) 的网络整体结构如图1所示:
首先,使用ResNet50替换原有的VGG-16特征提取网络,并将Conv4_x中Block1的第一个卷积核与捷径分支上的卷积核的步长由原先的2调整为1;其次,为了丰富中低层特征图的语义信息,针对中间三层特征图提出BAFF(Bidirectional Attention Feature Fu?sion) ,将临近的低层特征信息跨层与临近高层抽象语义信息相融合,然后,与本层特征相融合后经过SeNet[11]进行预测;最后,第一层与最后两层直接通过非极大值抑制(Non-Maximum Suppression) 进行预测,总共生成6个有效特征图进行目标检测。
1.2 ResNet50 SSD 特征提取网络
本文选取ResNet50作为骨干网络,相比原先的VGG-16特征提取网络,ResNet50由于其使用跨层连接的思想,使得网络层数更深的同时不容易发生梯度爆炸与梯度消失,能够更好地提取图像信息。
首先,将输入尺寸为300X300 的RGB 对训练图像,经过前三个模块后得到38X38的特征图Conv3_x。然后,通过SeNet对预测特征层的通道进行权重分配,得到第一个预测特征层Con4_x,同时将Bolck1中步距全部修改为1。對于额外添加层,其由卷积、批量归一化、Relu激活函数、卷积、批量归一化、Relu激活函数构成。最后,将Conv4_x和5个额外添加层作为6个预测特征层,通过非极大值抑制算法(Non-MaximumSuppression) 对结果进行预测。
1.3 BAFF 特征融合机制
本文提出一种将注意力机制与特征融合相结合的特征强化模块BAFF(Bidirectional Attention Feature Fu?sion)。对于预测特征层的中间三层使用BAFF模块强化输出特征图的表征能力。首先,将上一层与下一层的特征图经过1X1的卷积操作,将通道数调整到与本层通道数一致。然后,对上层特征图进行尺寸为3×3,步距为2,padding为1的卷积操作;对下层特征图进行尺寸为3×3步距为2的转置卷积操作。将高层与低层的特征图调整到本层的尺度后,通过简单的注意力机制分别为其添加权重,以此来调整上下一层对本层特征图的调优结果。最后,将上下两层相加后与本层特征图进行融合,输入SENet网络后得到新的预测特征图。
2 实验结果与分析
2.1 实验环境与评价指标
本实验在Windows10操作系统上运行,内存容量32G,处理器为AMD Ryzen 7 5800X3D,GPU显卡型号为3090ti,显存容量为24G,使用CUDA11.3以及Cudnn 驱动加速计算机的运行,在Pytorch深度学习框架上完成模型的搭建、训练以及测试。
实验采用COCO评价指标。首先单独计算0.5到0.95每间隔0.5依次计算每个IoU(交并比)对应各个类别的平均精度值(Average Precision,AP) 后,对10个IOU值对应的平均精度取平均值,这是评估检测效果的重要指标。最后取各个类别AP的平均值,得到平均精度均值(mean Average Precision,mAP) 用于评估目标检测模型的精度,避免某些类别极端化而弱化了其他类别的性能,计算公式如下所示:
2.2 数据集
本文选用百度飞桨上的口罩佩戴数据集及自行采集标注的数据,总计2707张图像。本文采用8:2的比例划分训练集和测试集,其中训练集包含2166张图片,测试集包含541张图片。
2.3 实验结果与分析
训练过程中采用训练集中的20%作为验证集,优化器为Adam,初始学习率与权重衰减系数为0.0005。每15 训练轮次更新一次权重,更新系数gamma 为0.55,总计训练200轮。训练批量大小为16。选用骨干网络为VGG16的SSD、Faster R-CNN算法与本文算法进行比较,结果如表1所示。
由表1可知,本文算法优于上述两种一阶段与二阶段的经典算法。特别是在IOU为0.75与0.50:0.95 下提升明显。主要的原因有两点:首先采用了网络层次更深、特征提取能力更强的RestNet50 骨干网络。使得网络对输入图像提取的图形与语义信息更加丰富。其次本文算法结合注意力机制与特征融合,对中间三层结合上下层进行特征融合,在特征融合时进行权重分配,提高预测效果好的特征层的权重,降低预测效果差的特征层的权重,以此达到弥补低层预测特征层语义信息不足和高层分辨率低对细节感知能力较差的缺点。对于上述两点原因,本文进行了消融实验证明两者对网络性能的影响。实验结果如表2所示:
SSD算法与本文改进算法检测效果对比图如图3 所示。由效果图可知针对远处以及较小人脸,本文算法相比原始算法具有更高的检测精度和更低的漏检率。
3 结束语
本文提出了一种基于SSD改进的口罩佩戴检测算法。首先使用网络层次更深、特征提取能力更强的ResNet50替换原有算法的VGG16作为骨干网络。同时针对原始SSD算法多个预测特征层信息交互能力较弱的问题,提出BAFF特征融合机制。实验证明,本文提出的算法在百度飞桨上的行人口罩佩戴数据集上有良好的表现能力。改进后的算法在训练数据集上较原有算法的评价精度在IOU 为0.5、0.75、0.50:0.95下分别提升4.1%、9.9%、5.3%。