王 昭
(山西職業(yè)技術(shù)學院,山西 太原 030000)
隨著深度學習技術(shù)和計算機視覺的快速發(fā)展,人臉識別技術(shù)作為深度學習、生物特征識別的一項非常重要的研究內(nèi)容,已廣泛應用到諸如智慧出行、身份識別、公安系統(tǒng)、門禁系統(tǒng)、網(wǎng)絡支付等物聯(lián)網(wǎng)領(lǐng)域的方方面面。每個人的生物特征都具有不同性、易被獲取的特點,并且不隨時間變化而發(fā)生變化。傳統(tǒng)的以人工方式進行的身份識別可能會產(chǎn)生一定程度的誤檢,因此更加凸顯了基于人臉識別的身份認證機制的優(yōu)勢。所謂的人臉識別,就是通過存儲的已知身份人臉數(shù)據(jù),驗證給定的靜態(tài)人臉圖像或者動態(tài)視頻的身份[1]。非接觸測溫技術(shù)是依據(jù)熱力學溫度與黑體輻射能的關(guān)系進行測溫,測量時不需要接觸物體[2]。將人臉識別技術(shù)與非接觸紅外測溫技術(shù)的結(jié)合應用到當下醫(yī)療體系、門禁系統(tǒng)、校園等,在一定程度上能夠優(yōu)化工作效率并且提高場景的安全性?;诖嗽?,文章設(shè)計了非接觸測溫及人臉識別系統(tǒng)。該系統(tǒng)采用STM32開發(fā)板控制MLX90614非接觸紅外測溫傳感器進行體溫測量,采用MaixBit 開發(fā)板控制ov5642 攝像頭采集人臉信息,并在TFT 屏幕上顯示圖片及識別結(jié)果。
本系統(tǒng)以STM32 單片機控制MLX90614 非接觸紅外測溫傳感器進行體溫測量和聲光報警處理,以MaixBit 開發(fā)板控制ov5642攝像頭對圖像信息進行采集,通過Tensorflow 深度學習訓練出的人臉識別模型進行人臉識別,并將測溫信息以及人臉識別結(jié)果傳輸在顯示屏上。系統(tǒng)整體包含數(shù)據(jù)采集模塊、非接觸溫度測量模塊、人臉識別模塊、聲光報警模塊和顯示模塊,如圖1所示。
圖1 非接觸測溫及人臉識別系統(tǒng)總體設(shè)計
聲光警報模塊由蜂鳴器和LED發(fā)光二極組成,通過STM32開發(fā)板控制,當測量溫度超過給定的閾值范圍,蜂鳴器將會發(fā)出警報聲,同時LED 發(fā)光二極管也會進行閃爍;溫度測量模塊由非接觸式紅外測溫傳感器MLX90614 組成,通過STM32 開發(fā)板控制該傳感器檢測人體溫度,如果溫度超過閾值,將會指令LED 燈閃爍以及蜂鳴器報警進行提示;圖像采集模塊由ov5642攝像頭傳感器對圖像信息進行采集,并將采集的信息傳輸給人臉識別模塊進行識別;人臉識別模塊由MaixBit開發(fā)板和SD卡組成,其中SD卡中存放提前訓練好的人臉識別模型,需要提前將SD 卡格式化為FAT32格式;MaixBit開發(fā)板將圖像采集模塊信息和人臉識別結(jié)果傳輸?shù)斤@示模塊,同時將人臉檢測結(jié)果傳輸至STM32開發(fā)板進行處理;顯示模塊由TFT液晶顯示屏組成,顯示測溫模塊、人臉檢測信息結(jié)果。
本系統(tǒng)的硬件設(shè)計如圖2 所示,首先采用USB 給系統(tǒng)供給穩(wěn)壓電源5V,系統(tǒng)經(jīng)內(nèi)部電路轉(zhuǎn)換成3.3V穩(wěn)壓電源,為STM32和MaixBit開發(fā)板提供電源。MaixBit開發(fā)板通過SCCB(網(wǎng)絡串行攝像頭控制總線)配置攝像頭寄存器,通過攝像頭ov5642 的DVP 接口(Digital Video Port,數(shù)字視頻接口)與MaixBit開發(fā)版進行通信,將圖像采集信息傳輸?shù)組aixBit開發(fā)板。將圖像信息、人臉識別結(jié)果以及溫度信息實時顯示在TFT屏幕上。TFT 屏幕上的溫度信息通過非接觸測溫傳感器MLX90614實時進行采集,由STM32單片機通過I2C總線采用模擬IO的方式進行驅(qū)動通信,最后將被測人溫度信息通過usart2 串口發(fā)送給MaixBit 開發(fā)版的UART1串口,進而通過MaixBit開發(fā)版將溫度信息實時顯示在TFT屏幕上。本系統(tǒng)的聲光報警模塊由STM32通過三極管驅(qū)動LED發(fā)光二極管和蜂鳴器來實現(xiàn)。
圖2 非接觸測溫及人臉識別系統(tǒng)硬件設(shè)計
以下是本系統(tǒng)選用的主要硬件設(shè)備:
1) STM32F103C8T6 核心板是基于ARM Cortex M3 32 位的RISC 內(nèi)核架構(gòu),供電范圍為2.0V~3.6V,提供的CPU 工作頻率高達72MHZ,內(nèi)置64KB 的FLASH 與20KB 的SRAM 存儲器,包含單周期乘法指令和硬件除法以及優(yōu)先級可編程的中斷系統(tǒng)[3]。集成了豐富的片內(nèi)外設(shè),如看門狗、定時器、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 等格式圖像數(shù)據(jù)輸出,使用I2C方式進行數(shù)據(jù)通信。
3) MaixBit 開發(fā)板以K210 作為核心單元具有RISC-V雙核64bit,內(nèi)置神經(jīng)網(wǎng)絡處理器的CPU,具有DVP、JTAG、GPIO、UART 等豐富的外設(shè)單元,支持常規(guī)的MCU 操作、麥克風陣列算法以及AI 硬件加速。此外,它還包含可以進行卷積神經(jīng)網(wǎng)絡運算的神經(jīng)網(wǎng)絡加速器KPU,算力高達1TOPS,且支持主流Tensorflow等深度學習訓練框架計算出的模型。
4) MLX90614非接觸測溫傳感器是一組通用的紅外測溫模塊,具有非接觸、體積小、精度高,成本低等優(yōu)點。該器件具有兩種溫度輸出模式:數(shù)字PWM 輸出及SMBus接口輸出,溫度測量范圍為-40~+125℃,溫度分辨率為0.02℃,在溫度范圍為+32~+42℃時,測量的絕對精度為±0.2攝氏度,因此非常適用于對人體溫度進行初步測量[5]。
5) TFT顯示屏由TFT-LCD面板、驅(qū)動器組成電路背光單元,面板尺寸為2.4英寸,分辨率為240×320,支持5V或者3.3V供電,采用SPI協(xié)議進行通信。通過代碼編程可以實現(xiàn)多種顯示界面應用。
本系統(tǒng)的軟件設(shè)計主要為圖像采集模塊、無接觸溫度測量模塊、人臉識別模塊、聲光警報模塊、顯示模塊,如圖3為STM32開發(fā)板上非接觸測溫及人臉識別系統(tǒng)的軟件設(shè)計,圖4為MaxiBit開發(fā)板上非接觸測溫及人臉識別系統(tǒng)的軟件設(shè)計。圖像采集模塊是基于Python編程語言設(shè)計的,由MaxiBit開發(fā)板驅(qū)動能夠?qū)崟r采集圖像信息;圖像采集過程中需要對ov5642攝像頭進行初始化設(shè)置。本系統(tǒng)的顯示模塊由MaxiBit 驅(qū)動,同樣也基于Python 語言實現(xiàn),使用前對其進行初始化,實時地顯示攝像頭采集到的圖片信息、人臉識別結(jié)果和測溫值信息。
圖3 STM32開發(fā)板上非接觸測溫及人臉識別系統(tǒng)的軟件設(shè)計
圖4 MaxiBit開發(fā)板上非接觸測溫及人臉識別系統(tǒng)的軟件設(shè)計
同時由STM32驅(qū)動無接觸溫度測量模塊,需要初始化MLX90614非接觸測溫傳感器模塊,初始化串口,配置IIC總線的GPIO,采用模擬I/O的方式,即采用握手應答按字節(jié)傳輸數(shù)據(jù),將溫度信息傳輸給STM32;如果采集到的溫度超過37℃,LED發(fā)光二極管和蜂鳴器將聲光報警。聲光報警模塊需要初始化LED 發(fā)光二極管、蜂鳴器,溫度異?;蛉四樧R別異常時,LED發(fā)光二極管閃爍,同時每秒蜂鳴器響一次。
最后本系統(tǒng)的人臉識別模塊是基于Python 進行設(shè)計,通過認為操作按鍵進行人臉識別,由MaxiBit 開發(fā)板驅(qū)動并調(diào)用YOLO2 深度學習網(wǎng)絡,加載SD 卡中提前訓練好的模型實現(xiàn)人臉識別。識別過程中人臉信息需裁剪成128×128 的圖片輸入給模型,計算出人臉的眼睛、鼻子、嘴巴等信息,將圖像的人臉旋轉(zhuǎn)到標準位置,最后用特征提取模型計算出人臉的特征值,將人臉識別結(jié)果顯示到TFT屏幕上。
人臉識別技術(shù)有別于人臉檢測技術(shù),前者可以通過模型識別出被測人的身份,檢測被測人在圖片中的位置,并將其框起來。對于深度學習問題分為訓練階段和推理階段,訓練階段在于生成準確率較高的模型。本系統(tǒng)中使用的模型是在模型訓練平臺Maix-Hub 通過人臉訓練集FaceRecognization,基于Tensorflow深度學習框架自學習人臉特征訓練出來的能夠識別多個人臉,輸出人臉框和5 個關(guān)鍵點的模型,包含F(xiàn)aceDetection.kmodel 人臉檢測模型,用于識別并框出人臉;FaceLandmarkDetection.kmodel 人臉關(guān)鍵點檢測模型,用于在人臉檢測出的結(jié)果中識別人的眼睛、鼻子和嘴巴等位置;FeatureExtraction.kmodel 人臉特征提取模型,用于從人臉圖片中計算出一個特征值。由于固件占用了大部分內(nèi)存,需要選擇SD 卡來存儲模型。這三個文件均為kmodel格式文件,除此以外需要將模型啟動文件boot.py也存儲在SD卡中。
人臉識別模型的推理階段也就是本系統(tǒng)人臉識別模型的應用階段。識別推理過程中首先將圖片的大小設(shè)置為128×128,并轉(zhuǎn)換為KPU 所接受的格式,KPU 指的是K210 自帶的AI 硬件加速單元,可以對卷積計算、批量歸一化、激活和池化基本操作進行加速,是一系列整體的加速模塊。然后使用KPU和K210自帶的卷積神經(jīng)網(wǎng)絡YOLO2加載人臉檢測模型。Yolo2深度學習模型能夠有效地解決實時目標檢測,具有較高的檢測準確率,是一個端到端完整的統(tǒng)一的單階段模型。通常情況下,YOLO2網(wǎng)絡模型是基于卷積神經(jīng)網(wǎng)絡,采用了Darknet-19 特征提取器,共有卷積層19個和最大池化層5 個,主要采用3×3 大小卷積核,2×2大小的最大池化層,有效降低特征圖維度的同時增大特征圖通道數(shù)。YOLO2的輸出層是一個三維結(jié)構(gòu),最終使用boundingbox 邊界框框出檢測到的物體,使用YOLO2作為神經(jīng)網(wǎng)絡模型,極大地提高了人臉識別的效率和準確率。人臉檢測過程中同時需要加載錨點anchor 值,共5 組10 個參數(shù),每組分別為2 個參數(shù),錨點參數(shù)因訓練得到的模型的不同而不同,具體參數(shù)是由訓練階段計算出的一組經(jīng)驗值。通過人臉檢測模型檢測人臉圖片,傳遞給人臉關(guān)鍵點檢測模型,計算出人臉的左右眼、左右嘴角、鼻子所在位置,并經(jīng)檢測后的圖片進行仿射變換轉(zhuǎn)換為KPU 格式。將人臉關(guān)鍵點檢測結(jié)果傳遞給人臉特征提取模型,并計算出人臉圖片的196維特征值。最后通過計算當前人臉特征值與已存特征值的分數(shù)是否大于設(shè)定的閾值來檢驗被測人身份,如果身份核實不同將通過STM32驅(qū)動聲光報警模塊。
本文介紹了非接觸測溫及人臉識別系統(tǒng)的設(shè)計方案及實現(xiàn)過程。本文中通過使用高性能單片機STM32單片機和MaixBit開發(fā)板、TFT屏幕、攝像頭、非接觸測溫傳感器等主要器件實現(xiàn)了非接觸測溫及人臉識別功能。經(jīng)過實驗驗證,能夠有效地實現(xiàn)人臉識別,整個系統(tǒng)準確率較高,兼容性較強。