岳 杰 趙 禎
(河北建筑工程學(xué)院,河北 張家口 075000)
計(jì)算機(jī)視覺領(lǐng)域中,通常將卷積神經(jīng)網(wǎng)絡(luò)(CNN)作為圖像的特征提取模型.CNN具有良好的平移不變性,能夠結(jié)合不同的特征、較好的泛化到不同的空間位置,但與人類的感知方式相比存在很大的差異.CNN對于平移具有一定魯棒性,但對旋轉(zhuǎn)、縮放一類的視角變換處理效果不佳.為彌補(bǔ)這一缺點(diǎn),訓(xùn)練數(shù)據(jù)需要進(jìn)行一系列的預(yù)處理,增強(qiáng)數(shù)據(jù)集多樣性,提高模型視角變換方面的泛化能力.典型的卷積神經(jīng)網(wǎng)絡(luò),由于其池化層的影響,其特征表征的空間信息會(huì)丟失.隨著計(jì)算機(jī)視覺的發(fā)展,急需一種不丟失空間信息,有效監(jiān)測感受野中局部特征的神經(jīng)網(wǎng)絡(luò)模型來代替CNN.
Hinton及其實(shí)驗(yàn)團(tuán)隊(duì)首先提出了將膠囊網(wǎng)絡(luò)[9]作為CNN的替代品.膠囊網(wǎng)絡(luò)以矢量作為網(wǎng)絡(luò)的神經(jīng)元,以矢量的模長表示激活概率,用矢量的方向記錄特征的姿勢位置信息.由于CNN無法識別圖像的姿態(tài)、變形或部分圖像.CNN中的pooling操作在圖像中也失去了一些空間特征.因此,需要大量的訓(xùn)練數(shù)據(jù)來彌補(bǔ)這一損失.與膠囊網(wǎng)絡(luò)相比,它們的訓(xùn)練時(shí)間更長,部分原因是CNN深度深,而膠囊網(wǎng)絡(luò)寬度深,同時(shí)參數(shù)較少[8].CNN更容易受到敵對攻擊,如像素?cái)_動(dòng),導(dǎo)致錯(cuò)誤的分類.由于CNN具有最大池化pooling,所以圖像重構(gòu)比膠囊網(wǎng)絡(luò)中的重構(gòu)要求更高.
本文將膠囊網(wǎng)絡(luò)(Capsule Networks)擴(kuò)展到成對學(xué)習(xí)裝置,針對傳統(tǒng)孿生神經(jīng)網(wǎng)絡(luò)中CNN作為子網(wǎng)絡(luò)所存在的不足,用膠囊神經(jīng)網(wǎng)絡(luò)代替CNN,將孿生神經(jīng)網(wǎng)絡(luò)與膠囊網(wǎng)絡(luò)相結(jié)合構(gòu)建孿生膠囊網(wǎng)絡(luò),實(shí)驗(yàn)表明該模型能夠彌補(bǔ)CNN的不足并能夠出色完成相似度度量任務(wù).
孿生神經(jīng)網(wǎng)絡(luò)(Siamese Network)由一對權(quán)值共享的子網(wǎng)絡(luò)構(gòu)成,從成對的輸入中對比學(xué)習(xí)樣本的特征表征.不同于傳統(tǒng)分類模型,孿生神經(jīng)網(wǎng)絡(luò)需要成對的輸入,從中學(xué)習(xí)兩者的異同特征(正樣本共有特征,負(fù)樣本獨(dú)有特征),通過對比損失函數(shù)調(diào)整網(wǎng)絡(luò)參數(shù),學(xué)習(xí)相似度的度量尺度.孿生神經(jīng)網(wǎng)絡(luò)可廣泛用于簽名驗(yàn)證[1]、人臉識別等領(lǐng)域.
2010年Hinton在ICML上發(fā)表了文章《Rectified Linear Units Improve Restricted Boltzmann Machines》[2],該文章使用孿生神經(jīng)網(wǎng)絡(luò)來完成人臉識別任務(wù),且精準(zhǔn)度較高.其原理是輸入兩個(gè)人臉圖像到網(wǎng)絡(luò),進(jìn)行特征提取,通過特征向量間的歐式距離確定兩張人臉是否相似.2015年CVPR的一篇關(guān)于圖像相似度計(jì)算的文章:《Learning to Compare Image Patches via Convolutional Neural Networks》[3],該文章對孿生神經(jīng)網(wǎng)絡(luò)的算法進(jìn)行了改進(jìn),改進(jìn)后的網(wǎng)絡(luò)模型具有更優(yōu)的性能.孿生神經(jīng)網(wǎng)絡(luò)在人臉識別領(lǐng)域被廣泛應(yīng)用,其對光照變化和遮擋等表現(xiàn)出了很強(qiáng)的魯棒性.徐先峰等人[4](2020)指出,在實(shí)際應(yīng)用中,識別對象往往客觀存在著光照、表情、姿態(tài)和遮擋等復(fù)雜干擾,導(dǎo)致人臉識別較為困難,為了更好地對外界干擾魯棒,提高數(shù)據(jù)集的處理速度并解決由于數(shù)據(jù)集較少而導(dǎo)致的過擬合等問題[5],他們在深度學(xué)習(xí)理論基礎(chǔ)上,提出了一種引入感知模型[6]的改進(jìn)孿生卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),并對整個(gè)訓(xùn)練過程輔以循環(huán)學(xué)習(xí)率策略優(yōu)化算法[7],降低外界噪聲干擾、提高網(wǎng)絡(luò)學(xué)習(xí)能力地同時(shí)使得尋找最優(yōu)學(xué)習(xí)率變得容易、提升網(wǎng)絡(luò)性能,有效的實(shí)現(xiàn)了非限定性條件下的人臉識別.
1.1.1 網(wǎng)絡(luò)結(jié)構(gòu)概述
孿生網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖1所示.該模型同時(shí)輸入兩張圖片X1和X2,兩張圖片經(jīng)過一對權(quán)值共享的神經(jīng)網(wǎng)絡(luò)Gw,得到一對映射到高緯度空間的特征向量Gw(X1)和Gw(X2),計(jì)算得到兩特征向量間的歐氏距離Ew,以Ew的數(shù)值大小度量兩輸入圖片間的相似度.
圖1 孿生網(wǎng)絡(luò)結(jié)構(gòu)示意圖
1.1.2 對比損失函數(shù)
在孿生神經(jīng)網(wǎng)絡(luò)中,以比損失函數(shù)(Contrastive Loss function)為損失函數(shù),其表達(dá)式為:
(1)
公式1中,d為圖1-1中Ew,即兩輸入樣本經(jīng)由膠囊網(wǎng)絡(luò)輸出的特征向量的歐式距離;y為兩個(gè)輸入是正負(fù)樣本的判斷標(biāo)簽,y=1代表兩個(gè)樣本為正樣本,y=0則代表為負(fù)樣本;margin是設(shè)定的閾值,表示只考慮歐氏距離在0到margin之間的,超出的將其loss視為0.
膠囊網(wǎng)絡(luò)是一種以神經(jīng)元向量為單位的神經(jīng)網(wǎng)絡(luò).不同于以往的以標(biāo)量為個(gè)體神經(jīng)元的神經(jīng)網(wǎng)絡(luò),膠囊網(wǎng)絡(luò)將一組標(biāo)量神經(jīng)元組合成向量,以向量為神經(jīng)網(wǎng)絡(luò)的基本單位.向較于標(biāo)量,向量記錄的信息更加豐富,有效彌補(bǔ)了諸如CNN網(wǎng)絡(luò)中池化操作所帶來的空間信息丟失等問題.
1.2.1 網(wǎng)絡(luò)結(jié)構(gòu)
膠囊神經(jīng)網(wǎng)絡(luò)可劃分為五個(gè)部分,首先是常見的輸入層,用來輸入圖像;然后是一個(gè)卷積層,用來提取圖像的底層特征;之后是主膠囊層(PrimaryCaps)和數(shù)字膠囊層(DigitCaps),主膠囊層將上一層卷積層提取到的特征圖展平成一維,然后對應(yīng)位置合并,組成一個(gè)個(gè)的膠囊,數(shù)字膠囊層主要通過動(dòng)態(tài)路由來實(shí)現(xiàn)膠囊間的連接和參數(shù)更新;最后是輸出層,輸出的是向量,該向量對于輸入圖片有一定的表征作用,向量的模長表示特征存在的概率,模值越大,屬于該類的概率越高.膠囊網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示.
圖2 膠囊網(wǎng)絡(luò)結(jié)構(gòu)示意圖
1.2.2 動(dòng)態(tài)路由算法
膠囊網(wǎng)絡(luò)層級之間通過動(dòng)態(tài)路由算法進(jìn)行連接,算法流程如圖3所示.
圖3 動(dòng)態(tài)路由算法示意圖
表1 動(dòng)態(tài)路由偽代碼
孿生膠囊網(wǎng)絡(luò)的思想是構(gòu)造一個(gè)結(jié)合孿生網(wǎng)絡(luò)和膠囊網(wǎng)絡(luò)的新型網(wǎng)絡(luò)模型,以這樣的方式膠囊網(wǎng)絡(luò)的等變性的性質(zhì)被合并到孿生膠囊網(wǎng)絡(luò)上相較于以CNN為子網(wǎng)絡(luò)的傳統(tǒng)孿生網(wǎng)絡(luò),孿生膠囊網(wǎng)絡(luò)繼承了膠囊網(wǎng)絡(luò)參數(shù)少,空間信息保留完整的優(yōu)點(diǎn)[10].
圖4 孿生膠囊網(wǎng)絡(luò)結(jié)構(gòu)示意圖
本實(shí)驗(yàn)構(gòu)造了一個(gè)包含3個(gè)隱藏層的孿生膠囊網(wǎng)絡(luò),如圖4所示.輸入層輸入兩張256*256*1的人臉圖片,經(jīng)由一對參數(shù)共享的膠囊網(wǎng)絡(luò),得到一對16*10的特征向量,將特征向量展平,對比兩特征向量的歐式距離,作為衡量兩輸入人臉圖片的相似度程度.
本實(shí)驗(yàn)所所構(gòu)造的孿生膠囊網(wǎng)絡(luò)網(wǎng)絡(luò)層參數(shù)如表2所示:
表2 孿生膠囊網(wǎng)絡(luò)網(wǎng)絡(luò)參數(shù)
本實(shí)驗(yàn)所構(gòu)造的孿生膠囊網(wǎng)絡(luò)模型以對比損失(Contrastive Loss)為損失函數(shù),在實(shí)驗(yàn)過程中,發(fā)現(xiàn)對于使用孿生網(wǎng)絡(luò)方式反向傳播更新的網(wǎng)絡(luò)模型,原膠囊網(wǎng)絡(luò)后端的全連接層將膠囊網(wǎng)絡(luò)的視角變換魯棒性弱化了,故而本模型將膠囊網(wǎng)絡(luò)后端的全連接層取消,極大限度的保存了膠囊網(wǎng)絡(luò)的優(yōu)點(diǎn),且網(wǎng)絡(luò)參數(shù)更少.
本文使用公開的人臉數(shù)據(jù)集ORL進(jìn)行實(shí)驗(yàn).ORL數(shù)據(jù)集包含40個(gè)類別,每個(gè)類別包含同一個(gè)人的10張人臉圖片,每張圖片尺寸為92x112(本實(shí)驗(yàn)中轉(zhuǎn)化為256x256).本實(shí)驗(yàn)將40個(gè)類別中的35個(gè)類別作為訓(xùn)練數(shù)據(jù),其他5個(gè)類別為測試數(shù)據(jù),避免測試集與訓(xùn)練集重合實(shí)驗(yàn)結(jié)果的影響.數(shù)據(jù)集圖片樣例如圖5所示.
圖5 數(shù)據(jù)集樣例
實(shí)驗(yàn)以pytorch框架為基本構(gòu)建,數(shù)據(jù)預(yù)處理方面對訓(xùn)練數(shù)據(jù)只進(jìn)行resize操作,訓(xùn)練參數(shù)設(shè)置方面batchsize設(shè)為64,膠囊間的動(dòng)態(tài)路由迭代次數(shù)設(shè)為3,epoch設(shè)為4000,學(xué)習(xí)率設(shè)為0.001.以同一文件夾下圖片為正樣本,不同文件夾下圖片為負(fù)樣本,訓(xùn)練時(shí)選取的正負(fù)樣本比例為1:1.訓(xùn)練過程中的loss變化如圖6所示.
圖6 loss變化曲線圖
訓(xùn)練完成后,測試樣例如下圖示.
圖7 實(shí)驗(yàn)結(jié)果
圖7中有4組測試結(jié)果,每組由兩張對比圖片和不相似度(Dissimilarty)構(gòu)成.不相似度越大,兩圖片相似度越低,反之相似度越高.實(shí)驗(yàn)呈現(xiàn)結(jié)果與預(yù)期一致.
實(shí)驗(yàn)表明,孿生膠囊網(wǎng)絡(luò)在僅使用少量數(shù)據(jù)進(jìn)行學(xué)習(xí)時(shí)依舊表現(xiàn)良好,能夠較好完成圖像相似度度量任務(wù),但其由于膠囊間動(dòng)態(tài)路由的存在,在訓(xùn)練方面,時(shí)間成本略高.提高其訓(xùn)練速度會(huì)是推進(jìn)膠囊網(wǎng)絡(luò)發(fā)展的一個(gè)主要方向.