APP下载

基于边缘计算的人脸识别系统

2020-01-07刘思马靖瑜袁倩吴粉侠

软件工程 2020年12期
关键词:人脸识别

刘思 马靖瑜 袁倩 吴粉侠

摘  要:随着科技的发展,智能设备产生的大量数据给云计算处理方式带来了巨大的压力,进行快速、有效地人脸识别的技术要求日益迫切。本文基于边缘计算,采用Qt+OpenCV技术设计了人脸识别系统,实现了人脸识别模块在ARM开发板上运行,完成了边缘端及服务器端的开发,优先在移动设备所处的边缘端对图像进行处理,并结合了AdaBoost算法进行识别。该系统可以减少图像目标识别的计算成本、减少网络数据泄露的风险、增强服务响应能力。

关键词:人脸识别;AdaBoost算法;OpenCV

中图分类号:TP391.4     文献标识码:A

Abstract: With the development of science and technology, large amount of data generated by intelligent devices has brought great pressure to cloud computing processes. There is an urgent demand for fast and effective face recognition technology. This paper, based on edge computing, proposes a new face recognition system by using Qt+OpenC technology. The new system enables face recognition module to run on the ARM development board and the both edge end and server end are completed. Images are firstly processed on the edge end of mobile devices, then recognized through AdaBoost algorithm. The system can reduce the computing cost of image target recognition, lower the risk of network data leakage, and improve service response.

Keywords: face recognition; AdaBoost algorithm; OpenCV

1   引言(Introduction)

人臉识别是机器视觉研究的核心,随着计算机硬件的不断发展,人脸识别的应用范围更加广泛。人脸识别最初应用于公安部门,主要用于刑侦破案和通过照片识别罪犯,近几年逐步应用于国家、社会及企事业等领域[1]。

传统的人脸识别大多是基于云计算的,云计算是数据行业的大势所趋[2]。对于云计算来说,所有的数据都要汇总到后端的数据中心完成。在“云、管、端”三者的角色中,云计算更侧重于“云”,是实现最终数据分析与应用的场所。而基于云计算模型的人脸识别技术存在一些问题亟待解决:①各种终端上传的图像、视频等数据由于信息量大,对网络带宽要求较高,全部上传至云端,云端压力较大,很难保证数据处理的实时性。②存储和管理大量冗余图像数据,增加了存储节点能耗。

为了更好地规避云计算数据处理压力过大这一问题,边缘计算应运而生。边缘计算属于一种分布式计算,在网络边缘侧的智能网关上,就近处理采集到的数据,而不需要将大量数据上传到远端的核心管理平台[3]。和云计算相比,基于边缘计算的人脸识别,可以利用云服务器上已有的数据和计算能力,得到结果的速度更快,图像识别时,得到识别结果的响应时间大大缩短,而且当识别结果返回的同时,将会把图像的特征信息发送给云服务器作为新的训练集。

本文设计了基于边缘计算的人脸识别系统,在该系统中,摄像头采集人脸图像上传至边缘端,边缘端根据实际情况,若需要进行训练,可选择将人脸图像上传至服务器端进行训练,得到训练模型并把训练模型传回边缘端或边缘端进行比对识别;若需要进行识别,则可以直接利用服务器端训练好的模型进行识别,并将识别结果保存至服务器端。这一特性使该系统具有更高的可实现性[4]。

2   系统设计(System design)

2.1   体系结构设计

基于边缘计算的人脸识别系统开发主要包含两部分:边缘端的开发以及服务器端的开发。该系统通过边缘端的摄像头采集人脸图像,使用智能边缘管理运行包进行识别,把识别结果保存并上传至服务器端。在服务器端通过智能边缘管理平台进行人脸图像的训练,将训练模型保存至服务器端,边缘端根据需要从服务器端获取训练模型进行识别。本文主要开发技术包括OpenCV机器视觉的技术、Linux系统下的编译和移植技术,以及最终移植到开发板的相关技术。

边缘端系统使用粤嵌GEC3399人工智能嵌入式开发板,搭建Ubuntu16操作系统,同时配置ARM版OpenCV机器视觉库,其中ARM版的OpenCV库通过交叉编译环境调整为合适的版本。边缘端通过摄像头对人脸图像进行采集,使用服务器端训练好的训练模型进行识别。OpenCV机器视觉库与开发板自带的3D图形加速引擎配合,能够有效增强图像的处理能力。人脸图像进行识别前需先使用OpenCV库对图形进行灰度化处理将图形转化为更易处理的灰度图像,然后将其传输至服务器端[5]。

服务器端的主要环境配置包含Ubuntu16、Qt Creator 5.7.1、OpenCV3.3.4和交叉编译工具链arm-linux-gcc-4.8.3。边缘端和服务器端的交互通过挂载的形式来实现。边缘端采集人脸图像上传至服务器端,服务器端对其进行训练,获得训练模型,将训练结果进行保存并返回给边缘端进行识别。基于边缘计算的人脸识别系统框架如图1所示。

2.2   嵌入式系统的平台搭建

搭建嵌入式Linux平台就是搭建服务器端环境、边缘端环境以及建立它们的连接。嵌入式系统一般没有自举程序,必须通过启动程序引导硬件系统进入操作系统。首先将U-Boot植入嵌入式控制系统,U-Boot可以引导操作系统进行装载和运行,同时对系统的频率、定时器进行设置,初始化一個调试串口,通过该串口或以太网都可进行数据下载。然后在服务器端安装Linux的发行版Ubuntu16,边缘端配置好底层的环境,同时在服务器端安装交叉工具链(ARM版),用交叉工具链编译程序部署到边缘端[6]。

搭建系统首先需安装软件环境,核心步骤如下:

(1)PC机安装虚拟机,虚拟机安装linux操作系统。

(2)在宿主机的Linux操作系统上安装交叉编译工具。

(3)宿主机上搭载nfs,是宿主机的文件夹可以挂载到开发板上。

(4)在宿主机上安装串口虚拟终端(secure CRT),操作开发板。

本文以支持跨平台运行、易移植的Qt Creator5.7.1作为开发平台,该应用开发嵌入式产品更加方便高效。具体步骤如下:

(1)Qtcreator交叉编译,安装图形化界面的Qt。下载并配置源码包qt-everywhere-opensource-src-5.7.1,通过arm-linux-gcc-4.8.3交叉编译,设置环境变量。

(2)OpenCV3.3.4机器视觉库交叉编译,安装cmake及相关依赖库,并编译OpenCV,配置环境变量。

(3)在交叉编译好的Qt5.7.1中导入交叉编译后的OpenCV3.3.4,在Qt的.pro文件中加入动态链接库。

(4)挂载开发板下可执行的程序,在Qt中把人脸识别程序进行交叉编译,挂载到开发板上执行。

3   人脸识别(Face recognition)

3.1   人脸图像的预处理

人脸图像采集时存在光照、角度等因素的影响图像质量低,不利于机器识别,可以通过对采集到的图像进行光照补偿、去噪等方法提高图像质量、加强有用信息,在人脸特征提取之前有选择地进行适当的预处理操作。

3.1.1   图像识别预处理

摄像头采集人脸图像时,采集环境和采集设备均存在一定的差异性,光照明暗程度、设备性能的优劣等都会影响到人脸图像的质量,往往会造成噪声、对比度低等缺点。同时,距离问题和焦距大小等会导致人脸在整幅图像中的尺寸和定位不准确。为了解决以上问题,必须对图像进行预处理。

人脸图像识别前预处理主要包括人脸图像的增强。针对低质量的图像一般要进行图像增强,图像增强是为了改善人脸图像的质量,不仅在视觉上更加清晰图像,而且使图像更利于计算机的处理与识别。一般可采用暗光增强、超分辨率、去噪、去除运动模糊等方式看到更多的细节,尤其是对人脸来说,增强后可以提升人脸的识别率。

3.1.2   图像训练预处理

人脸图像训练预处理的过程主要包括人脸扶正和归一化两部分。为了得到人脸位置正确的人脸图像,需要通过人脸关键点实现,并根据这些关键点对人脸进行对准和校准。

人脸图像归一化的目的是使不同环境及设备条件下拍摄的同一个人的照片具有一致性。人脸归一化包括两个方面的内容:一是几何归一化,二是灰度归一化,即取得图像大小一致、灰度取值范围相同的标准化人脸图像。

3.2   人脸图像的检测、采集

在进行人脸图像采集前,输入用户姓名及编号,方便图像数据的有序存储。填写完成后打开摄像头,在图像中准确标出人脸的位置和尺寸。人脸图像中包含着十分丰富的模式特征,挑选其中有用的信息,并利用这些信息实现人脸检测。点击采集头像按钮,采集10张112×92(像素)人脸图片。摄像头采集过程中,为了提高识别的准确性,尽可能进行多角度采集图片,例如变换不同的位置、不同的表情等[7]。

3.3   对采集的图像进行训练

OpenCV下有自带的供人脸检测的分类器,主要是一些xml文件,利用这些分类器进行检测和捕捉人脸后,才能实现识别。首先将OpenCV官方训练好的人脸识别分类器文件拷贝到自己的工程目录下,包括:haarcascade_eye.xml、haarcascade_frontalface_default.xml等。再点击图像化界面中“生成训练文件”的按钮,把采集的图像生成训练文件,并选择生成的训练文件开始训练。

3.4   人脸检测、识别

大脑能准确识别人脸,是因为大脑里存有人们熟悉的面部轮廓。人脸识别的原理也如此。人脸图像中包含的模式特征十分丰富,人脸识别的过程就是利用从摄像头采集到的静态图像,提取面部特征信息,通过这些有用的信息来进行身份识别。在识别之前先进行人脸检测,从复杂的背景图像中检测并分割出人脸,再从人脸区域的特征提取和特征选择,最后再对人脸特征进行识别,得到一个关于人脸匹配的相似度结果。

4   人脸识别算法(Face recognition algorithm)

人脸识别算法的主要思想是通过摄像头采集一张或者一系列含有未确定身份的人脸图像,比对人脸数据集中的若干已知身份的人脸图像及对应的标签,输出分为识别成功,表明待识别的人脸信息比对成功;不正常输出,显示比对失败。人脸识别的关键在于特征提取的有效性,常用人脸识别算法包括特征脸法、局部二值法等,这些算法更适合于PC机端的人脸识别。

对于设备端的人脸识别,我们采用跨平台机器视觉库OpenCV自带的分类器,即AdaBoost分类器[6]。AdaBoost分类器算法流程图如图2所示。

分类器在这里指的是对人脸和非人脸进行分类的算法。AdaBoost分类器算法思想是通过迭代训练弱分类器得到一个强分类器,这里的弱分类器和强分类器即为弱学习算法和强学习算法。弱学习指的是一个学习算法对一组概念的识别效果比随機识别的识别效果稍微明显一些,强学习即表明一个学习算法对某一组概念的识别率能够达到一个比较高的结果。若将两者做比较,弱学习算法比较容易获得,而强学习算法是不容易获得的。所以AdaBoost算法[8]的思想是首先从训练集用初始权重训练出一个弱学习器1。根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2。如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。目前该算法已经广泛用于人工智能等领域[9]。

5   结论(Conclusion)

人脸识别在如今的社会已经拓展到智能家居、公共安全、智慧城市等领域,但是随着移动终端设备和图片数据的爆炸性增长,传统的基于中心云模式的分析系统已经难以满足实时分析对低时延和高带宽的苛刻要求,因此如何对海量数据进行实时和高效的处理已经成为亟待解决的问题。

基于边缘计算的人脸识别系统将图像的识别处理从云端下移到更接近数据的边缘端,从而降低对数据处理服务器端的依赖、减轻了网络通讯的压力,提高人脸图像处理的速度,保证人脸识别图像的实时性,保障用户数据的安全和隐私。但由于受硬件的限制,需进一步优化算法,提高人脸识别的正确率。

参考文献(References)

[1] 车志宏,焦子路,刘荣.人脸识别技术研究与应用[J].电脑编程技巧与维护,2017(16):78-81.

[2] 薛健,祖央,岑丹.基于云计算的智能人脸识别借阅系统研究[J].吉林大学学报(信息科学版),2019,37(04):450-456.

[3] 傅耀威,孟宪佳.边缘计算技术发展现状与对策[J].科技中国,2019(10):4-7.

[4] Hu Y C, Patel M, Sabella D, et al. Mobile edge computing—A key technology towards 5G[J]. ETSI White Paper, 2015,11(11):1-16.

[5] 马忠梅,马广云.ARM嵌入式处理结构与应用基础[M].北京:北京航空航天大学出版社,2002.

[6] Shaohua Zhou, Volker Krueger, Roma Chellappa. Probabilistic recognition of human faces from video[J]. Computer Vision and Image Understanding, 2003(51):310-314.

[7] 邹思轶.嵌入式Linux设计与应用[M].北京:清华大学出版社,2002.

[8] 李盛文,鲍苏苏.基于PCA+AdaBoost算法的人脸识别技术[J].计算机工程与应用,2010,46(04):170-173.

[9] 梁武.Adaboost算法在人脸识别系统中的应用[J].内蒙古师范大学学报(自然科学汉文版),2017,46(04):576-580.

作者简介:

刘   思(1998-),女,本科生.研究领域:嵌入式开发.

马靖瑜(1999-),女,本科生.研究领域:大数据开发.

袁   倩(1999-),女,本科生.研究领域:大数据开发.

吴粉侠(1976-),女,硕士,副教授.研究领域:图像处理.

猜你喜欢

人脸识别
人脸识别 等
揭开人脸识别的神秘面纱
基于(2D)2PCA-LBP 的人脸识别方法的研究
人脸识别在高校安全防范中的应用
基于类独立核稀疏表示的鲁棒人脸识别
基于K-L变换和平均近邻法的人脸识别