基于深度學(xué)習(xí)的人臉識別算法,如何讓神經(jīng)網(wǎng)絡(luò)從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)到有效、魯棒的生物特征是至關(guān)重要的。在這個過程中,一個良好的學(xué)習(xí)向?qū)遣豢苫蛉钡摹R虼耍谀P陀?xùn)練的過程中,通常使用度量學(xué)習(xí)的方式,將人物面部特征間的距離,作為神經(jīng)網(wǎng)絡(luò)特征學(xué)習(xí)的向?qū)В瑏韺?shí)現(xiàn)區(qū)分不同人物的目的。
為了讓神經(jīng)網(wǎng)絡(luò)能夠更加有效的學(xué)習(xí),合理的設(shè)計損失函數(shù)來度量和映射人物特征之間的距離,成為了提高人臉識別精度的主要研究方向之一。許多在分類任務(wù)中常用的損失函數(shù),如Softmax Loss,在經(jīng)過一系列的改進(jìn)之后,更好的適應(yīng)了人臉識別的任務(wù)。像Arcface這樣的損失函數(shù)(下圖),利用了一種附加角度對cos值進(jìn)行加法約束,使得模型能夠在學(xué)習(xí)過程中合理的壓縮相同人物特征間的余弦距離的同時增大不同人物特征間的余弦距離,以此達(dá)到精準(zhǔn)區(qū)分人物的目的。
圖示展示在利用損失函數(shù)arcface訓(xùn)練一個深度卷積神經(jīng)網(wǎng)絡(luò)過程中的計算流程。其中的改進(jìn)在于,給角度加入了加性間隔m作為懲罰項來減小類間間距,并對其余弦值加入放縮s進(jìn)行放縮,讓網(wǎng)絡(luò)變得易于訓(xùn)練。
另一些損失函數(shù),如Triplet Loss(下圖),則是通過以特定規(guī)則從訓(xùn)練集中選擇樣例,提取特征,比較這些特征之間的距離,來達(dá)到聚類相同人物特征和離散不同人物特征的目的。可以看到,這種方法因為要逐次比對選擇樣例特征之間的距離并基于此來優(yōu)化模型參數(shù),所以會延長模型訓(xùn)練的周期。但對于解決一些特殊場景下的困難樣例,會有較好的效果。
圖示為最初版本的Triplet Loss原理示意圖。訓(xùn)練過程中需要從訓(xùn)練集中選擇一個Anchor樣本以及與Anchor樣本同類的Positive樣本和與Anchor樣本異類的Negative樣本,在訓(xùn)練過程中不斷的拉近同類樣本的距離并遠(yuǎn)離異類樣本。
選擇不同的損失函數(shù),會對模型進(jìn)行識別任務(wù)時選用的距離公式(相似度計算方法)產(chǎn)生影響。例如,Triplet Loss在早期優(yōu)化的是歐氏距離,所以在后期進(jìn)行特征比對時,利用歐式距離來計算特征之間相似度就是更加自然的。此外,通過對這些損失函數(shù)進(jìn)行變形,來統(tǒng)一各損失函數(shù)的優(yōu)化距離,從而使不同的損失函數(shù)能夠運(yùn)用在訓(xùn)練模型的不同階段,或?qū)⒉煌瑩p失函數(shù)對不同的樣例分配進(jìn)行結(jié)合,從而達(dá)到更高效的訓(xùn)練效率,也是目前的工作方向之一。
網(wǎng)絡(luò)結(jié)構(gòu)
根據(jù)使用場景和計算設(shè)備的不同,通常需要選擇不同規(guī)模的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。隨著人臉識別在移動端的普及以及識別規(guī)模的增大,選用計算量更小、更高效的網(wǎng)絡(luò)結(jié)構(gòu)成為了重要的研究方向。
標(biāo)準(zhǔn)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),以VGG16為例,通常由卷積層,池化層,全連接層和激活函數(shù)組成。該網(wǎng)絡(luò)通過反復(fù)堆疊3*3的小型卷積核和2*2的最大池化層,不斷加深網(wǎng)絡(luò)結(jié)構(gòu)來提升性能。
但隨著網(wǎng)絡(luò)結(jié)構(gòu)的進(jìn)一步加深,網(wǎng)絡(luò)參數(shù)會隨之增多,運(yùn)算開銷會變得很大,增加運(yùn)算成本。同時,網(wǎng)絡(luò)結(jié)構(gòu)的加深也會讓網(wǎng)絡(luò)發(fā)生退化現(xiàn)象,以至于在進(jìn)一步訓(xùn)練時無法達(dá)到預(yù)期的精度。
為解決這些問題,設(shè)計出參數(shù)少,深度深,運(yùn)算快,易于訓(xùn)練的輕量級網(wǎng)絡(luò)網(wǎng)絡(luò),各種卷積結(jié)構(gòu)和模塊被逐步引入到了卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)構(gòu)架中。
殘差模塊:為解決加深網(wǎng)絡(luò)后的網(wǎng)絡(luò)退化問題,使深度網(wǎng)絡(luò)變得可訓(xùn)練而提出的結(jié)構(gòu)(見下圖)。這種跳躍連接的結(jié)構(gòu)讓網(wǎng)絡(luò)有能力在需要的時候擬合一個潛在的恒等映射函數(shù),從而避免了在極深網(wǎng)絡(luò)中出現(xiàn)的難以訓(xùn)練的問題。
分組卷積:在標(biāo)準(zhǔn)的卷積操作中,其參數(shù)量與輸入特征圖通道數(shù),卷積核尺寸和輸出特征圖通道數(shù)有關(guān)。如圖,若輸入特征圖尺寸為H*W*c1,卷積核尺寸為h1*w1*c1,輸出特征圖尺寸為H*W*c2,標(biāo)準(zhǔn)卷幾層的參數(shù)量則為:h1*w1*c1*c2。
若使用分組卷積(見下圖),事先將輸入的特征圖按照通道數(shù)分為g組,分組卷積的參數(shù)量為則會變成標(biāo)準(zhǔn)卷積參數(shù)量的1/g:h1*w1*c1*c2/g。
分組卷積能夠在一定程度上降低卷積的參數(shù)量,但也會減弱各通道之間的相關(guān)性。
深度可分離卷積:深度可分離卷積操作是將普通卷積拆解成深度卷積和逐點(diǎn)卷積。深度卷積負(fù)責(zé)濾波,逐點(diǎn)卷積負(fù)責(zé)轉(zhuǎn)換通道。
如圖(a),對于標(biāo)準(zhǔn)卷積,其參數(shù)量為Dk*Dk*M*N。如圖(b),對于深度卷積,其參數(shù)量為:Dk*Dk*1*M。如圖(c),對于逐點(diǎn)卷積,其參數(shù)量為:1*1*M*N。將兩項操作合并,可知深度可分離卷積參數(shù)量是標(biāo)準(zhǔn)卷積的:(1/N)+(1/Dk**2)。
棄用池化層:池化層分為平均池化和最大池化,通過制定規(guī)則對池化核覆蓋范圍內(nèi)的像素進(jìn)行運(yùn)算,達(dá)到學(xué)習(xí)圖像邊緣及紋理結(jié)構(gòu),同時壓縮特征圖的效果。但池化層常常會導(dǎo)致較多的信息損失,因此,通常使用控制卷積核在特征圖上的滑動步長(如設(shè)定stride=2),來達(dá)到壓縮特征圖,提取圖像特征的目的。
減少全連接層:因為全連接層需要將每個神經(jīng)元節(jié)點(diǎn)與其前后層的神經(jīng)元分別連接,其通常會占據(jù)卷積神經(jīng)網(wǎng)絡(luò)的大部分參數(shù)。為了減少模型的參數(shù),會盡量減少全連接層的使用,通常利用全劇平均池化或大尺寸卷積核取代全連接層,來融合學(xué)到的特征。
同時,為了讓模型能夠更好的提取人物面部的特征,專門的人臉識別網(wǎng)絡(luò)在這些方面進(jìn)行了優(yōu)化,例如mobilefacenet在卷積網(wǎng)絡(luò)的尾部加入7*7卷積核壓縮特征圖,直接將特征圖轉(zhuǎn)化成相應(yīng)維度的面部特征并送入全連接層這樣的操作。對于一些特殊場景下的識別任務(wù),則會根據(jù)需求,定制出相應(yīng)的結(jié)構(gòu)模塊。例如,在面對面部遮擋的任務(wù)中,融入空間注意力機(jī)制,實(shí)現(xiàn)事先為特征熱力圖的空間分布的加權(quán),就變得相對重要。
編輯:jq
-
人臉識別
+關(guān)注
關(guān)注
76文章
4005瀏覽量
81768
原文標(biāo)題:基于深度學(xué)習(xí)的人臉識別算法
文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論