1、wwwele169com|19电子电路设计与方案新冠疫情爆发以来,各地政府充分利用数字化,积极开展大数据分析管理,建立“一码通行”的精确防控机制,为疫情防控贡献了重大力量。在网格化、精细化的疫情防控下,健康码成了出入公共场所必需的电子通行证,但是有时候人们掏出手机打开健康码的时间过长,甚至不配合工作人员的工作,无视配合出示健康码的要求,导致商场、医院、超市等公共设施建筑的门口排队过长,容易形成拥堵影响通行效率,可能增加交叉感染的风险。另一方面,传统的打开手机出示健康码、体温测量等操作难以照顾到所有人员,尤其是儿童和老人等特殊群体,没有手机或者不会操作,因此研究开发简捷方便的通关验证系统具有重要
2、意义和必要性。本文提出了一种基于人脸识别和红外测温的健康码核验闸机设计,以树莓派作为硬件平台,识别算法为核心,用于进出需要健康码核验以及温度测量的公共场所,当核验通过时闸机打开闸门使人通行,并使用了 PyQt5 设计作为GUI 实现,用于显示人脸和健康码的识别结果,可以方便用户实时观察筛查通行人员,有效提高通行效率。1 闸机设计方案本文将人脸识别、健康码核验与红外测温相结合,提出一种基于人脸识别和红外测温的健康码核验闸机设计,旨在完成健康码智能核验、体温测量、语音播报等功能,提高健康码核验的通行效率。该设计以Python作为开发语言,树莓派作为硬件平台。当摄像头检测到人员接近时,使用基于 Op
3、enCV 的 Haar 级联与 Dlib 库进行人脸检测及实时跟踪,并通过 LBPH 算法将检测得到的人脸数据与 SQLite 数据库存放的人脸数据进行对比识别,调用该人脸信息对应的健康码状态,同时红外测温传感器对当前人员进行体温测量;系统将体温测量结果与健康码状态结果返回到 GUI 界面由显示屏显示,若核验结果正常,语音播报识别结果且闸机开放通行。2 闸机硬件设计本闸机的硬件主要包括有五个部分:主控板、检测模块、舵机、显示屏、语言播报模块。主控板与识别模块通过 I2C总线进行数据传输,闸机与语音播报模块通过 GPIO 口与树莓派进行通信,显示屏和树莓派之间使用 HDMI 接口进行视频流的传输
4、。主控板(树莓派4B)闸机(舵机)摄像头显示屏语音播报模块红外测温模块检测模块图 1 闸机硬件组成 2.1 主控板该系统选用树莓派 4B 作为主控板,它是一块基于 ARM Cortex-A72 的微型电脑主板,搭载四核处理器,1.5GHz CPU 和 4GB RAM,使用 SD 卡或者 Micro SD 卡作为硬盘,主板配套有一个网线接口和 4 个 USB 接口,拥有 HDMI 接口和视频模拟信号输出接口,可连接显示器,鼠标、键盘等外设,满足 PC 端的基本功能,可当作 PC 端使用,并且还有 40 个 GPIO 口。适合于本项目使用基于 OpenCV 的LBPH 算法,完成健康码识别、红外测
5、温、闸机开门和语音播报的功能实现。2.2 检测模块检测模块由高清摄像头和 MLX90614 红外测温传感器两部分组成。MLX90614 红外测温传感器采用 I2C 的 SMBUS 协议与树莓派通信,数据通信格式如图 2 所示,通过上拉电阻将传感器上的 SDA,SCL 与树莓派的 SDA.1 和 SCL.1 引脚相连,工作温度范围为-40.00125.00,分辨率为0.02,精度可达 1.00,检测实时性强,满足用于人体温度的基于人脸识别和红外测温的健康码核验闸机设计陈建宇,尧千桂,林权,王楚楚,唐嘉伟,卢新祥(绍兴文理学院 数理信息学院,浙江绍兴,312000)基金项目:浙江省新苗人才计划项目
6、,编号2022R432A003。摘要:在新冠疫情的背景下,全国各地都在使用健康码进行筛查,但多采用人工核验的方式,这种方法不仅核验效率低,对志愿者有暴露风险,而且对于没有智能设备的老人和儿童的核验不方便。针对以上问题,本文提出了一种基于人脸识别和红外测温的健康码核验闸机系统。该系统首先通过Haar级联分类器进行人脸实时跟踪检测,并使用LBPH算法进行人脸识别,通过SQLite数据库进行健康码信息和人脸数据的存储,将人脸信息与健康码进行绑定,可通过人脸识别实现对健康码的核验筛查,并且还搭载着MLX90614红外测温传感器,可对当前人员进行实时的温度测量。实验结果证明该系统对于人脸识别以及温度测量
7、的准确率可达95%,相关性能满足闸机快速核验通行的需求。关键词:人脸识别;健康码核验;红外测温;LBPHDOI:10.16589/11-3571/tn.2023.03.02320|电子制作 2023 年 2 月电子电路设计与方案检测的性能需求。图 2 SMBus 读数据格式(上)和 SMBus 写数据格式(下)图中白色部分代表数据由主器件发送到从器件,阴影部分代表数据由从器件发送到主器件,其中 S 为起始位,SlaveAddress 为从器件地址,Wr 为写标志位,Rd 为读标志位,A为应答位,Command为命令字节,Sr为重复起始位,PEC 为校验数据包,P 为停止位1。高清摄像头用于拍摄
8、并采集人脸图像,可直接通过USB 连接到树莓派,使用 UVC 标准协议,操作方便,规格选用 1080p 像素,成像素质更好,不会产生畸变,用于拍摄人脸图像,可使树莓派进行人脸检测的图像处理效果更好,提高识别算法的准确率。2.3 SG90 舵机SG90 舵机是模拟舵机,它的力矩 1.5kg/cm,工作电压为 4.26V,采用脉冲宽度是 0.52.5ms,周期为 20ms的 PWM 信号作为控制信号,对应的角度为 0180 度,因为它们的对应关系呈线性变化2,因此只需外部输入一个脉宽信号,舵机就会转动到一个对应的角度,舵机的转动角度与输入脉宽的关系如表 1 所示。表1 舵机的转动角度与输入脉宽关系
9、表角度脉冲周期脉宽占空比020ms0.5ms2.5%4520ms1.0ms5.0%9020ms1.5ms7.5%13520ms2.0ms10.0%18020ms2.5ms12.5%舵机内部带有基准电路和比较器,基准电路可产生一个占空比为 7.5%的基准信号与外加信号相比较,判断出舵机转动的大小和方向,产生电机的转动信号。由此树莓派只需要给舵机一个周期为20ms的脉冲信号,改变脉冲的占空比,便可以控制舵机转动的角度,从而达到闸机开门的目的。2.4 显示屏显示屏采用的是一块 7 寸的 ISP 屏,使用 HDMI 接口,用于显示基于 PyQt5 的 GUI 设计界面和健康码识别结果以及体温测量结果。
10、2.5 语音播报模块该模块采用的是树莓派使用百度云的语音合成接口,将需要提示的文本信息进行语音合成,通过音响进行语音播报。3 闸机软件设计为了提高 CPU 资源的利用率,加快系统的运行反应速度,程序采用多线程的设计模式,同时执行 UI 线程和OpenCV 线程。UI 线程用于实现摄像头的拍摄画面,以及将健康码识别结果和体温测量结果显示在拍摄画面上,实现人机交互。OpenCV 线程用于人脸检测和健康码识别算法,当摄像头抓取到人脸后对其进行跟踪识别并从 SQLite 数据库获取识别人脸的健康码信息。在识别过程进行的时候,红外测温传感器同时对人体的温度进行测量,并将测温结果与健康码识别结果一起显示在
11、屏幕上,且结果会通过语音播报模块进行播报;当无人员通过时,系统会进入低功耗待机状态,直到摄像头检测到有人员通行,闸机恢复工作状态。当健康码异常或体温异常时,闸机报警发声,并通过语音播报模块指引相关人员去指定地点接受管控。软件设计流程如图 3 所示。系统开启各模块初始化显示屏和语音播报模块输出结果健康码为绿码体温正常Y闸门打开摄像头采集人脸图像红外测温模块测温人脸数据上传数据库比对N显示屏和语音播报模块输出结果闸门关闭 图 3 系统程序设计流程 3.1 人脸检测算法人脸检测算法需要先进行人脸跟踪,定位人脸信息。采用 Haar 级联分类器,通过筛选式级联把强分类器连接到一起,能够使人脸检测更加精确
12、。Haar 级联算法提供了通过以下三种关键步骤完成的人脸检测:定义 Haar-like 特征、wwwele169com|21电子电路设计与方案利用积分图加速运算、通过AdaBoost训练的强分类器级联。常见的 Haar-like 特征如图 4 所示,黑色代表图像颜色较深的部分,白色代表图像颜色较浅的部分,可通过运算得到反应图像的灰度变换情况。图 4 Haar-like 特征分类为了缓减特征值计算压力,通过构造积分图提高计算速率3。积分图定义如下:()(),kx lyii x yi k l=(1)式中,i(k,l)表示图像在(x,y)位置的像素值。根据 n 个正样本和负样本的图像中的某个固定特征
13、计算出每张图像该特征的特征值后,再使用 Adaboost 分类器得到最优的弱分类器,再通过算法训练出该特征的强分类器,最终将若干个分类器用级联的方式连接在一起,获得 Haar 级联分类器。3.2 人脸识别算法本系统识别算法选用了 LBPH 特征提取算法。将一张图像均匀分割成几块区域,并提取每块区域的直方图,将各区域的直方图依次连接,形成具有LBP特征的统计直方图,用于描述图像的局部特征。首先 LBPH 算法对面部图像进行灰度化处理,然后使用 LBP 算子来处理这些图像,得到相对应的灰度图像的 LBP 值,系统通过 LBP 值可以进行绘制出具有人脸特征信息的 LBP 统计直方图,最后把训练集统计
14、直方图和测试集统计直方图进行比较,若得到的结果和测试的训练样本非常相似,那么该测试的训练样本就是人脸识别的结果。LBPH 算法具有计算量较小,时效性较高的优点,其光照不变性、灰度不变性和旋转不变性能够保证不同条件下的人脸识别的准确率4。3.3 SQLite 数据库SQLite 是一款遵守 ACID 的关系型的轻型数据库。与PostgreSQL 和 Mysql 这两款数据库相比,它的处理速度较快。综合考虑选用 SQLite 数据库作为人脸数据的存储。SQLite 的整体架构可以分成两大部分,内核和后端,核心部分是内核,内核中的 SQL 命令处理还分为三部分,分别是词法分析、解析和代码生成,负责用
15、户对数据库的预处理和高效快速地生成代码供虚拟机使用。后端内是经过优化的 B 树,这样有助于运行在可调整的页面缓冲上时,减少对磁盘的无效查找,再往下是页面缓存,它在 OS 的抽象层之上发挥作用,这样的体系结构使数据库的可移植性提供了一种可能。在进行数据库的建立时,采用了身份证号、姓名、健康码信息等作为数据库存储的对象,当系统对人脸进行预采样会自动生成编号并通过卷积神经网络对采样信息进行训练,除此之外,工作人员还可以根据需求对数据库进行增删改查等操作,对信息的管理更加方便。3.4 GUI 设计对于显示界面的设计,采用基于 PyQT5 的 GUI 界面设计,它拥有几百个类,包含千种函数和方法,主要分
16、为QtCore 模块、QtGui 模块和 QtWidget 模块,分别包含核心的非GUI功能、窗口系统集成、事件处理、基本空间等内容,提供了一整套丰富的窗口控件库,并且 PyQt5 是 Python语言对 Qt 框架的实现,因此在运行调用方面十分方便,可以直接在 Python 中直接声明为 Qt 的子类,避免了繁杂的开发流程,提高了系统的运行效率。在设计过程中,本项目使用了与之配套的软件 Qt Designer,作为一款用于辅助 GUI 设计的工具,它可以大大减轻在设计过程中的工作量,主要设计了摄像头拍摄画面窗口、系统日志窗口、健康码结果窗口和温度测量结果窗口,有了这些窗口,可以使筛查通行人员的工作更加方便快捷。4 系统实验及结果分析通过图 5,对闸机系统进行多次实验,并进行结果分析。4.1 人脸识别结果根据摄像头拍摄采集到的图像数据与数据库中的图像数据对比,系统会给一个满足条件的阈值,当计算值超过系统预设的阈值,证明数据库的人脸图像与检测的人脸图像是一个人,即识别出当前检测人脸的身份和健康码信息。我们随机抽取了100位人员作为样本进行健康码核验,以 20 人为一组,通过多组实验,得到