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