基于Linux 的疫情期间宿舍门禁系统的设计与实现

2023-02-23 03:30雷文礼包佳伟张鑫任新成
电子设计工程 2023年4期
关键词:树莓人脸人脸识别

雷文礼,包佳伟,张鑫,任新成

(延安大学陕西省能源大数据智能处理省市共建重点实验室,陕西延安 716000)

随着经济的高速发展,人们的生活水平在不断 提高,高校人口的数量也在不断增长,与此同时,疫情防控情况下,校内治安问题也屡见不鲜。人脸作为每个个体独一无二的生物特征,可以作为安全系统的身份鉴别依据[1-2]。该文基于Linux 和Opencv 库设计了疫情期间宿舍门禁系统,通过采集学生的头像图片,设计检测系统对来往通过的人群进行人脸检测。人脸检测数据匹配成功,则予以通过,若匹配失败,则发出警报提示,通道不予开启,从而保障学生的人身财产安全[3]。

1 系统硬件设计

1.1 树莓派

树莓派(Raspberry Pi)最初是为发展中国家并不富裕家庭的学生提供的替代品,意在让他们以低廉的价格进行计算机编程环境的开发学习[4]。而随着产品的迭代,其功能也越来越强大,现已得到广泛应用,如智能机器人、网络视频监控系统、智能电视机顶盒、游戏机、家庭影院、网络收音机等。对于实验工具来说,可以作为台式电脑的主机,搭建Web 服务器,构建个人网站,与多种外设传感器相连接进行开发等[5]。该文搭载了全新的树莓派4B 作为硬件,其性能相比上一代有了巨大提升。特别在无线通信方面,搭配了2.4 GHz 和5.0 GHz IEEE 802.11ac 的无线网卡以及BLE 千兆以太网,大大提升了传输速度,解决了网上传输数据的问题[6],其硬件参数如表1 所示。

表1 树莓派硬件配置

1.2 摄像头模块

出于成本的考虑,加上树莓派硬件4B的USB接口充足,可以使用UVC免驱的高清USB摄像头[7]来满足系统的需要。系统采用摄像头的部分参数如表2所示。

表2 摄像头部分参数

1.3 存储模块

采用外接SD 卡进行系统、程序和数据的储存。SD 卡具有存储容量大、安全保密性强、功耗低、数据传输速度快、体积小等特点,是系统硬件不可或缺的一部分[8]。

1.4 供电模块

考虑到系统供电的便利性,电源模块采用USBC 接口供电,电压为5 V,电流为2.5 A,输出功率为15 W。为了避免功率不足可能会导致的各种各样的问题,如死机、操作页面忽明忽暗、USB 设备不工作等,因此需使用稳定的电源适配器[9-11]。

2 系统软件设计

该文所用到的软件系统采用基于Linux 系统开发的Raspbian Buster 系统。Raspbian Buster 默认安装了Python 的IDE 开发环境,UI 表现方面也比较简洁,为系统进行后续编程开发提供了便利。

2.1 环境搭建

1)下载Raspbian Buster 系统镜像文件至计算机文件夹内,用Win32Disklmager 软件将系统镜像文件烧录至内存卡,完成系统镜像文件的写入[12]。

2)为了便于进行远程登录操作,还需要设置好系统网络与远程桌面连接。首先,在镜像烧录到内存卡后,在卡中新建一个名为SSH 的空TXT 格式文件,再去掉.TXT 后缀变成一个空文件(SSH 是一种网络协议,用于计算机之间的加密登录,目前已成为Linux 系统的标准配置),这样系统在启动时,便会自动打开SSH 功能;然后,在卡内新建名为wpa_supplicant.conf 的TXT 文件,将要连接的网络热点的名称与密码的特殊协议文档写入此文件内,写入完成后同样去掉.TXT 后缀,如图1 所示,ssid 是热点名称,psk 是热点密码。配置完成后,当系统启动时便可以自动连接文件写入的热点[13-14]。

图1 自动获取无线热点协议

3)将计算机端与硬件接入同一个网络,通过Advanced IP Scanner 获取硬件IP 地址,并在PUTTY上写入,然后登录系统,输入初始名称及密码便能进入终端进行操作了。若要进行远程登录操作,打开VNC 远程桌面软件后输入系统硬件的IP 地址后便可进入图形界面,此时连接的计算机就相当于系统硬件的远程显示屏以及外接的键盘鼠标了。

2.2 算法设计

该文应用程序采用Python 进行开发。人脸的图像在未处理前常常形态各异,在图像中的位置也不尽相同。因此需要事先对图像进行处理,提高人脸识别的准确率[15-16]。

1)首先将要检测的人脸图片灰度化。色彩对于找到人脸位置并无明显作用,灰度化能够有效降低光照、阴影的影响,增大识别准确率,减少工作量;

2)通过图像标准化裁剪进行尺度归一化处理来避免特征提取阶段得到不同的结果,提高准确率。设在X轴方向上的缩放比例为Cx,Y轴方向上的为Cy,则图像的变化矩阵如式(1)所示:

经过以上处理后,图像可能会被放大,同时像素值也会增多。因此可以通过插值的方式来增加像素,使大小不同的人脸图像经过处理后得到统一。将矩形图像上的四个顶点分别设为(x1,y1)、(x1,y2)、(x2,y1)、(x2,y2),则在此图像中,记任意一点为(x,y),其灰度值f(x,y)的计算公式如(2)所示:

3)用方向梯度直方图(HOG)提取人脸信息,它通过计算局部图像特征的梯度并统计其方向梯度直方图来描述图像的特征,是一种非常有效的图像特征描述子,广泛应用于各种识别场景中。提取图像中的特征数据过程如下:首先,计算经过灰度化处理后,图像中各像素的梯度;然后,将图像划分为一个个小的细胞单元,划分完成后统计每个单元的方向梯度直方图来形成特征描述子;最后,通过将这些特征描述子串联起来就可以得到所要进行处理的图像HOG 特征了。

4)将提取的特征数据与数据库中的相匹配,设计阈值,超过此阈值便可认为人脸匹配。系统采用了Dlib 库,它可以找到人脸特征点并定位,之后进行图像的几何变换,将图像中的特征点与模型中的相对齐。再经过dlib_face_recognition_resnet_model_v1.dat 模型处理后得到128 维向量以此来判断是否是同一张人脸。库中的Haar 特征如图2 所示,它是一种黑白矩阵在图像的某一区域中灰度级数之差,有三种类型,运算结果反映了图像某个局部的灰度变化。库中所用到的模型是一个具有29 个转换层的ResNet 网络。ResNet 网络结构如图3 所示。

图2 Haar特征

图3 ResNet网络结构

2.3 系统具体实现过程

完成上述镜像的烧录和系统的设置后,系统初始环境内已经配置好了Python2.7 和Python3.7 环境。该文在Python3.7 版本下安装Opencv4.0.0 版本和常用的图像工具包,并配置CMake 编译环境,同时在系统上安装好需要的face_recognition 库,这样就完成了实现人脸识别过程的所有准备工作了。整个系统的工作流程如图4 所示。

图4 人脸识别过程

2.4 主要代码分析

3 系统测试

该文在完成了系统硬件和软件平台的搭建以及程序的编写后,在实验室环境下进行了测试,测试中选择了四组样本数据。首先,将要进行人脸识别的对象的jpg 格式照片存储进系统内,然后放在系统上运行,系统初始化程序结束后,进入该文设计的人脸识别程序,测试结果如图5 所示,数据测试结果如表3 所示。测试结果显示,该系统可实现对人脸的识别,确认人员身份信息,满足系统设计的门禁人脸识别的要求。

图5 测试结果

表3 数据测试结果

4 结论

该文基于树莓派硬件系统设计了一套人脸识别系统,并提供了详细的实现过程。该系统的识别正确率高,硬件成本低,可操作性高,保障了疫情期间宿舍学生生命财产的安全问题,大大提高了公众场合的安全性,并为后续人脸识别系统的开发和应用提供了一定的参考。

猜你喜欢
树莓人脸人脸识别
人脸识别 等
有特点的人脸
一起学画人脸
揭开人脸识别的神秘面纱
人脸识别技术的基本原理与应用
基于树莓派的骑行智能头盔设计
三国漫——人脸解锁
基于树莓派的远程家居控制系统的设计
人脸识别在高校安全防范中的应用
响应面法优化红树莓酒发酵工艺