吳 濤, 蔡茂國, 沈沖沖, 周 航
(深圳大學 電子與信息工程學院,廣東 深圳518000)
人臉識別是計算機視覺領域中的一個非常具有挑戰(zhàn)性的課題。 同一個人在不同的姿勢、光照和表情(PIE)條件下,看起來是不太一樣的,如圖1 所示。 為了消除這些因素對人臉識別的影響,本文提出的算法要求在增加個體間變化的同時減少個體內變化。 為此, 研究人員提出了線性判別分析(LDA)、主成分分析(PCA)、貝葉斯分析等子空間人臉識別學習方法以及改進的方法。 LDA 是PCA的增強,PCA 不使用類的概念,而LDA 使用。 同一人的面部圖像在LDA 中被視為同一類。 PCA 和LDA 都做了降維,并且它們都以矢量的形式將圖像變換到新的空間和新的坐標軸。 其他的改進還包括將人臉圖像投影到一個易于分類的子空間中。 除此之外,還有一些基于不同特征表示的方法,例如:局部二值模式、Gabor Filter、Scale-Sobel Filer 和Scaleinvariant feature transform(SIFT)等手工圖像算子。結合幾種不同的算子,可以獲得更高的精度。
圖1 不同條件下的同一人臉Fig. 1 The same person under a different illumination environment
在過去的十年中,卷積神經(jīng)網(wǎng)絡(convolutional neural network, CNN)已經(jīng)成為計算機視覺中一種非常流行的技術,并且取得了顯著的成功。 與傳統(tǒng)的圖像處理方法相比,卷積神經(jīng)網(wǎng)絡在目標檢測、圖像分類、語義分割等領域取得了很大的成就。 基于卷積神經(jīng)網(wǎng)絡的人臉識別也取得了重大突破。DeepID、DeepID2、DeepID3、FaceNet 和VGG-Face 是需要大量數(shù)據(jù)訓練的人臉識別模型,這些模型可以達到較高的準確率。 為了提高訓練速度,Xiang Wu等人提出了一個輕量型的卷積神經(jīng)網(wǎng)絡[1],其計算成本達到了VGG 模型的9 倍以上。 Xi Yin 等人認為人臉識別不是單一任務,他們將人臉識別視為一個多任務問題。 雖然這些卷積神經(jīng)網(wǎng)絡模型已經(jīng)達到了很高的精度,但是它們需要非常龐大的數(shù)據(jù)集來訓練,由于訓練過程中會產(chǎn)生大量的參數(shù),這些方法對計算機硬件有較高的要求。 為了充分利用圖像的信息,減輕網(wǎng)絡模型的負擔,本文提出了一種參數(shù)較少的雙通道卷積殘差網(wǎng)絡用于人臉識別。 人臉識別系統(tǒng)的結構圖如圖2 所示。 首先,利用人臉檢測和對齊來消除背景的影響。 其次,通過數(shù)據(jù)增容來獲得更多的訓練數(shù)據(jù)。 最后,利用雙通道殘差網(wǎng)絡進行訓練識別原始圖像,經(jīng)過Sobel 算子處理過的圖像能夠表征人臉的不同信息,因此,利用多通道輸入獲得不同的人臉特征,將兩個通道得到的特征進行融合,經(jīng)過殘差網(wǎng)絡進一步的特征提取,最后用于識別。 提取特征之后,使用平均池化層而不是全連接層,這樣可以使得網(wǎng)絡更加輕盈。 本文提出的模型在FERET、AR 和FEI 數(shù)據(jù)集上進行了訓練和測試。 實驗結果表明,該人臉識別算法更有優(yōu)勢。
圖2 人臉識別系統(tǒng)的結構圖Fig. 2 The structure of face recognition system
本文的主要貢獻如下:(1)使用原始圖像和Sobel 算子處理過的圖像作為網(wǎng)絡的輸入。 (2)提出了一種用于人臉識別的雙通道卷積殘差網(wǎng)絡。 該模型將多通道卷積神經(jīng)網(wǎng)絡與殘差網(wǎng)絡相結合,使用平均池化層代替全連接層。 (3)網(wǎng)絡模型參數(shù)較少,不到300 K,網(wǎng)絡模型文件大小約為20 M。 通過與其他模型的相比,本文提出的模型不僅參數(shù)少、網(wǎng)絡簡單,還加快了人臉識別的處理時間。
傳統(tǒng)的CNN 模型如AlexNet、VGGNet 以及新提出的InceptionNet、ResNet 等在圖像分類方面取得了顯著的效果。 這些方法也可以應用于人臉識別。AlexNet 由Alex Krizhevsky、Geoffrey Hinton 和Ilya Sutskever 組成的研究小組所設計,它比LeNet 更深。AlexNet 首先使用線性整流單元(ReLU)、Dropout 層和局部響應歸一化(LRN)來提高CNN 的性能。 在2012 年的全球最權威的計算機視覺識別挑戰(zhàn)(ILSVRC)中,該網(wǎng)絡獲得了15.3%的top-5 錯誤,領先亞軍10.8 個百分點。 VGGNet 是由牛津大學的K.Simonyan 和A.Zisserman 提出的CNN 模型。 整個網(wǎng)絡只使用3×3 卷積核和2×2 池化層,VGGNet 表明網(wǎng)絡的深度對于特征的提取起著重要作用,網(wǎng)絡越深,效果越好。 但是隨著網(wǎng)絡模型的加深,網(wǎng)絡變得越來越難訓練,這主要是由于梯度彌散和梯度爆炸導致的,為了解決這個問題,何凱明提出了ResNet,并于2015 年在ILSVRC 中獲得冠軍。ResNet 可以訓練數(shù)百甚至數(shù)千層網(wǎng)絡,并且仍然可以獲得非常好的效果,該模型比VGGNet 參數(shù)少,收斂速度快。
DeepFace 是Facebook 的一個研究小組創(chuàng)建的人臉識別的深度學習模型,是第一個在440 萬張人臉數(shù)據(jù)庫中訓練卷積神經(jīng)網(wǎng)絡,采用人臉對齊進行數(shù)據(jù)預處理,網(wǎng)絡參數(shù)超過1.2 億。 據(jù)稱,該模型在Wild(LFW)數(shù)據(jù)集中的人臉識別準確率高達97%。然而,由于使用局部連接層,模型的參數(shù)出現(xiàn)了指數(shù)增加。 為了進一步提高精度,Sun Y、Wang X 和Tang X 采用了多尺度模型。 DeepID 通過深度學習網(wǎng)絡來提取人臉深層次的抽象特征,這種特征可以區(qū)分出兩張不同的人臉,在提取特征后,輸入到聯(lián)合貝葉斯模型,進行人臉驗證,DeepID 在LFW 數(shù)據(jù)集上的準確率達到了97.53%。 Florian Schroff 等人提出了一個名為FaceNet 的系統(tǒng),該系統(tǒng)可以將原始圖片降維到歐式距離空間的映射,其中距離與人臉相似性相關,F(xiàn)aceNet 首次引入三重態(tài)損耗。 Visual Geometry Group 提出了一個名為VGG-Face 的模型,該模型結合了VGGNet 和三重態(tài)損失。 VGGFace 和FaceNet 使用類似的度量學習方法,并在260萬人臉數(shù)據(jù)集進行訓練,在LFW 上準確率達到了98.95%,在YTF 上準確率達到了97.3%。 雖然這些方法在LFW 上達到了很高的精度,但是他們都是通過設計復雜的網(wǎng)絡模型來提取人臉特征,都需要大量的數(shù)據(jù)來訓練模型,對計算機硬件的要求比較高。因此,本文主要針對一種輕量級的CNN 人臉識別模型進行研究。
本文提出的人臉識別模型如圖3 所示。 它是由兩個輸入通道構成,包括6 個卷積層,6 個maxpooling 層,1 個殘差模塊,1 個average-pooling 層和1 個SoftMax 層,具體每層的參數(shù)數(shù)量如表1 所示,在TensorBoard 上運行的數(shù)據(jù)流圖如圖4 所示,殘差模塊如圖5 所示,該模塊中總共有三層卷積構成,卷積核分別為1×1,3×3 和1×1。 殘差模塊解決了網(wǎng)絡訓練過程中出現(xiàn)的梯度彌散和梯度爆炸等現(xiàn)象。
圖3 雙通道卷積殘差網(wǎng)絡結構圖Fig. 3 The architecture of dual-channel residual network
表1 雙通道卷積殘差網(wǎng)絡的參數(shù)數(shù)量統(tǒng)計表Tab. 1 The total params about dual-channel residual network
將大小為64×64 的人臉圖像作為兩個并行通道的雙通道卷積殘差網(wǎng)絡的輸入,把原始圖像作為第一通道的輸入,利用Sobel 算子提取原始圖像的一階導數(shù)特征,并將其作為第二通道的輸入。 每個通道都有3 個卷積層,每個卷積層后面都有一個最大值池化層。 這兩個通道之間唯一的區(qū)別是卷積核的大小不同。 考慮到Sobel 算子處理的圖像對輪廓更敏感,在第二通道中,統(tǒng)一選擇尺寸為3×3,步長為1 的卷積核,這樣做的目的是提取圖像小區(qū)域的特征。 在第一通道中,除最后一層采用尺寸為3×3的卷積核,其余兩個采用5×5 的卷積核。 來自兩個通道的特征融合在一個殘差模塊中,然后經(jīng)過平均池化層,最后用于分類。 本文將多通道卷積神經(jīng)網(wǎng)絡與殘差模塊相結合,充分利用融合后的特征,克服了反向傳播時造成的梯度消失等現(xiàn)象,這樣不僅能提高人臉識別的準確率,還能加快網(wǎng)絡的收斂速度。
圖4 Tensorboard 可視化模型數(shù)據(jù)流圖Fig. 4 The tensor graph of tensorboard
圖5 殘差模塊結構圖Fig. 5 The architecture of residual block
本文將采用3 種不同的數(shù)據(jù)集進行訓練和測試,將數(shù)據(jù)集以8 ∶1 ∶1 的比例分別劃分為訓練集、測試集以及驗證集,本次使用到的數(shù)據(jù)集分別為:AR、FERET 和FEI。 AR 數(shù)據(jù)集是由美國廣播公司計算機視覺中心(CVC)的Aleix Martinez 和Robert Benavente 創(chuàng)建的,共包含了4 000 多張彩色的人臉圖像。 圖像以具有不同面部表情、照明條件和遮擋(太陽眼鏡和圍巾)的正面視圖為特征。 這些照片是在CVC 嚴格控制的條件下拍攝的,參與者不受穿戴(衣服、眼鏡等)、化妝、發(fā)型等的限制,每個人參加兩次拍攝,間隔14 天。 圖6 是來自AR 數(shù)據(jù)庫的部分圖像。 FEI 是巴西的一個人臉數(shù)據(jù)庫,包含了一組在2005 年6 月到2006 年3 月之間在巴西圣保羅的圣貝爾納·杜坎波的FEI 人工智能實驗室拍攝的人臉圖像,共有200 個人,每人有14 張圖像,總共2800 張。 所有的圖片都是彩色的,在白色均勻的背景下拍攝,正面直立,側面旋轉可達180 度,比例可能會變化約10%,每個圖像的原始大小是640×480像素。 所有面孔主要由FEI 的學生和工作人員代表,年齡在19 到40 歲之間,有著獨特的外貌、發(fā)型和裝飾。 男性和女性受試者的數(shù)量完全相同,分別都為100 張。 圖7 顯示了來自FEI 數(shù)據(jù)庫的部分圖像。
圖6 AR 數(shù)據(jù)集Fig. 6 AR dataset
圖7 FEI 數(shù)據(jù)集Fig. 7 FEI dataset
目前實現(xiàn)人臉檢測的方法有很多,本文采用2016 年中國科學院深圳研究院提出的多任務級聯(lián)卷積神經(jīng)網(wǎng)絡模型[2]來對數(shù)據(jù)集進行人臉檢測,該模型主要采用了3 個級聯(lián)的卷積神經(jīng)網(wǎng)絡,3 個網(wǎng)絡分別為P-net、R-net、O-net。 首先,將圖片以0.709 的比例進行縮小,形成一個圖像金字塔,P-net會對輸入的圖片進行第一次判斷,把人臉置信度高的圖片留下來,去除置信度低的圖像;其次,進行非極大值抑制(NMS),將所有圖片的置信度進行排序,將置信度最大的人臉圖像和其他圖像做iou 處理,粗略篩除重復框出的人臉,將輸出的圖像進一步放進R-net 里面,進一步篩選人臉圖像,做非極大值抑制,篩除重復的人臉框。 最后,經(jīng)過O-net 網(wǎng)絡,這是最后一層篩選,也是最精確的一次篩選,最終得到的最精確的人臉框,將人臉的5 個關鍵的特征點標記出來,其過程如下圖8 所示。
圖8 mtcnn 人臉檢測流程圖Fig .8 The architecture of mtcnn
隨著網(wǎng)絡的加深,訓練批次的增加,在數(shù)據(jù)集不夠大的時候,網(wǎng)絡訓練可能會出現(xiàn)過擬合,除了給網(wǎng)絡添加正則化和dropout 以外,還可以進行數(shù)據(jù)增容,提高網(wǎng)絡的泛化能力,常見數(shù)據(jù)增容的方式有以下幾種:(1)圖像翻轉。 將圖像鏡面翻轉,一般選擇水平翻轉。 (2)圖像旋轉。 將圖像以一定的角度進行旋轉。 (3)圖像剪裁。 對原始圖像進行一定尺度的裁剪。 (4)圖像增強。 將圖像變暗或者變明,增強圖像的對比度,經(jīng)過圖像增容后的數(shù)據(jù)集如下圖9 所示。
圖9 數(shù)據(jù)增容后的部分數(shù)據(jù)Fig. 9 The data after data augmentation
Sobel 算子,有時稱為Sobel 濾波器,在圖像處理和計算機視覺中,用于圖像中的邊緣檢測[3]。 sobel算子主要應用于邊緣檢測,在技術上,實際就是一個離散微分算子,用來運算圖像亮度函數(shù)的梯度的近似值。 在圖像的任何一點使用此算子,將會產(chǎn)生對應的梯度矢量或是其法矢量。 最終獲取新圖像的灰度值,其過程如下:
假設原始圖像為I,分別在水平方向和垂直方向求導:
水平方向。 將圖像I 和一個卷積核為奇數(shù)的矩陣相乘,一般將卷積核的大小設為3,如公式(1)所示。
垂直方向。 將圖像I 和一個卷積核為奇數(shù)的矩陣相乘,同樣,卷積核的大小和水平方向保持一致,如公式(2)所示:
接下來,將水平方向的Gx和垂直方向的Gy進行平方和再開方,得到近似梯度G,如公式(3) 所示:
圖10 為通過sobel 算子邊緣檢測過的圖像。
圖10 sobel 算子處理過的圖像Fig. 10 Images processed by Sobel operator
使用MTCNN 人臉檢測器來精確定位原始圖像中的人臉,利用旋轉、裁剪、翻轉、縮放等數(shù)據(jù)增容方法,得到更多的訓練圖像,將得到的圖像歸一化為64×64,利用Sobel 算子獲取圖像的Sobel 邊緣映射,最后將這些圖像輸入到網(wǎng)絡。 采用留一法對模型進行評估,首先打亂所有數(shù)據(jù)的順序,隨機選擇其中的80%的人臉圖像作為雙通道殘差網(wǎng)絡訓練集,剩下的20%用來做測試集和驗證集,驗證集主要用來調節(jié)神經(jīng)網(wǎng)絡的參數(shù)。 使用開源的深度學習框架TensorFlow 對模型進行訓練。 雙通道卷積殘差網(wǎng)絡的第一通道輸入為64×64×3 的RGB 人臉圖像,第二通道的輸入為64×64×1 的sobel 算子處理后的圖像。 為了防止網(wǎng)絡過擬合,采用L2 正則化,正則化中的權重衰減設置為0.003,初始學習速率設置為e-4,如果模型不收斂則降低學習率,采用交叉熵損失函數(shù)來計算損失,批量大小首先設置為256,然后減少到32。 設置200 個epoch 訓練本文的模型,并在必要時增加。 卷積的參數(shù)初始化采用截斷的正態(tài)分布。 本文的模型使用GeForce GTX1050TI-A4G GPU 進行訓練。
表2 展示了所提出的模型與FERET 數(shù)據(jù)集上其他現(xiàn)有方法的人臉識別的準確性的比較,表3 展示了AR 數(shù)據(jù)集上其他現(xiàn)有方法的人臉識別的準確性的 比 較。 在FERET 數(shù) 據(jù) 集 中, 本 文 模 型 達到了99.83%的準確性,而CFV 達到了97.55%,而PCANet在FERET 數(shù)據(jù)集上的準確性是97.26%。在 AR 數(shù) 據(jù) 集 中, 本 文 模 型 達 到 了 99. 70%的準確性,而LCSPT 和CFV + LRA 的精度為99.16%。通過比較發(fā)現(xiàn)本文提出的方法優(yōu)于其他方法。
表2 在FERET 數(shù)據(jù)集上的各種方法的準確性比較Tab. 2 Comparision of recongnition accuracies on FERET
表3 在AR 數(shù)據(jù)集上的各種方法的準確性比較Tab.3 Comparision of recongnition accuracies on AR
接下來,利用已有的VGG16 和ResNet18 模型來驗證雙通道卷積殘差網(wǎng)絡的有效性。 VGG16 是一個16 層的卷積神經(jīng)網(wǎng)絡,有13 個卷積層和3 個全連接層。 ResNet18 是一個殘差網(wǎng)絡,共有18 層,其中1 個卷積層,4 個殘差模塊,2 個殘差單元。 這兩個模型的架構如圖11 所示。 在相同的配置下實現(xiàn)了VGG16 和ResNet18 兩個模型,并在FERET、AR、FEI 人臉數(shù)據(jù)集上與本文提出的模型進行了比較。 表4、表5 和表6 分別為FERET 數(shù)據(jù)集、AR 數(shù)據(jù)集和FEI 數(shù)據(jù)集的人臉識別準確率,可以看出雙通道殘差網(wǎng)絡的精度有了明顯的提高,GPU 時間比VGG16 快3 倍,比ResNet18 快1.5 倍。 結果表明,本文的模型性能優(yōu)于以前的模型。
表4 在FERET 數(shù)據(jù)集上不同算法的準確性比Tab. 4 Comparision with different architecture on FERET
表5 在AR 數(shù)據(jù)集上不同算法的準確性比較Tab. 5 Comparision with different architecture on AR
表6 在FEI 數(shù)據(jù)集上不同算法的準確性比較Tab. 6 Comparision with different architecture on FEI
圖11 VGGNet16 和ResNet18 網(wǎng)絡結構圖Fig. 11 The architecture of VGGNet16 and ResNet18
為了進一步比較這些模型的性能,分析了訓練和測試中的精度和損失等參數(shù)。 AR 數(shù)據(jù)庫中不同模型的結果如圖12 所示,比較中可以看出,本文的模型比其他模型收斂更快,獲得了更高的精度。 本文提出的模型在訓練過程中訓練集和驗證集的收斂情況如圖13 所示,從圖中可以看出,在訓練100 個epoch 時,模型基本上已經(jīng)收斂,準確性已經(jīng)達到一個比較好的結果。
圖12 不同模型在AR 數(shù)據(jù)集上的損失和準確率Fig. 12 The results of different models on AR database
圖13 本文提出的模型在AR 數(shù)據(jù)集上的收斂情況Fig. 13 The results of different models on AR database
本文提出了一種雙通道卷積殘差網(wǎng)絡算法用來做人臉識別,利用雙通道輸入,將人臉圖像的特征充分的利用,sobel 算子能對提取人臉的細節(jié)特征更有魯棒性。 除此之外,該算法還利用到了殘差網(wǎng)絡,因此整個網(wǎng)絡具有卷積網(wǎng)絡和殘差網(wǎng)絡的優(yōu)點,可以使模型收斂更快,達到更高的精度,還可以防止訓練過程中梯度消失,導致網(wǎng)絡無法正常訓練。 本文的模型在FERET、AR、FEI 數(shù)據(jù)集上分別達到了99.83%、99.67%、99.20%的準確率,不僅超過了傳統(tǒng)方法的性能,而且與深度學習方法具有一定的競爭力。 以上結果表明,本文的模型可以顯著提高人臉識別率。 此外,本文模型的每個epoch 的時間大約比VGG16 快3 倍,比ResNet18 快1.5 倍,模型在硬盤上的存儲空間僅占19.7 MB 左右,不僅準確性高,速度快,需要的內存小,明顯優(yōu)于其他現(xiàn)有的算法,更具有實用價值。