APP下载

融合改进通道和层剪枝的口罩人脸检测*

2022-12-22刘紫燕朱明成马珊珊

计算机工程与科学 2022年3期
关键词:剪枝残差人脸

刘紫燕,袁 磊,朱明成,马珊珊

(贵州大学大数据与信息工程学院,贵州 贵阳 550025)

1 引言

近年来深度学习技术在计算机视觉领域取得突破性进展,基于卷积神经网络CNN(Convolutional Neural Network)的目标检测方法被广泛应用于军事、医学、农业和民用等领域,如舰船检测[1]、医学图像检测[2]、遥感图像检测[3]和水下目标检测[4]等。随着神经网络的检测精度(mAP)不断提高和网络结构愈加复杂,搭建网络模型所需要的计算量和存储资源也愈发庞大。在实际场景中部署的设备无法满足模型所需的大量算力、内存和能耗。因此,本文通过研究相关的目标检测算法和模型剪枝算法,针对实际场景中的目标检测算法构建,提出一种融合通道和层剪枝的模型剪枝方法,以YOLOv4目标检测算法作为初始模型在口罩人脸数据集上进行剪枝,并将剪枝后的模型与原模型以及YOLOv4的轻量化模型YOLOv4-tiny进行对比实验。本文主要贡献如下:

(1)构建用于人脸口罩检测的数据集,能更好地检测口罩佩戴不完全的情况。

(2)提出一种融合通道和层剪枝的模型剪枝方法,可以显著减少模型的参数量,便于实时部署。

(3)使用本文所提方法在构建的人脸口罩检测数据集上对YOLOv4网络进行训练和剪枝。实验结果表明,使用本文剪枝方法得到的模型在精度下降较少的情况下,较大程度减少了模型参数。同时,极限剪枝后的模型在参数量少于YOLOv4-tiny的情况下,其检测精度远远超过YOLOv4-tiny的。

2 相关研究

为了解决实际场景中口罩人脸检测算法的部署问题,本文采用模型剪枝方法压缩目标检测模型,本文涉及目标检测技术和模型剪枝技术。

2.1 目标检测技术

目标检测是卷积神经网络应用的重点领域,基于深度学习的目标检测按照是否需要生成候选区域可以分为两阶段目标检测和单阶段目标检测。两阶段目标检测,如Faster R-CNN[5]采用RPN(Region Proposal Network)结构,通过生成候选区域和预测2个阶段获得了较高的检测精度;CBNet(novel Composite Backbone Network architecture for object detection)[6]通过合并功能强大的基础网络(backbone),提出复合骨干网络(Composite Backbone Network),以提高目标检测器的性能,但其需要极为庞大的计算量。单阶段目标检测,如SSD(Single Shot multiBox Detector)[7]采用多尺度特征图用于检测,提升了检测效果和速度,但对小尺寸的目标识别效果较差;YOLOv3(You Only Look Once v3)[8]相比YOLOv2[9]加入了残差模块,并且网络中没有池化层和全连接层,构建了新的基础网络Darknet-53,达到了速度与精度的较好平衡。

2020年4月Bochkovskiy等[10]提出了新的单阶段目标检测模型YOLOv4,采用基础网络CSPDarknet-53提取特征后,经过SPP+PAN(Spatial Pyramid Pooling+Path Aggregation Network)模块后,输入检测层,进行3个尺度的预测,其在YOLOv3模型的基础上进行了多个方面的改进和增强。在数据增强方面,YOLOv4采用了马赛克(Mosaic)数据增强方法,混合4幅训练图像和4个不同的上下文信息;在基础网络方面,YOLOv4采用CSPDarknet-53作为基础网络,其感受野更大,检测效果更好;在损失函数方面,YOLOv4采用CIOU Loss损失函数,使网络损失得到了更好的下降;同时,YOLOv4采用了Mish激活函数和DropBlock正则化来提高检测效果,在检测层之前加入SPP和PAN模块,使网络能更好地获取图像特征。这一系列方法使得YOLOv4成为了精度和速度完美平衡的目标检测算法。因此,本文选取YOLOv4作为口罩人脸检测的基础网络,其网络结构如图1所示。

2.2 模型剪枝技术

人工神经网络中的剪枝受启发于人脑中的突触修剪(Synaptic Pruning)。突触修剪即轴突和树突完全衰退或死亡,是许多哺乳动物幼年期和青春期的必经过程。突触修剪从人出生开始持续到20多岁。

Figure 1 YOLOv4 network structure

Figure 2 Sparse neural network

神经网络结构如图2左侧部分所示,下层的每一个神经元与上层都有连接,这意味着需要进行大量浮点相乘操作。理想情况下,我们不需将每个神经元与上一层中所有神经元连接,仅需连接有用的几个神经元,从而减少许多浮点相乘操作,称之为“稀疏”网络。稀疏网络更容易被压缩,可以在推理期间跳过参数为0的神经元,以改善延迟情况。若根据网络中神经元的贡献对其进行排序,则可以删除排序较后的神经元,得到规模更小、速度更快的网络,这样的网络更便于在移动设备上运行。

近年来深度学习模型剪枝技术不断发展,Li等[11]提出了基于量级的裁剪方式,可以有效降低模型的复杂度并且不会给模型的性能带来很大的损失;Yang等[12]提出了一种基于能量效率的裁剪方式,从能量利用率上最大限度地裁剪模型;Molchanov等[13]将裁剪问题视作组合优化问题,优化目标是被裁剪模型的代价函数损失最小;卢海伟等[14]通过动态寻找冗余滤波器来获取最优网络结构;彭冬亮等[15]通过阈值剪枝算法,将GoogLeNet的模型参数量压缩为原有参数量的1/16;孙彦丽等[16]提出通过同时优化卷积神经网络的结构和参数对卷积神经网络进行压缩,使网络模型尺寸变小;陈程军等[17]提出基于激活-熵的分层迭代剪枝AE-LIP(Activation Entropy based Layer-wise Iterative Pruning)策略,在保证模型精度在可控范围内的同时减少模型的参数量;在SlimYOLOv3[18]中,将YOLOv3-SPP作为基础网络进行稀疏训练和通道剪枝,YOLOv3中每个卷积层后的批量标准化层起到加速模型收敛、提高泛化能力的作用,批量标准化公式如式(1)所示:

(1)

稀疏训练的损失函数如式(2)所示:

(2)

其中,lossyolo为YOLOv4网络反馈损失,α为权重系数,Γ代表本次训练的所有通道,f(γ)=|γ|是惩罚因子,用来平衡2个损失,本文设置为0.000 1。

3 融合改进Slim通道剪枝和层剪枝的模型剪枝

3.1 改进Slim通道剪枝

π=μλ+ν

(3)

其中,μ是自适应率,用于调整λ在局部安全阈值中所占的比率;ν是最低局部安全阈值,用于防止过度剪枝。通过这种方法,网络能够自适应调整各层的局部安全阈值π,在剪去网络中更多无用通道的同时保留一定的安全通道,防止过度剪枝。

3.2 基于残差模块的层剪枝

为了进一步压缩模型,本文还采用了层剪枝策略。YOLOv4由多个残差模块组成,而每个残差模块由2个CBM(Convolution,Batch normalization and Mish)模块和1个残差连接组成,如图3所示。

Figure 3 Residual module and CBM module

每个CBM模块由卷积层CONV、正则化BN和激活函数Mish组成,如果残差模块内仅有1个卷积层被剪去,则会破坏网络中残差结构的完整性。在前述通道剪枝的基础上,本文结合γ值进行层剪枝,对每个残差模块中的CBM模块进行评价得到各层的γ均值,然后根据各层的γ均值计算每个残差模块的γ均值并对其进行排序,然后取γ均值最小的残差模块进行剪枝,这里只考虑剪掉主干中的残差模块。

3.3 融合通道和层剪枝

在实际的应用场景中,仅从通道剪枝或层剪枝一个方面对模型进行压缩,往往无法最大程度地压缩模型中的无用信息,确保模型以最小的参数量和计算量获得最高的检测性价比,因此本文将融合改进的通道和层剪枝,以尽可能地压缩模型,使模型更便于在实际场景中部署。

融合通道和层模型剪枝的剪枝流程如图4所示,首先对网络进行稀疏化训练,以获得对应的尺度因子,然后利用改进的Slim通道剪枝得到剪枝后的模型,再判定该模型中的每一层是否需要层剪枝,得到最终剪枝后的模型。同时,由于剪枝后的模型检测精度下降较多,本文采用知识蒸馏的方法,利用训练好的精度较高、参数较多的大模型指导剪枝后的小模型进行再训练微调,提高剪枝后的模型的检测精度,最终得到参数和计算量更小、更利于实际部署的模型。

Figure 4 Pruning process

4 口罩人脸数据集

4.1 构建数据集

本文从 WIDER FACE人脸数据集[19]中随机抽取 3 800 幅人脸图像,从MAFA数据集[20]中抽取4 000幅人脸戴口罩的图像,对这些图像进行重新标注和预处理,组成共7 800幅图像的口罩人脸数据集。

4.2 基于人脸的数据扩增方法

本文在数据集构建过程中发现,部分人脸口罩佩戴不完全,或者遮挡的人脸会被误检为带口罩的人脸,如图5a和图5b中的口罩佩戴不完全;图5c和图5d中未佩戴口罩,但是因为人脸被遮挡被误识别为佩戴口罩。

Figure 5 Erroneous detection of images

因此,本文随机从已抽取的人脸数据集中抽取1 000幅图像,通过读取标注的人脸坐标,在其人脸框内添加不同颜色的遮挡,如图6所示,并将这1 000幅处理过的图像加入数据集中,重新划分这个数据集,随机抽取6 000幅图像组成训练集,2 800幅图像组成测试集。

Figure 6 Augmented images

5 模型训练与实验结果

5.1 模型训练

为了使检测的预设框对人脸口罩检测数据集的检测精度更高,本文首先采用K-means聚类算法对训练集中的标签进行聚类,得出最适合本文数据集的9个预设框尺寸,分别为(7,9),(13,17),(21,27),(32,43),(50,65),(70,98),(105,139),(142,185)和(185,256)。然后进行常规训练,设置总训练批次epoch为300,采用余弦退火的学习率下降方式,使模型更好地学习数据集,达到更高的检测精度。

在常规训练得到模型的最终权重模型后,将权重输入模型中进行稀疏化训练,设置尺度稀疏率为0.002,同样进行300批次稀疏化训练,聚合模型中的参数,使模型便于剪枝。

对训练完成后的模型进行通道剪枝,设置全局通道修剪百分比分别为0.5,0.6,0.7,0.8,每个卷积层通道保持百分比为10%,保证模型在剪枝的同时不会过度修剪。然后进行层剪枝,对每一个残差模块进行综合评价,设置剪掉的残差结构为4,8,12,16,20个。

最后微调剪枝后的模型,采用知识蒸馏的方法重新训练剪枝后的模型,设置训练总批次为100,提升模型的检测精度。

5.2 实验结果

通道剪枝时分别设置全局通道修剪百分比为0.5,0.6,0.7,0.8,输入图像尺寸为416×416,分别测试4种通道剪枝后的模型以找到最好的通道剪枝。由于经稀疏化训练后的模型的检测精度会下降,而模型剪枝是在稀疏化模型的基础上进行的,因此本文以稀疏化模型YOLOv4作为对比模型。测试结果如表1所示,模型1(Prune-0.5)剪枝率最低,参数量仍旧较大;模型2(Prune-0.6)的检测精度下降较少;模型3(Prune-0.7)和模型4(Prune-0.8)的检测精度下降太多,表明剪枝率过高,丢失了模型中的部分重要信息。模型2的检测精度下降较少,同时其模型的GFLOPS、参数量和模型大小都较小。根据4个模型的检测结果可知,在通道剪枝率设置为0.6~0.7时,模型检测精度下滑很大。这说明针对本文所用口罩数据集和模型,在通道剪枝率为0.7时剪去了部分对口罩检测十分重要的通道,造成模型检测精度的严重下降。而在通道剪枝率为0.6时,模型检测精度下降不多,经过再训练可以恢复精度,故本文选择模型2(Prune-0.6)作为通道剪枝后的模型。

Table 1 Performance comparison of channel pruning models

同理,在层剪枝时分别设置剪去Shortcut结构为4,8,12,16,20个,以稀疏化训练后的YOLOv4模型作为剪枝基础模型和对比模型。测试结果如表2所示,模型5(Shortcut-20)相比较模型4(Shortcut-16)的检测精度下降太多,表明在层剪枝设置为剪枝20个时,剪掉了模型中对口罩检测十分重要的层,造成了检测精度的严重下降;而模型4(Shortcut-16)仍旧具有一定的检测精度,同时其GFLOPS和参数量较小,因此本文选择模型4(Shortcut-16)作为层剪枝后的模型。

为了进一步验证剪枝的有效性,本文通过微调使模型精度得到恢复后,将剪枝后的模型与YOLOv4和YOLOv4-tiny进行对比测试实验。设置4个模型,模型1(Prune-best)为本文得到的最适合模型,即通道修剪百分比为0.6和层剪枝16个残差模块后的模型;考虑2种极端情况:一种是剪枝率最小,通道剪枝率设置为0.5和层剪枝8个残差模块的模型2(Prune-least);另一种是剪枝率很高,即剪去0.8通道和16个残差模块的模型3(Prune-most);以及极限剪枝状态下的模型4(Prune-limit),即通道剪枝率设置为0.9和层剪枝20个残差模块。

测试结果如表3所示,由于模型1(Prune-best)是针对本文所用人脸口罩检测数据集的,通过剪枝剪去了模型中对模型检测精度影响不大的通道和卷积层,而尽可能保留了对检测精度影响较大的通道和卷积层,因此进行剪枝后的模型其GFLOPS远远小于YOLOv4的,仅有42.9,参数量仅有9.86 MB,模型大小也同样仅有37.92 MB,而检测精度达到了0.759,只下降了2.7%,同时其推理时间也减少了3.7 ms。对于模型2(Prune-least),由于其剪枝率最小,有较多的对模型检测精度影响不大的层和通道仍然被保留,因此模型的参数量、大小等均没有太大提升,但其检测精度基本无损失;对于模型3(Prune-most),由于其剪枝率最大,因此其模型的参数量比YOLOv4的简化模型YOLOv4-tiny少1.834 MB,其模型大小更是达到了11.69 MB,比YOLOv4-tiny的还小,但同样因为剪枝率过大,剪去了模型中较为重要的通道和卷积层,其检测精度(mAP)比YOLOv4-tiny的高11.3%,属于小而快、更容易部署的模型;最后的剪枝模型4(Prune-limit)更是以5.56 MB的模型大小和1.428 MB的参数量获得了0.662的mAP。综上所述,通过融合改进通道和层剪枝方法,在2个方面对模型进行剪枝,能在较大压缩模型的参数量和大小的情况下使模型仍旧具有较高的检测精度和更快的速度,使模型能更利于部署,检测性价比更高,效果更好。

Table 2 Performance comparison of layer pruning models

Table 3 Performance comparison between the pruned model and the original model

5.3 图像检测结果

图7所示为模型Prune-best的检测结果,可以看出检测效果较好,能满足人脸口罩检测的要求,其中图7a~图7d为易误检图像,Prune-best可以将其准确检测出;图7e和图7f为实际场景中的检测效果;图7g和图7h为实际场景中医护人员口罩检测效果。

Figure 7 Testing results

6 结束语

本文采用一种基于人脸的数据扩增方法构建了用于人脸口罩检测的数据集,采用改进的通道和层剪枝的模型剪枝方法对YOLOv4进行剪枝,实验结果表明,本文采用的剪枝方法能在保证精度的情况下,较大程度地压缩模型,极限剪枝的模型达到了比YOLOv4-tiny更好的检测效果,更少的参数量和更高的性价比,更便于部署。将模型实际部署于摄像头、智能小车或无人机等硬件上,将是未来的研究方向。

猜你喜欢

剪枝残差人脸
基于残差-注意力和LSTM的心律失常心拍分类方法研究
人到晚年宜“剪枝”
基于双向GRU与残差拟合的车辆跟驰建模
有特点的人脸
一起学画人脸
基于YOLOv4-Tiny模型剪枝算法
基于残差学习的自适应无人机目标跟踪算法
基于激活-熵的分层迭代剪枝策略的CNN模型压缩
基于深度卷积的残差三生网络研究与应用
三国漫——人脸解锁