王 钦,彭文竹
(集美大学 诚毅学院,福建 厦门 361021)
在“新工科”背景下,加强实验室的开放建设逐渐成为实验教学改革的重要方向.但基于实验室安全及管理要求,目前各个高校实验室大多数只针对学生上课时段进行使用,其他时段的使用则一般需通过申报,这就造成了实验室一定程度的闲置及实验设备利用率低的问题[1].为了平衡实验室对有需求师生的开放及实验室安全管理问题,设计一款实验室门禁智能管理系统就变得非常必要.
传统的“一卡通”刷卡式实验室门禁系统和指纹识别实验室门禁系统都需要一定的时间,而且容易被人代替,防伪性能有待提高[2].人脸识别技术在生产生活的各个方面已经在逐步普及使用中.在各大高校的实验室门禁中加入人脸识别系统,实验室管理人员在预约系统提供实验室开放时间,师生可根据自身的时间安排预约进入实验室的时间,实验室管理人员对申请使用这些实验室的人员进行权限设置,通过摄像头采集进入实验室的人脸图像,与学校数据库的信息进行比对,识别成功后,实验室门开启,既保证了实验室最大程度的开放给师生使用,又可以避免无关的人员入内.系统可以同时实现人员身份的认证及出入时间等信息的记录,实现了高校实验室的智能化及开放式管理.
本系统是基于嵌入式系统和OpenCV 库函数实现的,主要由主控模块、拍照模块、人体感应模块、门锁控制模块、电源模块等组成,如图1 所示.本系统的工作流程:将人脸识别设备安装在实验室门口一侧,并将预约实验室人员的人脸提前导入到系统中,当人站在设备门口时,红外感应器感应到有人,摄像头采集人脸图像传递给主控制器,对人脸图像进行定位,检测和识别,对符合数据库中的人脸图像通过树莓派4B的GPIO 引脚控制继电器打开电磁锁,并记录相关信息,否则显示禁入标志,多次尝试进入,则门禁系统发出报警声音.
图1 系统的结构框图
各主要模块的选择和设计情况如下:
主控模块本系统的主控模块选择树莓派4B,它是一款基于ARM 的微型电脑主板,具有所有PC 的基本功能,具有40 个GPIO 口,每个针脚都可以用导线和外部设备相连,体积小,成本低便于实践操作.
摄像头模块系统选择与树莓派兼容的免驱动USB 高清摄像头,它是一款可调焦摄像头,分辨率为640×480,尺寸为:25 mm×30 mm×22 mm.
红外感应模块红外感应模块选择HC-SR501,实验室门口有人出现时,启动摄像头采集人脸图像.它的工作电压为5 V 至20 V,输出电平范围为0~3.3 V,电路图如图2 所示.
图2 红外感应模块
继电器模块系统通过控制树莓派GPIO 驱动继电器来控制实验室门禁的电磁锁.
系统通过摄像头获取人脸图像,通过调用函数cv.VideoCapture(0)采集,读出每帧图像,然后采用静态图像中的人脸检测方法检测人脸.
门禁系统采集的视频图像易受到光照,距离等外部环境影响,容易导致图像失真,因此需要对采集的人脸图像进行预处理.为了加快人脸图像的处理速度,先将人脸图片裁剪成统一大小,通过OpenCV 库函数cv.cvtColor()将人脸图像转换成灰度图像,转换的公式如下:
得到灰度图像后,使用cv.equalizeHist()函数对图像进行直方图均衡化处理以减小光照对图像的影响,同时使用cv.medianBlur()函数对人脸图像进行中值滤波操作,既实现了对图像噪声点进行过滤,又保持了图像的边缘特性.
人脸检测的目的是从摄像头获取的信息中准确快速的找到人脸,系统采用的人脸检测的方法是提取库中人脸的Haar-like 特征,使用积分图方法加速对Haar-like 特征求值,使用AdaBoost 算法实现人脸区域的检测.本文采用OpenCV 中cv.CascadeClassifier()函数加载人脸检测模型,通过调用自带的haarcascad e_frontalface_default.xml 分类器和cv.detectMultiScale()函数获取人脸区域,具有人脸特征的区域将通过矩形框返回.
使用Haar-like 特征做检测Haar-like 特征模板的常见类型如图3 所示[3].以F表示特征值,S表示像素和,则特征值F的计算方法是特征模板在人脸图像中滑动,用白色矩形的像素和S(白)减去黑色矩形像素和S(黑).
图3 四个基本特征结构
图像积分图由于人脸图像的每一个特征值的计算量大,通过引入积分图的方式提升特征值计算效率,提高训练及检测时的精度和速度[4].积分图可以通过公式表示:
式中f(k,l) 表示原始图,ii(x,y)表示积分图.通过遍历一次图像,即可求得所有子窗口的特征值.图4 中,区域A的像素通过下式计算得到:
图4 图像积分图
AdaBoost 算法AdaBoost 是一种由弱学习联合形成强学习的迭代算法,使用训练样本提取的矩形特征作为一个弱分类器,将弱分类器训练成强分类器[5],并将多个强分类组器合成级联分类器对人脸进行检测,人脸检测过程如图5 所示.具体步骤如下:
图5 人脸检测结构
(1)初始化训练数据的权值分布D1(i).假设我们有N个样本的训练集:
每个训练样本都被赋予相同的权值wi:1/N.
(2)进行m次迭代,使用具有权值Dm的训练集学习,得到弱分类器Dm(x):
(3)计算Dm(x)训练数据集上的分类误差率误差em.
(4)计算Dm(x)的权重系数
(5)更新数据集的权重分布,继续步骤(2),得到m个弱分类器.
(6)组合m个弱分类器:
所有的弱分类器与其权重通过sign 函数转换得到最终的分类器:
OpenCV 有三种人脸识别方法,分别是特征脸Eigenfaces 算法、Fisherfaces 算法和LBPH 方法.Eigenfaces 是基于PCA 处理的,PCA 主成分分析方法是一种使用最广泛的数据降维算法,人脸图像经过PCA 变换之后,可以保留任意数量的对图像特征贡献较大的维数分量,提取人脸分布的主要成分[6].PCA 的人脸识别过程本质是将库中的人脸图像和待测试图像都投影到特征向量空间,通过计算测试图像投影特征系数和已有图片的投影特征系数的欧式距离得到识别结果.系统通过OpenCV 库中的cv.face.createEigenFaceRecognizer()创建人脸识别的模型.具体过程如图6 所示,分为以下几个步骤:
图6 人脸图像识别和训练过程
(1)数据预处理:均值归一化.对于一幅w×h的图将其列排起来形成一个列向量xi.假设人脸训练集中有K幅图像,则这K个列向量就形成一个(w×h)×K维的矩阵x.
(2)计算平均脸u,
u=,计算差值脸di=xi-u,i=1,2,…,K,构建协方差矩阵:
(3)求出协方差矩阵的特征值λi和特征向量Vi,构建特征脸空间w.
其中,A=[(x1-u),(x2-u),…,(xi-u)]
(4)将每一幅人脸图像去“平均化”,并在“特征脸”空间中做投影,表示为:
人脸识别的步骤如下:
(1)将测试的人脸图像Γ 进行去“平均化”并在“特征脸”空间投影,特征向量为:
(2)定义阈值:
(3)利用欧式距离度量相似度:
(4)进行判断,若dist>T,则该对象与数据库中的已知人脸图像相符合,为准入人员,否则若dist>T时,说明输入图像与数据库中的已有人脸不匹配,不允许入内.
论文对基于嵌入式的高校实验室人脸识别算法进行了分析,完成了智能门禁系统的设计.为了提高人脸识别的适用性,在系统测试中,分别测试了样本数为30 人、50 人和100 人在正常光和较暗光情况下人脸检出率,漏检率和误检率.经过测试,该门禁系统有较高的人脸识别成功率,人脸识别过程所需的平均时间低于1 s,用户的识别率可达到95%,如表1.系统稳定可靠,可以实现实验室开放功能.论文设计的系统硬件配置简单,成本消耗低,在其他领域智能门禁的应用中有着很好的应用前景.
表1 人脸识别算法测试结果
人脸识别与其他的识别技术相比优势明显,已广泛应用于各类智能控制系统中.嵌入式人脸识别技术在高校实验室门禁系统中的应用,主要体现在实时性、便捷性和可靠性方面,它为实验室的开放管理提供了硬件保证.通过实际测试,系统具有普遍适用性,能够应用于多数高校实验室门禁系统中,具有较好的应用价值.