一种基于STM32的非接触测温及人脸识别系统

作者: 王昭

一种基于STM32的非接触测温及人脸识别系统0

摘要:随着计算机视觉的发展,人脸识别技术已经趋于成熟并普遍应用于各个行业。传统的以人工进行人脸识别会产生误检的问题,且耗时耗力,因此将人工智能、计算机视觉技术以及电子信息技术相融合设计了非接触测温及人脸识别系统。该系统是采用STM32F103C8T6单片机控制非接触测温模块和声光报警模块,采用MaixBit开发板控制图像采集模块和人脸识别模块实现的。最终实验结果验证:该系统运行稳定,具有广泛的应用场景。

关键词:人脸识别;深度学习;STM32C8T6

中图分类号:TP311        文献标识码:A

文章编号:1009-3044(2023)30-0025-03

开放科学(资源服务)标识码(OSID) :

0 引言

随着深度学习技术和计算机视觉的快速发展,人脸识别技术作为深度学习、生物特征识别的一项非常重要的研究内容,已广泛应用到诸如智慧出行、身份识别、公安系统、门禁系统、网络支付等物联网领域的方方面面。每个人的生物特征都具有不同性、易被获取的特点,并且不随时间变化而发生变化。传统的以人工方式进行的身份识别可能会产生一定程度的误检,因此更加凸显了基于人脸识别的身份认证机制的优势。所谓的人脸识别,就是通过存储的已知身份人脸数据,验证给定的静态人脸图像或者动态视频的身份[1]。非接触测温技术是依据热力学温度与黑体辐射能的关系进行测温,测量时不需要接触物体[2]。将人脸识别技术与非接触红外测温技术的结合应用到当下医疗体系、门禁系统、校园等,在一定程度上能够优化工作效率并且提高场景的安全性。基于此原因,文章设计了非接触测温及人脸识别系统。该系统采用STM32开发板控制MLX90614非接触红外测温传感器进行体温测量,采用MaixBit开发板控制ov5642摄像头采集人脸信息,并在TFT屏幕上显示图片及识别结果。

1 总体设计

本系统以STM32单片机控制MLX90614非接触红外测温传感器进行体温测量和声光报警处理,以MaixBit开发板控制ov5642摄像头对图像信息进行采集,通过Tensorflow深度学习训练出的人脸识别模型进行人脸识别,并将测温信息以及人脸识别结果传输在显示屏上。系统整体包含数据采集模块、非接触温度测量模块、人脸识别模块、声光报警模块和显示模块,如图1所示。

声光警报模块由蜂鸣器和LED发光二极组成,通过STM32开发板控制,当测量温度超过给定的阈值范围,蜂鸣器将会发出警报声,同时LED发光二极管也会进行闪烁;温度测量模块由非接触式红外测温传感器MLX90614组成,通过STM32开发板控制该传感器检测人体温度,如果温度超过阈值,将会指令LED灯闪烁以及蜂鸣器报警进行提示;图像采集模块由ov5642摄像头传感器对图像信息进行采集,并将采集的信息传输给人脸识别模块进行识别;人脸识别模块由MaixBit开发板和SD卡组成,其中SD卡中存放提前训练好的人脸识别模型,需要提前将SD卡格式化为FAT32格式;MaixBit开发板将图像采集模块信息和人脸识别结果传输到显示模块,同时将人脸检测结果传输至STM32开发板进行处理;显示模块由TFT液晶显示屏组成,显示测温模块、人脸检测信息结果。

2 系统的硬件设计

本系统的硬件设计如图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发光二极管和蜂鸣器来实现。

以下是本系统选用的主要硬件设备:

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 系统软件总体设计

3.1 系统软件总体设计

本系统的软件设计主要为图像采集模块、无接触温度测量模块、人脸识别模块、声光警报模块、显示模块,如图3为STM32开发板上非接触测温及人脸识别系统的软件设计,图4为MaxiBit开发板上非接触测温及人脸识别系统的软件设计。图像采集模块是基于Python编程语言设计的,由MaxiBit开发板驱动能够实时采集图像信息;图像采集过程中需要对ov5642摄像头进行初始化设置。本系统的显示模块由MaxiBit驱动,同样也基于Python语言实现,使用前对其进行初始化,实时地显示摄像头采集到的图片信息、人脸识别结果和测温值信息。

同时由STM32驱动无接触温度测量模块,需要初始化MLX90614非接触测温传感器模块,初始化串口,配置IIC总线的GPIO,采用模拟I/O的方式,即采用握手应答按字节传输数据,将温度信息传输给STM32;如果采集到的温度超过37℃,LED发光二极管和蜂鸣器将声光报警。声光报警模块需要初始化LED发光二极管、蜂鸣器,温度异常或人脸识别异常时,LED发光二极管闪烁,同时每秒蜂鸣器响一次。

最后本系统的人脸识别模块是基于Python进行设计,通过认为操作按键进行人脸识别,由MaxiBit开发板驱动并调用YOLO2深度学习网络,加载SD卡中提前训练好的模型实现人脸识别。识别过程中人脸信息需裁剪成128[×]128的图片输入给模型,计算出人脸的眼睛、鼻子、嘴巴等信息,将图像的人脸旋转到标准位置,最后用特征提取模型计算出人脸的特征值,将人脸识别结果显示到TFT屏幕上。

3.2 系统人脸识别设计

人脸识别技术有别于人脸检测技术,前者可以通过模型识别出被测人的身份,检测被测人在图片中的位置,并将其框起来。对于深度学习问题分为训练阶段和推理阶段,训练阶段在于生成准确率较高的模型。本系统中使用的模型是在模型训练平台MaixHub通过人脸训练集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驱动声光报警模块。

4 结论

本文介绍了非接触测温及人脸识别系统的设计方案及实现过程。本文中通过使用高性能单片机STM32单片机和MaixBit开发板、TFT屏幕、摄像头、非接触测温传感器等主要器件实现了非接触测温及人脸识别功能。经过实验验证,能够有效地实现人脸识别,整个系统准确率较高,兼容性较强。

参考文献:

[1] 李武军,王崇骏,张炜,等.人脸识别研究综述[J].模式识别与人工智能,2006,19(1):58-66.

[2] 孙华东,李艾华.非接触式红外测温技术在点检系统中的应用[J].新技术新工艺,2007(11):60-62,2.

[3] 杨伟,肖义平.基于STM32F103C8T6单片机的LCD显示系统设计[J].微型机与应用,2014,33(20):29-31,34.

[4] 傅智河,苗军林,范宜标,等.基于STM32F103C8T6多功能健康测试腕表的设计与实现[J].赤峰学院学报(自然科学版),2016,32(18):9-11.

[5] 沙春芳.红外温度计MLX90614及其应用[J].现代电子技术,2007,30(22):36-37,40.

【通联编辑:代影】

上一篇 点击页面呼出菜单 下一篇