張瑩,邵欣,韓思奇,王心輝
(天津中德應(yīng)用技術(shù)大學(xué),天津,300350)
最近,多地學(xué)校因新冠感染、甲流等發(fā)布停課通知。公眾高度關(guān)注對(duì)抗疫情工作的進(jìn)展?fàn)顩r,運(yùn)用人工智能等新技術(shù)應(yīng)用到人臉口罩佩戴識(shí)別、無(wú)接觸式體溫檢測(cè),智能化升級(jí)改造當(dāng)前防疫手段,有助于疫情的群防群控和保障人民群眾的健康。
系統(tǒng)設(shè)計(jì)從場(chǎng)景化落地角度出發(fā),結(jié)合疫情防控場(chǎng)景的應(yīng)用需求確定系統(tǒng)的功能模塊,整個(gè)系統(tǒng)從人臉口罩識(shí)別開(kāi)始,如佩戴口罩并且體溫測(cè)量正常則進(jìn)入人臉識(shí)別功能,驗(yàn)證身份信息完成整個(gè)流程。該系統(tǒng)包含口罩檢測(cè)、紅外測(cè)溫、閾值報(bào)警、人臉?shù)浫?、人臉識(shí)別等功能,根據(jù)功能需求確定系統(tǒng)設(shè)計(jì)的架構(gòu)。
本文中人臉口罩佩戴識(shí)別功能分為人臉檢測(cè)和口罩佩戴識(shí)別,根據(jù)功能需求可使用AI 通用技術(shù)目標(biāo)檢測(cè)算法實(shí)現(xiàn)此功能,目標(biāo)檢測(cè)可以獲取圖像中物體的位置,并可以識(shí)別對(duì)應(yīng)物體的類(lèi)別[1],如圖1 所示。
圖1 人臉口罩佩戴識(shí)別功能分析
因嵌入式 AI 推理平臺(tái)算力有限,人臉口罩佩戴識(shí)別又需要實(shí)時(shí)檢測(cè),故需要使用輕量級(jí)的目標(biāo)檢測(cè)算法,針對(duì)嵌入式 AI 推理平臺(tái)有專(zhuān)用的AI 推理框架TensorFlow Lite 對(duì)TensorFlow 生成的模型兼容性比較好,操作簡(jiǎn)單模型部署效率高。
英偉達(dá)的 Jetson Nano 是一塊用于深度學(xué)習(xí)或者計(jì)算機(jī)視覺(jué)的開(kāi)發(fā)板,板子整合了128 核Maxwell GPU,四核ARM A57 64-bit CPU 和4G LPDDR4 內(nèi)存,也支持MIPI CSI-2 接口攝像頭和PCIe Gen2 高速I(mǎi)/O(用來(lái)接無(wú)線網(wǎng)卡)。Jetson Nano 運(yùn)行在Linux (Ubuntu)上,可以處理472 GFLOPS 的FP16 (半浮點(diǎn)數(shù)),而功耗只有5~10W,適用于端側(cè) AI 模型的部署,符合口罩檢測(cè)項(xiàng)目案例的開(kāi)發(fā)。
人臉識(shí)別的主要實(shí)現(xiàn)流程為:人臉關(guān)鍵點(diǎn)檢測(cè)(使用人臉關(guān)鍵點(diǎn)檢測(cè)模型提取68 個(gè)人臉關(guān)鍵點(diǎn))、人臉對(duì)齊(根據(jù)人臉關(guān)鍵點(diǎn)數(shù)據(jù)實(shí)現(xiàn)人臉對(duì)齊功能)、人臉特征提?。▽⑷四槍?duì)齊后的圖像送入CNN 模型中提取128 維的特征數(shù)據(jù))、人臉特征比對(duì)(根據(jù)獲取到的人臉特征數(shù)據(jù)對(duì)比人臉識(shí)別底庫(kù)中的人臉特征數(shù)據(jù)獲取身份信息),通過(guò)程序從頭編寫(xiě)實(shí)現(xiàn)這四個(gè)步驟過(guò)于復(fù)雜比較困難,故選用開(kāi)源的軟件包dlib 庫(kù)中的API 函數(shù)來(lái)實(shí)現(xiàn)人臉識(shí)別功能。
系統(tǒng)選用Flask 程序框架實(shí)現(xiàn),使用該軟件包可以在網(wǎng)頁(yè)顯示GUI 界面,通過(guò)這種方式可使用局域網(wǎng)在任何有瀏覽器的設(shè)備中都可以查看到人臉?shù)浫氲漠?huà)面,實(shí)現(xiàn)人臉?shù)浫牍δ堋?/p>
系統(tǒng)設(shè)計(jì)以 MCU 構(gòu)建控制系統(tǒng),包含無(wú)接觸式體溫檢測(cè)、溫度閾值調(diào)節(jié)、報(bào)警功能以及數(shù)據(jù)反饋等。無(wú)接觸式體溫檢測(cè):使用紅外測(cè)溫方式實(shí)現(xiàn),由于體溫測(cè)量精度比較高,故采用TN901 非接觸式紅外測(cè)溫傳感器來(lái)實(shí)現(xiàn)紅外測(cè)溫功能,該傳感器使用I2C 通信,操作比較簡(jiǎn)單。溫度閾值調(diào)節(jié):通過(guò)按鍵控制溫度閾值的上下調(diào)節(jié)。報(bào)警功能:根據(jù)測(cè)量的溫度數(shù)據(jù)與提前設(shè)定的溫度閾值判斷是否開(kāi)啟報(bào)警器,報(bào)警器可以使用LED 燈和蜂鳴器組合的方式實(shí)現(xiàn)。數(shù)據(jù)反饋:無(wú)接觸式體溫監(jiān)測(cè)系統(tǒng)的閾值信息和紅外測(cè)溫的溫度值要通過(guò)串口數(shù)據(jù)發(fā)送到嵌入式 AI 推理平臺(tái)中[2]。
系統(tǒng)硬件包括無(wú)接觸體溫檢測(cè)系統(tǒng)和口罩佩戴識(shí)別與身份識(shí)別系統(tǒng),如圖2 所示。無(wú)接觸體溫檢測(cè)系統(tǒng)由嵌入式微控制器、TN901、顯示屏、蜂鳴器、按鍵等組成,實(shí)現(xiàn)紅外測(cè)溫傳感器數(shù)據(jù)讀取、按鍵檢測(cè)、報(bào)警器、串口通信等基礎(chǔ)功能;口罩佩戴識(shí)別與身份識(shí)別系統(tǒng)采用了能夠部署輕量級(jí)深度學(xué)習(xí)模型的嵌入式AI 推理平臺(tái)、攝像頭和顯示器等,如圖3 所示。
圖2 硬件系統(tǒng)設(shè)計(jì)框圖
無(wú)接觸測(cè)溫系統(tǒng)STM32F103 作為核心主控協(xié)調(diào)整個(gè)系統(tǒng);通過(guò)紅外測(cè)溫傳感器TN901 測(cè)量獲取溫度值;0.96 OLED 顯示作為人機(jī)交互界面顯示溫度及閾值;蜂鳴器作為閾值報(bào)警反饋;按鍵獲取用戶(hù)輸入調(diào)節(jié)溫度閾值[3]。
嵌入式 AI 推理平臺(tái)系統(tǒng)運(yùn)行著Ubuntu18.04 的Linux系統(tǒng),操作較為簡(jiǎn)單類(lèi)似于PC 端安裝Linux 系統(tǒng)的操作,可以將嵌入式 AI 推理平臺(tái)當(dāng)作一個(gè)小型電腦來(lái)使用。
系統(tǒng)軟件設(shè)計(jì)方案如圖4 所示,實(shí)現(xiàn)深度學(xué)習(xí)模型部署到終端設(shè)備全過(guò)程。
步驟1(數(shù)據(jù)集采集):采集佩戴口罩與未佩戴口罩的人臉圖片;
步驟2(數(shù)據(jù)集標(biāo)注):使用數(shù)據(jù)集標(biāo)注軟件VoTT 對(duì)已采集的數(shù)據(jù)集進(jìn)行標(biāo)注,將所有圖片上的人臉區(qū)域位置進(jìn)行標(biāo)注,并標(biāo)記對(duì)應(yīng)的類(lèi)別是佩戴口罩還是未佩戴口罩;
步驟3(深度學(xué)習(xí)模型構(gòu)建與訓(xùn)練):基于實(shí)際應(yīng)用需求選取目標(biāo)檢測(cè)模型,因要完成嵌入式端模型部署,故采用輕量級(jí)RFB-Net 目標(biāo)檢測(cè)模型,如圖5 所示。模型確定完成之后,使用TensorFlow 深度學(xué)習(xí)框架構(gòu)建模型的網(wǎng)絡(luò)結(jié)構(gòu),并加載標(biāo)注完成的數(shù)據(jù)集完成模型訓(xùn)練,模型訓(xùn)練完成編寫(xiě)模型推理代碼驗(yàn)證模型的識(shí)別率??谡峙宕鞴δ芡瓿珊笤黾由矸葑R(shí)別功能,使用開(kāi)源的人臉識(shí)別軟件包完成人臉?shù)浫肱c人臉識(shí)別功能;
圖5 RFB-Net 模型結(jié)構(gòu)
步驟4(模型轉(zhuǎn)換):PC 端訓(xùn)練的深度學(xué)習(xí)模型要部署到端側(cè)設(shè)備中需使用模型推理框架,模型推理框架需匹配對(duì)應(yīng)的模型格式,在本項(xiàng)目中使用TensorFlow Lite 模型推理框架完成模型量化(在降低模型參數(shù)量的同時(shí)損失較小的識(shí)別率)和轉(zhuǎn)換的步驟;
步驟5(模型部署):在端側(cè)設(shè)備中安裝相關(guān)軟件包(Numpy、OpenCV、TensorFlow Lite 等)搭建開(kāi)發(fā)環(huán)境,并使用TensorFlow Lite 編寫(xiě)模型推理的代碼,完成口罩識(shí)別模型的部署;
步驟6(端側(cè)設(shè)備綜合系統(tǒng)構(gòu)建):在端側(cè)推理平臺(tái)中集成口罩識(shí)別、人臉?shù)浫?、人臉識(shí)別和識(shí)別結(jié)果與體溫?cái)?shù)據(jù)可視化功能,完成整個(gè)綜合系統(tǒng)的構(gòu)建。
步驟7(無(wú)接觸測(cè)溫系統(tǒng)構(gòu)建):通過(guò)嵌入式微控制器采集紅外測(cè)溫傳感器的數(shù)據(jù),并完成閾值設(shè)定、閾值超標(biāo)報(bào)警、體溫與閾值數(shù)據(jù)上傳(串口)等功能;
以上步驟又可以概述為三個(gè)部分:基于深度學(xué)習(xí)的輕量級(jí)目標(biāo)檢測(cè)模型訓(xùn)練、深度學(xué)習(xí)模型部署到終端的過(guò)程實(shí)現(xiàn)和無(wú)接觸式體溫檢測(cè)功能的實(shí)現(xiàn)。
RFBNet 基于SSD 的backbone,受啟發(fā)于人類(lèi)視覺(jué)感知系統(tǒng),結(jié)合了Inception、蟲(chóng)洞卷積的思想,盡量模擬人類(lèi)的視覺(jué)感知,將RFB 集成至SSD,形成RFBNet。通過(guò)設(shè)計(jì)的RFB 模塊,即使在輕量級(jí)主干網(wǎng)上也能提取到高判別性特征,最終RFBNet 速度快、性能好適合在嵌入式 AI推理平臺(tái)中部署。
使用TensorFlow SavedModel 保存的AI 模型可以使用TFLite Converter 轉(zhuǎn)換為tflite 模型,使用TFLite interpreter 加載tflite 模型并實(shí)現(xiàn)模型推理。
TensorFlow Lite 使用流程如圖6 所示。TensorFlow Lite轉(zhuǎn)換后的AI 模型,識(shí)別精度損失很小,而且模型的大小卻縮減很多,所以可以使用AI 模型在嵌入式AI 推理平臺(tái)中進(jìn)行部署。
TensorFlow Lite 轉(zhuǎn)換器根據(jù)輸入的TensorFlow 模型生成FlatBuffer 文件(.tflite)。該轉(zhuǎn)換器支持SavedModel目錄、tf.keras 模型和具體函數(shù)。
TensorFlow Lite 模型加載步驟可分為三步:第一步,加載模型,分配張量;第二步,設(shè)置模型的輸入數(shù)據(jù);第三步,推理預(yù)測(cè),獲取模型的輸出數(shù)據(jù)。
口罩檢測(cè)使用AI 通用技術(shù)目標(biāo)檢測(cè)算法實(shí)現(xiàn),通過(guò)功能分析方案選取確定使用輕量級(jí)的目標(biāo)檢測(cè)算法RFB-Net作為神經(jīng)網(wǎng)絡(luò)模型完成口罩檢測(cè)的模型訓(xùn)練[4]。RFB-Net 需要使用深度學(xué)習(xí)框架搭建網(wǎng)絡(luò)結(jié)構(gòu),故口罩檢測(cè)的實(shí)現(xiàn)步驟與自定義數(shù)據(jù)集深度學(xué)習(xí)模型訓(xùn)練的實(shí)現(xiàn)步驟相似,共分為4 個(gè)步驟:第一步,人臉口罩?jǐn)?shù)據(jù)集標(biāo)注及預(yù)處理;第二步,RFB-Net 神經(jīng)網(wǎng)絡(luò)模型搭建;第三步,配置超參數(shù)訓(xùn)練模型;第四步,加載訓(xùn)練完成的模型推理預(yù)測(cè)驗(yàn)證口罩檢測(cè)功能,如圖7 所示。
圖7 口罩檢測(cè)實(shí)現(xiàn)步驟
人臉口罩?jǐn)?shù)據(jù)集標(biāo)注及預(yù)處理:
(1)獲取數(shù)據(jù)集
下載開(kāi)源的人臉口罩?jǐn)?shù)據(jù)集,數(shù)據(jù)集格式為VOC:Annotations 存放標(biāo)簽文件.xml 文件;ImageSets 存放數(shù)據(jù)集分割的文件比如train、val、test;JPEGimages 存放.jpg格式的圖片文件,數(shù)據(jù)集中人臉戴口罩和不戴口罩的圖片,如圖8 所示。
圖8 口罩佩戴數(shù)據(jù)
(2)補(bǔ)充數(shù)據(jù)集
采集人臉戴口罩與不戴口罩?jǐn)?shù)據(jù)集,使用微軟發(fā)布的用于圖像目標(biāo)檢測(cè)的標(biāo)注工具VoTT 進(jìn)行目標(biāo)檢測(cè)標(biāo)注軟件標(biāo)注和人臉口罩?jǐn)?shù)據(jù)集,并將數(shù)據(jù)集導(dǎo)出為VOC 格式添加至開(kāi)源的人臉口罩?jǐn)?shù)據(jù)集中,如圖9 所示。
圖9 口罩佩戴數(shù)據(jù)標(biāo)注
第一步采集人臉佩戴口罩的圖片,進(jìn)行歸類(lèi),當(dāng)作模型的驗(yàn)證集來(lái)對(duì)模型的準(zhǔn)確率進(jìn)行測(cè)試;
第二步運(yùn)行口罩識(shí)別的模型推理代碼識(shí)別驗(yàn)證集中的圖片并記錄識(shí)別結(jié)果,并根據(jù)每組圖片類(lèi)型統(tǒng)計(jì)識(shí)別率匯總測(cè)試數(shù)據(jù),如表1 所示。
表1 人臉口罩佩戴識(shí)別穩(wěn)定性測(cè)試數(shù)據(jù)
根據(jù)實(shí)際的魯棒性測(cè)試,因部分側(cè)臉圖片人臉區(qū)域太小特征不太明顯導(dǎo)致會(huì)出現(xiàn)識(shí)別不到或者識(shí)別錯(cuò)誤的問(wèn)題,其他情況下模型的識(shí)別率較高,模型的泛化能力已完全滿(mǎn)足應(yīng)用需求。
本文研究的基于深度學(xué)習(xí)的口罩檢測(cè)系統(tǒng)在準(zhǔn)確度和穩(wěn)定性等方面都能滿(mǎn)足實(shí)際場(chǎng)景的應(yīng)用需求,實(shí)現(xiàn)了PC 端的AI模型到小型嵌入式設(shè)備端部署及應(yīng)用的完整開(kāi)發(fā)流程。在未來(lái)可針對(duì)現(xiàn)有系統(tǒng)擴(kuò)展人流統(tǒng)計(jì)、人員信息匹配等擴(kuò)展功能,讓系統(tǒng)功能更加完善盡快地完成商業(yè)化落地。