喻麗春, 劉金清
(1.福州外語外貿學院 信息系, 福建 福州 350202;2.福建師范大學 光電與信息工程學院, 福建 福州 350007)
隨著計算機硬件和人工智能技術的發展,計算機視覺技術被廣泛應用在各個領域,其中人臉識別作為計算機視覺技術的一個重要方向,也有了突破性的進展。目前,人臉識別在現實生活中已被廣泛應用,如身份認證、網絡支付、公共安全監控、影像追蹤等。伴隨深度學習技術的突破發展,人臉識別技術逐漸從傳統的機器學習轉變為深度學習。深度學習的概念由Hinton等人于2006年提出。深度置信網絡(DBN)提出非監督貪心逐層訓練算法,為解決深層結構相關的優化難題帶來希望,隨后提出多層自動編碼器深層結構。此外Lecun等提出的卷積神經網絡是第一個真正多層結構學習算法,它利用空間相對關系減少參數數目以提高訓練性能[1]。在深度學習上,國內外同行已經取得了不俗的成績,如Face Book的DeepFace[2],香港中文大學的DeepID[3], Google的FaceNet[4],百度的BaiduIDLFinal[5],這些深度學習算法依賴于大規模的訓練數據和高速的計算能力,取得了優秀的成果。但在大多數實際應用項目中,小型企業或普通個人研究者一般很難獲取到大批量的訓練數據,能掌握的計算能力也有限,因此需要一種能在小規模訓練數據條件下,計算能力有限的環境中滿足實際應用的人臉識別算法技術。
針對現有的深度學習神經網絡依賴大規模訓練數據和強大計算力的問題,對卷積神經網絡VGGNet網絡結構進行改進,簡化網絡結構,改進損失函數,提出一種基于VGGNet改進的LiteVGGNet人臉識別算法。實驗表明,在較小訓練數據規模和有限計算力的條件下,改進后的LiteVGGNet深度學習算法識別率較高,能夠滿足實際人臉識別應用要求。
VGGNet是牛津大學視覺幾何組VGG(Visual Geometry Group)小組開發的一個著名的應用于圖片分類的卷積神經網絡模型。在2014年ImageNet大規模視覺識別挑戰賽ILSVRC(ImageNet Large Scale Visual Recognition Challenge)上取得了第二名的成績,圖片特征提取能力非常優秀,其在多個遷移學習任務中表現要優于2014年第一名的GoogLeNet,因此,從圖像中提取特征,VGG模型是首選算法。VGG模型的缺點是參數較多,參數量有138 M多,需要較大的存儲空間,訓練時間也相對較長。VGGNet的模型結構[6]如圖1所示。

圖1 VGGNet模型結構
VGGNet模型結構說明如下:
1)網絡的輸入是224×224的RGB圖片,所有圖片都經過均值處理。
2)網絡總共有5個最大池化層,13個卷積層。3個全連接層和一個SoftMax分類器層。
3)卷積層中卷積核大小均是3×3,步長為1(stride=1),補1圈0(pad=1)。
4)池化層均采用最大池化(Max Pooling),但不是所有的卷積層都有池化層,池化窗口為2×2,步長為2,即采用的是不重疊池化。
5)所有隱含層后都配有ReLU層。
6)在第一個和第二個全連接層后面,還使用了dropout技術,防止網絡過擬合。
VGGNet是著名卷積神經網絡模型AlexNet的擴展。相對于AlexNet網絡,VGGNet作出如下有價值的改進:
1)使用連續3個 3×3的卷積核替代1個7×7卷積核。對于C個通道的卷積核,7×7的卷積層含有參數72C2,而 3個3×3卷積層的參數個數為3×32C2,因此使用參數的個數可大大減少。
2)使用3×3卷積核的原因是:3×3是可以表示“左右”、“上下”、“中心”這些模式的最小單元,同時采用較小的卷積核有利于更好地提取圖像細節特征。更多的卷積層增強了網絡的非線性表達能力。
3)VGGNet不使用局部響應標準化LRN (Local Response Normalization),實驗表明,這種標準化并不能提升性能,卻導致更多的內存消耗和計算時間[6]。
VGG的網絡參數見表1。

表1 VGGNet網絡參數表
由于VGGNet具有良好的移植性、推廣特點,文中選擇VGGNet作為人臉識別的神經網絡模型。VGGNet對于圖像的特征提取效果出色,但存在以下不足之處:
1)網絡層數較多,訓練時計算量大,收斂較慢,需要大量的訓練樣本數據。
2)網絡參數較多,存儲網絡所需的內存較多,訓練時間也相對較長。
3)SoftMax訓練出來的人臉識別模型性能較差。VGGNet采用SoftMax分類器對圖像分類,SoftMax是邏輯回歸的擴展,用于解決多分類問題[7]。對于普通圖像分類,SoftMax簡單有效,但是將其應用于人臉圖像識別,由于人臉圖像的特點是類內差異較大,類間差異較小,SoftMax訓練得到的特征具有較大的類間距離,但類內距離不夠緊湊,類內距離可能大于類間距離,容易導致人臉識別錯誤。
針對VGGNet存在的問題,對VGGNet進行改進,提出一種基于精簡VGGNet的人臉識別算法,下面統稱為LiteVGGNet。
為了減少計算量,減小對大量訓練樣本的依賴,需要減少網絡參數。從神經網絡對圖像特征的提取經驗來看,越是靠近底層的網絡,提取的特征越有效。VGGNet提取網絡特征效果顯著,為了保持這個特征,對底層網絡不做變動,盡量修改上層網絡。網絡模型里面包含卷積層、池化層、全連接層。相對于卷積層,全連接層由于連接較多,會產生較多的參數,因此減少全連接層是減少網絡參數最有效的辦法。為了減少參數,參照模型DeepID,GoogLenet,減少三個全連接層為一個全連接層,同時修改全連接層前面的最后一個最大池化層為均值池化層,均值采樣層的核大小為7×7。使用均值池化層替代最大池化層,可以最大程度地保持圖像提取特征,這樣可以在盡量保持網絡特征提取能力的情況下,有效減少網絡參數。改進后的網絡結構如圖2所示。

圖2 減少全連接層后的VGG網絡結構
改進前后的結構參數對比見表2。

表2 網絡結構及參數對比
通過減少全連接層和使用均值池化層替代最大池化層后,參數值大大減少,參數個數從原來的138 M減少為16 M,這將有效減少模型計算的時間和保存模型參數所需要的存儲空間。
VGGNet采用SoftMax分類器對圖像分類。SoftMax訓練得到的特征具有較大的類間距離,但類內距離不夠緊湊,類內距離可能大于類間距離,因此對于普通圖像分類,SoftMax簡單有效,但是由于人臉圖像的相似性,容易導致識別錯誤。因此可以通過改進損失函數以增強分類效果。
為了得到更好的分類結果,應該將不同的類別分開,盡量減少類內距離。采用SoftMax Loss可以將不同類別分開,使用Center Loss可以使類間距離增大,同時減小類內距離。Center Loss是以SoftMax Loss分類為基礎,針對每個分類,維護一個類中心。在訓練時,逐步減少類成員到類中心的距離,并增大其他類成員和該中心的距離。
SoftMax Loss損失函數[7]為:
(1)
Center Loss損失函數[8]為:
(2)
混合損失函數為:
L=Ls+λLc
(3)
式中:λ——Center Loss的權重。
參照模型Caffe Face[8],對VGGNet最后的SoftMax分類層進行調整,修改為SoftMaxLoss和Center Loss聯合監測訓練,以達到更好的訓練效果。改進后的LiteVGGNet網絡結構如圖3所示。

圖3 LiteVGGNet網絡結構
LiteVGGNet的網絡參數見表3。

表3 LiteVGGNet的網絡參數
CASIA-WebFace是2014年中科院自動化研究所發布并建立的一個大規模人臉數據集。它包含將近50萬張人臉圖片,共10 575個人。文中采用CASIA-WebFace作為訓練數據集,選取數據庫中同一個人超過60張的人臉圖片作為訓練數據集。符合條件的人臉類別有2 007個,選取其中的2 000個人,每個人選取60張人臉圖片作為訓練數據,最終輸出類別個數為2 000。DeepLearning4j(DL4J)是一套基于Java語言的神經網絡工具包,可以構建、訓練和部署神經網絡。Deeplearning4j包括了分布式、多線程的深度學習框架,以及普通的單線程深度學習框架。定型過程以集群進行,因此Deeplearning4j可以快速處理大量數據,與 Java、 Scala 和 Clojure 均兼容,是首個為微服務架構打造的深度學習框架。這里選擇DeepLearning4j作為深度學習平臺。
訓練之前,首先對圖片進行對齊,圖片對齊在人臉識別中是個較為重要的步驟[9]。這里采用人臉識別對齊工具對CASIA-WebFace人臉庫進行對齊。對齊效果如圖4所示。

圖4 訓練數據人臉對齊
訓練結束后,采用LFW(Labeled Faces in the Wild)人臉庫作為模型結果驗證。LFW人臉數據庫是為了研究非限制環境下的人臉識別問題而建立。這個集合包含13 233張人臉圖像,5 749個人,圖像全部來自于Internet,而不是實驗室環境。每個人臉被標注了一個人名。 其中有1 680個人包含兩個以上的人臉。這個集合被廣泛應用于評價人臉識別算法的性能。首先對測試人臉進行對齊,LFW的輸入為兩張人臉圖像,輸出為判斷這兩張人臉圖像是否為同一個人。人臉識別驗證過程如圖5所示。

圖5 人臉識別驗證過程
LFW官方給出的測試數據集為pairs.txt,其中3 000對為同一個人,另外3 000對為不同人。實驗使用pairs.txt給出的6 000對人臉對來測試網絡模型的準確度。人臉圖片通過深度學習神經網絡提取后,得到人臉特征,計算兩張人臉特征之間的距離,這里選擇余弦相似度作為特征距離,同時根據閾值判斷兩張人臉圖像是否屬于同一個人。
在測試之前,對圖片進行對齊。對齊工具使用Facetool,如果未找到人臉即對齊失敗,則使用原圖片代替對齊后的人臉圖片。通過設定一個閾值T,計算結果大于T,則被視為正類;小于這個閾值,則被視為負類。若減小閾值,在可識別出更多正類的同時也會有更多的負類被誤認為正類,真陽性率(TPR)和假陽性率(FPR)同時得到了提髙。若增大閥值,真陽性率和假陽性率會同時減小。因此通過逐漸増大閾值,會得到一條關于TPR和FPR的曲線,該曲線稱作受試工作特征 ROC (Receiver Operating Characteristic Curve )曲線。ROC曲線是人臉識別靈敏度進行描述的功能曲線。大部分的人臉識別模型使用ROC作為評價標準。因此這里也采用ROC曲線作為改進后網絡模型的評價標準。通過實驗繪制出模型ROC曲線如圖6所示。

圖6 ROC曲線
使用測試數據集paris.txt對模型進行測試。測試結果見表4。

表4 LFW識別率
結合其他文獻,將測試結果與其他著名人臉識別模型對比。對比結果見表5。

表5 網絡模型識別效果對比
從表5中可以看出,相對于其他模型,LiteVGGNet模型的識別率達到了95%以上,雖然略微低于其他著名深度學習網絡模型,但其訓練樣本個數和圖片數量遠小于其他模型,能夠適用于訓練數據集較小的應用場景,對硬件計算力要求更低,因此該模型具有一定的實用性。
目前深度學習算法存在依賴大規模訓練數據和計算資源的問題。為解決這個問題,針對圖像分類深度學習算法VGGNet進行改進,提出一種基于LiteVGGNet的人臉識別方法。改進后的算法采用CASIA-WebFace作為訓練數據,并用LFW人臉庫作為測試數據。實驗結果表明,相對于原模型改進模型減少了參數,改進了損失函數,不但降低了對大規模訓練數據庫和計算資源的依賴,同時減少了類內差異,增大了類間差異,人臉識別性能較好,改進后的算法能夠滿足實際應用要求。