基于SSD算法的人脸检测算法研究

known 发布于 2025-08-25 阅读(314)

摘" 要:针对传统SSD算法中对小目标检测效果不好的问题,提出一种基于ResNet的人脸检测算法。将SSD算法的基础网络VGG改进为ResNet网络,并通过残差网络,采用特征融合的方式将不同深度的特征信息进行融合,从而提高算法对小尺度人脸的检测性能。同时,针对SSD算法对重叠框出现漏检的问题,将非极大值抑制算法(NMS)改进为Soft-NMS。此外,通过设置一个衰减函数,来降低相邻检测框的置信度,解决传统NMS算法对分数较低的检测框过滤掉的问题,能够降低算法的漏检率,提升算法的检测精度。

关键词:人脸检测;SSD算法;ResNet;Soft-NMS

中图分类号:TP391.4" 文献标识码:A" 文章编号:2096-4706(2024)19-0017-06

Research on Face Detection Algorithm Based on SSD Algorithm

ZHENG Wenxiu, ZHAO Xingna

(Shandong Huayu University of Technology, Dezhou" 253034, China)

Abstract: Aiming at the problem of poor small target detection effect in the traditional SSD algorithm, a face detection algorithm based on ResNet is proposed. This paper improves the basic network VGG of the SSD algorithm to the ResNet network, and uses the method of characteristic integration to integrate the characteristic information of different depth through the residual network, thereby improving the detection performance of the small-scale face. At the same time, aiming at the problem of leak detection in the overlapping frame for the SSD algorithm, the Non-Maximum Suppression (NMS) is improved to Soft-NMS. In addition, by setting up an attenuation function, it reduces the confidence of the adjacent detection box, and solves the problem of filtering the traditional NMS algorithm on the detection box with lower scores, which could reduce the leakage rate of the algorithm and improve the detection accuracy of the algorithm.

Keywords: face detection; Single Shot MultiBox Detector algorithm; ResNet; Soft-NMS

0" 引" 言

日常生活中,人脸检测作为一项智能技术在生活中有着广泛的应用。人脸检测是一切社交活动的基础,是人工智能的核心技术,也是目前深度学习研究的热门技术。它在现代社会中承担着重要的任务,比如社会安防、实时测温、人证比对等,人脸检测都在其中发挥着重要的作用[1]。对于突如其来的疫情,人脸检测技术通过检测人脸,可以进行实时测温,给人们的生活带来了极大的便利,为疫情防控贡献了一份力量。可见,人脸检测在人们的日常生活中也发挥了巨大的作用,应用前景也将越来越广泛。

人脸检测技术是人脸应用技术如人脸对齐、人脸验证、人脸识别等的第一个关键步骤。随着社会的发展与科学技术的进步,人工智能取得的成就越来越多,而人脸检测作为其中的一种核心技术,也取得了很多显著的成果,同时也面临着诸多挑战[2]。比如由于人体视角和姿态的变化,不同的人外观上会有一定的差异,遮挡、光照和人脸的大小也会对人脸检测造成一定的影响。传统的人脸检测方法在这些环境下检测到人脸可能会比较困难[2]。因此,解决这些问题在人脸检测中显得尤为重要。

随着深度学习的不断发展,各类算法都取得了不错的效果,基于深度学习的各种方法在众多研究领域中也取得了巨大的成功。其中卷积神经网络(Convolutional Neural Networks, CNN)的各种算法在深度学习中有着广泛的应用,在图像处理、计算机视觉等领域的研究中发挥了重要的作用,并取得了一系列显著的成果[3]。现如今,智能化设备在人们生活中越来越多,人脸检测技术需求不断增加,对于在复杂条件下检测出人脸有了更高的要求,同时对于人脸检测的准确率和速度都有较高的要求。因此,研究设计一个能满足这些要求的人脸检测模型具有重要的研究意义。

随着训练数据的增长,计算机性能的提升,基于深度学习的算法在人脸检测方面取得了很大的突破,相比于传统的检测方法在检测性能上具有压倒性的优势。基于深度学习的人脸检测算法大致可以分为两类[4]:

1)Two-stage人脸检测算法。该算法的主要思想是利用启发式方法(Selective Search)或CNN网络(RPN),通过这种方法来生成一系列稀疏的候选框(proposal),然后对候选框进行分类与回归,将其放入卷积神经网络中来完成。比如R-CNN系列算法。

2)One-stage人脸检测算法。该算法将目标定位问题转化为回归问题,生成proposal候选框的过程被去除。直接从网络中提取特征来预测目标分类和位置。其基本思想是对图片的不同位置进行均匀的密集采样,采用不同尺度和长宽比进行采样,再利用CNN进行特征提取,然后直接进行分类与回归,整个过程只需要一步。比如YOLO和SSD算法。

1" SSD人脸检测算法

1.1" SSD算法的原理

作为目前最优秀的检测模型之一,SSD(Single Shot MultiBox Detector)[4]采用VGG-16作为基础网络从图像中提取特征,VGG网络包括5个卷积层,每个卷积层的通道数依次为64、128、256、512、512,其中Conv4_3用于提取特征作用于小目标对其进行预测,而Conv7和Conv8_2用于提取特征对大目标进行预测。之后,通过设置不同尺度的特征层,生成不同尺度的目标预测值,并通过Anchor机制生成一组默认框,这些默认框具有不同的宽高比,然后对目标的类别置信度和位置偏移量进行回归,得到预测值,最后通过非极大值抑制来获得最终的目标检测框[5]。SSD的框架如图1所示。

1.2" SSD的网络结构

SSD的网络结构如图2所示,它在VGG16的基础上将最后的两个全连接层(FC6、FC7)改成了卷积层以用于检测,并且增加了3个卷积层和一个平均池化层[6]。在检测过程中,SSD算法通过提取网络中的六层卷积特征图来进行预测,包括Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2和Conv11_2层,得到两个输出。一个是输出分类使用Confidence,每个默认框生成k+1个Confidence,另一个输出是目标框位置回归的值。

检测流程具体如下:

1)首先输入一张图片,大小为300×300,然后将图片输入到预训练好的分类网络中,获得具有不同大小的特征映射。

2)在网络中提取六层特征层,在这些特征层上的每个点构造六个不同尺寸的默认框,然后对它们进行分类和检测,生成多个默认框。

3)结合不同feature map获得的default boxes,经过NMS(非极大值抑制)抑制一部分重叠或者不正确的default boxes,生成最终的default boxes集合,也就是检测结果。

1.3" SSD的损失函数

损失函数的定义是用来衡量一个模型预测结果的好坏,具体来说是表现模型预测值与实际值之间的差距。损失函数是对神经网络中的目标函数进行优化的一个函数,神经网络的训练过程就是使损失函数达到最小的过程。损失函数越小,说明模型的预测值与实际值的差异越小,模型的准确性和鲁棒性越好。

SSD算法的损失函数分为两部分:置信度损失(Confidence Loss, Conf)和定位损失(Locatization Loss, Loc)。

(1)

式中,N表示先验框的正样本数量;c表示类别置信度的预测值;l表示先验框对应的边界框的位置预测值;g表示ground truth的位置参数;α表示权重系数,一般设置为1。

对于定位损失,采用Smooth L1 loss,定义为:

(2)

,(3)

, (4)

(5)

式中,l表示预测框;g表示Ground Truth;(cx,cy)表示补偿(Regress to Offsets)后的默认框d的中心;(w,h)表示默认框的宽和高。

由于的存在,因此定位损失仅对正样本进行计算。对于置信度损失,采用的是Softmax Loss:

where" " " " " " " " " " " "(6)

式中,i表示搜索框序号;j表示真实框序号;p表示类别序号,p = 0表示背景;表示第i个锚框匹配到第j个GT box,而这个GT box类别为p;表示第i个搜索框对应类别p的预测概率。

2" 改进的SSD人脸检测算法

2.1" 改进基础网络

SSD算法由多层卷积层构成,训练过程中由于网络层数的增加会导致梯度信息衰减,也就是梯度消失,通过使用残差网络,来修改普通卷积网络,可以减轻梯度消失的问题,模型的检测效果也会更好。同时,在SSD算法的网络结构中,浅层特征图的尺寸大、感受野小、细节特征信息丰富,而深层特征图的尺寸小、感受野大、细节特征信息不够丰富。

基于以上分析,本节的基础网络采用ResNet网络来代替VGG网络,通过特征融合的方式,将不同尺度的特征进行融合,提高算法对小目标的检测能力。

针对SSD算法的问题,本文将原有的基础网络VGG-16替换为ResNet-50网络,通过特征融合,将深层特征融入浅层特征中,提高浅层特征的信息表达能力,提高模型对小尺度人脸的检测性能。改进后的网络模型如图3所示。

首先,输入一张人脸图像,大小为300×300,让图像经过一个卷积层和池化层,连接到ResNet网络部分,对图像提取特征并且生成特征图,此时网络输出的特征图大小为19×19,接着进行卷积操作,得到的特征图大小分别为10×10,5×5,3×3和1×1,然后抽取不同尺寸的特征图,在这些特征图的每个点上生成先验框,并且每个层的数量不同;进行检测时,将生成的所有先验框集合起来,然后输入到非极大值抑制中,将筛选的先验框输出;最后输出检测结果。

Conv7和Conv8经过Conv4之后,会进一步提取图像的特征,但经过特征提取之后仍然属于浅层网络,细节信息丰富,而Conv9和Conv10是深层网络,语义特征丰富。改进后的方法在SSD算法的基础框架上,将基础网络更换为ResNet,首先采用1×1的卷积核对Conv4_3、Conv7、Conv9_2和Conv10_2这4个特征层进行卷积操作,其中,这4个特征层的尺寸大小不同,经过卷积操作以后能够使网络在进行特征融合时保持通道统一,通过对特征图进行处理,统一尺寸大小,最后将得到的新的特征图进行连接,各层的特征相互融合,生成大小不同的特征图。改进后的算法与传统的算法相比,特征信息会更丰富,浅层信息的表达能力会更强。

2.2" 改进NMS算法

NMS,在计算机视觉领域中有着广泛的应用,它的主要思想是搜索局部最大值,抑制极大值[7]。在SSD算法中,由于多个特征层在预测时会生成大量候选框,但是,这些候选框中会有大量错误的、重叠的和不准确的样本,不仅会增加计算量,还会影响算法的性能。如果只依靠交并比(Intersection over Union, IoU),检测效果可能会不理想。在检测时,IoU的值设置过大,可能会丢失一些目标,出现漏检的问题;IoU的值设置过小,就会导致重叠检测,这对检测的性能会有较大影响。即使对大部分候选框进行IoU处理之后,仍然会存在大量错误、重叠和不准确的候选框,这就需要NMS来进行迭代优化,抑制冗余的框并保留最优的框,从而找到待检测目标的最佳位置。

以下为NMS的算法流程:

1)对各个框的得分(score)按照从大到小进行排序,也就是按照置信度进行排序。

2)选出置信度高的边框,设定阈值,然后将它作为输出边框,并将它从预测框的列表中删除。

3)计算该输出边框与其他预测框的交并比IoU,也就是两个边框的交集面积除以它们的并集面积。

4)如果IoU大于指定的阈值,即重叠率高的预测框,就把这些预测框删除;如果存在IoU小于指定阈值的,也就是重叠面积很小的预测框,对它们进行重新排序,然后选择一个置信度最高的预测框,计算与其他预测框的IoU值,对于交并比大于阈值的预测框,会对其进行删除。

5)重复上述步骤,直到所有的预测框都被处理以后,最后输出检测结果[8]。

IoU示意图如图4所示,其相当于两个区域相交的部分除以两个区域的并集得出的结果。

IoU的计算公式为:

(7)

一般来说,得分大于0.5就可以认为是一个不错的结果了。传统的非极大值抑制可以通过式(8)来表达:该算法将IoU大于等于设定阈值的窗口的得分全部设置为0。

(8)

式中,Si表示第i个候选预测框的得分;Nt表示非极大值抑制设定的阈值;M表示选中的检测框;bi表示第i个候选预测框。

针对NMS对于重叠部分会出现漏检的问题,Soft-NMS通过设置衰减函数而不是直接将原有的分数设置为0,这样可以用来检测重叠的部分。如果一个检测框与另一个检测框M重叠部分较多,那么它的得分较低;如果这两个检测框的重叠部分较少,那么原有的检测分数就不会有太大的变化。另外,Soft-NMS不需要对原始的数据模型进行重新训练,可以节省时间。

Soft-NMS的算法流程和NMS差不多,在计算出Target和其他框的IoU之后,如果IoU大于设定的阈值,则会用一个函数来衰减预测框的分数,而不是将预测框的分数置为0。Soft-NMS可以通过以下表达式来表达:

(9)

式中,Si表示第i个候选预测框的得分;Nt表示非极大值抑制算法设定的阈值;M表示选中的检测框;bi表示第i个候选预测框。

针对人脸图像存在的遮挡问题,一方面将NMS算法改进为Soft-NMS算法,通过设置一个衰减函数来降低遮挡图像的置信度,在检测时能够降低遮挡人脸图像对检测效果的影响,提高检测精度。另一方面,采用基于Attention的方法,来对遮挡的部分进行定位,通过设置合理的Anchor,可以间接学习到遮挡的人脸区域,减少误检问题。

首先对图像进行特征提取,这个过程通过FPN结构来实现,然后经过一个分支来学习Attention,然后通过对Attention进行E指数操作,将其与原来的Feature Map相乘,以此来增强未遮挡区域的信息。通过Anchor Setting设置可以使每个人脸得到充分的Context信息和感受野大小;通过Attention的Subnet,可以学习到有监督的信息和可视化的信息,能够提高网络对有遮挡的人脸的检测能力。在检测过程中,对于大部分的人脸来说是没有遮挡的,在人脸发生遮挡时,采用Segmentation方法,对于未遮挡的人脸信息会更加敏感,因此在检测时能够检测出来大部分的人脸信息。在Attention中,通过对其进行E指数的操作,然后乘到原来的Feature Map上,并不是简单的相乘,这样会对未遮挡的部分进行增强,而不是只保留未遮挡的区域,能够保留原来的Context信息,同时可见区域的信息能够更加突出,同时对于遮挡的人脸部分可以有效地检测出来,如图5所示。

3" 数据集

本文使用WIDER FACE[9]数据集进行人脸检测。WIDER FACE数据集挑选出了32 203张图像,并进行了人脸标注,总共标注了393 703个人脸数据,其中40%的数据可以用来训练。WIDER FACE数据集中的人脸标注非常宽泛,对于每张人脸的模糊程度、表情、光照、遮挡、姿态等都有非常详细的信息,这些信息增加了数据的多样性,同时也可以对数据集进行扩充,在训练过程中,能够避免由于数据集类型单一带来的问题。在数据集中,根据事件场景的类型分为61个类[10],然后根据每个类别,按照40%、10%、50%的比例分到训练集、验证集和测试集中。

4" 实验结果与分析

4.1" 基于改进基础网络的人脸检测算法

本节是对SSD算法的基础网络进行改进,所以本次预训练的算法选择训练好的SSD网络,在训练集上进行训练。实验的训练参数设置如表1所示。

4.1.1" 不同的网络对比

为了检验不同网络对算法检测性能的影响,将传统SSD算法采用的VGG网络模块与本章算法中的ResNet网络+征融合模块设置实验。使用网络训练得到的模型权重计算P、R值,即Precision值和Recall值,根据P、R值绘制PR曲线,得到每个算法的类别AP值,然后计算其mAP值。以mAP和FPS为评价指标,得到的实验结果如表2所示。

通过实验结果可以看出,ResNet网络相对于VGG网络的检测性能有所提升,mAP提高了1.1%,FPS提高了1.6帧/秒,说明使用ResNet网络能够提升算法模型的检测精度,同时可以提高模型的检测速度;将特征融合加入VGG网络后,与传统的VGG网络相比,mAP提高了2.9%,FPS降低了0.8帧/秒,表明加入特征融合模块能够提高算法模型的检测精度;ResNet网络加入特征融合模块后,与VGG网络相比,mAP提高了7.3%,FPS降低了0.2帧/秒;与单独使用ResNet网络或VGG+特征融合相比,mAP分别提高了6.2%、4.4%,而检测速度降低了1.8帧/秒和0.6帧/秒,对检测速度不会有太大的影响。其中,使用ResNet网络与特征融合的方式,算法的mAP最高,表明ResNet网络+特征融合模块能够进一步提高算法模型的检测精度,但对检测速度不会有太大的影响。

4.1.2" 小尺度人脸的检测

为了验证改进后算法的有效性,选取一些具有小尺度人脸的图片进行测试,通过与传统算法进行对比实验,实验结果如表3所示。

由表3可以看出,改进后的SSD算法与Faster R-CNN算法和YOLO算法,以及与传统的SSD算法相比较,针对小尺度人脸的检测性能有较明显的提升。其mAP值与Faster R-CNN算法相比,提高了14.6%,与YOLO算法相比,提高了14.0%,与传统的SSD算法相比,提高了12.6%。这是因为通过特征融合,可以有效地传递上下文信息,减少各层次之间特征图之间的差异,增强浅层信息的特征,同时通过特征点定位,可以更精确地检测出人脸,能够提升对小尺度人脸的检测能力。

从数据集中选取图片进行测试,首先输入人脸图像,对图像进行预处理,然后通过改进后的SSD算法进行人脸检测,此时出现的人脸检测框过大的问题,经过特征点定位对检测框进行调整,将人脸图像定位至特征点,避免因检测框过大带来的问题,从而能够精准地检测出人脸。图6为测试效果图,可以看出图6(a)中的小尺度人脸未被检测出来,通过改进基础网络和增加特征融合模块,经过人脸特征点定位,图6(b)图中左侧和左上方的小尺度人脸已经被检测出来,并且检测精度有相应的提升,说明改进后的算法对小尺度人脸的检测性能有一定的提升。

4.2" 基于Soft-NMS的人脸检测算法

为了说明本文所提出的改进方法的有效性,本章通过实验与未改进的算法进行对比,选取重叠度高的图片对其进行检测,以mAP作为评价指标,实验采用的学习率和训练迭代次数都相同,实验结果如表4所示。

由表3可以看出,对于选取的重叠度过高的图片,改进后的算法与未改进的算法相比,检测精度提高了1.7%。针对重叠度高的人脸图片的检测结果可知,基于Soft-NMS的人脸检测模型,其检测精度相对于未改进的算法检测精度的提高,说明了本文提出的改进算法对于重叠度高的人脸图片检测时,具有更好地鲁棒性。

测试重叠度过高的图片的结果如图7所示,图7(a)为经过NMS处理后算法的检测效果,可以看出,当人脸存在大面积遮挡的情况下,会出现漏检的问题;图7(b)为经过Soft-NMS处理后的算法的检测效果,此时图7(a)中被遮挡的人脸经过Soft-NMS处理后被遮挡的人脸能够被检测出来。说明改进后的算法能够准确地检测到测试集中的人脸目标,并且检测到的人脸个数更为准确,经过特征点定位以后,检测框的范围缩小至整个人脸,检测框的位置也更为精确,算法的准确率优于未改进的算法,从而说明了本章算法的有效性。

为了验证本章算法在实际生活中应用的普遍适用性,通过拍摄生活中的场景图片,比如红绿灯路口和核酸检测等公共场所,将其进行人脸检测,图片经过Soft-NMS算法处理后,对于存在遮挡的人脸,能够准确地检测出来,如图8所示。通过设置实际生活场景中的实验,以此验证了本章算法的普适性。

5" 结" 论

本文提出一种基于改进SSD的人脸检测方法,针对SSD算法存在对小尺度人脸检测精度不高、训练效率低等问题对SSD算法重新设计,通过更换基础网络,设计了一种基于ResNet网络的人脸检测算法,并增加特征融合模块,提高算法对小尺度人脸的检测精度。针对SSD算法在预测过程中对重叠度高的图像出现的漏检问题,提出将非极大值抑制算法NMS改进为Soft-NMS,设置衰减函数,对重叠的部分设置一个较低的分数,降低其置信度。与传统的算法相比,改进后的算法能够有效地减少模型的漏检率,提高检测精度,提升算法的检测效果。

参考文献:

[1] XIE R,ZHANG Q Y,YANG E Y,et al. A Method of Small Face Detection Based on CNN [C]//2019 4th International Conference on Computational Intelligence and Applications (ICCIA).Nanchang:IEEE,2019:78-82.

[2] 苟先太,黄巍,刘琪芬.一种基于改进NMS的牛脸检测方法 [J].计算机与现代化,2019(7):43-46+54.

[3] 夏亮.基于轻量级卷积神经网络的人脸检测研究 [D].广州:广州大学,2023.

[4] 康晓凤,厉丹.基于SSD-MobileNetv2和FPN的人脸检测 [J].电子器件,2023,46(2):455-462.

[5] 许卓凡.遮挡条件下的小尺度人脸检测 [D].北京:北京交通大学,2022.

[6] 赵畅.基于YOLOv5改进的人脸检测算法的研究与实现 [D].长春:吉林大学,2022.

[7] 王麟阁,蒋宝军,潘铁军.基于层级注意力增进网络的多尺寸遮挡人脸检测 [J].数据采集与处理,2022,37(1):73-81.

[8] 迟万达,王士奇,张潇,等.基于轻量化SSD的人脸检测模型设计 [J].计算机与网络,2021,47(5):69-73.

[9] 李保华,王海星.基于增强卷积神经网络的尺度不变人脸检测方法 [J].红外与激光工程,2022,51(7):491-498.

[10] 张骏,朱标,吉涛.基于MobileNet-SSD的红外人脸检测算法 [J].激光与红外,2021,51(1):107-113.

作者简介:郑文秀(1997—),女,汉族,山东德州人,助教,硕士,研究方向:图像处理及应用技术;赵兴娜(1983—),女,汉族,山东德州人,副教授,硕士,研究方向:电子与通信技术、智能控制

基金项目:山东华宇工学院模式识别应用工程技术研发中心研究基金(201905)

标签:  算法 

免责声明

本文来自网络,不代表本站立场。如有不愿意被转载的情况,请联系我们。

iidomino cuppor