李有乘
摘 要:基于視頻的人臉檢測及識別是一個比較熱門的研究方向。本文使用了一種方法對視頻中的人臉進行檢測。在收集檢測后的人臉模型后,本研究訓練了一個輕型的深度神經(jīng)網(wǎng)絡模型,并使用該模型來進行人臉識別。試驗結(jié)果表明,該模型可以較為高效地檢測出人臉。
關鍵詞:視頻監(jiān)控;人臉檢測;人臉識別;CNN
中圖分類號:TP389.1文獻標識碼:A文章編號:1003-5168(2020)20-0027-03
Abstract: Face detection and recognition based on video is a popular research direction. This paper used a method to detect faces in the video. After collecting the detected face models, this study trained a lightweight deep neural network model and used this model for face recognition. The experimental results show that the model can detect faces more efficiently.
Keywords: video surveillance;face detection;face recognition;CNN
近年來,深度學習是計算機領域發(fā)展最為迅速的一個方向,人臉識別也是目前非常熱門的研究方法。與傳統(tǒng)的一些認證方法相比較(如密碼認證、指紋認證等),人臉識別具有可以輕易采集相關信息(監(jiān)控)、不需要接觸目標等優(yōu)勢。人臉識別流程一般分為兩個部分:一是人臉檢測,即在一張圖片里面正確檢測人臉的具體坐標;二是人臉識別,即把不同的人臉信息進行認證對比,從而識別哪個是真正的目標。有別于深度學習,傳統(tǒng)的人臉檢測主要是基于統(tǒng)計和知識的。例如,江偉堅等[1]基于Haar-like特征和積分圖的方法進行人臉檢測。而深度學習則不一樣,是通過對圖片的底層特征(像素級別)進行抽取從而得到高維的特征[2],這樣抽取得到的特征,不會受到其他因素的影響,如信道干擾等,具有很強的抗噪性。王瑋等[3]提出了一種基于高斯拉普拉斯算子得到人臉邊緣進而進行人臉檢測的方法。Zhang等[4]提出了MTCNN(Multi-task Convolutional Neural Networks),MTCNN是一種基于多個檢測框級聯(lián)的卷積神經(jīng)網(wǎng)絡,這個網(wǎng)絡可以同時檢測人臉的特征點,從而大幅提高檢測的成功率。而人臉識別就是對人臉的信息進行一個多分類的判斷。鄭德偉[5]提出了一種基于機器學習的人臉識別方法。
本文基于Zhang等[4]提出的想法,設計了一個人臉檢測模型,對視頻中的人臉信息進行檢測,在檢測出人臉信息之后,構(gòu)建了一個輕型的CNN(Convolutional Neural Networks,卷積神經(jīng)網(wǎng)絡)來對人臉的信息進行識別分類。結(jié)果表明,該模型在識別視頻中的人臉信息時具有較快的速度。
1 流程設計
本文使用OpenCv來進行視頻文件的讀取,OpenCv是一個開源的跨平臺計算機視覺庫,具有高效、易于使用的特點。在使用OpenCv讀取視頻文件之后,視頻會被分解為一個一個的圖片,因為視頻本身就是由多個圖片構(gòu)成的,1 s的視頻有24張圖片信息,將這些圖片信息進行處理,放入MTCNN中進行人臉檢測,檢測結(jié)果放入單獨的文件夾中。然后對這些圖片進行手動標注,標注之后構(gòu)建一個輕型的CNN網(wǎng)絡,對這些人臉圖片進行訓練。
2 CNN及MTCNN網(wǎng)絡結(jié)構(gòu)
CNN是具有一定深度的前饋神經(jīng)網(wǎng)絡(Feedforward Neural Networks),是計算機視覺方向最具代表性的算法之一。其主要思想就是使用卷積層(Convolutional Layer),對輸入的數(shù)據(jù)進行卷積運算,通過使用多個卷積核將圖片信息提取成多個淺層的特征圖(Feature Map)。從特征圖上面,CNN可以得到該圖片在某個卷積核大小上面的特征圖像,使用該特征圖像就可以賦予CNN一定的泛化能力。然后,對于得到的特征圖,還可以進一步進行卷積運算,從而得到深層的特征圖。一般來說,淺層的特征圖是目標的一些比較通用的特征,如顏色、邊緣等,而深層的特征圖則是學習一些目標獨有的特征,人臉識別中可以學習人臉特征,如五官在整張圖片的大概位置。
MTCNN是一種基于級聯(lián)架構(gòu)的多任務CNN網(wǎng)絡,該網(wǎng)絡由三個網(wǎng)絡構(gòu)成:P-Net、R-Net和O-Net[4]。P-Net主要作用是把圖像進行初分類,得到一系列的Archer BOX(選定的區(qū)域),將這些Archer BOX里面準確度不達標的去掉,從而得到一些準確度較高的待選Archer BOX。而R-Net和O-Net的主要作用,一個是進一步對Archer BOX進行篩選,將不合格的去掉,另一個是把人臉的五官作為監(jiān)測點來判斷是否合格。這樣經(jīng)過這三個網(wǎng)絡共同的判斷,最后可以得到一個準確率比較高的結(jié)果。
3 基于CNN的人臉識別模型
3.1 網(wǎng)絡結(jié)構(gòu)
本文的模型基于VGG16的思想,即將一個大的卷積核轉(zhuǎn)換為多個小卷積核共同工作,這樣有兩個優(yōu)點:一是可以減少大卷積核的參數(shù)數(shù)量過多的問題,加快訓練速度,二是卷積核減小,大大減少了內(nèi)存的占用空間,從而可以減少訓練平臺的要求。
在接收經(jīng)過MTCNN檢測的人臉信息后,進行統(tǒng)一裁剪,將圖片都轉(zhuǎn)換成為128×128×3的規(guī)格,然后輸入網(wǎng)絡中。該網(wǎng)絡一共有5個con層,每一個包含三個部分,即一個3×3的卷積層、一個BN(Batch Normalization,批標準化)層、一個池化層(Max Pooling,最大池化層)。卷積層的作用是提取圖片的特征,BN層的作用是把經(jīng)過卷積之后的參數(shù)標準化,從而加快訓練速度,池化層的作用是進行降維操作,將關聯(lián)較小的元素去掉,減少干擾。經(jīng)過5層con后,會有3個全連接層,全連接層的作用是將數(shù)據(jù)打平變成一維數(shù)據(jù),然后將它們放入softmax中進行分類,從而得到圖片分屬于哪個分類的概率,其中概率最高的就是模型預測的結(jié)果。
3.2 樣本標注
CNN需要一定分好類的數(shù)據(jù)才可以進行模型訓練。剛開始,從視頻中檢測的人臉信息是雜亂無章的,沒有進行分類。所以,這里只能暫時使用手動方式進行分類操作。在進行大約1 000張的圖片分類后,先使用1 000張的圖片進行模型訓練,訓練完后將其他圖片放入模型進行預測。當然會有很多的圖片被預測錯誤。然后,需要將部分預測錯誤的數(shù)據(jù)放入正確的分類,再訓練,然后繼續(xù)預測。一直這樣重復進行,并根據(jù)預測結(jié)果微調(diào)模型。
3.3 模型訓練
將經(jīng)過多輪手動標注后的數(shù)據(jù)集整合起來,劃分為訓練集、測試集和驗證集三部分,三者的比例大約是6∶3∶1,其中,訓練集和測試集主要用于訓練和驗證模型的性能,測試集用于訓練完模型后,測試模型的準確度。將數(shù)據(jù)剪裁成128×128大小,使用Adadelta優(yōu)化器,Adadelta的優(yōu)點是不需要設置初始的學習率,會自動調(diào)整學習率,可以得到更好的訓練結(jié)果。使用categorical_crossentropy作為優(yōu)化函數(shù)。BatchSize是128,一共訓練了約30 000次,共300個Epoch,達到了收斂。
4 試驗結(jié)果及分析
4.1 試驗結(jié)果
經(jīng)過多輪數(shù)據(jù)標注的迭代后,筆者把訓練好的模型放在驗證集上進行測試。從結(jié)果來看,正臉的預測效果非常好,但是,側(cè)臉表情變化比較劇烈,當光線條件不好時,結(jié)果并不是太好。這種結(jié)果并不理想。
4.2 數(shù)據(jù)增強及試驗結(jié)果
按照李新葉等人提出的方法,使用數(shù)據(jù)增強(Data augmentation)的方法,對數(shù)據(jù)進行擴充。數(shù)據(jù)增強就是模擬現(xiàn)實環(huán)境中的圖片,將已有圖片進行各種各樣的處理,如翻轉(zhuǎn)、傾斜、調(diào)整明暗度等(見圖1),從而達到擴充訓練數(shù)據(jù)、提高模型泛化能力的結(jié)果。
4.3 數(shù)據(jù)增強后的試驗結(jié)果
經(jīng)過數(shù)據(jù)增強后,從結(jié)果來看,正臉和側(cè)臉的驗證效果很好,但是側(cè)臉角度較大或者是遮蔽較多的效果很不好,因為從CNN的原理來看,遮蔽較多的話,這張圖片提取的特征就和普通的人臉特征不一樣,如圖2所示,圖片下面的數(shù)字表示該圖片分類的概率。
4.4 性能分析
本試驗使用Python3.6+Keras2.2.2,臺式機配置為i7-7700(3.6 G),16 G內(nèi)存。性能分析如圖3所示,性能分析包含訓練性能和實時監(jiān)測性能。作為試驗對比的VGG19,ResNet50和Xception V3都是經(jīng)過ImageNet預訓練的模型,在訓練本文的數(shù)據(jù)時都會將這些模型的低層訓練權重解鎖,重新訓練。由圖3可以看出,相較于VGG、ResNet等常見網(wǎng)絡,本模型在訓練速度和檢測性能有一定的優(yōu)勢。該視頻編碼格式為h264,幀率為23.98,色彩空間為bt709。
5 結(jié)論
本文設計了一種基于OpenCv+MTCNN+輕型CNN的人臉檢測識別方法。使用OpenCv截取視頻圖片,使用MTCNN截取人臉圖像,再使用輕型CNN訓練人臉識別。主要工作是提出了一種輕型的CNN網(wǎng)絡結(jié)構(gòu)用來進行人臉識別。和傳統(tǒng)的VGG等模型相比,其具有訓練速度塊、檢測性能好的優(yōu)點。從試驗結(jié)果來看,其對遮蔽物或側(cè)臉的檢測效果仍然不理想,此外,手動進行數(shù)據(jù)標注太麻煩,未來可以進一步探討更加便捷的標注方式。
參考文獻:
[1]江偉堅,郭躬德,賴智銘.基于新Haar-like特征的Adaboost人臉檢測算法[J].山東大學學報(工學版),2014(2):43-48.
[2]Kivinen J,Szepesvári C,Ukkonen E,et al.On the Expressive Power of Deep Architectures[C]//International Conference on Algorithmic Learning Theory.2011.
[3]王瑋,閔衛(wèi)東,樊夢丹,等.基于擇優(yōu)檢測和多尺度匹配的實時人臉識別[J].計算機工程與設計,2018(9):2957-2960.
[4]Zhang K,Zhang Z,Li Z,et al.Joint Face Detection and Alignment Using Multitask Cascaded Convolutional Networks[J].IEEE Signal Processing Letters,2016(10):1499-1503.
[5]鄭德偉.基于機器學習的人臉面部疲勞表情識別[D].北京:北京郵電大學,2019.