APP下载

基于改进MTCNN算法的低功耗边缘人脸检测跟踪系统*

2021-05-29祁星晨卓旭升

电子技术应用 2021年5期
关键词:低功耗人脸边缘

祁星晨,卓旭升

(武汉工程大学 电气信息学院,湖北 武汉 430205)

0 引言

近年来,边缘设备等爆炸式增长,百亿数量级的边缘设备接入互联网。传统的AI计算架构主要是依靠云计算,虽然云计算能够提供足够的计算能力和可靠的计算结果,但其不断地消耗大量电力,且边缘设备也需要消耗能量收集数据并传输到云端,传输过程存在着延迟。而边缘设备与AI的结合能够降低能源的消耗以及降低延迟,使得原本在云端完成的任务可在边缘设备完成,降低了云端的负担,发掘了边缘设备的计算能力[1-3]。

目标检测是AI领域的热点研究任务,广泛应用于机器人导航、工业检测和航空航天等诸多领域,其目的是找出图像中所有感兴趣的物体,包含物体定位和物体分类两个子任务。而人脸检测属于目标检测任务的子集,在人脸检测基础上的应用有人脸识别、表情分析等。关于目标检测任务的研究有许多,产出了许多成果,主要有Viola-Jones[4]、Faster-RCNN[5]、YOLO[6]、SSD[7]、Cascade R-CNN[8]、MTCNN[9]等,这些研究在目标检测任务上精度和速度的要求不断提高。对于边缘设备,特别是低功耗边缘设备,资源极其有限,目标检测任务往往需要较大的算力,因而难以得到应用。文献[10]和文献[11]均利用深度学习的方法对人脸进行检测,在精度上有着较好的表现,但是其应用主要是依靠PC系统上强大的GPU,难以实际应用于低功耗的边缘设备。文献[12]、文献[13]和文献[14]在FPGA平台和NVIDIA JETSON TX2嵌入式平台上实现了目标检测和识别的应用,相比较与PC系统的功耗,FPGA平台和NVIDIA JETSON TX2嵌入式平台的功耗稍低,能效高。文献[15]则将深度可分离卷积于表情识别,文献[16]将MobileNet-SSD的目标检测任务部署于NVIDIA JETSON TX2平台上,文献[17]将Yolov3的目标检测任务部署于NVIDIA JETSON TX1平台上,文献[18]将改进的R-DA和KCF算法部署于NVIDIA JETSON TX1平台。相比较而言,上述平台对于大部分低功耗边缘设备来说,算力较强,因此将精简和优化后的目标检测模型部署于低功耗边缘设备是十分必要的。

基于上述背景和已有的研究,本文以人脸检测为例的目标检测任务,针对Cortex-M7为内核的低功耗上的实现和应用,选择了MTCNN这一灵活的算法作为本文主要实现的人脸检测功能的主干,在ST公司的STM32H747-DISCO双核平台上,实现了人脸检测和跟踪,解决了一部分目标检测任务在低功耗边缘设备应用问题。

1 MTCNN及其改进

1.1 MTCNN

MTCNN人脸检测和对齐算法是利用多任务级联卷积神经网络的结构完成的,主要任务是寻找图像中人脸所在的位置区域,以及人脸对齐,即找出特征点的位置,如鼻子左侧、鼻孔下侧、瞳孔位置、上嘴唇下侧等点,其主要结构如图1所示。

图1 MTCNN中P-Net、R-Net和O-Net的结构

工作过程主要是建立图像金字塔后,由P-Net这一建议网络对图像中可能存在人脸的位置提出建议,生成大量裁剪的分辨率为24×24的RGB图片,输入到R-Net(也就是精调网络),对P-Net提出的建议经过仔细判断,并再次提出经过修改和判断的意见,从原图像中裁剪出意见中对应的、分辨率为48×48的图片,最后将这些图片输入到O-Net也就是输出网络,得到最终的人脸分类概率、人脸检测框和人脸特征点的位置。图2展示了这一三层、三级串联的卷积神经网络结构的工作过程。

图2 MTCNN工作流水线

1.2 改进MTCNN

MTCNN算法具有一定的改进空间,本文主要从三层级联卷积神经网络、极大值抑制(NMS)和输出结构三方面进行速度优化和改进,虽然损失了精度,但是换来了能够在低功耗边缘设备上运行的可能性。

1.2.1 深度可分离卷积

深度可分离卷积[19]是谷歌公司于2017年在Mobilenets中提出的适用于移动设备的轻量级卷积核。

如图3所示,标准的卷积核大小为DK×DK×M×N,其中DK为核的空间尺寸,M是输入通道,N是输出通道。如图4(a)和图4(b)所示,深度可分离卷积在同样输入和特征图输出情况下,其大小为DK×DK×M+M×N,很明显地可以看出深度可分离卷积的大小较小,若DF为输出特征图大小,那么标准卷积的计算消耗为DK×DK×M×N×DF×DF,深度可分离卷积的计算消耗为DK×DK×M×DF×DF+M×N×DF×DF,因此深度可分离卷积不仅在大小上而且在速度上比标准的卷积核有优势,故而本文将使用深度可分离卷积替代MTCNN中的部分卷积核,并适当减小卷积核的大小。MTCNN和改进后3个网络的对比见表1。

图3 标准卷积的大小

图4 深度可分离卷积构成

1.2.2 非极大值抑制算法(NMS)

MTCNN中使用的非极大值抑制有效地将P-Net、R-Net和O-Net输出的人脸候选框重复部分较大的去除,进而使R-Net和O-Net的计算量减少。对于低功耗边缘设备需要更高效率的非极大值抑制,并可根据应用场景和经验调整相应的阈值,以便适应不同的环境,第一个阈值为候选框控制是人脸的最低概率,第二个阈值为控制多个候选框最大的Iou值,具体计算过程可见以下算法。

1.2.3 训练和移植改进MTCNN

本文使用widerface数据集,深度学习框架为Tensor-Flow 2.1.0,GTX-1050训练改进MTCNN的P-Net和R-Net。训练完毕后,将P-Net输入为固定大小的图像金字塔,由于边缘设备的图像采集设备往分辨率是固定的,并不需要处理各种分辨率场景的图像,因此固定数量和分辨率的图像金字塔能够更灵活地适应不同计算能力的边缘设备。本文图像金字塔中图像数量为2,分辨率分别为80×60和40×30。

1.3 云台跟踪单张人脸

人脸跟踪是在三维空间一个点上旋转摄像头以保持人脸在图像中心,因此本文使用两轴舵机云台作为机动装置,控制舵机角度使用PWM占空比的方式,如图5方框中所示。

假设人脸候选框已给出,人脸在单帧图像中的位置,候选框的左上角坐标为(x0,y0),右下角坐标(x1,y1),那么人脸候选框中心点为:(xc,yc)=([(x1-x0)/2],[(y1-y0)/2]),其中[ ]为取整函数。

摄像头获取的单帧图像中心点为(xi,yi),采用增量式PI算法,对横向轴舵机的控制量则有Sx=kP·(xc-xi)+kI·∑(xc-xi),其中,kP、kI为增益;Sy同理。

表1 MTCNN和改进后的MTCNN结构对比

2 测试结果

利用ST公司的Cube.AI工具箱对改进MTCNN的P-Net和R-Net进行转换,以便移植到边缘设备,最终可将改进MTCNN移植到STM32H747-Disco平台,并进行测试,平台如图5所示。

图5 本文平台实物图

本文边缘平台的速度可达600~800 ms一张人脸,多张人脸的计算速度会增加约每张人脸200 ms,由于算法的可调阈值,故而对于人脸个数可控,因此速度也可控,单张人脸检测结果如图6和图7所示,图中的框为人脸检测框。

图6 单张人脸检测结果(戴口罩)

图7 单张人脸检测结果(不戴口罩,背景有强烈白光)

本文平台运行在全速(即480 MHz),并且打开了绝大部分外设,根据ST数据手册、文献[13]、文献[14]中提到的平台,表2仅列出CPU的峰值功耗,其余外设不计,并对比了边缘平台所拥有的各种资源,可见低功耗边缘平台的资源是非常紧凑的,而且计算能力远不如大型平台。

表2 多种边缘平台功耗对比

3 结论

本文完成了目标检测任务在资源极其有限的计算平台的实现。基于MTCNN算法进行改进,可应用于固定场景、人脸个数不多的条件下,非常适合电池供电的低功耗边缘设备对目标检测功能的需要。测试结果表明,深度学习的方法鲁棒性较高,不仅是人脸检测任务,本文方法可为其他目标检测在低功耗边缘应用作为参考,可用于多种场景。本文方法不足之处和未来需要做的工作:

(1)本文目标检测任务在资源极其有限的平台运行,检测速度也极其有限,因此下一步可通过量化、稀疏化等方法对卷积神经网络模型进行优化,提高检测速度。

(2)人脸检测仅有一种物体的检测,因此未来可继续研究如何在低功耗边缘设备上提供两种或两种以上物体的检测,以此充分利用边缘设备的计算能力。

猜你喜欢

低功耗人脸边缘
有特点的人脸
一起学画人脸
一种高速低功耗比较器设计
三国漫——人脸解锁
一张图看懂边缘计算
长得象人脸的十种动物
ADI推出三款超低功耗多通道ADC
IDT针对下一代无线通信推出低功耗IQ调制器
低功耗加权cache替换策略
在边缘寻找自我