吳靜雯 李小龍 梁向陽
摘? 要:針對后疫情時代人臉識別系統(tǒng)無法在佩戴口罩的情況下準(zhǔn)確識別人臉的問題,基于OpenCV庫和Dilb庫架構(gòu)系統(tǒng),引入YOLOv5目標(biāo)檢測算法替代Dlib原有的人臉目標(biāo)區(qū)域檢測算法。通過檢測算法獲取一系列目標(biāo)特征值的坐標(biāo)位置后,采用Centriod Tracking目標(biāo)追蹤算法來處理這些特征,從而實現(xiàn)對佩戴口罩人臉圖像的快速識別,系統(tǒng)同時實現(xiàn)了用戶注冊、數(shù)據(jù)錄入、信息管理和日志等功能。
關(guān)鍵詞:深度學(xué)習(xí);YOLOv5算法;目標(biāo)追蹤算法;戴口罩人臉識別
中圖分類號:TP391.4? ? 文獻(xiàn)標(biāo)識碼:A? 文章編號:2096-4706(2023)06-0061-04
Face with Mask Recognition System Based on YOLOv5 and Target Tracking Algorithm
WU Jingwen, LI Xiaolong, liang Xiangyang
(School of Computer Science and Engineering, Xi'an Technological University, Xi'an? 710021, China)
Abstract: In view of the problem that the face recognition system cannot accurately recognize faces under the condition of wearing masks in the post-epidemic era, based on the OpenCV library and Dilb library architecture system, the YOLOv5 object detection algorithm is introduced to replace the original face target area detection algorithm of Dlib. After the coordinate position of a series of target feature values is obtained by the detection algorithm, the Centriod Tracking target tracking algorithm is used to process these features, so as to realize the rapid recognition of face images with masks. The system also realizes the functions of user registration, data entry, information management and log.
Keywords: deep learning; YOLOv5 algorithm; target tracking algorithm; face with mask recognition
0? 引? 言
現(xiàn)如今,為了控制新冠疫情的傳播,國家要求出入公共場所和乘坐公共交通工具必須佩戴口罩。然而,各類公共場所中的人臉識別系統(tǒng)絕大多數(shù)不支持戴口罩狀態(tài)下進(jìn)行精準(zhǔn)識別。這就要求疫情防控人員不僅要檢查人員是否佩戴口罩,而且需要卸下口罩才能進(jìn)行精準(zhǔn)的人臉識別核驗信息。這種解決方案進(jìn)而導(dǎo)致了新冠疫情潛在傳播風(fēng)險的增加。
對此,本文將介紹一種基于YOLOv5與目標(biāo)追蹤算法的戴口罩人臉識別系統(tǒng),該系統(tǒng)可以檢測是否佩戴口罩,并在佩戴口罩的情況下準(zhǔn)確識別目標(biāo)人物。
本系統(tǒng)在OpenCV庫和Dilb庫的基礎(chǔ)上進(jìn)行改進(jìn),采用靈活度更好的YOLOv5目標(biāo)檢測算法以及目標(biāo)追蹤算法,對這四種算法進(jìn)行綜合應(yīng)用。在人臉識別算法中調(diào)用封裝好的代碼替換Dlib原有的人臉目標(biāo)區(qū)域檢測算法,既擁有了Dlib庫基于HOG(Histogram of Oriented Gradients)檢測的精準(zhǔn)性,又擁有YOLOv5的靈活性,通過檢測算法獲取到一系列目標(biāo)特征值的坐標(biāo)位置,后續(xù)采用Centriod Tracking目標(biāo)追蹤算法來處理這些特征。
1? 系統(tǒng)設(shè)計
1.1? 系統(tǒng)功能模塊設(shè)計
由需求分析可知,面向移動測溫的人臉識別系統(tǒng)主要由以下模塊構(gòu)成:登錄注冊、人臉識別、人臉錄入、信息管理和通行記錄。其結(jié)構(gòu)圖如圖1所示。
1.2? 數(shù)據(jù)庫設(shè)計
面向移動測溫的人臉識別系統(tǒng)只有兩類用戶,登錄系統(tǒng)的用戶和掃臉用戶。因此不存在身份權(quán)限問題。管理員用戶只需在使用該系統(tǒng)時進(jìn)行登錄,然后開始其他操作。掃臉用戶需要提前將人臉圖片和相關(guān)信息提交給管理員,管理員再將相關(guān)信息錄入人臉數(shù)據(jù)庫,掃臉用戶在掃臉時候就可以識別人臉了,可以選擇佩戴口罩或者不佩戴口罩識別。數(shù)據(jù)表主要包括管理員表、員工表、人臉信息表、圖片路徑表和通行記錄表,表名依次為:administrator、user、feature、pic、record。利用Pycharm與MySQL數(shù)據(jù)庫建立聯(lián)系,實現(xiàn)數(shù)據(jù)的增刪改查。
2? 核心算法
本系統(tǒng)在搭建PySide2界面之前,采用多種人臉檢測技術(shù)進(jìn)行測試,最后決定綜合運用YOLOv5目標(biāo)檢測算法、Centriod Tracking目標(biāo)追蹤算法、OpenCV、Dlib這四種技術(shù),重點在YOLOv5目標(biāo)檢測和目標(biāo)追蹤算法的優(yōu)化方案上,例如特征點標(biāo)記、提取特征矢量、視頻幀處理優(yōu)化、歐氏距離計算等,保留各個算法的優(yōu)點,并進(jìn)行綜合運用。
2.1? YOLOv5目標(biāo)檢測算法
YOLO算法[1]是目前比較火的目標(biāo)檢測算法,可以用于做安全帽檢測、車牌識別等,效果都是挺好的。目前YOLO算法已經(jīng)發(fā)展到Y(jié)OLOv5系列。YOLOv5的整體模型和YOLOv4相比差別很小,主要特點是靈活度比YOLOv4更高。
YOLOv4典型結(jié)構(gòu)[2]是cspdarknet53+panet+spp+yyolov3 head。整個YOLOv5簡單來講就是通過應(yīng)用類似EfficientNet的channel和layer控制因子來靈活配置不同復(fù)雜度的模型,并且在正負(fù)樣本定義階段采用了跨領(lǐng)域的網(wǎng)絡(luò)匹配策略,從而得到更多的正樣本Anchor,加速收斂。本系統(tǒng)采用最新的YOLOv5算法,進(jìn)行人臉檢測。
2.2? Centriod Tracking目標(biāo)追蹤算法
Centriod Tracking目標(biāo)追蹤算法[3]的核心算法為:
(1)接受邊界框并計算質(zhì)心。對于某一幀找到邊界框并計算質(zhì)心,從而得到質(zhì)心坐標(biāo)(x, y)。如圖2所示。
(2)計算新邊界框與舊邊界框質(zhì)心的歐幾里得距離。本文利用檢測算法得到邊界框,但不會再給每一個檢測到的物體添加新的ID或標(biāo)記(只做檢測,不做識別),而是通過這種方法使新目標(biāo)和舊目標(biāo)可以聯(lián)系起來。如圖3所示。
(3)更新現(xiàn)有目標(biāo)的質(zhì)心坐標(biāo)。質(zhì)心跟蹤算法的前提是:對于一個給定的目標(biāo),將會在連續(xù)幀中出現(xiàn),而且在第N幀和第N+1幀中的質(zhì)心歐氏距離要小于不同目標(biāo)之間的歐式距離;因此在連續(xù)幀之間,根據(jù)歐氏距離最小的原則,將連續(xù)幀中邊界框的質(zhì)心聯(lián)系起來,就可以得到一個目標(biāo)X來表示這些連續(xù)幀中的變化聯(lián)系,通過這種方式來達(dá)到目標(biāo)追蹤的目的。
(4)注冊新的目標(biāo)。當(dāng)新增一個目標(biāo)時,給這個新增目標(biāo)一個目標(biāo)ID,然后存儲這個新目標(biāo)的質(zhì)心坐標(biāo),從步驟(2)開始,對于視頻流中的每一幀計算質(zhì)心的歐式距離,并不斷地更新質(zhì)心坐標(biāo)。
(5)注銷舊的目標(biāo)。一個目標(biāo)在后續(xù)幀中可能會消失,對于已經(jīng)消失的目標(biāo),要注銷它的ID。
2.3? OpenCV
在人臉是否佩戴口罩的檢測中,采用OpenCV[4]自訓(xùn)練軟件來訓(xùn)練戴口罩的人臉檢測模型來進(jìn)行佩戴口罩的人臉檢測。首先獲取戴口罩的圖片以及未戴口罩的人臉圖片共3 000張,把戴口罩的照片看作正樣本,未戴口罩的圖片看作負(fù)樣本,正負(fù)樣本比例為1:3。由于OpenCV不太準(zhǔn)確,而且噪音樣本影響非常大,因此將正負(fù)樣本分別采用人臉識別器進(jìn)行分類并獲取人臉位置,將圖片灰度化處理后進(jìn)行剪裁。由于OpenCV的誤識別,需要手工刪除剪裁完后的圖片中非人臉的圖片。
2.4? Dlib
Dlib[5]是一個機(jī)器學(xué)習(xí)的開源工具包,用于機(jī)器人、嵌入式設(shè)備、移動電話和大性能計算環(huán)境。由于原生的Python不支持安裝Dlib的whl,因此需要先下載Dlib安裝包,然后再安裝。Dlib基于HOG實現(xiàn)人臉檢測,利用Dlib的get_frontal_face_detector(正向人臉檢測器)進(jìn)行目標(biāo)人臉檢測,提取目標(biāo)人臉的外部矩形框,利用訓(xùn)練好的shape_predictor人臉68點特征檢測器,進(jìn)行人臉面部輪廓特征提取。Dlib庫識別人臉比OpenCV更為精確,但是在測試時發(fā)現(xiàn)不能檢測到佩戴口罩的人臉。前期為了檢測佩戴口罩的人臉區(qū)域,采用OpenCV來識別人臉區(qū)域,返回人臉坐標(biāo),并轉(zhuǎn)化為Dlib類型的坐標(biāo)。但是這樣做就會導(dǎo)致無法識別人臉是否佩戴口罩,處理比較麻煩,而且精確度不高。所以后期改用YOLO算法進(jìn)行目標(biāo)檢測。
3? 算法應(yīng)用
3.1? 識別實驗的具體描述
本系統(tǒng)基于Windows 10操作系統(tǒng)構(gòu)建Python 3.7編程環(huán)境實現(xiàn),選用PyTorch 1.8.0深度學(xué)習(xí)框架搭建網(wǎng)絡(luò)模型。在PyCharm正式版2021.2.3中導(dǎo)入Dlib庫、OpenCV庫等庫依賴,實現(xiàn)YOLOv5算法和Centriod Tracking目標(biāo)追蹤算法,使用8.0.30 MySQL Community Server–GPL進(jìn)行數(shù)據(jù)的存儲。實驗數(shù)據(jù)設(shè)置兩2 000張人臉照片進(jìn)行訓(xùn)練,用labelimg標(biāo)注工具進(jìn)行人臉佩戴口罩和不配戴口罩區(qū)域標(biāo)記。標(biāo)記完會生成txt文件,將txt文件轉(zhuǎn)化為YOLO算法可以識別的xml文件。然后將生成的結(jié)果按8:2劃分為訓(xùn)練集和測試集。修改YOLOv5源代碼中關(guān)鍵部分進(jìn)行訓(xùn)練,訓(xùn)練時長大約12小時。初始學(xué)習(xí)率設(shè)為0.01;momentum設(shè)為0.937;權(quán)重衰減系數(shù)(weight decay)設(shè)為0.000 5。
3.2? 結(jié)果分析
基礎(chǔ)解釋[6]:
True Positive(真正,TP):將正類預(yù)測為正類數(shù)。
True Negative(真負(fù),TN):將負(fù)類預(yù)測為負(fù)類數(shù)。
False Positive(假正,F(xiàn)P):將負(fù)類預(yù)測為正類數(shù)—誤報(Type I error)。
False Negative(假負(fù),F(xiàn)N):將正類預(yù)測為負(fù)類數(shù)—漏報(Type II error)。
精確率:正確預(yù)測為正占全部預(yù)測為正的比例公式為:
精確率代表對正樣本結(jié)果中的預(yù)測準(zhǔn)確程度,準(zhǔn)確率則代表整體的預(yù)測準(zhǔn)確程度,包括正樣本和負(fù)樣本。分母是預(yù)測到的正類,精確率的提出是讓模型的現(xiàn)有預(yù)測結(jié)果盡可能不出錯。
召回率:即正確預(yù)測為正的占全部實際為正的比例公式為:
召回率(Recall)是針對原樣本而言的,其含義是在實際為正的樣本中被預(yù)測為正樣本的概率。高召回率說明可能存在更多的誤檢,但仍然會努力找尋每一個應(yīng)該被找到的目標(biāo)。
為了能夠說明不同算法間的優(yōu)缺,在精確率和召回率的基礎(chǔ)上提出了F1值的概念,來對精確率和召回率進(jìn)行整體評價。F1的定義為:
PR曲線:以召回率作為橫坐標(biāo)軸,精確率作為縱坐標(biāo)軸。mAP就是PR曲線與X軸圍成的圖形面積,mAP值為1時模型性能最好。
選取精確率如圖4所示,召回率如圖5所示,平均精度均值(mAP)如圖6所示,F(xiàn)1值如圖7所示作為評價指標(biāo)來驗證本系統(tǒng)的檢測性能,驗證本系統(tǒng)的可應(yīng)用性,檢測結(jié)果如表1所示。
經(jīng)過訓(xùn)練后,測試1 000張不同人臉,與數(shù)據(jù)庫進(jìn)行比對,得出如表2所示的數(shù)據(jù),未識別或識別錯誤的人臉統(tǒng)一使用unknown進(jìn)行標(biāo)記,識別成功計數(shù)器開始計數(shù),設(shè)置時間計數(shù)器并提交至列表中存儲。訓(xùn)練結(jié)果曲線圖如圖8所示。受限于訓(xùn)練樣本和設(shè)備性能的影響,如果設(shè)備性能足夠且訓(xùn)練樣本足夠大,準(zhǔn)確度會大幅提升。
4? 程序運行結(jié)果
本系統(tǒng)有注冊并登錄、采集人臉并提取特征、人臉識別等模塊。下文主要對采集人臉并提取特征、識別人臉模塊的程序結(jié)果進(jìn)行著重介紹。
4.1? 采集并識別人臉特征
人臉信息錄入是利用YOLOv5目標(biāo)檢測算法進(jìn)行人臉區(qū)域標(biāo)定,據(jù)檢測出的人臉區(qū)域,標(biāo)定人臉68個特征點,然后提取128維人臉特征,同時將截取的圖片鏡像處理,一共得到同一個人佩戴口罩和不佩戴口罩以及鏡像文件四種特征值,存入數(shù)據(jù)庫。具體運行結(jié)果如圖9所示。
4.2? 人臉識別
人臉區(qū)域目標(biāo)檢測采用YOLOv5算法,返回坐標(biāo)區(qū)域和識別結(jié)果。人臉識別的過程,根據(jù)檢測出的人臉區(qū)域,標(biāo)定人臉68個特征點,然后提取128D(維)人臉特征,遍歷人臉特征庫,返回二者之間的歐氏距離,如果歐式距離小于一定的閾值,就可以認(rèn)為識別的人臉是同一張人臉,本系統(tǒng)采取的閾值是0.5,在訓(xùn)練樣本足夠大的情況下,閾值可以繼續(xù)調(diào)整。具體識別運行結(jié)果如圖10所示。
5? 結(jié)? 論
本系統(tǒng)是一種基于深度學(xué)習(xí)并利用YOLOv5目標(biāo)檢測算法與Centriod racking目標(biāo)追蹤算法以及Python中的OpenCV庫與Dlib庫的戴口罩人臉識別系統(tǒng)。選用Pytorch 1.8.0深度學(xué)習(xí)框架搭建網(wǎng)絡(luò)模型,識別準(zhǔn)確率會隨著訓(xùn)練時間的大幅增加,準(zhǔn)確度會大幅提升。未來,戴口罩人臉識別系統(tǒng)可以應(yīng)用到門禁考勤、金融支付、公共安防等方面。隨著本系統(tǒng)不斷深入的應(yīng)用和不斷改進(jìn),未來還有可能應(yīng)用到公安“天眼系統(tǒng)”甚至于軍事應(yīng)用方面。
參考文獻(xiàn):
[1] 趙暢.基于YOLOv5改進(jìn)的人臉檢測算法的研究與實現(xiàn) [D].長春:吉林大學(xué),2022.
[2] 王鑫,王忠舉,李銳.基于神經(jīng)網(wǎng)絡(luò)的人臉識別研究綜述 [J].信息與電腦:理論版,2020,32(23):56-58.
[3] 趙元章.人臉遮擋物識別算法的研究與應(yīng)用 [D].西寧:青海師范大學(xué),2022.
[4] 黃渶柯.基于深度學(xué)習(xí)的口罩人臉識別系統(tǒng)研究 [D].長沙:湖南大學(xué),2021.
[5] 黃振龍,吳林煌.基于Yolov5s和Dlib的視頻人臉識別 [J].電腦知識與技術(shù),2021,17(32):94-96.
[6] 肖博健,萬爛軍,陳俊權(quán).采用YOLOV5模型的口罩佩戴識別研究 [J].福建電腦,2021,37(3):35-37.
作者簡介:吳靜雯(2002—),女,滿族,陜西西安人,本科在讀,研究方向:智能科學(xué)與技術(shù);李小龍(2001—),男,漢族,陜西渭南人,本科在讀,研究方向:軟件工程。
收稿日期:2022-10-26
基金項目:2022年西安工業(yè)大學(xué)大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃項目(S202210702109)