王 昭
(山西職業技術學院,山西 太原 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屏幕、攝像頭、非接觸測溫傳感器等主要器件實現了非接觸測溫及人臉識別功能。經過實驗驗證,能夠有效地實現人臉識別,整個系統準確率較高,兼容性較強。