喻麗春, 劉金清
(1.福州外語外貿(mào)學(xué)院 信息系, 福建 福州 350202;2.福建師范大學(xué) 光電與信息工程學(xué)院, 福建 福州 350007)
隨著計算機硬件和人工智能技術(shù)的發(fā)展,計算機視覺技術(shù)被廣泛應(yīng)用在各個領(lǐng)域,其中人臉識別作為計算機視覺技術(shù)的一個重要方向,也有了突破性的進展。目前,人臉識別在現(xiàn)實生活中已被廣泛應(yīng)用,如身份認證、網(wǎng)絡(luò)支付、公共安全監(jiān)控、影像追蹤等。伴隨深度學(xué)習(xí)技術(shù)的突破發(fā)展,人臉識別技術(shù)逐漸從傳統(tǒng)的機器學(xué)習(xí)轉(zhuǎn)變?yōu)樯疃葘W(xué)習(xí)。深度學(xué)習(xí)的概念由Hinton等人于2006年提出。深度置信網(wǎng)絡(luò)(DBN)提出非監(jiān)督貪心逐層訓(xùn)練算法,為解決深層結(jié)構(gòu)相關(guān)的優(yōu)化難題帶來希望,隨后提出多層自動編碼器深層結(jié)構(gòu)。此外Lecun等提出的卷積神經(jīng)網(wǎng)絡(luò)是第一個真正多層結(jié)構(gòu)學(xué)習(xí)算法,它利用空間相對關(guān)系減少參數(shù)數(shù)目以提高訓(xùn)練性能[1]。在深度學(xué)習(xí)上,國內(nèi)外同行已經(jīng)取得了不俗的成績,如Face Book的DeepFace[2],香港中文大學(xué)的DeepID[3], Google的FaceNet[4],百度的BaiduIDLFinal[5],這些深度學(xué)習(xí)算法依賴于大規(guī)模的訓(xùn)練數(shù)據(jù)和高速的計算能力,取得了優(yōu)秀的成果。但在大多數(shù)實際應(yīng)用項目中,小型企業(yè)或普通個人研究者一般很難獲取到大批量的訓(xùn)練數(shù)據(jù),能掌握的計算能力也有限,因此需要一種能在小規(guī)模訓(xùn)練數(shù)據(jù)條件下,計算能力有限的環(huán)境中滿足實際應(yīng)用的人臉識別算法技術(shù)。
針對現(xiàn)有的深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)依賴大規(guī)模訓(xùn)練數(shù)據(jù)和強大計算力的問題,對卷積神經(jīng)網(wǎng)絡(luò)VGGNet網(wǎng)絡(luò)結(jié)構(gòu)進行改進,簡化網(wǎng)絡(luò)結(jié)構(gòu),改進損失函數(shù),提出一種基于VGGNet改進的LiteVGGNet人臉識別算法。實驗表明,在較小訓(xùn)練數(shù)據(jù)規(guī)模和有限計算力的條件下,改進后的LiteVGGNet深度學(xué)習(xí)算法識別率較高,能夠滿足實際人臉識別應(yīng)用要求。
VGGNet是牛津大學(xué)視覺幾何組VGG(Visual Geometry Group)小組開發(fā)的一個著名的應(yīng)用于圖片分類的卷積神經(jīng)網(wǎng)絡(luò)模型。在2014年ImageNet大規(guī)模視覺識別挑戰(zhàn)賽ILSVRC(ImageNet Large Scale Visual Recognition Challenge)上取得了第二名的成績,圖片特征提取能力非常優(yōu)秀,其在多個遷移學(xué)習(xí)任務(wù)中表現(xiàn)要優(yōu)于2014年第一名的GoogLeNet,因此,從圖像中提取特征,VGG模型是首選算法。VGG模型的缺點是參數(shù)較多,參數(shù)量有138 M多,需要較大的存儲空間,訓(xùn)練時間也相對較長。VGGNet的模型結(jié)構(gòu)[6]如圖1所示。
圖1 VGGNet模型結(jié)構(gòu)
VGGNet模型結(jié)構(gòu)說明如下:
1)網(wǎng)絡(luò)的輸入是224×224的RGB圖片,所有圖片都經(jīng)過均值處理。
2)網(wǎng)絡(luò)總共有5個最大池化層,13個卷積層。3個全連接層和一個SoftMax分類器層。
3)卷積層中卷積核大小均是3×3,步長為1(stride=1),補1圈0(pad=1)。
4)池化層均采用最大池化(Max Pooling),但不是所有的卷積層都有池化層,池化窗口為2×2,步長為2,即采用的是不重疊池化。
5)所有隱含層后都配有ReLU層。
6)在第一個和第二個全連接層后面,還使用了dropout技術(shù),防止網(wǎng)絡(luò)過擬合。
VGGNet是著名卷積神經(jīng)網(wǎng)絡(luò)模型AlexNet的擴展。相對于AlexNet網(wǎng)絡(luò),VGGNet作出如下有價值的改進:
1)使用連續(xù)3個 3×3的卷積核替代1個7×7卷積核。對于C個通道的卷積核,7×7的卷積層含有參數(shù)72C2,而 3個3×3卷積層的參數(shù)個數(shù)為3×32C2,因此使用參數(shù)的個數(shù)可大大減少。
2)使用3×3卷積核的原因是:3×3是可以表示“左右”、“上下”、“中心”這些模式的最小單元,同時采用較小的卷積核有利于更好地提取圖像細節(jié)特征。更多的卷積層增強了網(wǎng)絡(luò)的非線性表達能力。
3)VGGNet不使用局部響應(yīng)標準化LRN (Local Response Normalization),實驗表明,這種標準化并不能提升性能,卻導(dǎo)致更多的內(nèi)存消耗和計算時間[6]。
VGG的網(wǎng)絡(luò)參數(shù)見表1。
表1 VGGNet網(wǎng)絡(luò)參數(shù)表
由于VGGNet具有良好的移植性、推廣特點,文中選擇VGGNet作為人臉識別的神經(jīng)網(wǎng)絡(luò)模型。VGGNet對于圖像的特征提取效果出色,但存在以下不足之處:
1)網(wǎng)絡(luò)層數(shù)較多,訓(xùn)練時計算量大,收斂較慢,需要大量的訓(xùn)練樣本數(shù)據(jù)。
2)網(wǎng)絡(luò)參數(shù)較多,存儲網(wǎng)絡(luò)所需的內(nèi)存較多,訓(xùn)練時間也相對較長。
3)SoftMax訓(xùn)練出來的人臉識別模型性能較差。VGGNet采用SoftMax分類器對圖像分類,SoftMax是邏輯回歸的擴展,用于解決多分類問題[7]。對于普通圖像分類,SoftMax簡單有效,但是將其應(yīng)用于人臉圖像識別,由于人臉圖像的特點是類內(nèi)差異較大,類間差異較小,SoftMax訓(xùn)練得到的特征具有較大的類間距離,但類內(nèi)距離不夠緊湊,類內(nèi)距離可能大于類間距離,容易導(dǎo)致人臉識別錯誤。
針對VGGNet存在的問題,對VGGNet進行改進,提出一種基于精簡VGGNet的人臉識別算法,下面統(tǒng)稱為LiteVGGNet。
為了減少計算量,減小對大量訓(xùn)練樣本的依賴,需要減少網(wǎng)絡(luò)參數(shù)。從神經(jīng)網(wǎng)絡(luò)對圖像特征的提取經(jīng)驗來看,越是靠近底層的網(wǎng)絡(luò),提取的特征越有效。VGGNet提取網(wǎng)絡(luò)特征效果顯著,為了保持這個特征,對底層網(wǎng)絡(luò)不做變動,盡量修改上層網(wǎng)絡(luò)。網(wǎng)絡(luò)模型里面包含卷積層、池化層、全連接層。相對于卷積層,全連接層由于連接較多,會產(chǎn)生較多的參數(shù),因此減少全連接層是減少網(wǎng)絡(luò)參數(shù)最有效的辦法。為了減少參數(shù),參照模型DeepID,GoogLenet,減少三個全連接層為一個全連接層,同時修改全連接層前面的最后一個最大池化層為均值池化層,均值采樣層的核大小為7×7。使用均值池化層替代最大池化層,可以最大程度地保持圖像提取特征,這樣可以在盡量保持網(wǎng)絡(luò)特征提取能力的情況下,有效減少網(wǎng)絡(luò)參數(shù)。改進后的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 減少全連接層后的VGG網(wǎng)絡(luò)結(jié)構(gòu)
改進前后的結(jié)構(gòu)參數(shù)對比見表2。
表2 網(wǎng)絡(luò)結(jié)構(gòu)及參數(shù)對比
通過減少全連接層和使用均值池化層替代最大池化層后,參數(shù)值大大減少,參數(shù)個數(shù)從原來的138 M減少為16 M,這將有效減少模型計算的時間和保存模型參數(shù)所需要的存儲空間。
VGGNet采用SoftMax分類器對圖像分類。SoftMax訓(xùn)練得到的特征具有較大的類間距離,但類內(nèi)距離不夠緊湊,類內(nèi)距離可能大于類間距離,因此對于普通圖像分類,SoftMax簡單有效,但是由于人臉圖像的相似性,容易導(dǎo)致識別錯誤。因此可以通過改進損失函數(shù)以增強分類效果。
為了得到更好的分類結(jié)果,應(yīng)該將不同的類別分開,盡量減少類內(nèi)距離。采用SoftMax Loss可以將不同類別分開,使用Center Loss可以使類間距離增大,同時減小類內(nèi)距離。Center Loss是以SoftMax Loss分類為基礎(chǔ),針對每個分類,維護一個類中心。在訓(xùn)練時,逐步減少類成員到類中心的距離,并增大其他類成員和該中心的距離。
SoftMax Loss損失函數(shù)[7]為:
(1)
Center Loss損失函數(shù)[8]為:
(2)
混合損失函數(shù)為:
L=Ls+λLc
(3)
式中:λ——Center Loss的權(quán)重。
參照模型Caffe Face[8],對VGGNet最后的SoftMax分類層進行調(diào)整,修改為SoftMaxLoss和Center Loss聯(lián)合監(jiān)測訓(xùn)練,以達到更好的訓(xùn)練效果。改進后的LiteVGGNet網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 LiteVGGNet網(wǎng)絡(luò)結(jié)構(gòu)
LiteVGGNet的網(wǎng)絡(luò)參數(shù)見表3。
表3 LiteVGGNet的網(wǎng)絡(luò)參數(shù)
CASIA-WebFace是2014年中科院自動化研究所發(fā)布并建立的一個大規(guī)模人臉數(shù)據(jù)集。它包含將近50萬張人臉圖片,共10 575個人。文中采用CASIA-WebFace作為訓(xùn)練數(shù)據(jù)集,選取數(shù)據(jù)庫中同一個人超過60張的人臉圖片作為訓(xùn)練數(shù)據(jù)集。符合條件的人臉類別有2 007個,選取其中的2 000個人,每個人選取60張人臉圖片作為訓(xùn)練數(shù)據(jù),最終輸出類別個數(shù)為2 000。DeepLearning4j(DL4J)是一套基于Java語言的神經(jīng)網(wǎng)絡(luò)工具包,可以構(gòu)建、訓(xùn)練和部署神經(jīng)網(wǎng)絡(luò)。Deeplearning4j包括了分布式、多線程的深度學(xué)習(xí)框架,以及普通的單線程深度學(xué)習(xí)框架。定型過程以集群進行,因此Deeplearning4j可以快速處理大量數(shù)據(jù),與 Java、 Scala 和 Clojure 均兼容,是首個為微服務(wù)架構(gòu)打造的深度學(xué)習(xí)框架。這里選擇DeepLearning4j作為深度學(xué)習(xí)平臺。
訓(xùn)練之前,首先對圖片進行對齊,圖片對齊在人臉識別中是個較為重要的步驟[9]。這里采用人臉識別對齊工具對CASIA-WebFace人臉庫進行對齊。對齊效果如圖4所示。
圖4 訓(xùn)練數(shù)據(jù)人臉對齊
訓(xùn)練結(jié)束后,采用LFW(Labeled Faces in the Wild)人臉庫作為模型結(jié)果驗證。LFW人臉數(shù)據(jù)庫是為了研究非限制環(huán)境下的人臉識別問題而建立。這個集合包含13 233張人臉圖像,5 749個人,圖像全部來自于Internet,而不是實驗室環(huán)境。每個人臉被標注了一個人名。 其中有1 680個人包含兩個以上的人臉。這個集合被廣泛應(yīng)用于評價人臉識別算法的性能。首先對測試人臉進行對齊,LFW的輸入為兩張人臉圖像,輸出為判斷這兩張人臉圖像是否為同一個人。人臉識別驗證過程如圖5所示。
圖5 人臉識別驗證過程
LFW官方給出的測試數(shù)據(jù)集為pairs.txt,其中3 000對為同一個人,另外3 000對為不同人。實驗使用pairs.txt給出的6 000對人臉對來測試網(wǎng)絡(luò)模型的準確度。人臉圖片通過深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)提取后,得到人臉特征,計算兩張人臉特征之間的距離,這里選擇余弦相似度作為特征距離,同時根據(jù)閾值判斷兩張人臉圖像是否屬于同一個人。
在測試之前,對圖片進行對齊。對齊工具使用Facetool,如果未找到人臉即對齊失敗,則使用原圖片代替對齊后的人臉圖片。通過設(shè)定一個閾值T,計算結(jié)果大于T,則被視為正類;小于這個閾值,則被視為負類。若減小閾值,在可識別出更多正類的同時也會有更多的負類被誤認為正類,真陽性率(TPR)和假陽性率(FPR)同時得到了提髙。若增大閥值,真陽性率和假陽性率會同時減小。因此通過逐漸増大閾值,會得到一條關(guān)于TPR和FPR的曲線,該曲線稱作受試工作特征 ROC (Receiver Operating Characteristic Curve )曲線。ROC曲線是人臉識別靈敏度進行描述的功能曲線。大部分的人臉識別模型使用ROC作為評價標準。因此這里也采用ROC曲線作為改進后網(wǎng)絡(luò)模型的評價標準。通過實驗繪制出模型ROC曲線如圖6所示。
圖6 ROC曲線
使用測試數(shù)據(jù)集paris.txt對模型進行測試。測試結(jié)果見表4。
表4 LFW識別率
結(jié)合其他文獻,將測試結(jié)果與其他著名人臉識別模型對比。對比結(jié)果見表5。
表5 網(wǎng)絡(luò)模型識別效果對比
從表5中可以看出,相對于其他模型,LiteVGGNet模型的識別率達到了95%以上,雖然略微低于其他著名深度學(xué)習(xí)網(wǎng)絡(luò)模型,但其訓(xùn)練樣本個數(shù)和圖片數(shù)量遠小于其他模型,能夠適用于訓(xùn)練數(shù)據(jù)集較小的應(yīng)用場景,對硬件計算力要求更低,因此該模型具有一定的實用性。
目前深度學(xué)習(xí)算法存在依賴大規(guī)模訓(xùn)練數(shù)據(jù)和計算資源的問題。為解決這個問題,針對圖像分類深度學(xué)習(xí)算法VGGNet進行改進,提出一種基于LiteVGGNet的人臉識別方法。改進后的算法采用CASIA-WebFace作為訓(xùn)練數(shù)據(jù),并用LFW人臉庫作為測試數(shù)據(jù)。實驗結(jié)果表明,相對于原模型改進模型減少了參數(shù),改進了損失函數(shù),不但降低了對大規(guī)模訓(xùn)練數(shù)據(jù)庫和計算資源的依賴,同時減少了類內(nèi)差異,增大了類間差異,人臉識別性能較好,改進后的算法能夠滿足實際應(yīng)用要求。