張 良,陳周歡,林耿名,葉綺雯,何鎮(zhèn)軒
(韶關(guān)學院信息工程學院,韶關(guān) 512005)
自2019年末,新冠病毒(COVID-19)已席卷世界各個角落。發(fā)展至今,隨著病毒毒性減弱,社會面全面放開,隨之而來的便是大面積的感染。根據(jù)實際情況和相關(guān)研究,個體仍有二次感染病毒的風險。因此群眾對個人的防護措施依然不可松懈,公眾場合、私密場合佩戴口罩依然是最有效的防護措施之一。因此設(shè)計一款輕量的口罩佩戴檢測終端,既可滿足有聯(lián)機條件的工作環(huán)境,也能滿足脫機使用條件的可行性設(shè)計方案。
系統(tǒng)由圖像信息采集模塊、圖像顯示模塊、數(shù)據(jù)處理模塊、數(shù)據(jù)傳輸模塊、報警模塊構(gòu)成。本次設(shè)計使用ART-PI 開發(fā)板作為硬件平臺,為數(shù)據(jù)處理模塊以及數(shù)據(jù)傳輸模塊,其具有32 M靜態(tài)RAM,能更好地適應推理模型的植入。圖像信息采集模塊使用GC0328 攝像頭模塊來捕獲視頻圖像信息,用于進一步的口罩識別處理。多媒體拓展版上的3.5寸LCD 顯示屏用于顯示被攝像頭捕捉的圖像經(jīng)推理模型識別后的結(jié)果。每當捕捉到行人圖像,經(jīng)模型推理后,對佩戴口罩的對象使用綠色框框出,對未佩戴口罩的對象使用紅色框框出,并通過多媒體板的音頻輸出提醒行人佩戴口罩。此外,在聯(lián)機條件下,將由上位PC 擔任數(shù)據(jù)處理模塊,來完成對圖像中行人佩戴口罩的識別,通過串口與ART-PI 主板進行數(shù)據(jù)傳輸。
圖1 方案設(shè)計框圖
RT-Thread 作為一款國產(chǎn)嵌入式IoT OS,與其他RTOS(FreeRTOS、uC/OS 等)的主要區(qū)別是:RT-Thread 除了嵌入式系統(tǒng)的內(nèi)核,還包含網(wǎng)絡(luò)、文件系統(tǒng)、GUI 界面等中間層組件,具有極強的擴展性[1]。ART-PI 為RT-Thread 團隊設(shè)計的一款硬件平臺。在RT-Thread 系統(tǒng)下?lián)碛懈玫馁N合度和使用性。搭載stm32H7 系列高性能芯片,同時板載Wi-Fi、藍牙、TF 卡槽、預留攝像頭、多媒體模塊等各類外設(shè)接口。因此在依托RT-Thread 平臺下選擇ART-PI 作為硬件平臺。
多媒體拓展板為ART-PI 官方配套拓展板,其搭配一塊3.5 寸電容LCD 觸摸屏,WM8988 音頻輸入輸出接口,預留GC0328/OV2640 攝像頭排線接口。整體硬件與ART-PI 主板組成結(jié)構(gòu)簡約、美觀。
RT-AK 為RT-Thread 團隊對實時操作系統(tǒng)開發(fā)的AI套件,其具有將AI 模型部署進工程的能力,提供AI 模型推理API,在目標硬件平臺下獲得對AI 模型極致性能推理的能力。RT-AK 簡單架構(gòu)如圖2所示。
圖2 RT-AK架構(gòu)
首先在上位機通過Tensorflow 等框架訓練得到AI 模型文件,將其轉(zhuǎn)化為Keras、TFlite 模型格式,再通過RT-AK Tools 針對不同硬件平臺進行適配得到集成了AI 的BSP。最后通過RT-AK Lib 在嵌入式端使用AI 模型,完成AI 模型的推理運行。在嵌入式端對RT-AK Lib的使用流程包括:查找模型句柄、初始化模型、數(shù)據(jù)輸入,得到推理結(jié)果如圖3所示。
圖3 嵌入式端推理流程
YOLO網(wǎng)絡(luò)模型是目標檢測算法中應用廣泛的模型之一,相比于兩階段檢測算法,YOLO所使用的單階段檢測算法運行速率更快,但會損失一定精度,對于當前硬件算力有限的條件下,選擇YOLO目標檢測算法更為合適。目前其具有八個官方版本,同時擁有若干個經(jīng)二次修改的網(wǎng)絡(luò)用于特殊的針對性場景。本次設(shè)計針對聯(lián)機和脫機情況,對不同平臺選用不同的版本。對聯(lián)機情況,使用算力更強的PC 機選用官方第五版本中的YOLOv5s[2];對脫機狀態(tài),硬件平臺選用YOLO-Fastest[3]模型,為當前結(jié)構(gòu)最小、算力依賴最低的YOLO網(wǎng)絡(luò)模型。圖像目標檢測的重要評價指標主要有平均精度(average precision,AP)和平均精度均值(mean average precision,mAP)[4]。選用網(wǎng)絡(luò)模型概況見表1。YOLO-Fastest 模型相比較YOLOv5s 來說,mAP 減小近56%,但模型大小為YOLOv5s 的5%,浮點計算量也僅為YOLOv5s 的1.5%。邊緣硬件的算力顯然不如上位PC 機的CPU,甚至是GPU 算力,損失一定精度來換取更小的運算量是合適的。
表1 模型概況
訓練數(shù)據(jù)集來自kaggle 的開源數(shù)據(jù)集,進行格式的轉(zhuǎn)化后得到xml 格式和txt 格式。針對兩種模型的訓練,應用到了Tensorflow[5]和Darknet[6]兩種框架進行訓練和量化。此外RT-AK Tools 對于模型文件的類型也有一定的規(guī)定,在部署AI 模型前需要將Darknet 框架訓練得到的x.weight 量化為x.tflitel 模型類型。表2 為訓練結(jié)構(gòu)。這里在Darknet框架下的max_batches不同于tensorflow 框架下的epoch。batch 和epoch 都為超參數(shù)。一個epoch 是對整個數(shù)據(jù)集做一次迭代,一次迭代中包含若干次訓練,而一次訓練的樣本大小則為batch的值,max_batches 則為最大訓練容量,也稱之為最大迭代次數(shù),在某種程度上max_batches 和epoch 是可以互相換算的。計算方式為:
表2 訓練結(jié)構(gòu)
max_batches= 數(shù)據(jù)集樣本數(shù)×epoch/batch
在Darknet 框架中,cfg 配置文件僅使用到max_batches,這里仍做保留。
系統(tǒng)開機后,判斷是否處在聯(lián)機狀態(tài),聯(lián)機狀態(tài)下將圖片推理部分交由PC 來處理,若在脫機狀態(tài)下將由設(shè)備自己完成圖片的檢測。YOLO 目標檢測算法,粗略來說是對若干個bounding box[7]進行預測,每個box的預測結(jié)果將由x、y、w、h、c、class1、class2、class3……構(gòu)成,對于口罩佩戴識別可以認為二分類檢測(佩戴口罩和未佩戴口罩),每條輸出結(jié)果包含七個屬性。該box 所屬類的置信度X=c*class1(class2),當某X大于預先設(shè)置的閾值時,認為該box 內(nèi)容屬于該類。圖4為系統(tǒng)流程。
圖4 系統(tǒng)流程
針對模型訓練過程中的訓練集和測試集,在模型訓練完成后,使用該推理模型對數(shù)據(jù)集進行抽測。PC和ART-PI兩個不同目標平臺下的模型測試效果分別如圖5、圖6所示。
圖5 YOLOv5s測試
圖6 YOLO-Fastest測試
經(jīng)對100 張圖片,包含約350 個對象進行測試后,結(jié)果見表3。
表3 測試結(jié)果
本項測試針對實際情況進行實際的脫機測試,在脫機狀態(tài)下,手持硬件攝像頭對準需要識別的圖片進行測試,攝像頭捕捉現(xiàn)實圖像后,在硬件側(cè)進行模型推理,最后在LCD 屏上顯示推理結(jié)果。整體延遲較低,效果同PC 機測試YOLO-Fastest 模型時基本一致。這里仍以模型測試中展示圖片進行展示比對,如圖7所示。
圖7 終端脫機測試
本設(shè)計依托RT-Thread 平臺設(shè)計的口罩佩戴檢測終端,實現(xiàn)設(shè)備在聯(lián)機和脫機兩種狀態(tài)下的正常工作。經(jīng)實際測試,聯(lián)機狀態(tài)下的識別率極高,在人流較大的情況下依然可以精準檢測。脫機狀態(tài)下,由于模型較小,相對來說存在一定誤差,相對于PC 的算力也相對較弱,運算速度較慢,能滿足一般需求。另一方面,如何對YOLO-Fastest 網(wǎng)絡(luò)模型進一步剪枝網(wǎng)絡(luò)體量,優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),來提高在邊緣硬件側(cè)的推理效率和準確度是下一步的研究內(nèi)容。本系統(tǒng)具有實際實施成本較低、使用方便、應用場景廣等特點??梢詰糜谏虉龀鋈肟?,小區(qū)出入口等公共場所,提醒往來人群及時佩戴口罩,做好個人防護。