基于人脸识别的防盗系统设计与实现
2018-10-13史昊陈本彬陈鑫强
史昊,陈本彬,陈鑫强
基于人脸识别的防盗系统设计与实现
史昊,陈本彬,陈鑫强
(厦门理工学院电气工程与自动化学院,福建 厦门 361000)
基于人脸识别的防盗系统以树莓派3代B型开发板为核心,运用Python语言编程调用OpenCV开源计算机视觉库,分别采用Haar分类器和Eigenfaces算法实现了人脸检测和人脸识别的功能,结合树莓派摄像头、HC-SR501人体感应模块、SG90 9 g舵机模块和蜂鸣器模块,实现对已注册人脸的开锁功能和对未注册人脸的报警功能。
人脸识别;树莓派;OpenCV;Haar分类器
过去几年,以人脸识别和语音识别为代表的人工智能技术已展现出了改变世界的力量。人脸识别主要分为人脸检测和人脸识别两个过程。人脸检测是对于输入的图像数据,使用相应的算法判别图像中是否存在人脸,并检测人脸的大小和位置等信息;人脸识别是通过计算机对人脸图像进行检测、特征提取,并根据这些特征对个体进行验证和确认的一种技术[1]。人脸识别技术是一个极具应用价值的研究领域,它涉及计算机视觉、人工智能、机器学习、模式识别等技术,并且被广泛应用于公安刑侦、门禁系统、支付系统等与国计民生密切相关的领域。
1 原理介绍
1.1 人脸检测原理
OpenCV中用于人脸检测的分类器有Haar分类器和LBP分类器两种。因为Haar分类器相较于LBP分类器的检测准确率高且假阳性率低,所以本文采用了Haar分类器。该分类器采用了AdaBoost算法[2],将多个强分类器连接在一起形成级联分类器。用级联分类器检测样本是否为正例(面部区域),如果是正例则送到下一个强分类器继续检测,如果是负例(非人脸区域)则立即抛弃,这样可以大大加快检测人脸图像的速度[3]。AdaBoost算法如图1所示。
图1 AdaBoost算法
1.2 人脸识别原理
OpenCV中最常用的人脸识别算法是特征脸法Eigenfaces[4],Eigenfaces分为4步:①将所有人的训练图像视为一个整体,提取其中相关和有用的特征,并丢弃其余的特征,这些重要的特征被称为主成分;②将这些特征与训练过程中存储的元素列表进行比较;③找到最匹配的特征;④返回与该最匹配特征关联的人员编号。特征脸主成分如图2所示。
2 系统设计
2.1 硬件设计
硬件方案包含树莓派3代B型开发板、树莓派500万像素摄像头、HC-SR501人体感应模块、SG90 9 g舵机模块、蜂鸣器模块和LED灯。其中树莓派开发板用于数据的处理及硬件的控制,HC-SR501人体感应模块用于人体信号的采集,当检测到有人时则打开摄像头,树莓派摄像头用于人脸图像的采集,SG90 9 g舵机模块用于门锁的开闭,蜂鸣器模块和LED灯用于系统的报警。系统框架如图3所示。
图2 特征脸主成分
图3 系统框架图
2.2 软件设计
OpenCV(Open Source Computer Vision Library)是一个开源跨平台的计算机视觉和机器学习软件库,它包含了实时图像处理和计算机视觉等方面的算法。本软件部分设计将Python2.7作为编程语言,通过调用OpenCV3.3.0中的人脸识别算法来实现基于人脸识别的防盗功能。
本程序主要分为人脸注册与人脸识别两部分。人脸注册部分,首先采集用户的人脸图像,然后将经过预处理和归一化后的人脸图像训练成一个train.yml识别器。人脸识别部分,首先调用已经训练好的识别器,将新人脸与已经注册的人脸进行比对,从而返回置信度(confidence)和用户名称等信息,如果置信度高于设定值,则控制舵机开锁,如果置信度低于设定值,则控制蜂鸣器和LED灯报警。主程序流程如图4所示。
图4 主程序流程图
3 系统测试
在实际场景中对本系统进行测试。Haar分类器采用haarcascade_frontalface_alt2.xml,人脸检测参数设定如下:每个图像缩减的比例大小scaleFactor=1.2,每个备选矩形框具备的邻近数量minNeighbors=5,人脸检测的最小矩形大小minSize=(20,20),人脸识别采用EigenFaceRecognizer_create()函数,每个用户的人脸样本数量为30个。
人脸识别测试如图5所示,本设计可以在较复杂的背景环境下检测出图像中的人脸,辨识出预存的用户姓名,且达到65.0%的较高置信度。当人脸识别返回的置信度高于50%时,树莓派自动控制舵机旋转,打开门锁;当返回的置信度低于50%时,蜂鸣器发出警报且LED灯闪烁。树莓派控制舵机反应情况如图6所示。
图5 人脸识别测试图
图6 树莓派控制舵机
4 结语
本文设计与实现了基于人脸识别的防盗系统,该系统能够自动使用树莓派以及OpenCV进行人脸识别,并根据识别结果进行开锁与报警功能,从而提高安防效率。本设计体积小、成本低、识别率较高,具有很大的实用价值。
[1]梁文莉.基于独立主成分分析的人脸识别算法研究[D].西安:西安科技大学,2012.
[2]马博宇,尉寅玮.基于AdaBoost算法的人脸识别系统的研究与实现[J].仪器仪表学报,2016(Suppl 1):162-167.
[3]宋西来.基于OpenCV的人脸识别系统研究[D]. 天津:天津科技大学,2017.
[4]Turk M A,Pentland A P.Face recognition using eigenfaces[J].IEEE,1991,3(1):586-591.
〔编辑:严丽琴〕
2095-6835(2018)19-0123-02
TP23
A
10.15913/j.cnki.kjycx.2018.19.123