洪政 呂南斌 陳美如 俞琪琪 李嵐
摘要:基于樹莓派開發(fā)板,控制樹莓派車載平臺進行人臉信息采集,并回傳電腦終端。利用MTCNN人臉檢測技術(shù)對采集圖像中出現(xiàn)人臉位置進行并行框選,得到人臉框選圖。在人臉框選的基礎(chǔ)上,使用MobileNet模型對訓(xùn)練集進行卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練,對測試集進行訓(xùn)練結(jié)果測試,方可訓(xùn)練出口罩佩戴識別的權(quán)重文件,作為口罩佩戴識別重要參數(shù)。最終在UI功能界面實現(xiàn)對圖片或?qū)崟r視頻中人臉佩戴口罩的識別。該系統(tǒng)用于解決疫情防控期間,公共場合中流動人員是否佩戴口罩的問題。以達到提高人群口罩佩戴率,避免人工檢測對檢測人員帶來的風險。
關(guān)鍵詞: OpenCV;gpu;mobilenet;mtcnn
中圖分類號:TP391? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)12-0058-03
開放科學(xué)(資源服務(wù))標識碼(OSID):
2021年5月21日,廣州市發(fā)現(xiàn)一例新冠肺炎核酸疑似陽性人員,,廣州全市在10天內(nèi)大排查發(fā)現(xiàn)新增陽性病例11例,并快速對傳播軌跡進行圈定,病毒基因序列進行測序并得到了初步結(jié)果[1]。由此可見,我國國內(nèi)針對新冠肺炎疫情有著高效、嚴密的控制措施,但人類與新冠病毒的斗爭仍是一個長期的過程,為了切斷新冠病毒的傳播途徑,有效降低疫情風險,人們必須保持佩戴口罩的良好習(xí)慣。
樹莓派作為當今Linux單板市場的主要產(chǎn)品,從發(fā)行以來,就憑借著豐富的外擴板平臺的支持,可觀的運行速度與其便攜式的設(shè)計等特點受到了眾多開發(fā)者的認可[2]。其累計銷售量更是緊跟Windows,Mac兩大計算機平臺之后,成了世界上第三大計算機平臺[3]。本系統(tǒng)將樹莓派與車載平臺的主控板相連接,利用樹莓派控制車載平臺移動,使得二維攝像頭平臺可以更快速獲取更多的視野信息,提高樣本信息采集速度,加大采集量,使得訓(xùn)練數(shù)據(jù)權(quán)重具有更好的魯棒性。
目前,卷積神經(jīng)網(wǎng)絡(luò)(CNNs)在計算機視覺識別領(lǐng)域中快速發(fā)展,并取得了顯著性進展,尤其是在圖像分類、人臉識別方面,有著重大的突破。在CNNs優(yōu)質(zhì)性能的推動下,人臉檢測方法也在近幾年被提出。本系統(tǒng)使用多任務(wù)卷積神經(jīng)網(wǎng)絡(luò)技術(shù)(MTCNN),該神經(jīng)網(wǎng)絡(luò)由P-Net、R-Net和O-Net三層網(wǎng)絡(luò)結(jié)構(gòu)組成[4]。通過三層網(wǎng)絡(luò)結(jié)構(gòu),對篩選出圖片中的人臉候選框,進行不斷優(yōu)化處理,最終完成圖像中的人臉識別。MTCNN在人臉識別的基礎(chǔ)上還具有多個人臉識別的功能。非常適合在人群密集的場所進行人臉識別。
本文針對疫情防控過程中的人群情況,搭建了一個口罩佩戴識別的系統(tǒng)。該系統(tǒng)可以憑借樹莓派車載平臺良好的機動性,卷積神經(jīng)網(wǎng)絡(luò)增強式的口罩佩戴識別訓(xùn)練,以及無接觸式地傳遞提醒佩戴口罩信息的功能,能在人流量、面積較大的商業(yè)中心或者交通樞紐中心,高效、快速、準確地識別未佩戴口罩的人群,并由電腦終端將識別信息回傳到樹莓派車載平臺,達到提高人群流動性,降低疫情風險的作用。
2? 數(shù)據(jù)采集模塊
數(shù)據(jù)采集模塊主要負責人臉數(shù)據(jù)采集,以供之后終端訓(xùn)練和實時口罩佩戴識別模塊調(diào)用。該模塊首先通過樹莓派車載平臺搭載的樹莓派攝像頭對識別的人臉進行采集并保存,再回傳至電腦終端,由電腦終端進行保存。具體數(shù)據(jù)采集模塊運行流程圖如下:
2.1 二維平臺樹莓派攝像頭
二維平臺樹莓派攝像頭是采集信息的重要元件,它由兩個舵機對其上下左右方向進行控制,以便獲得更廣闊的視野,提高人臉采集的效率。樹莓派攝像頭數(shù)據(jù)傳輸接口,與樹莓派USB接口連接,實現(xiàn)對采集數(shù)據(jù)的實時傳輸至樹莓派,進行數(shù)據(jù)處理。
2.2 OpenCV采集人臉數(shù)據(jù)集
人臉信息采集是通過樹莓派攝像頭傳回視頻,利用樹莓派調(diào)用OpenCV中的Haar特征分析級聯(lián)分類器[5]人臉檢測中的haarcascade_frontalface_default.xml(存儲人臉分類器)文件對視頻中的人臉進行采集。該采集過程是一個初步粗略采集過程,采集的圖像中會包含多個人臉,可以快速捕捉更多的信息,同時調(diào)用的MTCNN卷積神經(jīng)網(wǎng)絡(luò)對多人臉有著較大的處理優(yōu)勢。
采集過程:首先對識別的圖像進行灰度化,以便該采集樣本在調(diào)用中更便于在OpenCV中對圖片進行處理加工,然后對灰度圖中的人臉區(qū)域中的人臉進行截取,為了截取的頁面包含更多的人臉,此處對圖片的截取區(qū)域進行了擴大,最后將截取的灰度圖命名格式為User+name+number.jps文件保存到硬盤。并由樹莓派回傳至電腦終端,作為訓(xùn)練的數(shù)據(jù)基礎(chǔ)。運行人臉信息采集模塊成果圖,如下:
3 口罩識別分類器訓(xùn)練模塊
口罩識別分類器模塊,主要針對電腦終端已有的數(shù)據(jù)集進行預(yù)處理、訓(xùn)練,最終生成權(quán)重文件,該文件將作為人臉口罩佩戴識別的檢測依據(jù)。預(yù)處理部分,是將數(shù)據(jù)采集模塊得到的圖像通過MTCNN的逐層人臉框選,并行框選出圖中所有存在的人臉。訓(xùn)練部分則是對預(yù)處理數(shù)據(jù)集進行劃分,訓(xùn)練集用于導(dǎo)入MobileNet模型中進行訓(xùn)練,只有當訓(xùn)練結(jié)果在驗證集執(zhí)行達到設(shè)定的標準,才生成權(quán)重文件??谡肿R別分類器訓(xùn)練模塊運行流程圖如圖4所示。
3.1? MTCNN卷積神經(jīng)網(wǎng)絡(luò)人臉識別模型
由于之前樹莓派車載平臺終端采集回傳的數(shù)據(jù)集中,人臉在圖中的位置不是固定的,所以在計算機終端需要對回傳圖片的人臉進行定位。需要利用MTCNN對圖像中的人臉進行識別。
MTCNN主要工作原理,是將一個圖像進行不同尺度縮放,生成圖像金字塔,確保圖像中不同大小的人臉都可以被同時識別。
Step1:調(diào)用defcreate_Pnet(weight_path):創(chuàng)建P-net類,將圖像金字塔傳入P-net生成大量人臉候選框,并基于原圖進行粗略人臉框定位。
Step2:將粗略人臉候選框的框圖傳入def create_Rnet(weight_path):命令創(chuàng)建的R-net類,R-net使用crop_img =copy_img[int(rectangle[1]):int(rectangle[3]),int(rectangle[0]):int(rectangle[2])]命令利用Pnet處理后的人臉框圖坐標對原圖進行截取,并調(diào)用scale_img = cv2.resize(crop_img, (24, 24))命令對截取圖像修改為24*24大小,R-net類會從是否存在人臉判斷評分和框選更精準人臉兩個方面對修改后的截取圖進行操作。
Step3:O-net類對R-net精修的48*48大小人臉候選框圖進行更精準的P-net類似操作,輸出的圖像為最終人臉區(qū)域框選圖像。
3.2 MobileNet神經(jīng)網(wǎng)絡(luò)口罩訓(xùn)練模型
在口罩佩戴識別過程中,口罩識別權(quán)重直接影響了口罩佩戴識別效果。為了得到一個魯棒性較好的口罩識別權(quán)重,本文采用了增強型的MobileNet神經(jīng)網(wǎng)絡(luò)算法對樣本集進行訓(xùn)練,并得到最終的口罩識別權(quán)重文件。
1)數(shù)據(jù)預(yù)處理:在準備樣本集過程中,會涉及大量樣本信息,需要對樣本信息進行分類,并整合成數(shù)據(jù)集,方便訓(xùn)練過程中進一步調(diào)用。本數(shù)據(jù)集中每個樣本圖片名都按固定的存儲標簽進行保存,例如佩戴口罩樣本采用mask_num.jpg作為文件名,同理,未佩戴樣本集再用nomask_num.jpg作為文件名。
因為MobileNet神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中需要對樣本集按0、1類型進行快速識別,則需要調(diào)用write(image + ";" + str(classes.index(image.split("_")[0]))+ "\n")函數(shù)將以“文件名+;+判斷位”格式進行寫入操作。此處判斷位需要根據(jù)文件名進行區(qū)分,mask和nomake文件名分別對應(yīng)0、1判斷位;文件名是調(diào)用樣本圖片的依據(jù)。集成的樣本數(shù)據(jù)集標簽圖像如下:
2)劃分訓(xùn)練集和驗證集:打開樣本集文本,從中順序選出10000行數(shù)據(jù),并使用np.random.shuffle(lines)命令將其順序打亂,以保證訓(xùn)練結(jié)果的擬合率。再使用num_val = int(len(lines)*0.1)命令對篩選出打亂的數(shù)據(jù)集按9:1劃分為驗證集和訓(xùn)練集。
3)創(chuàng)建MobileNet模型:model=MobileNet(input_shape=[HEIGHT,WIDTH,3],classes==2)命令創(chuàng)建MobileNet模型,其中input_shape中參數(shù)分別對應(yīng)高、寬、圖片數(shù)目,由這三項組成訓(xùn)練的基礎(chǔ)。classes參數(shù)表示測試的目標分類,本系統(tǒng)只存在兩個目標對象,故此處classes參數(shù)值為2。
4)為了保證訓(xùn)練結(jié)果有更好的魯棒性和更高的訓(xùn)練效率,本系統(tǒng)調(diào)用了多種已經(jīng)訓(xùn)練出的訓(xùn)練權(quán)重,輔助本系統(tǒng)訓(xùn)練結(jié)果,還利用def Alignment_1(img,landmark):函數(shù)對識別圖像的翻轉(zhuǎn)、色域轉(zhuǎn)換等操作對圖像進行多方面識別,以增強訓(xùn)練數(shù)據(jù)。
5)設(shè)定初期學(xué)習(xí)率為[1×103],調(diào)用model.fir(self,x,y,batch_size,epochs,initial_epoch,callback)函數(shù),該函數(shù)參數(shù)包括了訓(xùn)練數(shù)據(jù)、訓(xùn)練數(shù)據(jù)標簽、更新權(quán)重、訓(xùn)練輪數(shù)、初始訓(xùn)練次數(shù)、list數(shù)據(jù)回調(diào)。實現(xiàn)了將預(yù)處理訓(xùn)練數(shù)據(jù)導(dǎo)入初步訓(xùn)練模型進行訓(xùn)練以及驗證集的驗證。通過10個世代訓(xùn)練后,需要以[1×104]的學(xué)習(xí)率再次進行訓(xùn)練,以保證訓(xùn)練結(jié)果的可靠性。最終生成訓(xùn)練權(quán)重存入last_one.h5中,即可進行人臉佩戴口罩檢測。
4? UI界面
UI界面作為本系統(tǒng)和工作人員之間進行信息傳遞的媒介,對于工作人員獲取檢測結(jié)果有著重要作用[6]。本系統(tǒng)UI設(shè)計,針對圖片選擇識別和實時口罩識別兩個功能進行實現(xiàn)。圖片選擇識別功能是對非樹莓派返回的圖片進行識別,可滿足工作人員除實時視頻識別之外的識別需求。UI界面效果圖如下:
1)圖片選擇識別功能,即在本機中找到所需識別的圖片進行上傳,并實現(xiàn)人臉佩戴口罩識別。因此,該UI界面調(diào)用定義了一個表單和表單內(nèi)部文件域,按鈕的初始化聲明。UI界面表單第一行由一個文本和一個文件域組成,該行文本聲明了本行功能,文件域則可進入文件選擇模式以供用戶選擇上傳文件。
由于上傳圖片文件大小不一,此處還需對上傳圖片進行統(tǒng)一的格式化,以便符合之后的識別標準。第二行為運行識別按鈕,該按鈕會觸發(fā)定義的img_recognition命令,對格式化后的圖像進行口罩佩戴識別。選擇圖像識別功能過程以及效果如圖7、圖8所示:
2)實時口罩識別功能,在UI界面表單第三行進行實現(xiàn),本行包含了一個觸發(fā)按鈕,觸發(fā)按鈕后執(zhí)行Husin_facemask命令,再調(diào)用mask_recognize.py文件。mask_recognize.py文件在口罩識別分類器訓(xùn)練模塊的基礎(chǔ)上完成整個口罩佩戴識別。其中包含了MTCNN與MobileNet模型的建立、檢測人臉、截取圖像和人臉關(guān)鍵點對齊。執(zhí)行以上4個部分函數(shù),則進行人臉佩戴口罩實時識別。實時人臉佩戴口罩識別效果如圖9:
5 結(jié) 論
基于樹莓派人臉口罩佩戴識別系統(tǒng)利用車載平臺良好的機動性、樹莓派開發(fā)板體積小、運算能力強的優(yōu)勢以及MTCNN人臉識別模型和Mobile模型訓(xùn)練結(jié)果的可靠性,可以對公共場所中未佩戴口罩人群進行準確識別,并通過電腦終端將識別結(jié)果以實時視頻的方式進行回傳。該系統(tǒng)不僅提高了公共場所佩戴口罩識別的效率還避免了工作人員在工作中存在的風險。由于人臉在佩戴口罩后出現(xiàn)了遮擋,會對MTCNN人臉識別造成一定的影響,在光線充足的環(huán)境下才能達到更好的效果。為了更穩(wěn)定地對人臉配口罩進行識別,該系統(tǒng)可以通過改變目標檢測方法,使用SSD One-stage目標檢測算法[7]代替。該算法在稀疏環(huán)境的大目標檢測方面,運行速度超過了YOLO檢測算法[8],精度超過了MTCNN檢測算法,能極大彌補MTCNN識別受影響的缺點。
參考文獻:
[1] 鄧雅蔓.記者親歷最大規(guī)模的核酸檢測 聚焦廣州疫情防控 高風險地區(qū)管理和疫苗接種成兩大防線[J].中國經(jīng)濟周刊,2021(11):36-40.
[2] Mathias Claussen,禾沐.樹莓派4:全新的背后,依然是優(yōu)秀的表現(xiàn)嗎?[J].單片機與嵌入式系統(tǒng)應(yīng)用,2020,20(6):1-4.
[3] 韓進,楊永明,崔吉鳳.基于STM32和樹莓派的智能門禁系統(tǒng)[J].電子設(shè)計工程,2021,29(3):123-126,131.
[4] 曾維,江禮東,劉躍元,等.多任務(wù)級聯(lián)卷積的人臉跟蹤系統(tǒng)設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2020,20(7):47-50,55.
[5] 張彩麗,劉廣文,詹旭,等.基于新增haar特征和改進AdaBoost的人臉檢測算法[J].長春理工大學(xué)學(xué)報(自然科學(xué)版),2020,43(2):89-93.
[6] 陳苡涵.淺談UI設(shè)計的敏捷方法與理論實踐[J].西部皮革,2021,43(10):81-82.
[7][1] 王相友,李晏興,楊振宇,等.基于改進YOLO v4模型的馬鈴薯中土塊石塊檢測方法[J].農(nóng)業(yè)機械學(xué)報,2021,52(8):241-247,262.
[8]鮑文斌,張冬泉.XSSD-P:改進的SSD行人檢測算法[J/OL].計算機工程與應(yīng)用:1-11[2021-06-30].http://kns.cnki.net/kcms/detail/11.2127.TP.20210623.1013.002.html.
【通聯(lián)編輯:唐一東】