基于ReinaFace 的公交车客流量统计方法

2023-12-26 08:41岳帅飞
安阳工学院学报 2023年6期
关键词:先验人脸卷积

周 晏,岳帅飞,韩 毅

(安阳工学院,河南 安阳 45500)

随着社会经济的不断发展,中国的城镇化扩大与人口流动频率的增加使得公交交通的使用量逐渐提升。为了提高公交交通的运力效率,增加高峰期时人们的出行效率,就需要对公交车各时段的人流量进行统计,为公交调度提供参考,并通过定期的数据对比,来掌握人们的出行频率,从而提升公交车的运力调度,方便人们的出行。

针对该问题, 本文设计了一种基于RetinaFace 的公交车客流量统计方法,本系统通过车内摄像头进行乘客人脸图像的采集,传入终端设备进行实时分析,采用RetinaFace 算法进行目标检测,对图像人脸特征提取与分析,从而达到人数统计的目的。

1 算法原理

1.1 RetinaFace 算法

由于乘客在车内位置分布呈现一定的随机性,视频图像中面部信息呈现不同的尺度。如何解决复杂环境下的多尺度、小目标面部特征准确检测,是实现车内人数实时统计的关键。本文介绍了一种基于自然条件下的精确、高效的人脸检测方法,并给出了其原理图。基于该算法,我们将研究一种新型的基于外向、自监督的多任务学习算法。RetinaFace 算法(图1)可以在不同尺度上对人脸进行像素级别的定位[1-3]。

图1 RetinaFace 示意图

RetinaFace 是由Google 推出的Mobilent 轻量级骨干网络,该网络具有较高的检测精度和检测速度,特别适用于监控场景下的多尺度面部目标检测。针对本文应用场景,本文拟采用可分离的深度卷积技术,构建一个基于流线型结构的轻量级深度学习网络,对于深度可分卷积格式,所用的参数化格式较少。

在RetinaFace 算法网络结构中,包含特征金字塔与残差网络模块,网络结构图如图2 所示。其中对于C2 到C5 级的残差网络模块,分别对应特征金字塔中的P2 到P5,而在P6 级中,它为对应C5 的特征图进行卷积步长为2,卷积核大小为3×3 的卷积,通过计算后得到特征图。另外,特征金字塔中,每一层都采用了单独的语义模块,用来增强在刚性语境中的建模能力,改善接受域。模块,用来增强在刚性语境中的建模能力,改善接受域。

图2 RetinaFace 算法网络结构

1.2 特征金字塔

FPN(Feature pyramid network)特征金字塔网络通过1×1 卷积后的通道数调整和上采样+特征融合来进行特征加强提取,从而使主干网络的输出特征层加强提取。

SSH(Single Stage Headless)网络在特征层上进一步增强了特征抽取能力。SSH 采用3 种平行的卷积:一种是3×3 卷积,另一种是用2 次3×3 卷积来替代5×5 卷积,最后一种是用3 次3×3 卷积来替代5×5 卷积。

采用ClassHead、BoxHead、LandmarkHead 网络对图像进行特征提取,得到预测结果。在此基础上,先采用decode 解码,再利用NMS 非极大抑制方法消除多个目标的重检值,最终得到一个特征输出的拼接值。

1.3 锚点框的设计

对于为了提升模型的鲁棒性,针对视频噪声影响下的小目标面部检测问题,采用基于WiderFace 的面孔数据,在特征金字塔中会生成锚点框,并对锚点框进行的比例逐步增加大小,长宽比设为相同,同时,逐渐增加锚点框的比重,以适应图像中多尺度的面部信息。

1.4 算法流程

首先,采用Mobilenet 抽取骨干特征网络,利用FPN 和SSH 实现增强的特征抽取。

其次,分别采用ClassHead、BoxHead、LandmarkHead 网络3 种不同的分类网络来对样本进行分类,从特征得到相应的预测结果。

最后,对预测的结果进行解码。采用NMS 非极大值抑制方法消除重复检测,得到最后的检验结果。

具体流程图如图3 所示。

图3 算法流程图

2 算法设计

2.1 卷积的计算

通过对采集到的图像进行卷积计算,获取到图像的3 个特征图。对于该图的长和宽将其设置为33,对于深度,输入图片的通道数为16,需要656 个卷积核,因为选择的是常规的33 卷积核,所以参数量为108。卷积示意图如图4 所示。

图4 卷积示意图

深度可分卷积算法是由谷歌的深度学习算法(深度学习可分变换)[4]提出来的一个新算法。与传统的卷积不同,它可以分为2种类型,一种是提逐深宽卷积,一种是逐点卷积。

图5 为深度可分离卷积的实现过程。

图5 深度可分离卷积实现过程

一般情况下,在准备好建模的时候,首先要将卷积group 设定成in_filters 层,从而实现深度可分离卷积,然后再使用1×1 卷积来调整Channels 数。

2.2 加强特征提取

RetinaFace 加强特征提取采用了1 个FPN 架构,该架构示意图如图6 所示。该架构是针对Mobilenet 最后3 个shape 的1 个有效的特征层而设计的[5]。

图6 FPN 特征金字塔示意图

FPN 构造方法就是先用1×1 卷积来调节3个有效特征层的信道数目。在此基础上,采用Upsample 与Add 两种方法对上述采样点进行特征融合。

然后对P3、P4 和P5 进行进一步的计算。在RetinaFace 的基础上,利用SSH 模组对其进行强化,以增强特征抽取的结果。SSH 的结构示意图如图7 所示。

图7 SSH 结构示意图

S S H 就是用3×3 卷积的堆叠来取代5×5 和7×7 卷积的效果:左边代表3×3卷积,中间用2 次3×3 卷积代替5×5 卷积, 而右边用3次3×3 卷积代替7×7卷积。

图8 为RetinaFace 的网络结构图。

图8 RetinaFace 网络结构图

2.4 从特征获取预测结果并进行解码

通过卷积的计算与加强特征提取,可以获得SSH1、SSH2、SHH3 三个有效特征层,并通过这3 个有效特征层获得预测结果[6]。

在RetinaFace 算法中,先使用softmax 分类器对先验框内部是否包含物体进行预测,以此来判断先验框是否存在物体。再根据回归预测的结果调整先验框,得到1 个预测框;利用回归预测结果对先前设定的框进行调整,以获取人脸关键点的精确位置,每个关键点都需要1 个水平和垂直坐标。 需要调整的参数有5 个,用于定位5 个人脸关键点。我们可以使用1 个1×1 的卷积来改变SSH 通道的数量,这样做的效果与调整其他参数相似,调整每个人脸关键点的先验框数量。

获取预测结果后,可以获得3 个有效特征层SSH1、SSH2、SSH3。

对于这3 个有效的特征层来说,当我们输入的图像为(640, 640, 3)时,它等同于把整个图像分成不同尺寸的网格。SSH1 的Shape 值为(80,80, 64);SSH2 的Shape 值为(40, 40, 64);SSH3 的Shape 值为(20, 20, 64)。

SSH1 意味着原始图像被分成80×80 的网络小格;而SSH2 则表示原始图像被分成40×40 的网络小格;SSH3 表示原始图像被分成20×20 的网络小格,每一个网络小格都有2 个先验框,每一个先验框都表示一个特定的面积。

最后,利用RetinaFace 算法对先验框中的人脸进行识别,并通过修改先验框中的人脸特征值,得到具有人脸特征值的预测框。

(1)分类预测的结果,会用来判断先验框中的对象有没有被检测到,可以去使用一个1×1 的卷积,将SSH 中的通道数目调节为num_anchors×2,表示人脸在每一个先验框中的概率。

(2)此时用1×1 的卷积,在 SSH 中调整通道的数量为num_anchor×4,调整后的参量代表每个先验框。每个框有4 个调整参量,前2 个参量用来调整框中心,后2 个参量用来调整框的长宽。

(3)利用回归预测的结果调整先验框来获得人脸的特征值,对表示各先验框的各面部关键点进行调整,利用2 个调节参数来调节先验框中心的x、y 轴,从而得到人脸特征点的坐标。

调整、判断完毕之后,做非最大值的迁移,在某一片的区域中,选择同一种类型的框,获得最高分数。最初的37 840 次预测被减少到49 次,使用了非极大抑制。

2.5 训练部分

对于训练的基本思想,是通过对大量样本的学习,得到反馈。对于弱分类器,它会在不知道先前的训练误差的情况下,自动地调整其权重和错误率,直到它达到早期所需的性能。

对于训练系统总框架来说[7],首先要输入样本集,在给定的矩阵特征原型下,通过计算获得矩阵特集合的特征,然后再输入特集合,使用所给的学习算法去确定阈值,再与弱分类器相对应,最终得到弱分类器集,并将其作为输入。以检测率与错误率为限制条件,选择最佳的弱分类器,并对其进行合成得到的强分类器。当输入了1 个强分类器后,这个分类被叫做1 个级联分类,这个分类是根据一组非人脸的图像,对那些不是人脸的图像进行分类和填充。

图9 训练系统框架

在处理真实框的时候,首先要计算全部真实框与全部先验框的符合程度,并将先验框的 IOU 与真实框展开比较,大于0.35 的先验框被认为可以用来预测得到真实框。接下来,我们会对那些与现实框更为相近的框进行编码。最后,将实际图像和相应图像的预测结果结合起来,得到相应的loss 值。在loss 计算方面[8],首先对具有全部正性标记的框进行回归(Box Smooth Loss),然后对各种类型的预测结果进行交叉熵(MultiBox Loss),最终对具有全部正性标记的人脸关键点进行回归(Lamdmark Smooth Loss)。此外,在训练过程中,还需要减少负样本的选取,本次实验选择7 倍正样本数量的负样本来进行训练。

2.6 实际应用部分

在系统的实际应用方面,选用当下热门的视频监控计数技术,采用摄像头等硬件搭配该人脸识别统计计数系统等软件,在公共汽车内配备摄像头来捕捉人脸图片,将图片上传到终端由本次设计的系统进行人脸框的捕捉与统计,即可大致计算出当日公交车各个时间段实时客流量,方便公共汽车的调度,提升人们的出行效率。

3 实验过程与分析

3.1 实验数据

利用Wider-Face 人脸评估数据集,进行数据采集标注9 600 张图,得到1 206 张人脸,将数据随机划分为训练集验证集与测试集,分别为40%、10% 与50%,并进行关键点的标注。

3.2 实验环境

本文算法在Windows10 操作系统下运行,基于PyTorch 深度学习框架,使用Python3.8 进行编程。机器硬件参数部分:CPU 为lntelR CoreTM i5-10200H CPU @ 2.40 GHz,GPU 为NVIDIA GeForce GTX 1650 4 GB。

3.3 实验细节

对于数据处理而言,除了需要考虑数据处理、默认框生成与网络结构这几个方面,还需要考虑损失函数与性能的评估。对于损失函数的计算,可以先利用match 函数来保存真实框和先验框的IOU 值,排列匹配每个真实框的最优默认框,进行for 循环真实框的匹配,最终得到所需要的目标回归值。

对于每一个训练样本,需要将原图进行裁剪,并将图像缩小或者扩大到统一规格,从而产生更多的人脸图像,提高模型的鲁棒性。

3.4 实验结果与分析

首先是得到该算法在测试数据集上的准确率与召回率曲线图(图10)。

图10 准确率与召回率曲线

其次是对于人脸不同情况下图片的实时检测情况。首先是对于单人脸检测(无遮挡)情况,通过图11a 可以看出,当所给图像仅出现一个人的脸,而且面部清晰无遮挡,通过RetinaFace 可以很好地检测出图像中的人脸给出人脸框,说明对于图像状况良好的单人脸检测,RetinaFace 具有很好的检测结果。

图11 人脸测试结果

然后进行测试单人正脸有遮挡的情况,看是否会出现误检或者漏检的情况。当面部戴有口罩的时候,依然准确识别出了人脸的位置,说明对于口罩遮挡的人脸检测具有良好的检测结果。当面部戴有墨镜与口罩时(图11c),虽然人脸被遮挡的面积很大,但仍然能识别人脸的位置,这说明该算法对具有较大遮挡的人脸仍然具有良好的检测效果。当检测的图像有其他动物的干扰时(图11e),该系统的表现依然优异。

之后对于多目标人脸检测,图11d 中有8 个人,并且中间的人因为距离较远而较为模糊,但该算法仍能精确地检测出图像中的目标人脸,检测结果比较好。

最后是公交车实时环境下的人脸计数(图12)。

4 展望

在针对遮挡物严重的情况下,我们可以考虑引入更多的模态信息来解决遮挡问题,例如体温识别或者语音识别等技术来增加识别的准确率。同时,可以升级硬件设备,加强识别的能力。最后就是通过使用规范提醒比如识别时不能带口罩等规范行为来减少遮挡物的频繁发生。

对RetinaFace 算法进行进一步的改进与创新,比如提升它的鲁棒性,替换当前所用的移动网络,提出一种新的注意力机制模块,比如HECA,与上述算法所使用的MobilNet 相比,在几乎不提高参数的情况下提升了计算量,检测效果大大提升。

在提升困难检测的图片时,加上注意力机制模块-HECA 作为主干网络[9-10],在Easy(Average Precision,AP)子集上的平均精确值也有明显的提高,再引入可形变卷积(Deformable Convolutional Networks,DCN)。用DCN 替换上文模块中所有的3×3 卷积,增强几何变换建模的能力,增强模型的适应性。模型根据实际情况的不同,更换不同量级的主干网络,从而适应不同的检测任务,推广到不同的领域中。

综上所述,该算法网络选用轻量级主干网络,经过进一步的改进与优化能达到很好的检测效果。

5 结语

本文基于对公交车客流量统计方法的研究,提出了一种基于RetinaFace 的人脸检测算法。该算法不仅能够输出人脸框的位置,在有遮挡物或者实时环境因素的干扰下也有不俗的表现,从而有效提高统计公交车客流量的效率,减少了安全隐患,并方便公交车调度,有利于乘客的高效出行。对于下一步的研究与改进,可以对数据集中进行更为细致的划分,增加人脸年龄、性别与角度等因素的标签,对人脸检测识别所输出的效果进行更加良好的优化。

在实际环境因素的影响下,在此后针对100组图片的检测结果反映,人脸框的准确率几乎达到了100%。在针对单人脸是否有无遮挡以及遮挡程度的不同、多目标的人脸检测和动物干扰下的各种情况进行分析对比,并且进行人脸检测。通过检测的结果可以看出,RetinaFace 人脸检测算法在不同的条件下,在图像背景的复杂情况、人脸的表情姿态不同以及其他因素的干扰下,都具有良好的检测效率与正确率,能达到满足有效人脸检测的要求。

猜你喜欢
先验人脸卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
有特点的人脸
基于无噪图像块先验的MRI低秩分解去噪算法研究
从滤波器理解卷积
三国漫——人脸解锁
基于傅里叶域卷积表示的目标跟踪算法
基于自适应块组割先验的噪声图像超分辨率重建
基于平滑先验法的被动声信号趋势项消除
先验的废话与功能的进路
马面部与人脸相似度惊人