王 昭
(山西职业技术学院,山西 太原 030000)
随着深度学习技术和计算机视觉的快速发展,人脸识别技术作为深度学习、生物特征识别的一项非常重要的研究内容,已广泛应用到诸如智慧出行、身份识别、公安系统、门禁系统、网络支付等物联网领域的方方面面。每个人的生物特征都具有不同性、易被获取的特点,并且不随时间变化而发生变化。传统的以人工方式进行的身份识别可能会产生一定程度的误检,因此更加凸显了基于人脸识别的身份认证机制的优势。所谓的人脸识别,就是通过存储的已知身份人脸数据,验证给定的静态人脸图像或者动态视频的身份[1]。非接触测温技术是依据热力学温度与黑体辐射能的关系进行测温,测量时不需要接触物体[2]。将人脸识别技术与非接触红外测温技术的结合应用到当下医疗体系、门禁系统、校园等,在一定程度上能够优化工作效率并且提高场景的安全性。基于此原因,文章设计了非接触测温及人脸识别系统。该系统采用STM32开发板控制MLX90614非接触红外测温传感器进行体温测量,采用MaixBit 开发板控制ov5642 摄像头采集人脸信息,并在TFT 屏幕上显示图片及识别结果。
本系统以STM32 单片机控制MLX90614 非接触红外测温传感器进行体温测量和声光报警处理,以MaixBit 开发板控制ov5642摄像头对图像信息进行采集,通过Tensorflow 深度学习训练出的人脸识别模型进行人脸识别,并将测温信息以及人脸识别结果传输在显示屏上。系统整体包含数据采集模块、非接触温度测量模块、人脸识别模块、声光报警模块和显示模块,如图1所示。
图1 非接触测温及人脸识别系统总体设计
声光警报模块由蜂鸣器和LED发光二极组成,通过STM32开发板控制,当测量温度超过给定的阈值范围,蜂鸣器将会发出警报声,同时LED 发光二极管也会进行闪烁;温度测量模块由非接触式红外测温传感器MLX90614 组成,通过STM32 开发板控制该传感器检测人体温度,如果温度超过阈值,将会指令LED 灯闪烁以及蜂鸣器报警进行提示;图像采集模块由ov5642摄像头传感器对图像信息进行采集,并将采集的信息传输给人脸识别模块进行识别;人脸识别模块由MaixBit开发板和SD卡组成,其中SD卡中存放提前训练好的人脸识别模型,需要提前将SD 卡格式化为FAT32格式;MaixBit开发板将图像采集模块信息和人脸识别结果传输到显示模块,同时将人脸检测结果传输至STM32开发板进行处理;显示模块由TFT液晶显示屏组成,显示测温模块、人脸检测信息结果。
本系统的硬件设计如图2 所示,首先采用USB 给系统供给稳压电源5V,系统经内部电路转换成3.3V稳压电源,为STM32和MaixBit开发板提供电源。MaixBit开发板通过SCCB(网络串行摄像头控制总线)配置摄像头寄存器,通过摄像头ov5642 的DVP 接口(Digital Video Port,数字视频接口)与MaixBit开发版进行通信,将图像采集信息传输到MaixBit开发板。将图像信息、人脸识别结果以及温度信息实时显示在TFT屏幕上。TFT 屏幕上的温度信息通过非接触测温传感器MLX90614实时进行采集,由STM32单片机通过I2C总线采用模拟IO的方式进行驱动通信,最后将被测人温度信息通过usart2 串口发送给MaixBit 开发版的UART1串口,进而通过MaixBit开发版将温度信息实时显示在TFT屏幕上。本系统的声光报警模块由STM32通过三极管驱动LED发光二极管和蜂鸣器来实现。
图2 非接触测温及人脸识别系统硬件设计
以下是本系统选用的主要硬件设备:
1) STM32F103C8T6 核心板是基于ARM Cortex M3 32 位的RISC 内核架构,供电范围为2.0V~3.6V,提供的CPU 工作频率高达72MHZ,内置64KB 的FLASH 与20KB 的SRAM 存储器,包含单周期乘法指令和硬件除法以及优先级可编程的中断系统[3]。集成了丰富的片内外设,如看门狗、定时器、GPIO口、DMA控制器、ADC、UART、SPI接口、I2C接口等[4]。
2) ov5642摄像头在图像处理中应用广泛,具有像素支持500w,镜头类型为1/4inch,采用2.8V~3.3V 的模拟电路电压和1.7V~2.8V的接口电路电压,焦距大小为1.80±5%mm,畸变小于1%等特性。ov5642 摄像头可支持RGB、JPEG 等格式图像数据输出,使用I2C方式进行数据通信。
3) MaixBit 开发板以K210 作为核心单元具有RISC-V双核64bit,内置神经网络处理器的CPU,具有DVP、JTAG、GPIO、UART 等丰富的外设单元,支持常规的MCU 操作、麦克风阵列算法以及AI 硬件加速。此外,它还包含可以进行卷积神经网络运算的神经网络加速器KPU,算力高达1TOPS,且支持主流Tensorflow等深度学习训练框架计算出的模型。
4) MLX90614非接触测温传感器是一组通用的红外测温模块,具有非接触、体积小、精度高,成本低等优点。该器件具有两种温度输出模式:数字PWM 输出及SMBus接口输出,温度测量范围为-40~+125℃,温度分辨率为0.02℃,在温度范围为+32~+42℃时,测量的绝对精度为±0.2摄氏度,因此非常适用于对人体温度进行初步测量[5]。
5) TFT显示屏由TFT-LCD面板、驱动器组成电路背光单元,面板尺寸为2.4英寸,分辨率为240×320,支持5V或者3.3V供电,采用SPI协议进行通信。通过代码编程可以实现多种显示界面应用。
本系统的软件设计主要为图像采集模块、无接触温度测量模块、人脸识别模块、声光警报模块、显示模块,如图3为STM32开发板上非接触测温及人脸识别系统的软件设计,图4为MaxiBit开发板上非接触测温及人脸识别系统的软件设计。图像采集模块是基于Python编程语言设计的,由MaxiBit开发板驱动能够实时采集图像信息;图像采集过程中需要对ov5642摄像头进行初始化设置。本系统的显示模块由MaxiBit 驱动,同样也基于Python 语言实现,使用前对其进行初始化,实时地显示摄像头采集到的图片信息、人脸识别结果和测温值信息。
图3 STM32开发板上非接触测温及人脸识别系统的软件设计
图4 MaxiBit开发板上非接触测温及人脸识别系统的软件设计
同时由STM32驱动无接触温度测量模块,需要初始化MLX90614非接触测温传感器模块,初始化串口,配置IIC总线的GPIO,采用模拟I/O的方式,即采用握手应答按字节传输数据,将温度信息传输给STM32;如果采集到的温度超过37℃,LED发光二极管和蜂鸣器将声光报警。声光报警模块需要初始化LED 发光二极管、蜂鸣器,温度异常或人脸识别异常时,LED发光二极管闪烁,同时每秒蜂鸣器响一次。
最后本系统的人脸识别模块是基于Python 进行设计,通过认为操作按键进行人脸识别,由MaxiBit 开发板驱动并调用YOLO2 深度学习网络,加载SD 卡中提前训练好的模型实现人脸识别。识别过程中人脸信息需裁剪成128×128 的图片输入给模型,计算出人脸的眼睛、鼻子、嘴巴等信息,将图像的人脸旋转到标准位置,最后用特征提取模型计算出人脸的特征值,将人脸识别结果显示到TFT屏幕上。
人脸识别技术有别于人脸检测技术,前者可以通过模型识别出被测人的身份,检测被测人在图片中的位置,并将其框起来。对于深度学习问题分为训练阶段和推理阶段,训练阶段在于生成准确率较高的模型。本系统中使用的模型是在模型训练平台Maix-Hub 通过人脸训练集FaceRecognization,基于Tensorflow深度学习框架自学习人脸特征训练出来的能够识别多个人脸,输出人脸框和5 个关键点的模型,包含FaceDetection.kmodel 人脸检测模型,用于识别并框出人脸;FaceLandmarkDetection.kmodel 人脸关键点检测模型,用于在人脸检测出的结果中识别人的眼睛、鼻子和嘴巴等位置;FeatureExtraction.kmodel 人脸特征提取模型,用于从人脸图片中计算出一个特征值。由于固件占用了大部分内存,需要选择SD 卡来存储模型。这三个文件均为kmodel格式文件,除此以外需要将模型启动文件boot.py也存储在SD卡中。
人脸识别模型的推理阶段也就是本系统人脸识别模型的应用阶段。识别推理过程中首先将图片的大小设置为128×128,并转换为KPU 所接受的格式,KPU 指的是K210 自带的AI 硬件加速单元,可以对卷积计算、批量归一化、激活和池化基本操作进行加速,是一系列整体的加速模块。然后使用KPU和K210自带的卷积神经网络YOLO2加载人脸检测模型。Yolo2深度学习模型能够有效地解决实时目标检测,具有较高的检测准确率,是一个端到端完整的统一的单阶段模型。通常情况下,YOLO2网络模型是基于卷积神经网络,采用了Darknet-19 特征提取器,共有卷积层19个和最大池化层5 个,主要采用3×3 大小卷积核,2×2大小的最大池化层,有效降低特征图维度的同时增大特征图通道数。YOLO2的输出层是一个三维结构,最终使用boundingbox 边界框框出检测到的物体,使用YOLO2作为神经网络模型,极大地提高了人脸识别的效率和准确率。人脸检测过程中同时需要加载锚点anchor 值,共5 组10 个参数,每组分别为2 个参数,锚点参数因训练得到的模型的不同而不同,具体参数是由训练阶段计算出的一组经验值。通过人脸检测模型检测人脸图片,传递给人脸关键点检测模型,计算出人脸的左右眼、左右嘴角、鼻子所在位置,并经检测后的图片进行仿射变换转换为KPU 格式。将人脸关键点检测结果传递给人脸特征提取模型,并计算出人脸图片的196维特征值。最后通过计算当前人脸特征值与已存特征值的分数是否大于设定的阈值来检验被测人身份,如果身份核实不同将通过STM32驱动声光报警模块。
本文介绍了非接触测温及人脸识别系统的设计方案及实现过程。本文中通过使用高性能单片机STM32单片机和MaixBit开发板、TFT屏幕、摄像头、非接触测温传感器等主要器件实现了非接触测温及人脸识别功能。经过实验验证,能够有效地实现人脸识别,整个系统准确率较高,兼容性较强。