江朝暉,朱家微,邰其樂,岳旭東,洪石蘭
(1.安徽農(nóng)業(yè)大學 信息與計算機學院,安徽 合肥 230036;2.安徽省智慧農(nóng)業(yè)技術(shù)與裝備重點實驗室,安徽 合肥 230036)
新型冠狀病毒感染肺炎已經(jīng)成為威脅群眾安全和社會穩(wěn)定的重大公共衛(wèi)生事件[1],患者常出現(xiàn)發(fā)熱、干咳等呼吸道癥狀[2],所以體溫監(jiān)測是“抗疫”的重要手段之一。目前,溫度的測量方法主要包括接觸式測溫和非接觸式測溫[3],紅外體溫槍測量額溫的方式比較流行[4],但是體溫槍測量額溫時工作人員與監(jiān)測人員距離近,易產(chǎn)生交叉感染[5]。熱成像測溫攝像頭雖然可以快速無接觸監(jiān)測,但是市面上的熱成像測溫攝像頭動輒上千元,限制了應用和推廣。本文欲用低功耗、可搭載深度學習框架的MCU 和微型紅外熱成像模塊,設計一種新型溫度監(jiān)測設備,旨在提高溫度監(jiān)測的效率和精確度,實現(xiàn)多目標溫度實時智能監(jiān)測的功能,并解決低功耗MCU 搭載深度學習框架由于算力較低導致的視頻卡頓問題,降低生產(chǎn)成本。此設備可以推廣至各類小型場所,實時監(jiān)測室內(nèi)人員體溫。
溫度監(jiān)測儀結(jié)構(gòu)如圖1 所示,硬件部分由MCU、熱成像模塊、LCD 顯示屏和電源組成。MCU選用STM32H743,STM32H7 系列是ARM Cortex-M系列中的超高性能MCU,支持各種深度學習框架。STM32H7 在Cortex-M7 內(nèi)核的基礎上又增加了Cortex-M4 內(nèi)核,形成了雙內(nèi)核結(jié)構(gòu),可以有效地降低工作負荷,且成本較低。熱成像模塊采用FLIR的新型高分辨率WIR 微型熱成像模塊Lepton 3.5,最后成像顯示在TFTLCD 顯示屏上。整個設備由額定輸出功率為2.035 W 的可充電鋰電池供能,1 000 mAh 的容量可使設備持續(xù)工作約6 個小時。
圖1 溫度監(jiān)測儀結(jié)構(gòu)框圖
Lepton 3.5 是FLIR 公司推出的新型高分辨率LWIR 微型熱成像模塊[6]。160×120 列陣格式漸進式掃描物體,自動成熱紅外圖像。熱紅外圖像每個像素點對應一個具體的溫度值,共19 200 個溫度值,每個像素的溫度精確度約為0.050 ℃,并且自動進行溫度補償,避免輸出圖像受熱像儀溫度的影響。Lepton 3.5 使用SPI 通信協(xié)議傳輸視頻圖像數(shù)據(jù),CCI(類似I2C)為控制端口協(xié)議,控制成像模式等功能。
在初始化Lepton 3.5 時,需要設置其工作模式為高增益模式。高增益模式可將紅外傳感器的大動態(tài)范圍縮小到更合適的顯示熱紅外圖像的范圍,增強輸出圖像,提高每一像素點的溫度值精確度。測量物體溫度時,通過映射操作設置合適的被監(jiān)測物體的溫度范圍(例如,測量人體時溫度范圍設置為20~40 ℃左右),用來過濾其它發(fā)熱源的溫度,避免成像模糊的情況,然后設置成像模式為灰色圖像。通過設置監(jiān)測溫度范圍值,把Lepton 3.5 生成的紅外溫度圖像限制在最大值和最小值之間,并縮放為0~255 之間的值。根據(jù)物體溫度確定每個像素的灰度值,把灰色圖像映射為彩色熱紅外圖像。Lepton 3.5 顯示的原始照片和修改后的彩色熱紅外圖像如圖2 和圖3 所示。很明顯,圖3 的顯示效果較好,更易于觀察和目標識別。
圖2 原始圖像
圖3 彩色熱紅外圖像
式(1)中,max 和min 分別為監(jiān)測溫度設置范圍的最大值和最小值。
彩色熱紅外圖像由1.8 寸、像素為160×128的顯示屏顯示。顯示屏是色彩模式為RGB565 的TFT LCD 顯示模組,并且可以控制背光。LCD 顯示屏支持3.3 V 供電,通過SPI 通信協(xié)議控制顯示屏的讀寫功能,并有一GPIO 實現(xiàn)LCD 復位功能。
軟件部分的主要設計目的是實現(xiàn)目標檢測的功能,并在算力相對較低的Cortex-M 系列處理器上搭載深度學習框架,實現(xiàn)無掉幀實時監(jiān)測攝像頭拍攝對象。
深度學習推進了計算機視覺領域的發(fā)展,用來解決人們預期的特定問題[7],目前在圖像識別、場景識別和物體追蹤等方面都已取得顯著的效果[8]。一些深度學習框架也隨之產(chǎn)生,TensorFlow、Caffe、Theano、Torch 等[9]受到青睞,其中TensorFlow 是目前最知名的支持各種神經(jīng)網(wǎng)絡算法的平臺[10]。TensorFlow 適用于服務器端、大功率設備,但是隨著微控制器廣泛應用于各個領域,出現(xiàn)了在微控制器上運行深度學習的需求,于是TensorFlow 團隊在2017 年底開源了TensorFlow Lite(TF Lite)[11]。運行在微控制器上的TF Lite 的機器學習模型僅有數(shù)百KB,使微控制器智能化成為可能。本系統(tǒng)的軟件部分采用的即為TF Lite 框架訓練識別人體模型。TF Lite 提供了多種語言的API,正式支持的有Java、C++和Python,Google 官方為Keil 等嵌入式開發(fā)平臺提供了預生成項目文件的功能[11],直接調(diào)用與項目有關(guān)的頭文件即可使用TF Lite 框架,并且已經(jīng)針對Arm Cortex-M 系列架構(gòu)的處理器進行了廣泛的測試[11]。
如圖4 和圖5,采集243 張包含人體的環(huán)境圖像和201 張不包含人體的環(huán)境圖像并分類保存到獨立文件夾中。
圖4 包含人體的環(huán)境圖像
圖5 不包含人體的環(huán)境圖像
根據(jù)熱紅外成像中的主要監(jiān)測目標,為了提高人體識別的準確度,201 張不包含人體的環(huán)境圖像中要盡量包含帶有溫度且溫度與人體溫度相似的不同物體。在模型訓練中,444 張圖像隨機按5:1 的比例劃分為訓練集和測試集。如果使用TensorFlow 訓練人體圖像模型,接下來還需要把TensorFlow 模型格式(.pb)通過TOCO 轉(zhuǎn)換工具轉(zhuǎn)換為TensorFlow Lite 格式(.tflite),所以使用在線訓練工具Transfer learning 直接生成TensorFlow Lite 格式的模型。訓練周期為10,學習速率為0.000 5,允許訓練結(jié)果最低準確率為60%,且使用數(shù)據(jù)增強功能提高準確率。
目標檢測和目標識別是兩種不同的概念。目標檢測是找出圖像中所有感興趣的目標,確定類別和位置[12];目標識別是判斷圖像中是否存在感興趣的目標。大多數(shù)產(chǎn)品直接進行目標檢測,確定人體位置、計算并顯示人體溫度。使用這種方法來確定人體位置較為可靠性,但是可能會消耗更多的資源,因此需要高算力的MCU。但MCU 強調(diào)的是低功耗、低成本,往往算力較低,所以在MCU 上一般都要精簡AI 模型,合理取舍精度與算力,改進已有算法的性能[13]。為了能在低算力MCU 上實現(xiàn)目標檢測的效果,設計了新的人體識別算法,算法流程如圖6 所示。
圖6 人體識別算法流程
彩色熱紅外圖像像素點的灰度值與溫度有關(guān),根據(jù)人體溫度在圖像中對應的灰度值,定義RGB顏色值R 的范圍是200 至255 的顏色區(qū)域為感興趣區(qū)(ROI)。先判斷彩色熱紅外圖像中是否存在ROI,如不存在ROI 則不識別,繼續(xù)判斷下一幀圖像;如存在ROI 則將其設置為“待檢測窗口”,找到所有“窗口”后,對各個“窗口”進行目標識別操作,然后計算“窗口”的位置和大小,最后繪制框圖添加相應的標簽。
算法的初步思想是利用多尺度滑動窗口全局掃描輸入圖像[14]?!盎瑒哟翱凇敝校按翱凇睘樵O置的ROI,roi 格式包括ROI 的左上角頂點坐標、ROI 的寬度和ROI 的高度等位置信息,通過設置ROI 四個頂點的坐標,控制“窗口”移動的步長和“窗口”的伸縮比。預定義步長與伸縮比使“窗口”滑動?!盎瑒哟翱凇本唧w過程如圖7 所示,圖片大小為160×120,圖片左上角坐標為(0,0)。掃描窗口①時,設置“滑動窗口”的四個頂點的坐標值分別為(0,0)、(0,60)、(80,60)、(80,0),識別窗口中是否包含人體,如果包含則計算出窗口的位置,將其框出并添加標簽,然后以此方法依次掃描其他窗口。圖7 中,依次識別①、②、③、④四個窗口,最后得出只有②和④包含人體。“窗口”的縮放比例和滑動步長需要人為設置且固定大小,所以最終的目標識別框圖大小也是固定的,效果不算圓滿,而且經(jīng)過多次目標識別,最終也會因為微處理器算力不夠?qū)е乱曨l卡頓。所以,還需要在“滑動窗口”的基礎上進一步設計,主要為了減少“滑動”的次數(shù),提高視頻顯示的流暢度,確定框圖的大小和位置,使框圖恰好包含人體。
圖7 “滑動窗口”示意圖
在設計硬件部分的時候,設置了監(jiān)測的溫度范圍——溫度閾值,生成了彩色熱紅外圖像,在溫度閾值內(nèi)的物體是“彩色”的,其他物體全是黑色。如圖8 所示,圖中存在多個在溫度閾值內(nèi)的物體,定義RGB 值中R 在200 到255 之間的區(qū)域為ROI,設置掃描的窗口是整個ROI。如圖8 的兩個小圖框為兩個需要被掃描的窗口,分別對窗口進行目標識別,然后計算出窗口的位置將其框出,為包含人體的窗口添加標簽。如果圖中沒有ROI,繼續(xù)處理下一幀圖像。簡單的ROI 查找對微控制器來說非常容易。因此,這種人體識別的算法可以明顯減少微控制器的工作量,且最終效果也非常符合要求,達到了目標檢測的效果。
圖8 熱紅外圖像目標檢測
為便于觀察,需進一步改進上述方法的顯示問題。先隱藏圖中所有的框圖和標簽,對于非監(jiān)測目標,將其溫度標記在其左上方;對于監(jiān)測目標,先將其用白色框圖框出,然后在框圖左上方內(nèi)側(cè)標記其溫度,在室溫25 ℃和19 ℃左右時的顯示效果分別如圖9 和圖10 所示。環(huán)境溫度較高時背景非常模糊,而環(huán)境溫度較低時背景較為清楚,但是對被監(jiān)測物體的溫度影響不大,監(jiān)測出的溫度仍然具有參考價值。從實驗結(jié)果中得出,人體識別的準確率為99.7%,設計的算法能夠?qū)崿F(xiàn)無卡頓溫度監(jiān)測至少6 個目標。
圖9 室溫25 ℃時顯示結(jié)果
圖10 室溫19 ℃時顯示結(jié)果
設計的溫度監(jiān)測儀由熱成像模塊Lepton 3.5采集熱紅外圖像,在MCU(STM32H743)上搭載TensorFlow Lite 深度學習框架,找到熱紅外圖像中的人體,計算并標記圖中所有在溫度閾值內(nèi)的發(fā)熱源溫度。針對熱紅外圖像以“滑動窗口”技術(shù)為基礎設計出新的人體識別算法,解決了由于MCU 算力不足造成的視頻掉幀問題,實現(xiàn)了多目標溫度實時監(jiān)測功能。與市面上價格昂貴的測溫熱成像攝像頭相比,此設備不僅具有相同的溫度監(jiān)測功能,而且制造成本低,非常適合在辦公室、實驗室或者家庭等小型場所中安裝,監(jiān)測室內(nèi)多人體溫,實時掌握室內(nèi)人員體溫是否異常。
在圖9 中,雖然一次性出現(xiàn)6 個檢測目標仍然可以保證視頻流暢。但是理論上,如果屏幕中出現(xiàn)的監(jiān)測目標太多,以及高頻目標監(jiān)測也會導致視頻流暢度下降。另外,當兩個被監(jiān)測目標重疊時,只能標記為一個目標,所以此監(jiān)測方法還需進一步改進。