張東,高丙朋
(新疆大學(xué) 電氣工程學(xué)院,新疆維吾爾自治區(qū) 烏魯木齊 830000)
深度學(xué)習(xí)這一研究方向的最終目標(biāo)是讓機器具備分析事物的能力、識別圖像、聲音和文字等信息,隨著圖像領(lǐng)域快速發(fā)展,深度學(xué)習(xí)走到大家眼前,尤其是在圖像特征提取和目標(biāo)檢測上,深度學(xué)習(xí)優(yōu)勢更加突出。傳統(tǒng)人臉識別方法主要有主成分分析法(PCA)[1]和局部二值模式(LBP)[2],目前,人臉識別方法的研究方向集中在兩方面:其一為基于整體的研究方法;其二為分析人臉特征的方法,該方法應(yīng)用較為廣泛,通過使用一些手段保留人臉的一些特征參數(shù),再通過特征參數(shù)構(gòu)成識別特征向量從而達到識別的效果。
計算力得到快速提升以及海量數(shù)據(jù)的出現(xiàn),使深度學(xué)習(xí)訓(xùn)練的模型更具泛化性。Deep?Face[3]是 CVPR2014 由 Facebook 提出的方法,為深度卷積神經(jīng)網(wǎng)絡(luò)在人臉識別領(lǐng)域發(fā)揮更大作用奠定了基礎(chǔ)。DeepFace模型在處理人臉對齊過程采用3D對齊方式,使用傳統(tǒng)直方圖進行圖片紋理化并提取對應(yīng)特征;在訓(xùn)練過程采用一般的交叉熵損失函數(shù),通過一般的softmax對訓(xùn)練的數(shù)據(jù)進行分類。經(jīng)過測試,DeepFace在測試集LFW取得了97.35%的準(zhǔn)確率。香港中文大學(xué)的Sun等提出DeepID1[4]通過單一的卷積網(wǎng)絡(luò)來進行特征提取。DeepID2[5]在DeepID1的基礎(chǔ)上進行改進,提出通過提升類間差距,降低類內(nèi)差距,訓(xùn)練出來的特征更加適合人臉識別任務(wù)。為解決人臉驗證和識別在自然條件下仍然困難的問題,Google 提出了 FaceNet[6]模型,該方法直接將不同人臉圖像映射到歐幾里得空間,歐幾里得空間中兩點間直線距離也稱歐式距離,它的長度代表了人臉圖像的相似性,歐式距離越小就說明兩張人臉圖像越相似,反之則越不相似。只要該映射空間生成,人臉識別、驗證和聚類的任務(wù)就可以完成。
2020年,Google提出了將 ViT(vision trans?former)[7]作為 transformer應(yīng)用在圖像處理的模型,深度學(xué)習(xí)的任務(wù)是把高維的原始數(shù)據(jù)映射到低維,低維數(shù)據(jù)會變的可分,而這個映射就叫embedding,通過embedding的方式可以大大加快訓(xùn)練速度與準(zhǔn)確度。ViT將圖像經(jīng)過線性變換得到一定維度的向量,由于transformer的輸入就是一系列映射,所以將圖像變換后得到的向量送到transformer后就可圖像處理,在大型數(shù)據(jù)集上的表現(xiàn)超過了當(dāng)前先進的網(wǎng)絡(luò)模型。由于ViT在圖像處理方面的巨大優(yōu)勢,蘋果公司提出了輕量級網(wǎng)絡(luò)MobileViT[8],其參數(shù)量小可以加快計算效率,經(jīng)過實驗測試,其準(zhǔn)確率超過大多現(xiàn)有的網(wǎng)絡(luò)模型。ViT經(jīng)過實驗發(fā)現(xiàn):隨著transformer層的增多,結(jié)果沒有得到優(yōu)化,甚至出現(xiàn)下降等問題。為解決ViT出現(xiàn)的問題,有學(xué)者提出了DeepViT[9],不僅解決了transformer層的增多,ViT實驗結(jié)果的不理想,還解決了在ViT模型深度增加后注意力圖在一定深層數(shù)的計算會趨于相似的問題。在Ima?geNet上進行對比測試,結(jié)果顯示當(dāng)Transform?er block為24和32時,DeepViT準(zhǔn)確率比ViT的分別高0.7%和1.6%,分別達到了80.1%和80.9%;隨著Transformer block的增加DeepViT的準(zhǔn)確率一直在上升,表明DeepViT模型可以實現(xiàn)更高精度。
普通的卷積神經(jīng)網(wǎng)絡(luò)太過復(fù)雜、參數(shù)量和計算量大,Howard等[10]在 2017年提出了輕量級神經(jīng)網(wǎng)絡(luò)MobileNet,提出了深度可分離卷積層,在保證精度高的情況下,大大減少計算量提高了運算效率。但深度可分離卷積之后的激活函數(shù)ReLU會帶來信息丟失,且不可恢復(fù)。所以為了解決MobileNet模型出現(xiàn)的問題,大量學(xué)者對其進行改進,其中Sandler等[11]提出了MobileNetV2,MobileNetV2采用了當(dāng)時流行的殘差網(wǎng)絡(luò),在深度可分離卷積之前先將輸入輸送到1×1點卷積;此外,為防止經(jīng)過卷積操作后的特征信息被破壞,激活函數(shù)ReLU換成了線性輸出,但經(jīng)過實驗測試,此模型識別效果不好,實時性不佳,參數(shù)量和計算量較大。因此在實際人臉識別過程中,MobileNetV2難以達到要求。
為解決MobileNetV2出現(xiàn)的問題,本文在MobileNetV2網(wǎng)絡(luò)的基礎(chǔ)上加入DeepViT,結(jié)合了卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)和DeepViT的優(yōu)勢,在提高人臉識別準(zhǔn)確率的同時,構(gòu)建一個參數(shù)量小,可以大大提高計算效率的網(wǎng)絡(luò)模型,改進后的MobileDeep?ViT作為特征提取網(wǎng)絡(luò)具有更好的識別性能。
2017年,Google提出輕量級網(wǎng)絡(luò)Mobile?NetV1,其網(wǎng)絡(luò)結(jié)構(gòu)較為簡單,在實驗中發(fā)現(xiàn)這種結(jié)構(gòu)存在問題。原理是將一個標(biāo)準(zhǔn)卷積層拆分為兩個部分,分別為深度卷積(Depthwise)和點卷積(Pintwise),其中Depthwise每個輸入通道都有一個獨立卷積核,相當(dāng)于收集了每個通道的特征,輸入通道數(shù)和輸出通道數(shù)是一致的,因此Depthwise沒有經(jīng)過升維或降維。點卷積通過使用1×1卷積來實現(xiàn)功能,收集了每個點的特征,可以進行升維或降維。普通卷積和深度可分離卷積的工作特點如圖1所示。
圖1中,深度可分離卷積的參數(shù)量為:Dk×Dk×M+1×M×N;計算量是由深度卷積和點卷積兩部分相加而得。深度卷積的卷積核尺寸Dk×Dk×1,有M個,一共要做Dw×Dh次乘法運算,其中,Dw和Dh是標(biāo)準(zhǔn)卷積的寬和高;點卷積卷積核尺寸1×1×M,共有N個,需要Dw×Dh次乘法運算,這時深度可分離卷積的計算量Q1見式(1):
標(biāo)準(zhǔn)卷積參數(shù)數(shù)量為:Dk×Dk×M×N;卷積核尺寸是Dk×Dk×M,有N個,一共要做Dw×Dh次乘法運算,所以標(biāo)準(zhǔn)卷積計算量Q2見式(2):
故深度可分離卷積與普通卷積的計算量下降倍數(shù)Q3見式(3):
可以看出,標(biāo)準(zhǔn)卷積的參數(shù)量和計算量是深度可分離卷積的數(shù)倍,而且當(dāng)卷積的寬和高數(shù)值較大時,下降的倍數(shù)會變得更大,證明深度可分離卷積可以極大提高運算效率。
ReLU定義如式(4):
式中:x表示輸入,f(x)表示輸出。
從式中可以得出當(dāng)輸入值為負時,此時流過這個神經(jīng)元的梯度就為0,權(quán)重?zé)o法得到更新,網(wǎng)絡(luò)無法學(xué)習(xí),從而丟失信息。Mobile?NetV1在減少計算量的同時還存在結(jié)構(gòu)簡單、性價比較低、訓(xùn)練時部分kernel為空等問題。MobileNetV2網(wǎng)絡(luò)結(jié)構(gòu)如表1所示。其中,第一個卷積層輸入大小為224×224,輸入通道數(shù)為3,經(jīng)過卷積后的輸出通道數(shù)為32,卷積核每次移動的距離稱為步長,此時的步長為2,以此類推;并且f為輸入輸出通道數(shù)。
MobileNetV2在深度卷積之前進行升維,加入一個點卷積,可使網(wǎng)絡(luò)在更高維空間提取特征。此外,為解決MobileNetV1激活函數(shù)ReLU損耗方面的問題,MobileNetV2在點卷積之后把激活函數(shù)ReLU換成線性激活函數(shù)。并且Mo?bileNetV2借鑒了ResNet思想使輸入和輸出相加。這種結(jié)構(gòu)可以使得信息在各層之間流動更加容易,在前向傳播時提供特征重用作用,當(dāng)反向傳播時也可以起到緩解梯度消失的作用。
2020年Google提出ViT把transformer直接應(yīng)用在圖像處理上,而后開發(fā)出的網(wǎng)絡(luò)也都是在ViT的基礎(chǔ)上改進的。ViT的原理以及優(yōu)勢在文獻[7]做了詳細的解釋和說明。但在實驗中發(fā)現(xiàn)ViT模型有一定的局限性,在使用相同數(shù)據(jù)集進行測試時,隨著網(wǎng)絡(luò)深度的增加,ViT的性能不僅會達到飽和,而且注意力圖在一定深層數(shù)計算之后會出現(xiàn)相似。為解決自注意層引起的問題,DeepViT把ViT中的自注意力換成重新注意,這樣相似塊的數(shù)量不僅減少到零,并且隨著模型深度的增加性能將持續(xù)提高。ViT和DeepViT模型結(jié)構(gòu)如圖2所示。
由圖2可知,通過比較ViT和DeepViT模型整體結(jié)構(gòu),與ViT不同的是,DeepViT提出重新注意替換自我注意層,有效解決了注意力崩潰問題。
經(jīng)過文獻[9]已經(jīng)證實:ViT中不同的transformer block之間的注意力圖之間的相似度比較高,尤其是深層。然而來自同一transform?er block不同頭注意力圖相似性非常小。于是提出將各個頭的注意力進行交換,并訓(xùn)練深層ViT,使其表現(xiàn)更好。新的Re-Attention Value計算公式見式(5):
Re-Attention優(yōu)勢有兩方面:首先,相比于其他可能的注意力增強方法,Re-Attention利用不同注意力頭之間相互作用來收集他們之間的互補信息,可以更好提高注意力圖的多樣性;其次Re-Attention的程序非常簡潔,只需要修改幾行代碼就能運用到實際工作,易于實施。
鑒于MobileNetV2網(wǎng)絡(luò)模型輕量級的優(yōu)勢,將MobileNetV2與DeepViT進行融合,在減小參數(shù)量的同時并保持較高準(zhǔn)確率,設(shè)計輕量級卷積神經(jīng)網(wǎng)絡(luò)模型MobileDeepViT,改進網(wǎng)絡(luò)輸入大小為256×256,輸入通道數(shù)為3,其網(wǎng)絡(luò)結(jié)構(gòu)如表2所示。其中,MDb是MobileDeepViT block,MV2是MobileNetV2 block網(wǎng)絡(luò)。
在MobileDeepViT網(wǎng)絡(luò)中,首先將輸入特征圖送入一個3×3的標(biāo)準(zhǔn)卷積層,此時特征圖的尺寸和輸出的通道數(shù)發(fā)生變化,然后依次通過5個MobileNetV2基本單元,需要調(diào)整輸出通道和步長,再經(jīng)過 MobileDeepViT block、Mobile?NetV2基本單元、MobileDeepViT block、Mobile?NetV2基本單元、MobileDeepViT block和一個點卷積。由于MobileNetV2點卷積采用的是線性輸出,所以為了更好地提取特征和使網(wǎng)絡(luò)收斂,在MobileNetV2之外經(jīng)過卷積處理后的輸出都要經(jīng)過BN層和ReLU非線性激活函數(shù)處理從而增加非線性表達能力[12]。
MobileNetV2人臉特征提取網(wǎng)絡(luò)中共有7個bottleneck層,經(jīng)過MobileNetV2后的圖像大小為H×W×C,需要對輸出進行n×n、1×1的卷積處理,會得到一個H×W×d的原始圖,再將其輸入到transformer中,然后把輸出的結(jié)果進行1×1的點卷積會得到一個H×W×C的卷積,在這時需要把輸出和最初的圖像進行連接,會得到一個H×W×2C的圖像,最后再經(jīng)過一個輸入通道擴大2倍輸出通道不變的n×n的卷積,將圖像轉(zhuǎn)換為H×W×C。這幾部分組成MobileDeepViT block整體結(jié)構(gòu),每經(jīng)過一個卷積操作后的輸出都需要經(jīng)過BN層和ReLU6非線性激活函數(shù)。此外,整個網(wǎng)絡(luò)結(jié)構(gòu)中Mo?bileDeepViT block的步長都為1。其中,Mo?bileDeepViT block中的n×n卷積為標(biāo)準(zhǔn)的n×n卷積,MobileNetV2 block和MobileDeepViT block的結(jié)構(gòu)如圖3所示。
由圖3可知,MobileDeepViT block與卷積類似,使用兩個標(biāo)準(zhǔn)n×n和1×1卷積以及含有Re-Attention 的transformer,用更深的全局處理取代卷積中的局部處理,因此MobileDeepViT block可以看作是一個卷積。并且其具有類似CNN和ViT的屬性,有助于更少的參數(shù)和簡單的訓(xùn)練方法獲得更好的效果。
3.3.1 數(shù)據(jù)集的選取及預(yù)處理
本文在訓(xùn)練過程中訓(xùn)練集為公共數(shù)據(jù)集CASIA-WebFace[13],該數(shù)據(jù)集應(yīng)用較為廣泛,共含有10 575個人的494 414張圖像。訓(xùn)練前需要對數(shù)據(jù)集進行預(yù)處理,將屬于同一個人的圖像放到同一個文件夾里面,并進行人臉的提取和矯正。
測試數(shù)據(jù)集選用的是LFW[14]人臉數(shù)據(jù)集進行模型的評估。LFW數(shù)據(jù)集包含5749人共13 233張人臉圖像,測試前將屬于同一個人的圖像放到同一個文件夾里,隨機選取6000對圖像進行對比實驗。
歐式距離測試選用的圖像為LFW測試集和自制的測試集,實驗前要進行灰度處理[15]。
3.3.2 實驗環(huán)境
實驗過程通過python語言編寫,框架為py?torch,訓(xùn)練和測試步驟是在NVIDIA RTX 3060 GPU上運行,12 GB顯存,內(nèi)存大小為29 GB,訓(xùn)練中bitchsize設(shè)置為32;歐式距離測試實驗在MacOS上進行,處理器為四核Intel Core i5、1.1 GHz CPU、8 GB內(nèi)存。
3.3.3 實驗結(jié)果及分析
三種不同的特征網(wǎng)絡(luò)分別是Inception_ResNetV1、MobileNetV1和 MobileDeepViT。In?ception_ResNetV1是FaceNet提取特征的原版主干網(wǎng)絡(luò);MobileNetV1是輕量級特征提取網(wǎng)絡(luò)。實驗過程中的評估指標(biāo)是LFW測試集的識別準(zhǔn)確率、模型的大小,三種主干網(wǎng)絡(luò)具體表現(xiàn)如表3所示。
從表中3可以看出,改進后模型的準(zhǔn)確率與Inception_ResNetV1基本一致,但模型參數(shù)量大大降低;與MobileNetV1模型相比,改進后模型的精度不僅有所提高,而且參數(shù)量更低。由此可以看出改進后的模型不僅參數(shù)量大大減少,而且在精度上有所提升,證明了改進后模型的有效性。
在歐式距離對比實驗中,測試圖像為灰度圖,測試前對圖像的臉部進行矯正和截取,當(dāng)兩張不同照片進行測試時,三種主干特征提取網(wǎng)絡(luò)測試結(jié)果如表4、圖4所示。
圖4中,橫、縱坐標(biāo)都為模型輸入圖片尺寸,其中,Inception_ResNetV1(左)和 Mobile?NetV1(中)輸入尺寸為 160×160,MobileDeep?ViT(右)的輸入尺寸為256×256;從表4中可知,改進后模型的歐式距離測試結(jié)果更小,在LFW和自制測試集的測試結(jié)果分別為0.476、0.740,表明該網(wǎng)絡(luò)模型可以更準(zhǔn)確判斷兩張圖像來自同一人。
關(guān)于改進模型實時性能測試,本文在Ma?cOS測試端測試了三種網(wǎng)絡(luò)模型預(yù)測相似度所消耗的時間,測試結(jié)果如表5所示。
從表5中可以看出,本文提出的模型在預(yù)測時消耗的時間明顯小于Inception_ResNetV1和MobileNetV1,這表明改進后的模型實時性更好。
本文研究并提出輕量級卷積神經(jīng)網(wǎng)絡(luò)Mo?bileDeepViT用于人臉識別,在輕量級網(wǎng)絡(luò)的基礎(chǔ)上融合DeepViT,解決了人臉識別過程中模型參數(shù)大、識別精度低等問題。通過實驗結(jié)果表明,本文提出的MobileDeepViT模型大小僅為11.1 MB,卻獲得較高的識別精度,說明本文算法具有較好的人臉識別效果。此外,在歐式距離和實時性對比的實驗結(jié)果表明,本文模型效果更好。由于影響識別效果的因素較多,未來的工作計劃仍然是構(gòu)建快速以及精度高的網(wǎng)絡(luò)模型,并且隨著新算法提出,下一步需要整合各個算法的優(yōu)勢構(gòu)建更好的網(wǎng)絡(luò)。