黃振龍 吳林煌
摘要:文章實現(xiàn)了基于Yolov5s和Dlib的視頻實時人臉識別?;陂_源的人臉數(shù)據(jù)集CelebA重新訓(xùn)練Yolov5s網(wǎng)絡(luò),使得Yolov5s能夠檢測并標記出圖像中的人臉位置。將Yolov5s檢測到的人臉區(qū)域圖像輸入到第三方人臉識別模塊Dlib中,首先提取出68點人臉面部關(guān)鍵點,再將關(guān)鍵點生成人臉特征向量,同時通過Dlib模塊提取事先準備好的需要識別的人臉圖像的特征向量,并保存到相應(yīng)的人臉數(shù)據(jù)庫中。由于同一個人的人臉特征向量映射到高維空間的距離是接近的,基于此引入更高效Annoy算法對人臉特征向量創(chuàng)建索引,提高人臉識別速度。
關(guān)鍵詞: 人臉識別; Yolov5s; Dlib; Annoy; OpenCV
中圖分類號:TP391 ? ? ? ?文獻標識碼:A
文章編號:1009-3044(2021)32-0094-03
Video Face Recognition based on Yolov5s and Dlib
HUANG Zhen-long,WU Lin-huang
(College of Physics and Information Engineering, Fuzhou University, Fuzhou 350108, China)
Abstract:This paper realizes video real-time face recognition based on yolov5s and Dlib.yolov5s network is retrained based on the open source face data set celebA, so that yolov5s can detect and mark the face position in the image. The face region image detected by yolov5s is input into the third-party face recognition module Dlib. Firstly, 68 face key points are extracted, and then the key points are generated into face feature vector. At the same time, the feature vector of the prepared face image to be recognized is extracted through the Dlib module and stored in the corresponding face data database. Because the distance between the face feature vector of the same person and the high-dimensional space is close, based on this, a more efficient annoy algorithm is introduced to index the face feature vector to improve the speed of face recognition.
Key words:face recognition; yolov5s; Dlib; annoy; OpenCV
1 背景
近年來隨著機器學習的興起和飛快發(fā)展,傳統(tǒng)的應(yīng)用已經(jīng)將機器學習與之相結(jié)合,來提高應(yīng)用的智能化和用戶體驗感,如人臉考勤、人臉閘機通道、刷臉支付等人臉識別應(yīng)用已經(jīng)在生活中屢見不鮮了[1]。
人臉識別是基于人臉面部的特征信息進行身份識別,是目前應(yīng)用范圍最廣泛和最易被接受的生物特征識別方法之一。相比較于靜態(tài)圖片而言,視頻提供了更加豐富的空間與時間信息,實際的現(xiàn)實應(yīng)用場景也更加廣泛,如在安防領(lǐng)域中,針對監(jiān)控攝像頭采集到的視頻流,將人工智能和攝像頭相結(jié)合,能夠自動在圖像中檢測和跟蹤人臉,進而進行人臉識別[2-3]。
本文實現(xiàn)了基于視頻流的人臉識別,通過OpenCV每隔若干幀獲取圖像,利用重新訓(xùn)練的Yolov5s模型提取出人臉區(qū)域圖像,通過Dlib第三方深度學習開源庫將人臉區(qū)域圖像轉(zhuǎn)換為人臉特征向量,與建立好的本地人臉數(shù)據(jù)庫中特征向量進行歐式距離的比較,小于設(shè)定的閾值則認為是同一個人,否則標記為未知人臉。基于相同人臉在高維空間映射的距離都是相近的,引入近似最近鄰算法Annoy對人臉特征向量創(chuàng)建索引提高人臉匹配速度。
2 系統(tǒng)總體設(shè)計
系統(tǒng)的總體設(shè)計框架如圖1所示。通過OpenCV逐幀讀取視頻,每隔若干幀進行人臉檢測和識別。采用基于開源的人臉數(shù)據(jù)集CelebA重新訓(xùn)練的Yolov5s網(wǎng)絡(luò)作為人臉檢測的模型提取出人臉區(qū)域圖像,人臉識別采用了Dlib第三方模塊,首先通過人臉關(guān)鍵點標記模型標記出68個面部關(guān)鍵點,再將獲取到的68個關(guān)鍵點轉(zhuǎn)換成128維人臉特征向量,通過計算人臉的特征向量與本地人臉數(shù)據(jù)庫的特征向量的歐氏距離來判斷是否同為一個人,當距離小于特定閾值時,認為是同一個人,打上人物姓名標簽,否則打上unKnown標簽。最后將打上標簽的圖像以及視頻輸出到本地。
3 人臉檢測
目前從圖片中檢測并提取出人臉區(qū)域有Dlib、OpenFace、OpenCV等諸多成熟可用的方法。傳統(tǒng)目標檢測算法并沒有將特征提取與分類訓(xùn)練結(jié)合起來,當提取的特征丟失了部分有用信息時,將無法再次從訓(xùn)練中恢復(fù),導(dǎo)致目標檢測成功率降低,阻礙了傳統(tǒng)檢測方法獲得更加詳盡的特征描述。近年來基于深度學習的目標檢測方法相比較于傳統(tǒng)方法體現(xiàn)出了各方面的優(yōu)勢,其中YOLO目標檢測算法利用卷積神經(jīng)網(wǎng)絡(luò)回歸目標的位置并得到類別,實現(xiàn)了端到端的實時目標檢測,具有較快的速度與泛化性。相對于傳統(tǒng)的檢測方法,YOLO有更好的魯棒性,模型的體積更小,能夠更好達到實時的需求[4-5]。
3.1 YOLOv5S
人臉檢測是人臉識別的第一個步驟,從具有復(fù)雜背景的圖像處檢測出人臉的位置,這一個步驟對于后續(xù)的人臉特征提取和識別的準確性具有重大的影響。人臉區(qū)域檢測采用了YOLOv5S模型。YOLOv5目標檢測算法憑借著其優(yōu)秀的檢測速度和精度,已經(jīng)在醫(yī)學圖像,行人檢測和車輛識別等眾多領(lǐng)域應(yīng)用廣泛。與基于Darknet架構(gòu)的yolov4相比,模型大小減少了近90%,在準確度方面與其不相伯仲,也是目前最為先進的目標檢測技術(shù),高達140FPS的目標識別速度是目前推理速度最強的檢測模型之一[6-7]。
官方提供的預(yù)訓(xùn)練模型能夠檢測出80種類別,實際我們通常需要檢測的是具體的某一項類別,不適合我們的應(yīng)用場景,而且官方的預(yù)訓(xùn)練權(quán)重只能在圖片中識別出整個人,要想檢測出人臉區(qū)域只能在其基礎(chǔ)上用人臉數(shù)據(jù)集重新訓(xùn)練[8]。選用了開源人臉數(shù)據(jù)集CelebA人臉數(shù)據(jù)集在YOLOv5s的官方源碼和它的權(quán)重上重新訓(xùn)練,使得YOLOv5s能夠?qū)崿F(xiàn)的檢測并檢測出圖像中的人臉位置,檢測效果如圖2所示。本次的實驗運行環(huán)境是:CPU是 Inter i5-1035G1,GPU為 NVIDIA GeForece MX350,操作系統(tǒng)為Win 10,使用了CUDA10.2庫文件。訓(xùn)練結(jié)果曲線圖如圖3所示,橫坐標為迭代次數(shù)200,縱坐標其中Box是Bounding Box的GIoU損失函數(shù)均值,值越小邊界框就越準;Objectness是目標檢測loss均值,越小代表目標檢測的正確率越高;Precision衡量的是分類器得出的正類并且確實屬于正類的比例;Recall是召回率,衡量的是分類器是否能識別出正類樣例的能力。mAP@0.5和mAP@0.5:0:0.95是用精度Precision和召回率Recall作為兩軸作圖后圍成的面積,@0.5代表IoU為正負樣本的閾值,@0.5:0.95表示閾值取0.5:0.95后取均值。一般主要觀察Recall和Precision的波動情況判斷網(wǎng)絡(luò)的訓(xùn)練效果,從圖3可以判斷波動不大,網(wǎng)絡(luò)的訓(xùn)練效果良好。
4 人臉識別
Dlib是一個基于C++開發(fā)的深度學習開源工具,也提供了對python語言的開發(fā)接口,對于人臉特征提取有著良好的支持,提供了很多已經(jīng)訓(xùn)練好的成熟人臉面部特征提取模型供開發(fā)者使用,相對于其他深度學習開源框架,其具有更好的優(yōu)越性和通用性[9],因此人臉識別模塊采用了Dlib第三方模塊。將YOLOv5s網(wǎng)絡(luò)檢測出的人臉區(qū)域圖像作為Dlib模塊的輸入獲取到128維人臉特征向量,采用對比歐式距離的方法來計算人臉相似度。
4.1 人臉特征向量提取
將YOLOv5s模型檢測到的人臉區(qū)域圖像作為第三方Dlib模塊的輸入,首先加載shape_predictor_68_face_landmarks模型來對輸入的圖像完成人臉面部的68個關(guān)鍵特征點的提取,68個特征點主要分布在眉毛、雙眼、鼻子以及嘴的位置。
通過加載dlib_face_recognition_resnet_model_v1模型來將提取到的68個面部關(guān)鍵特征點轉(zhuǎn)換成128維人臉特征向量。Dlib人臉識別主要是基于深度殘差網(wǎng)絡(luò),對于普通的網(wǎng)絡(luò),當網(wǎng)絡(luò)深度逐漸增大的時候,誤差也會隨之增大,而殘差網(wǎng)絡(luò)相比較于誤差較小,能夠有效地減少梯度爆炸和梯度消失的問題[10-11]。
4.2 基于Annoy算法的人臉檢索
通過Dlib模塊將事先準備好的人臉圖像Embedding獲取到128維人臉特征向量,保存到Imdb文件中,創(chuàng)建好本地人臉數(shù)據(jù)庫。為了提高識別的準確率,對于單人提供了多張不同角度和光線的人臉圖像,通過歐式距離求平均值來降低誤差。建立本地數(shù)據(jù)庫的過程如圖4所示。
人臉識別是基于已知的人臉本地數(shù)據(jù)庫識別或者驗證一個或者多個人臉,可以使用目前常用的機器學習分類算法如SVM、KNN等。如果針對數(shù)據(jù)庫每個人臉都進行距離計算比較得出結(jié)果,效率低下。由于同一個人的人臉特征向量在高維空間映射點距離都是相近的,基于此使用了Annoy算法對本地人臉數(shù)據(jù)庫建立索引,創(chuàng)建一個二叉樹實現(xiàn)快速檢索距離最近的人臉特征向量。
下面實現(xiàn)了對KNN算法和ANN的Annoy算法進行了識別準確率和數(shù)據(jù)庫人臉檢索速度的對比。KNN算法的時間復(fù)雜度是線性增長的,面對大規(guī)模數(shù)據(jù)檢索以及人臉特征向量高維的數(shù)據(jù)信息無法獲得理想的檢索結(jié)果,而Annoy算法通過縮小遍歷空間犧牲精度來提高檢索速度,具有查找效率高和存儲空間小的優(yōu)點[12]。在有限的本地人臉數(shù)據(jù)集大小的情況下,由表1的數(shù)據(jù)可得Annoy算法比KNN算法能夠得到實現(xiàn)較高的準確率以及更快的檢索速度,而如果KNN算法若要達到更高的準確率則要求更大的數(shù)據(jù)集去訓(xùn)練模型。整體網(wǎng)絡(luò)結(jié)構(gòu)的人臉識別效果如圖5所示。
5 人臉識別測試
測試環(huán)節(jié)提供了五個人的人臉圖片,每個人準備了各20張共100張圖片,不屬于人臉本地數(shù)據(jù)庫的人臉圖像50張,由表2試驗結(jié)果可知識別出正類的正確率有96%,識別出反類的正確率有90%,表明該人臉識別的方案可實現(xiàn)實際應(yīng)用的需求。
參考文獻:
[1] 吳昊,陳虎,李俊波.淺析人工智能技術(shù)的發(fā)展與應(yīng)用[J].信息系統(tǒng)工程,2020(6):69-70.
[2] 孫鵬.人臉識別技術(shù)研究與應(yīng)用進展概述[J].科技傳播,2019,11(24):130-131.
[3] 林星翰,張帥.人臉識別技術(shù)發(fā)展與應(yīng)用[J].家庭科技,2020(5):13-15.
[4] 王鑫,王忠舉,李銳.基于神經(jīng)網(wǎng)絡(luò)的人臉識別研究綜述[J].信息與電腦(理論版),2020,32(23):56-58.
[5] 許德剛,王露,李凡.深度學習的典型目標檢測算法研究綜述[J].計算機工程與應(yīng)用,2021,57(8):10-25.
[6] 李阿娟.YOLOv5算法改進及其現(xiàn)實應(yīng)用[D].太原:中北大學,2021.
[7] 肖博健,萬爛軍,陳俊權(quán).采用YOLOV5模型的口罩佩戴識別研究[J].福建電腦,2021,37(3):35-37.
[8] Shi F F,Zhou H,Ye C Y,et al.Faster detection method of driver smoking based on decomposed YOLOv5[J].Journal of Physics:Conference Series,2021,1993(1):012035.
[9] 徐浩浩.基于Python深度學習的人臉識別方法探究[J].現(xiàn)代信息科技,2019,3(17):88-90.
[10] 劉兆豐.Dlib在人臉識別技術(shù)中的運用[J].電子制作,2020(21):39-41,7.
[11] 王曉紅,韓嬌,李珊珊.基于人臉檢測器的實時視頻人臉檢測與跟蹤[J].信息通信,2019,32(2):56-57.
[12] Linhao Li,Qinghua Hu.Optimized high order product quantization for approximate nearest neighbors search[J].計算機科學前沿,2020,14(2):259-272.
【通聯(lián)編輯:代影】
收稿日期:2021-06-20
作者簡介:黃振龍(1999—),男,福建福州人,碩士,主要研究方向為多媒體技術(shù);吳林煌(1984—),男,福建漳州人,博士,副研究員,主要研究方向為AI智能信號處理、視頻編碼、FPGA與嵌入式系統(tǒng)設(shè)計。