APP下载

适用于FPGA的轻量实时视频人脸检测

2022-07-01赵兴博陶青川

现代计算机 2022年8期
关键词:卷积分支人脸

赵兴博,陶青川

(四川大学电子信息学院,成都 610065)

0 引言

随着社会的发展,城市吸纳了越来越多的外来就业人口,大量的人口流动和短期租住给社区公共安全的维护和保障带来了新的挑战。传统的视频监控系统仅负责将部署的探头采集的图像数据传输到监控中心进行集中保存,具体的监控排查以及异常情况告警则交由人工进行负责。随着特大城市生活圈的逐步建立,人们生产生活的活动区域也随之扩张,因此需要进行治安监控的时间与区域同步扩大,传统的人工监控成本随之水涨船高;同时,采用人工的方式不可避免地存在分析人员疏忽、怠惰的问题,从而影响事件发生时监控告警信号的及时性。因此,采用低成本平台的自动化实时智能分析监控系统才是一种行之有效的解决办法。

人脸检测是智能视频监控的关键技术之一。如今人脸检测技术广泛应用于人机交互领域,在面部情绪自动化分析、视频实时人像跟踪等视觉任务中发挥重要作用。传统的人脸检测技术使用依赖于先验知识设计的特征描述算子,应用广泛的有哈尔特征算子(haar-like feature)、梯度方向直方图统计(histogram of oriented gradient,HOG)等;而后将所提取的特征使用分类算法归类,诸如支持向量机(support vector machine,SVM)、迭代提升方法(boosting)等。传统的机器学习方式不能自动设计适用于目标数据的特征提取算子,导致其泛化能力弱,实际使用效果较差;随着人工智能的快速发展,深度学习技术作为成果之一,在视觉目标检测方面同样成绩斐然。以人脸检测子领域为例,采用深度学习技术的算法准确率和速度不断提高,达到甚至超越人类水平。目前主流的检测方法,主要分为two-stage(两阶段检测)和one-stage(一阶段检测)两类。以Faster RCNN为代表的两阶段检测算法由于其先产生候选检测框,再对候选框分类的运行逻辑导致计算开销大、推理速度慢,难以部署于具有实时性要求的低算力设备上。一阶段检测算法则不需要产生候选框,直接将目标在输入图像位置上的求解过程转化为预设检测框中心位置的回归问题从而求解,因此检测速度一般比两阶段算法更快,代价是精度有所降低。这类算法常见的有SSD和YOLO系列。然而,面对监控视频中存在的小分辨率、遮挡、背景干扰以及姿态变化等复杂人脸,现有算法的高准确率仍依赖于复杂模型和大量计算资源,在应用到现实场景的人脸检测任务时受到限制,因此,实时轻量级复杂人脸检测方法受到广泛关注。

本文主要工作:设计一种适用于FPGA的轻量级目标检测网络,以YOLO 算法为基础,采用RepVGG 方法进行改进,通过结构重参数化方式去除网络分支结构,同时大幅减少计算量,使得目标检测网络能够适应FPGA 设备低功耗、低算力、小内存空间的客观条件。训练过程中辅助聚类分析重新划分数据集的方法,提高网络空间信息的聚合能力,从而提高检测精度。实验表明,该方法在FPGA设备上运行时具有良好的检测性能,可在保证精度的前提下满足实时性要求。

1 YOLO检测模型

目前被广泛采用的YOLO 系列目标检测网络YOLOv4,相较于YOLO 系列之 前 模 型来说,在确保模型结构简洁的前提下,在较小目标的识别效率上有极大提高,是此系列的集大成之作。YOLOv4 的模型及详细结构如图1 所示,可从整体上划分为三大部分。

图1 YOLOv4模型结构图

首先是特征提取主干结构CSPDarknet53,主要进行图像高级语义信息的提取,其由5 个CSP-n 模块串联而成。一个CSP-n 模块则融入CSPNet的构造特点,首先堆叠一次步长为2的下采样,随后跟随由个串联残差块单元(res unint)辅助一条贯穿输入、输出的残差边分支形成多支结构并进行合并,以便在不增加网络深度的前提下保证高效的特征提取能力;最终,整个特征提取主干依次输出最后三个CSP-n 模块的特征提取结果,即相较于输入尺寸进行2倍、2倍和2倍下采样得到3幅从大到小的提取特征图。以输入图像尺寸为608 × 608 举例,最终输出的特征图尺寸分别为76 × 76,38 × 38,19 × 19。

其次是SPP加PANet多尺度感受野特征融合结构。SPP模块通过所设计的多分支不同尺寸最大池化后进行特征拼接,从而自底向上地增强了特征在尺度变换上的平滑性。随后特征输入到PANet特征融合模块中进行处理,与SPP模块相对应,此处实现了自上到下的下采样特征拼接操作。SPP 与PANet互相配合,实现了不同尺度特征的相互融合,从而使不同尺度的特征互补。

最后一个结构为YOLOHead 检测头,对之前的网络结构提取到的特征进行解析,从而得出最终的目标检测框位置以及分类结果。

2 改进的YOLO目标检测模型

YOLOv4作为一类通用目标检测网络,在设计之初便需要考虑不同尺寸、形态各异的各个类别目标物体的差异性,其所考虑的检测目标从火车到棒球无所不包,需要极强的特征提取能力以保证提取出的特征足够有代表性。因此,其网络的复杂度较高,例如其特征提取主干CSPDarknet53,采用多分支结构CSP以及性能优异的网络组件残差块单元,通过加深的网络层数(总计53 层),并且辅以大通道数来提高模型性能,最大通道数已达1024,最终导致模型在部署时需要设备有极高的计算能力和较大内存,非常不利于工业场景(尤其是在算力受限的情况下)。针对视频监控中的人脸检测问题,由于目标非常明确,仅需要检测人脸,不需要如此复杂的网络,因此对其原本的特征提取网络进行轻量化设计。需要针对实时人脸检测这一任务特性做出以下改进。

(1)对网络深度以及分支结构进行精简。对比YOLO 系列使用过激活函数,目前主流的Mish 激活函数通过复杂的非线性映射进行计算,在低算力设备上会加重计算开销,因此全部替换为拥有良好性能优化的ReLU 激活函数;同时对比了现有多种分支设计结构,最终选用由一组3 × 3 卷积、1 × 1 卷积以及恒等映射(identity)组成的RepVGG 式分支组合结构与ReLU 激活函数相结合的方式作为特征,提取主干结构的基本构成单元(REP_unit),并在原始结构上通过将单元重复次数减半来缩减通道深度。

(2)为进一步降低参数量和计算量,在训练得到的模型基础上采用结构重参数化的方法进行分支合并以及算子融合,从而降低计算量,进一步提升处理速度。

(3)同时针对人脸目标数据集中目标尺寸变化大,小模型训练过程不容易收敛所导致精度大幅降低的问题,通过聚类方法对数据进行拆分训练,提高网络的准确率。

2.1 特征提取主干结构的改进

为构建专用硬件上计算速度高、内存小的高效模型,清华大学于2021年提出了RepVGG 式的主干设计思路:构建仅使用3 × 3卷积算子堆叠,并通过对3 × 3 卷积算子权值重新赋值派生出特殊的1 × 1 卷积分支以及恒等映射Identity 分支结合的结构。同时采用结构重参数化的方式解耦训练时和推理时算法架构。训练时参考ResNet 结构的分支组合思路,为每一个3 × 3 卷积添加并行的1 × 1 卷积分支和恒等映射Identity 分支,从而计算更多的特征信息,提高检测精度。在推理时对模型做等价转换,得到实际部署模型。由于三种卷积算子均由同一种算子派生,因此结构可转化为无分支结构类VGG 的单路模型。此类设计的单路模型具有以下优点。

(1)单路模型并行度高,计算速度快。采用结构重参数化的方式合并分支结构,节省了内存占用。

(2)单路架构灵活性更好,容易改变各层的宽度(如剪枝)。

因此,为满足检测模型实时性和精度的需求,本文使用REPVGG的基本构成单元(REP_unit)对CSPDarknet53 的基本结构进行修改,并在原始结构上通过将单元重复次数减半来缩减通道深度;并针对性地将激活函数替换为具有良好硬件性能优化的ReLU 激活函数。重新设计的REP-YOLO 特征提取主干结构如图2所示。具体细节在接下来的小节中详细说明。

图2 改进后的REP-YOLO 特征提取主干结构图

2.2 结构重参数化

结构重参数化思想的核心是解耦训练时和推理时架构,即训练一个多分支模型;将多分支模型通过数学推理等价转换为单路模型;最终得到部署单路模型。因此,可以同时利用多分支模型训练时性能高的优势以及单路模型推理时计算量小、方便模型高效部署的好处,达到获取拥有复杂模型检测能力的简单模型的目的。

为实现这一思想,Ding 等人采用数学推导的方式,并经过实验验证了该思想的有效性。本文依照设计需求选取其中的BN(Batch Normalization)层与卷积层合并以及分支合并思想来实践此方法。具体做法在以下两小节进行阐述。

2.2.1 BN(batch normalization)层与卷积层合并

在深度学习网络训练过程中,为解决因网络深度加深而导致梯度消失以及梯度爆炸的问题,通常选择在卷积层处理后增加层。层通过归一化操作使得数据满足标准分布,从而控制梯度在合理范围内加速网络的收敛,并在一定程度上解决过拟合问题。整个层的计算过程数学表达见公式(1)。

其中为层的输入数据,也就是前一层卷积的输出。首先求出输入数据的均值与方差;接着使用求得的均值与方差对输入数据进行偏移及缩放的归一化操作,其中为缩放系数、为偏移因子。训练过程中,,,会依照输入的数据特征进行学习,在前向推理时固定为常数。

层在网络前向推理时作为常数算子,会带来额外的内存占用与计算量,因此会影响模型推理速度。考虑到本文网络中大部分均为卷积层与层配合处理的结构,因此在部署前预先对层与卷积层进行合并,减少计算层间通信与中间存储,从而提高实际部署模型前向推理的速度。卷积层对输入特征图的计算公式如公式(2)所示。

其中为卷积层权值,为偏移量。对公式(1)、(2)进行合并计算,可得出卷积层与BN 层的输入输出计算公式(3)。

由于卷积层与层的运算均不涉及非线性操作,因此依照矩阵操作的齐次性,合并过程同样是线性运算,可将整体看作一个新的卷积操作,新卷积的权值与偏移如公式(4)所示,此变换不改变整体的映射关系。

2.2.2 分支合并

本文所使用的REP_unit基础模块结构在图3中进行展示。图中为原始网络所使用的ResNet 结构,为训练阶段的REP_unit 基础模块,为推理阶段的REP_unit基础模块。从可以看出,训练时存在三路并行的3 × 3 卷积分支、1 × 1 卷积分支以及恒等映射Identity 分支。由于1 × 1卷积和恒等映射Identity分支是通过对3 × 3 卷积算子权值重新赋值派生出的结构,因此REP_unit中的1 × 1卷积是相当于一个除了卷积核中心位置权值存在,其他位置权值均为零的3 × 3 卷积,同样的恒等映射Identity 分支操作,即输入的每个特征元素直接对应到输出的相应位置,相当于以单位矩阵为卷积权值的1 × 1卷积,因此也是一个特殊的3 × 3 卷积。根据卷积的可加性,将三个分支的3 × 3 卷积的加和操作等价为一个同样对应位置是三个分支卷积对应位置加和的新3 × 3 卷积,即将网络基础模块从训练阶段的多分支结构融合为推理阶段的单路结构。

图3 基础模块结构对比

2.3 通过聚类分析重新划分训练数据集

目前深度神经网络的训练数方法通常为随机小批量数据加载训练法,对于多尺度目标数据集,在数据集中随机采样分批训练会导致大目标与小目标的混杂。由于网络中模块感受野参数固定,无法灵活地针对不同尺度的目标适应卷积参数,在训练过程中往往造成所训练的网络输出精度波动大,从而导致性能下降;而对于轻量级的深度神经网络负面影响更严重。图4 是本文采用的WIDER FACE 数据集目标分布图,可见该数据集中目标尺度及长宽比存在分布不均衡的情况。

图4 样本分布示意图

对目标检测算法进行分析可知,目标所处图像相对位置的变化并不会影响算法性能,而算法性能对目标框的长宽比以及尺寸的改变非常敏感。就YOLO 系列算法举例,便是预选框长宽比的设置以及大中小三个检测头尺寸的检测尺度与目标尺寸的适配。从这一角度出发,本文引入聚类算法以适应数据集尺度变化大的问题。

为进行聚类,本文采用数据集中标签目标框的高、宽属性信息作为聚类特征数据,选取欧氏距离函数作为聚类的相似性度量函数进行K-means聚类,如式(5)。

其中x,x代表数据集中不同的目标框,W,WH,H为两个目标框的宽与高。按照YOLO 的设计理念,将数据划分为大中小三个聚簇。最终聚类结果如图4所示,图中两个较大黑色标志点以及黑色区域的较大白色标志点表示聚类得出的三个聚簇中心,其余不同灰度颜色的标志点则分别代表三个聚簇中的目标点。

对于训练过程,经验可知大尺寸的输入目标数据训练网络容易收敛,可获得较高精度;而对于尺度较小的输入数据,由于特征较小,在训练初期模型很难收敛。对于单一目标种类的人脸检测数据来说,即使尺寸存在差异,人脸的结构特征是相似的,因此对大尺度目标的学习也可对小尺度目标的识别提供帮助。在训练过程中重新划分训练数据集进行分步训练,先使用容易训练的大尺度目标聚簇对整个模型网络进行权值初始化;然后添加中尺度目标聚簇进行两个尺度目标的混合识别推理;最终使用完整的数据集进行完整的多尺度目标识别训练。

3 实验过程与分析

3.1 实验环境配置

本文的实验环境包括训练所用的通用GPU训练平台以及实际应用的FPGA平台。通用GPU训练平台搭建在处理器型号为Intel Core i5-9400F,16 GB 内存,显卡为NVIDIA GeForce GTX1080Ti,运行Ubuntu 20.04 系统的主机上,深度学习框架为Pytorch。

采用的FPGA 设备为U280 FPGA 加速计算模块,其详细参数见表1。

表1 U280参数表

3.2 模型评价方法

本次实验选用以下几个指标作为标准,以评价算法在FPGA类型的低算力设备上的运行情况:检测精确率()、检测速度以及模型参数量(Params)大小。

是目标检测常用的性能指标,它表示检测器的性能,计算过程如公式(6),表示预测正确的目标数占总的正类预测个数的比例。本文所有实验中目标检测交并比大于0.5 视为真目标。

其中,为目标检测网络预测出的真目标数;为未能成功预测出的真目标数;+即总数为的预测目标中正类目标的总数目;检测速度代表检测器的检测速度,其定义为对一张输入图像进行目标检测算法所消耗的时间,单位为毫秒(ms)。通常模型参数量Params 越小,代表部署时的硬件压力越小,越容易搭建于低算力设备中。

3.3 实验结果以及分析

由于本文算法重点在于嵌入式设备上目标检测算法的性能,因此选取YOLOv4、Tiny-YOLOv3、与REP-YOLO进行对比。

训练的实验参数设置如下:批大小设置为16,最大迭代步数设置为1000000,学习率为0.01,权重衰减设置为0.001,动量设置为0.9。

为确保模型在训练中达到高准确率的同时在真实数据上拥有泛化性,先使用COCO数据集进行预训练,得到主干结构的预训练权值,再使用针对人脸目标监测的WIDER FACE 数据集进行训练。具体的训练过程如图5所示。

图5 网络训练流程

为了对比模型实际应用场景的性能,将测试模型统一部署到FPGA 设备U280上进行测试。具体部署过程如图6所示。

图6 模型部署流程

为客观评价本文所进行的各部分设计改进的具体效果,设置对基础网络进行不同部分修改的消融实验,“√”表示使用相应手段进行修改,而“×”表示保持原样,以COCO 数据集为基准输入尺寸为608 ×608 在GPU 上进行测试,测试结果如表2所示。

表2 消融实验

从消融实验可以得出以下结论。从实验1、2的测试准确率对比可以看出,实验使用聚类分析划分训练集训练的方法对于大模型来说,仅有1.3%的提升,效果不大;但从实验3、4的测试准确率对比可以看出,对于小模型来说,使用重新划分的数据集进行训练可在原有基础上提升14%,准确率从0.344 提升至0.392,因此此项技术对于小型目标检测模型的训练是有帮助的;同样的,从实验4、6 的模型参数量以及测试准确率对比可以看出,结构重参数化手段可在不改变网络推理准确率的前提下,减少将近五分之一的参数量,从20.3 M 降至16.8 M,因此该方法可以减少模型对设备计算能力的需求,加快模型推理。

为了验证所设计算法的实际效果,我们选取YOLOv4 以及同样以轻量化为设计前提的YOLOv4-tiny 作为对比,测试三者使用WIDER FACE 数据集进行训练并部署在FPGA 设备上测试人脸检测的具体效果,结果如表3所示。

表3 WIDER FACE数据集人脸检测结果对比

由表3 可以看出,本文算法的速度相对于YOLOv4 来说提升了2.2 倍,而即使是同样轻量化设计的YOLOv4-tiny,速度依然有1.5 倍的提升;在检测准确率方面,对于简单目标与中等目标,本文算法检测精度与YOLOv4-tiny 相差无几,仅略逊于YOLOv4。在困难目标检测方面,由于此类目标场景存在分辨率小、部分遮挡以及姿态变化等复杂难点,轻量化设计的特征提取主干结构能力稍有不足,但仍能成功检测出将近八成目标。

为直观展示改进算法在真实场景下的效果,我们从网上随机选取若干图片进行人脸检测,检测结果如图7所示,可以看出在真实场景下算法有着良好的泛化性能。

图7 算法效果展示

4 结语

针对目前算法依赖于大参数量以及高算力设备,在应用到现实场景的人脸检测任务时受到限制的现状,本文设计了一种基于YOLO 的识别改进算法。通过使用REPVGG 式结构结合结构重参数化方法对YOLO 目标检测算法主干进行了精简,并通过聚类分析划分训练集分批次训练的方法来保证轻量化结构的准确性。实验结果表明,该算法针对中大型人脸目标的检测具有良好的可靠性,同时该算法模型在FPGA类型的低算力设备上能实时进行准确的目标检测。在接下来的研究中,将结合模型的量化与剪枝算法对深度神经网络参数量做进一步压缩,以此确保精度的前提下达到更高的实时性。

猜你喜欢

卷积分支人脸
基于全卷积神经网络的猪背膘厚快速准确测定
基于图像处理与卷积神经网络的零件识别
玻璃窗上的人脸
基于深度卷积网络与空洞卷积融合的人群计数
基于git工具的多分支并行开发上线流程
用“分散数论”对“哥德巴赫猜想”的初等证明
智力考场:有趣的图片测试
含有二阶幂零鞍点的双同宿环附近的极限环分支
卷积神经网络概述
“领家系”可爱脸VS“高冷系”美人脸