江东的笔记

Be overcome difficulties is victory

0%

基于ResNet50的口罩检测

基于 ResNet50 模型的口罩佩戴检测

背景

​ 在公共场所佩戴口罩,是防止新型冠状病毒传染的最主要手段,在必要的场所,每个人都必须佩戴口罩以进行自我保护。在人群相对集中的公共场所,相互之间不可避免地存在遮挡干扰,从而产生了小范围内的复杂干扰识别问题。

​ 如果使用单一的卷积神经网络对口罩佩戴进行识别,有可能造成提取关键特征信息时聚焦度欠缺,出现特征提取不足等问题。因此本文提出一种两渠道卷积神经网络的佩戴口罩识别方法。在卷积神经网络的基础上,通过 2 个输入渠道,分别对眼睛区域和眼睛以下的区域,进行特征提取; 最后通过基于决策层的信息融合方法,将 2 个渠道的识别结果加以融合,从而得到最终的识别结果,其平均识别准确率达到了 98.8%。经过实验验证,该方法在佩戴口罩的识别上,取得了较好的识别准确率。

​ 在过去的十年间,人工智能(ArtificialIntelligence,AI)相关技术日新月异,几乎颠覆了传统的计算机视觉领域,随着机器学习、大数据处理、深度学习等重要理论的日益完善,很多十年前听起来像是天方夜谭的任务,例如智能机器人、图像识别、语音识别和个性化推荐系统等,如今已经变得触手可及,密切融入了我们的日常社会生活之中。卷积神经网络(Convolutional NeuralNetworks,CNN)是一类具有层级构造并以卷积运算为主的神经网络,是过去十年里计算机视觉领域的绝对主角。1998年,Le Cun 等人首次提出了用于手写数字图像识别的卷积神经网络 LeNet,通过梯度下降(GradientDescent)算法训练的 LeNet 模型取得了当时世界最先进的准确率,这一奠基性的尝试首次让卷积神经网络走向了全世界,并对后来人工智能技术的发展产生了深远的影响。随着2006年深度学习理论的提出,卷积神经网络对图像数据的学习能力和表达能力得到了非常广泛的关注,并且计算机硬件性能的高速更新迭代也为卷积神经网络的应用推广提供了相当有利的条件[2]。自从 2012 年 AlexNet 的横空出世以来,在现代 GPU 计算集群的支持下,VGGNet、GoogLeNet 和 ResNet 等结构更为复杂的卷积神经网络不停地在 ImageNet 等著名的大型视觉比赛中刷新记录,卷积神经网络在传统的计算机视觉领域掀起了重要的变革。得益于深度学习理论的快速发展,除了较为成熟的图像分类领域之外,图像分割、目标检测和目标追踪等关联领域同样涌现出了很多颠覆性的算法。新冠疫情防控工作中,需要在机场、车站等公共场所对人流的口罩佩戴情况实施监测,这可以被抽象为一种目标检测任务,该任务中需要检测的目标包含了口罩目标
(佩戴口罩)和人脸目标(未佩戴口罩),共 2 个类别,如下图所示。

Snipaste_2022-11-26_20-20-08.png

ResNet50 模型的介绍

神经网络微调是一种深度迁移学习,是将具有通用的特征提取能力的预训练模型迁入到目标网络,根据不同的训练任务对预训练模型网络结构进行调整,在目标数据集上训练微调模型参数,将其转化为目标领域神经网络的一部分。文献中残差网络有效地解决了深度卷积神经网络出现的退化问题。下图为一个 bottleneck 残差单元输入与输出关系。

Snipaste_2022-11-26_20-30-35.png

​ 图 3-1 Residual network unit

图 3-1 中:x 表示该残差单元的输入;F(x)表示输入在经过卷积层后的残差值;H(x)表示当前残差单元的输出,其的表达式如下:
H(x)=F(x)+x
设卷积神经网络的期望输出为 H’(x),在网络训练达到较饱和准确率的情况下,接下来的学习相当于一个恒等映射学习,也就是 H(x)=x,之后的训练目标就变成使残差 F(x)趋近于 0,随着网络加深,准确率不再下降。Bottleneck 是构成ResNet50 的基本单元,每个 Bottleneck 残差块由 3 个卷积层构成,图 3-1 中采用 1×1 卷积降低输入通道,最后再用 1×1 卷积恢复,从而减少计算量。输入数据在经过 3 次卷积后得出的输出数据再与输入相加得到该残差块最终输出。
图 3-2 为 ResNet50 预训练模型参数迁移,从 ImageNet 中迁移预训练模型,根据是否佩戴口罩修改全链接(fc)层结构、冻结不同卷积层参数,通过训练,进一步调整模型参数以适应口罩数据集。

​ 因为卷积神经网络在训练时参与训练的参数量对训练效率,最终准确率有很大影响。在不迁移参数的情况下,模型的性能是随着冻结参数的增多而下降的,但是训练效率会提升。因此本文将ResNet50 网络的部分卷积层参数替换为预训练模型参数并锁定,其余卷积层参与对口罩数据集的训练。因此在实验部分重点探究ResNet50 网络不同参数迁移量对识别准确率,训练耗时的影响。

Snipaste_2022-11-26_20-32-15.png

模型的建立

​ 模型构建采用的是 TensorFlow 的序列模型框架,首先转换图片数据作为模型的输入,之后再加载 Resnet50 网络去做微调。之后再添加两个 dense 层,两个 dence 层的 activation 分别使用的 relu 和 sigmoid。另外,在模型训练过程中,采用 dropout 以防止过拟合。编译过程采用梯度下降算法进行权重的更新迭代。

模型的评估

损失函数 LOSS 如下图所示:

Snipaste_2022-11-26_20-34-24.png

准确率 Accuracy 如下图所示:

Snipaste_2022-11-26_20-35-20.png

最终实现的效果

Snipaste_2022-11-26_20-37-28.png

Snipaste_2022-11-26_20-38-04.png