莫宇冰,楊子靖,趙康淞,張成超,周燕龍
(廣西民族師范學院 數(shù)理與電子信息工程學院,廣西崇左,532200)
隨著世界科學的推動與社會、人民生活水平的提高以及生產(chǎn)技術的不斷進步,工業(yè)的不斷壯大,群眾對生活的質量有了更高的追求。針對現(xiàn)在的疫情防控期間,非接觸式紅外測溫的需求越來越大,尤其是無接觸式的人體溫度測量和身份識別都發(fā)揮了巨大作用。體溫作為我們人體健康的一個重要標準,當人體體溫過高或者體溫過低都是屬于不健康現(xiàn)象,而如何快速有效地測量人體體溫成為當前研究的熱點,也成了我們要研究的方向?;诖?,本文設計了一種有關人體追蹤溫度檢測系統(tǒng),本系統(tǒng)結合了當下疫情對身份識別和無接觸式紅外測溫的需求,實時監(jiān)測人員的體溫狀態(tài),對疫情增加了一定的防控作用,可以有效提高管理水平。
1.1.1 主控芯片的選擇方案
主控芯片主要使用STM32最小系統(tǒng)和STM32F103ZET6推出的基于Cortex-M3為內核的32位微控制器。STM32F 103ZET6有著144個接入口,存儲器共64kb,有8種定時器。閃存微控制器還有著低率、低電壓的極佳功能。主芯片內的CPU包含了兩個全速接口CAN和USB,有著高效的速度以及其他出色的表現(xiàn)。
STM32最小系統(tǒng)擁有40個引腳,flash和RAM(64&20),4個定時器,各2個I2C、SPI通信,3個串口通信信息功能,由ST公司推出的STM32系列的芯片都能很好地完成好本項目的數(shù)據(jù)處理和制作,但針對項目的低成本高效率來說,最小系統(tǒng)足矣。
1.1.2 無接觸溫度測量模塊的選擇方案
方案一:采用一種以紅外線輻射量的熱電堆型號的紅外傳感器模塊AMG8833。AMG8833模塊矩陣為8×8。能通過數(shù)據(jù)返回64個獨立溫度數(shù)據(jù)讀數(shù),內容緊湊而簡單且容易集成,但該傳感器只能支持I2C。內含有配置的中斷引腳,可以觸發(fā)。刷新數(shù)據(jù)為10kHz。測溫溫度范圍為-20°C~80°C,分辨率0.25°C。該傳感器只支持I2C。
方案二:采用紅外測溫模塊MLX90614。MLX90614的物體溫度范圍為-70°C~382.2°C,環(huán)境溫度范圍在-40°C~125°C,分辨率/精度為0.02°C。其中里面有著DSP功能非常強大和17比特的adc和其他元件能實現(xiàn)高精度的溫度測量,紅外測溫能根據(jù)物體的是紅外輻射量返回溫度數(shù)據(jù)、數(shù)據(jù)溫度分辨率較高、響應速度快、測溫范圍和對象廣、測溫上限的限制對他沒有影響、穩(wěn)定性好等特點。
針對以上的相對比較,基于 MLX90640 傳感器分辨率比 AMG8833高多了,且物體溫度范圍與環(huán)境溫度范圍較大,所以選擇方案二。
1.1.3 身份識別模塊選擇方案
OpenMV是一個造價低,功能極其強大的機器視覺處理模塊。它以STM32F427CPU為主要核心,集成了OV7725攝像頭芯片,在極小的硬件模塊上高速地運行著機器視角算法,為Python提供編程接口。OpenMV針對MCU,對標ARM Cortex M犀利內核架構。對于我們項目所需要的功能來說很合適。
基于OpenMV的快速溫度測量與身份識別系統(tǒng)利用MLX90614紅外傳感器、面部識別模塊可以獲取人的體溫和人臉信息,判斷他是否符合防疫標準和身份是否正確,經(jīng)過信息調理之后,便把數(shù)據(jù)發(fā)送給STM32單片機進行運算處理與判斷,并將人的身份和人的體溫送OLED顯示,人體體溫不在正常范圍內就會進行相應的動作。
STM32作為主控芯片,用于讀取溫度傳感器傳輸過來的數(shù)值,通過進行數(shù)據(jù)轉換處理,再讓在OLED與數(shù)碼管上顯示處理后的溫度信息,將獲取到的溫度數(shù)值與設定的溫度上下限進行比較,當輸出的數(shù)值過高時STM32主控芯片給蜂鳴器發(fā)送信號,使其報警;當輸出的數(shù)值過底時則STM32主控芯片給LED發(fā)送信號,使LED進行閃爍提示。與此同時,接收視覺模塊發(fā)送過來的信息,并顯示在OLED屏上。
STM32F103C8T6是采用LQFP48封裝,屬于ST公司微控制器中的STM32系列。STM32讀取溫度傳感器通過串口通信傳輸過來的數(shù)值,進行數(shù)據(jù)編碼、譯碼等處理,然后將處理后的溫度信息通過I2C通信傳輸?shù)絆LED上,把當前傳輸過來的溫度數(shù)值與配置好的溫度值進行比對,當大于設定上限時蜂鳴器進行報警警示,當小于設定溫度下限時進行LED閃爍提示。
OpenMV是一個功能龐大的機器視角模塊,有相關例程,且容易上手,提供人臉識別、口罩識別等相關知識,與其他硬件通信時可以選擇通過UART,I2C,SPI和GPIO等接口,該模塊集成了0V7725攝像頭芯片,相比于市場上的OpenCV擁有豐富的視覺開發(fā),在硬件上,通過算法的編程高精度的核心視覺算法。我們需要運用到Python語言,通過編寫代碼來完成各種機器視覺相關的任務。使得OpenMV可以進行無接觸式人臉識別。編程的便利性能夠用Python語言開發(fā)機器視覺函數(shù)。
該模塊在硬件上擁有豐富的開源代碼,使開發(fā)人員能方便地學習并能高效地專注于算法的編程。該系統(tǒng)使用TensorFlow生態(tài)系統(tǒng)進行訓練和優(yōu)化,并將深度學習的模型使用到設備上。神經(jīng)網(wǎng)絡模型可以通過Edge Impulse平臺所具有的一些神經(jīng)網(wǎng)絡模型來訓練,使用Edge Impulse在線訓練適用于OpenMV的神經(jīng)網(wǎng)絡模型主要可以分為:數(shù)據(jù)集采集、上傳、訓練以及部署,訓練好之后,將使用收集到的測試數(shù)據(jù)來檢驗模型。可以很好地配合OpenMV內置的識別算法,放入模型進行特征化的識別。人臉識別采用Haar算子,匹配采用訓練模型?;贠penMV模型的圖像采集設備通過預先輸入身份信息,利用Haar特征的cascade分類器和image模塊下構造函數(shù)實現(xiàn)初始化模塊的身份識別,加載模型檢測、采集圖像特征值、提取局部特征值文件進行對比。通過STM32F103C8T6主控芯片向OLED輸出人的身份信息。
圖1 溫度測量及身份識別系統(tǒng)結構框圖
紅外測溫模塊是通過被測物體發(fā)出的紅外輻射光來確定其物體的溫度可測范圍在70°C~382.2°C,環(huán)境的可測范圍在-40°C~125°C之間。MLX90614 只作為從動器件使用。一般來講,MD是通過從動地址 (SA)選擇從動器件并開始數(shù)據(jù)傳輸。通過不斷的測試溫度與體溫槍不斷地對比得出結果,確定溫度的計算公式。主函數(shù)中只需使用SMBus_ReadTemp()這一函數(shù)即可得到所測得的溫度值。
float SMBus_ReadTemp(void);
MicroPython有多個不同硬件平臺的移植版本,用戶實現(xiàn)硬件底層的訪問和控制完全可以通過Micro Python腳本的語言,比如說控制紅外遙控、LED燈泡、OLED、讀取電壓響應數(shù)據(jù)、控制霍爾電機、訪問SD卡等。
前端MCU程序采用的是Micro Python語言獲取攝像頭的一張照片,通過運算人臉模型對獲取的照片進行人臉識別,對獲取的數(shù)據(jù)整合通過串口發(fā)送到主控芯片,主控芯片在進行運行判斷,把結果輸出到OLED進行數(shù)據(jù)顯示。
圖2 原理圖
系統(tǒng)開機啟動,完成初始化攝像頭的各項參數(shù),加載Haar cascade模型,進行捕捉圖像,從本地獲取特征值文件進行比對,把比對到的數(shù)據(jù)傳給主控芯片,其流程圖如圖3所示。
圖3 人臉識別流程圖
MLX90614紅外測溫,采用MLX90614,主要是因為它可以無接觸測溫,并且它的精度能精確到0.02°C。它通過探器探測其工作范圍,從而得出測量熱輻功率,總結出目標的溫度。在這里使用的是SMBus協(xié)議,通過不斷地測試溫度,并將結果與體溫槍進行比較,確定溫度的計算公式。在主函數(shù)中,只有使用SMBus_ReadTemp()函數(shù),才能得到所測得的溫度值。
系統(tǒng)通過使用OpenMV的集成開發(fā)環(huán)境運行Mircro Python腳本相結合。在實驗測試數(shù)據(jù)中,只要攝像頭捕獲到人臉,人臉識別系統(tǒng)就能夠正確識別出人臉并進行特征值的判斷。使用在線訓練模型網(wǎng)站Edge Impulse的特征值判斷平臺提供的一些神經(jīng)網(wǎng)絡模型進行訓練,這些模型可以與OpenMV的內置識別算法很好地配合,并放入模型中進行特征化的識別,對進行訓練好的模型可以直接使用。利用mlx90614測溫模塊,通過保持一定的距離進行測量人體體溫,獲取相應數(shù)值返回給主控芯片,進行數(shù)值運算,主控芯片通過I2C通信方式把得到的準確數(shù)據(jù)發(fā)送給OLED進行顯示。
圖4 測溫流程圖
圖5 和圖6是網(wǎng)絡訓練和溫度測量的一些成果圖,訓練驗證的識別準確率97%。運行幀率在2fps左右。網(wǎng)絡訓練好的模型可以直接供OpenMV4 Plus使用,視覺模塊再將捕捉到的人臉進行特征值識別,傳到主控芯片判斷后通過串口發(fā)送到OLED顯示結果。與此同時,測溫模塊進行溫度測量,把測量到的數(shù)據(jù)傳給主控芯片并與之設定值進行比較,把比較得到的數(shù)據(jù)通過I2C通信方式傳給OLED進行顯示,當與設定值相比較高時,蜂鳴器進行動作,報警警示,與設定溫度值較低時,LED進行動作,閃爍提示。
圖5 模型訓練成果
圖6 測溫溫度顯示
本文介紹了通過硬件設計與圖像處理技術相結合的人體快速測溫和身份識別系統(tǒng),采用STM32芯片作為總控制器,通過紅外傳感器、面部識別模塊可以獲取人的體溫,判斷他身份是否正確,經(jīng)過信息調理之后,便把數(shù)據(jù)發(fā)送給STM32單片機進行運算處理與判斷,并將人的身份和人的體溫送到OLED顯示,人體體溫不在正常范圍內就會報警。系統(tǒng)的開發(fā)使用當前已經(jīng)十分成熟的Mircro Python語言與其自帶強大的庫函數(shù),實現(xiàn)了人臉識別目的,用C語言設計與測溫模塊的結合實現(xiàn)了無接觸測溫功能,本方案使得現(xiàn)如今對于疫情測溫與人臉識別的防控管理有了一定的提升,對于防疫人員增加了安全保障,工作壓力也得到了減少,管理水平得到有效的提高。