張瑩,邵欣,韓思奇,王心輝
(天津中德應用技術大學,天津,300350)
最近,多地學校因新冠感染、甲流等發布停課通知。公眾高度關注對抗疫情工作的進展狀況,運用人工智能等新技術應用到人臉口罩佩戴識別、無接觸式體溫檢測,智能化升級改造當前防疫手段,有助于疫情的群防群控和保障人民群眾的健康。
系統設計從場景化落地角度出發,結合疫情防控場景的應用需求確定系統的功能模塊,整個系統從人臉口罩識別開始,如佩戴口罩并且體溫測量正常則進入人臉識別功能,驗證身份信息完成整個流程。該系統包含口罩檢測、紅外測溫、閾值報警、人臉錄入、人臉識別等功能,根據功能需求確定系統設計的架構。
本文中人臉口罩佩戴識別功能分為人臉檢測和口罩佩戴識別,根據功能需求可使用AI 通用技術目標檢測算法實現此功能,目標檢測可以獲取圖像中物體的位置,并可以識別對應物體的類別[1],如圖1 所示。

圖1 人臉口罩佩戴識別功能分析
因嵌入式 AI 推理平臺算力有限,人臉口罩佩戴識別又需要實時檢測,故需要使用輕量級的目標檢測算法,針對嵌入式 AI 推理平臺有專用的AI 推理框架TensorFlow Lite 對TensorFlow 生成的模型兼容性比較好,操作簡單模型部署效率高。
英偉達的 Jetson Nano 是一塊用于深度學習或者計算機視覺的開發板,板子整合了128 核Maxwell GPU,四核ARM A57 64-bit CPU 和4G LPDDR4 內存,也支持MIPI CSI-2 接口攝像頭和PCIe Gen2 高速I/O(用來接無線網卡)。Jetson Nano 運行在Linux (Ubuntu)上,可以處理472 GFLOPS 的FP16 (半浮點數),而功耗只有5~10W,適用于端側 AI 模型的部署,符合口罩檢測項目案例的開發。
人臉識別的主要實現流程為:人臉關鍵點檢測(使用人臉關鍵點檢測模型提取68 個人臉關鍵點)、人臉對齊(根據人臉關鍵點數據實現人臉對齊功能)、人臉特征提取(將人臉對齊后的圖像送入CNN 模型中提取128 維的特征數據)、人臉特征比對(根據獲取到的人臉特征數據對比人臉識別底庫中的人臉特征數據獲取身份信息),通過程序從頭編寫實現這四個步驟過于復雜比較困難,故選用開源的軟件包dlib 庫中的API 函數來實現人臉識別功能。
系統選用Flask 程序框架實現,使用該軟件包可以在網頁顯示GUI 界面,通過這種方式可使用局域網在任何有瀏覽器的設備中都可以查看到人臉錄入的畫面,實現人臉錄入功能。
系統設計以 MCU 構建控制系統,包含無接觸式體溫檢測、溫度閾值調節、報警功能以及數據反饋等。無接觸式體溫檢測:使用紅外測溫方式實現,由于體溫測量精度比較高,故采用TN901 非接觸式紅外測溫傳感器來實現紅外測溫功能,該傳感器使用I2C 通信,操作比較簡單。溫度閾值調節:通過按鍵控制溫度閾值的上下調節。報警功能:根據測量的溫度數據與提前設定的溫度閾值判斷是否開啟報警器,報警器可以使用LED 燈和蜂鳴器組合的方式實現。數據反饋:無接觸式體溫監測系統的閾值信息和紅外測溫的溫度值要通過串口數據發送到嵌入式 AI 推理平臺中[2]。
系統硬件包括無接觸體溫檢測系統和口罩佩戴識別與身份識別系統,如圖2 所示。無接觸體溫檢測系統由嵌入式微控制器、TN901、顯示屏、蜂鳴器、按鍵等組成,實現紅外測溫傳感器數據讀取、按鍵檢測、報警器、串口通信等基礎功能;口罩佩戴識別與身份識別系統采用了能夠部署輕量級深度學習模型的嵌入式AI 推理平臺、攝像頭和顯示器等,如圖3 所示。

圖2 硬件系統設計框圖
無接觸測溫系統STM32F103 作為核心主控協調整個系統;通過紅外測溫傳感器TN901 測量獲取溫度值;0.96 OLED 顯示作為人機交互界面顯示溫度及閾值;蜂鳴器作為閾值報警反饋;按鍵獲取用戶輸入調節溫度閾值[3]。
嵌入式 AI 推理平臺系統運行著Ubuntu18.04 的Linux系統,操作較為簡單類似于PC 端安裝Linux 系統的操作,可以將嵌入式 AI 推理平臺當作一個小型電腦來使用。
系統軟件設計方案如圖4 所示,實現深度學習模型部署到終端設備全過程。
步驟1(數據集采集):采集佩戴口罩與未佩戴口罩的人臉圖片;
步驟2(數據集標注):使用數據集標注軟件VoTT 對已采集的數據集進行標注,將所有圖片上的人臉區域位置進行標注,并標記對應的類別是佩戴口罩還是未佩戴口罩;
步驟3(深度學習模型構建與訓練):基于實際應用需求選取目標檢測模型,因要完成嵌入式端模型部署,故采用輕量級RFB-Net 目標檢測模型,如圖5 所示。模型確定完成之后,使用TensorFlow 深度學習框架構建模型的網絡結構,并加載標注完成的數據集完成模型訓練,模型訓練完成編寫模型推理代碼驗證模型的識別率。口罩佩戴功能完成后增加身份識別功能,使用開源的人臉識別軟件包完成人臉錄入與人臉識別功能;

圖5 RFB-Net 模型結構
步驟4(模型轉換):PC 端訓練的深度學習模型要部署到端側設備中需使用模型推理框架,模型推理框架需匹配對應的模型格式,在本項目中使用TensorFlow Lite 模型推理框架完成模型量化(在降低模型參數量的同時損失較小的識別率)和轉換的步驟;
步驟5(模型部署):在端側設備中安裝相關軟件包(Numpy、OpenCV、TensorFlow Lite 等)搭建開發環境,并使用TensorFlow Lite 編寫模型推理的代碼,完成口罩識別模型的部署;
步驟6(端側設備綜合系統構建):在端側推理平臺中集成口罩識別、人臉錄入、人臉識別和識別結果與體溫數據可視化功能,完成整個綜合系統的構建。
步驟7(無接觸測溫系統構建):通過嵌入式微控制器采集紅外測溫傳感器的數據,并完成閾值設定、閾值超標報警、體溫與閾值數據上傳(串口)等功能;
以上步驟又可以概述為三個部分:基于深度學習的輕量級目標檢測模型訓練、深度學習模型部署到終端的過程實現和無接觸式體溫檢測功能的實現。
RFBNet 基于SSD 的backbone,受啟發于人類視覺感知系統,結合了Inception、蟲洞卷積的思想,盡量模擬人類的視覺感知,將RFB 集成至SSD,形成RFBNet。通過設計的RFB 模塊,即使在輕量級主干網上也能提取到高判別性特征,最終RFBNet 速度快、性能好適合在嵌入式 AI推理平臺中部署。
使用TensorFlow SavedModel 保存的AI 模型可以使用TFLite Converter 轉換為tflite 模型,使用TFLite interpreter 加載tflite 模型并實現模型推理。
TensorFlow Lite 使用流程如圖6 所示。TensorFlow Lite轉換后的AI 模型,識別精度損失很小,而且模型的大小卻縮減很多,所以可以使用AI 模型在嵌入式AI 推理平臺中進行部署。
TensorFlow Lite 轉換器根據輸入的TensorFlow 模型生成FlatBuffer 文件(.tflite)。該轉換器支持SavedModel目錄、tf.keras 模型和具體函數。
TensorFlow Lite 模型加載步驟可分為三步:第一步,加載模型,分配張量;第二步,設置模型的輸入數據;第三步,推理預測,獲取模型的輸出數據。
口罩檢測使用AI 通用技術目標檢測算法實現,通過功能分析方案選取確定使用輕量級的目標檢測算法RFB-Net作為神經網絡模型完成口罩檢測的模型訓練[4]。RFB-Net 需要使用深度學習框架搭建網絡結構,故口罩檢測的實現步驟與自定義數據集深度學習模型訓練的實現步驟相似,共分為4 個步驟:第一步,人臉口罩數據集標注及預處理;第二步,RFB-Net 神經網絡模型搭建;第三步,配置超參數訓練模型;第四步,加載訓練完成的模型推理預測驗證口罩檢測功能,如圖7 所示。

圖7 口罩檢測實現步驟
人臉口罩數據集標注及預處理:
(1)獲取數據集
下載開源的人臉口罩數據集,數據集格式為VOC:Annotations 存放標簽文件.xml 文件;ImageSets 存放數據集分割的文件比如train、val、test;JPEGimages 存放.jpg格式的圖片文件,數據集中人臉戴口罩和不戴口罩的圖片,如圖8 所示。

圖8 口罩佩戴數據
(2)補充數據集
采集人臉戴口罩與不戴口罩數據集,使用微軟發布的用于圖像目標檢測的標注工具VoTT 進行目標檢測標注軟件標注和人臉口罩數據集,并將數據集導出為VOC 格式添加至開源的人臉口罩數據集中,如圖9 所示。

圖9 口罩佩戴數據標注
第一步采集人臉佩戴口罩的圖片,進行歸類,當作模型的驗證集來對模型的準確率進行測試;
第二步運行口罩識別的模型推理代碼識別驗證集中的圖片并記錄識別結果,并根據每組圖片類型統計識別率匯總測試數據,如表1 所示。

表1 人臉口罩佩戴識別穩定性測試數據
根據實際的魯棒性測試,因部分側臉圖片人臉區域太小特征不太明顯導致會出現識別不到或者識別錯誤的問題,其他情況下模型的識別率較高,模型的泛化能力已完全滿足應用需求。
本文研究的基于深度學習的口罩檢測系統在準確度和穩定性等方面都能滿足實際場景的應用需求,實現了PC 端的AI模型到小型嵌入式設備端部署及應用的完整開發流程。在未來可針對現有系統擴展人流統計、人員信息匹配等擴展功能,讓系統功能更加完善盡快地完成商業化落地。