姜 虹,賈帥宇,姚紅革
(西安工業(yè)大學(xué) 計算機科學(xué)與工程學(xué)院,西安 710021)
“深度學(xué)習(xí)”自2006年被提出以來,經(jīng)過十幾年的發(fā)展,其已發(fā)展出眾多算法,但主要以CNN為主,CNN因其對底層對象之間的空間關(guān)系表達(dá)的不夠充分,并且其中的Pooling 過程會丟失一定量的位置信息[1],由于這些缺陷的存在CNN在某些方面的識別效果并不理想。文獻(xiàn)[2]首次提出膠囊(Capsule)的概念,作者在該論文中建立了一種三層簡易的網(wǎng)絡(luò)結(jié)構(gòu)CapsNet,并將CapsNet用于Mnist手寫體識別,準(zhǔn)確率高達(dá)97.5%,超越了文獻(xiàn)[3]提到的LeNet-5模型。2018年,文獻(xiàn)[4]對膠囊網(wǎng)絡(luò)中動態(tài)路由迭代算法進(jìn)行了解釋,并提出了一種新的EM路由算法,對Capsule膠囊網(wǎng)絡(luò)核心路由算法進(jìn)行改進(jìn)。盡管CapsNet網(wǎng)絡(luò)模型使用動態(tài)路由迭代算法替代了CNN的池化操作[5-6],降低了前向傳播過程中的特征損失,而且克服了CNN中特征不變性的缺點,提高了識別準(zhǔn)確率。但目前,CapsNet僅用于簡單圖像的識別,對于處于復(fù)雜場景下的目標(biāo)識別還鮮有研究。
本文基于膠囊網(wǎng)絡(luò)的思想,擬構(gòu)建一個新的膠囊網(wǎng)絡(luò)模型,采用Cifar10數(shù)據(jù)集對其進(jìn)行訓(xùn)練,在CapsNet的基礎(chǔ)上增加Conv2和Intermediate Capsule Layer,以提升網(wǎng)絡(luò)在復(fù)雜場景下對于物體識別精度以及單個膠囊對于信息的表征能力。
本文整體系統(tǒng)結(jié)構(gòu)如下圖1神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)圖所示。
圖1 神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)
相較于文獻(xiàn)[6]中的CapsNet,本文提出如下改進(jìn)。
本網(wǎng)絡(luò)模型在Conv1與Primary Capsule Layer之間增加了一層額外的卷積層Conv2,由于復(fù)雜場景下的彩色圖片蘊含的信息量較大,圖像中干擾信息較多,圖像信息之間的關(guān)系較為復(fù)雜。所以在結(jié)構(gòu)設(shè)計之上希望通過增加卷積層的方法過濾掉部分噪音,并且使得Primary Capsule Layer之前的卷積部分獲得更多有關(guān)識別目標(biāo)的信息,減少復(fù)雜背景干擾信息的影響。
Primary Capsule Layer之前兩層卷積層在對原始圖像經(jīng)過兩次特征提取過程,大量的有用信息被抽取至上層膠囊,經(jīng)過Primary Capsule Layer,Intermediate capsule layer對其信息進(jìn)行降噪并將有用信息利用Squash()函數(shù)壓縮至膠囊之中,膠囊中攜帶有識別信息。膠囊的維度越大,膠囊中可存儲的信息越多,網(wǎng)絡(luò)分類效果更好,本實驗中維度擴寬為16D。
在膠囊層之間,低層的特征膠囊首先通過姿態(tài)關(guān)系對高層特征進(jìn)行預(yù)測,通過“動態(tài)路由算法”和“篩分決策機制”選擇性的激活高層膠囊,這相當(dāng)于對低層膠囊網(wǎng)絡(luò)預(yù)測的結(jié)果進(jìn)行篩選,然后選擇性激活部分高層膠囊。增加了一層膠囊層Intermediate capsule layer,擬通過前兩層的膠囊層的層間傳播去掉部分噪音,從Intermediate capsule layer所被Primary Capsule Layer選擇激活的上層膠囊在經(jīng)過一層膠囊層間預(yù)測激活過程,激活A(yù)dvanced Capsule Layer完成最終分類,在兩次選擇激活的過程中,降低干擾因子。
本系統(tǒng)結(jié)構(gòu)正向運行過程如下:
Conv1:將32×32的彩色圖片采用256個5×5大小的卷積核對原始圖像進(jìn)行卷積,其中步幅為1,在卷積層采用Relu激活函數(shù)。
Conv2:采用512個5×5大小的卷積核對Conv1層進(jìn)行卷積,得到Conv2層。
Primary Capsule Layer:對網(wǎng)絡(luò)中注入的局部圖像信息進(jìn)行向量化,即采用16組不同的卷積核,每組卷積核中又有64個不同的10×10大小的卷積核對局部圖像進(jìn)行16次卷積,在卷積操作中步幅設(shè)置為1,并且采用Relu激活函數(shù),得到低層特征Ui,其中Ui為1×16大小的向量神經(jīng)元,具體結(jié)構(gòu)如圖2所示。
圖2 Primary Capsule Layer結(jié)構(gòu)
Advanced Capsule Layer:通過低層特征對高層特征進(jìn)行預(yù)測,并通過篩分決策機制和動態(tài)路由迭代算法選擇激活最高層特征膠囊,完成分類。
膠囊作為一個方向向量,不僅能夠進(jìn)行圖形目標(biāo)的分類,本文預(yù)測在膠囊中蘊含原始圖像中識別目標(biāo)的相關(guān)信息,即膠囊為原始圖像信息的壓縮。故本文在前向識別網(wǎng)絡(luò)后加入下圖3所示的重構(gòu)網(wǎng)絡(luò)來檢測所抽取特征信息的完整度,擬通過該重構(gòu)網(wǎng)絡(luò)實現(xiàn)被壓縮在膠囊中原始圖像的還原。改進(jìn)后的膠囊網(wǎng)絡(luò)如圖3重構(gòu)網(wǎng)絡(luò)結(jié)構(gòu)圖。
圖3 重構(gòu)網(wǎng)絡(luò)結(jié)構(gòu)圖
如圖3所示,在前半部分識別網(wǎng)絡(luò)的后面,加上重構(gòu)網(wǎng)絡(luò)結(jié)構(gòu),識別網(wǎng)絡(luò)結(jié)構(gòu)輸出10個1×16的膠囊即10個1×16的向量。該向量神經(jīng)元中攜帶有所識別圖像的信息,可以通過一個解碼器對這個輸出的1x16的向量進(jìn)行解碼,從而還原前半部分識別網(wǎng)絡(luò)所識別的圖像。
在前層網(wǎng)絡(luò)結(jié)構(gòu)的后面加三個全連接層,在第一個全連接層有512個結(jié)點組成,采用Relu激活函數(shù),第二個全連接層有1024個結(jié)點,采用Relu激活函數(shù),第三層由784個結(jié)點組成,激活函數(shù)采用Sigmod分類函數(shù)。
膠囊網(wǎng)絡(luò)相比于傳統(tǒng)CNN神經(jīng)網(wǎng)絡(luò)摒棄標(biāo)量神經(jīng)元,采用向量神經(jīng)元。其可用一個向量來表示。因向量神經(jīng)元可表達(dá)的信息量更大,從而使得網(wǎng)絡(luò)識別效率更高,識別效果更好。
每一個向量神經(jīng)元的屬性代表著該向量神經(jīng)元所指代的信息,向量神經(jīng)元的向量方向通常指代紋理,顏色,大小,形狀等信息,而向量神經(jīng)元的模長被用來指代該向量神經(jīng)元所代表的時間發(fā)生可能性的大小,該向量神經(jīng)元的模長越長則該向量神經(jīng)元所指代事件發(fā)生的可能性就越大,模長越短則事件發(fā)生的可能性就越小。
向量神經(jīng)元采用Squash()進(jìn)行激活,在經(jīng)過Squash()函數(shù)激活后的向量神經(jīng)元,其長度則代表該事件發(fā)生的概率,且Squash()對向量神經(jīng)元的長度能起到一定的放縮作用,使得特征比較顯著的向量神經(jīng)元變得概率更加大,使得識別效果更好。
膠囊層中物體各部分之間的分層姿態(tài)關(guān)系通過姿態(tài)矩陣表現(xiàn)出來[7-8]。其中,姿態(tài)主要包括平移 (translation)、旋轉(zhuǎn) (rotation) 和放縮 (scale) 三種形式。通過姿態(tài)矩陣物體姿態(tài)關(guān)系轉(zhuǎn)換過程如圖4所示。
圖4 姿態(tài)關(guān)系轉(zhuǎn)換例圖
用R,T,S定義旋轉(zhuǎn)、平移和縮放矩陣,那么將 (x,y) 先逆時針轉(zhuǎn) 30 度,向右平移2個單位,最終縮放 50% 到 (x′,y′) 可以由下列矩陣連乘得到
膠囊網(wǎng)絡(luò)在相鄰低級膠囊層和高級膠囊層之間,采用動態(tài)路由算法進(jìn)行由低層特征向高層特征的預(yù)測過程,動態(tài)路由機制由圖5所示。
動態(tài)路由算法基本工作原理如下:
① 初始化參數(shù)bij值。對于所有位于L層的膠囊i和L+1層的膠囊j,令所有bij初值均為0;
② 更新參數(shù)ci值。對于位于L層的所有膠囊i,令ci=softmax(bi)[9];
圖5 動態(tài)路由機制結(jié)構(gòu)圖
⑤ 對于位于L+1層的所有膠囊j,令Vj= squash(Sj);
⑦ 判斷膠囊層動態(tài)路由迭代次數(shù)是否達(dá)到預(yù)先設(shè)定好的迭代上限r(nóng),若未達(dá)到則重新返回步驟②,若完成則結(jié)束。
為了將每個膠囊的長度都壓縮到0到1之間,從而使得每個膠囊的長度表示該膠囊所代表事件發(fā)生的可能性,在膠囊網(wǎng)絡(luò)中引入Squash()函數(shù)[9],該函數(shù)不但可以完成壓縮膠囊長度的工作,而且該函數(shù)能夠?qū)δz囊代表事件發(fā)生可能性的概率放縮,使得大概率事件發(fā)生的可能性更大,小概率事件發(fā)生的可能性更小。其表達(dá)式為
(1)
式中:Vj為單個膠囊經(jīng)過壓縮之后輸出的輸出向量,其長度在0到1之間;Sj為傳入Squash()函數(shù)的膠囊,該膠囊為經(jīng)過上一層卷積層計算,進(jìn)行加權(quán)求和之后得到的結(jié)果。對于該表達(dá)式,可以分為兩部分?!琒j‖2/(1+‖Sj‖2)為在不考慮膠囊方向的情況下,單純對膠囊長度進(jìn)行放縮,使得長度小的膠囊長度表的更小,而長度大的膠囊長度變得更大,在整個計算過程中,對輸入膠囊的長度起放縮作用。Sj/‖Sj‖的作用為在‖Sj‖2/(1+‖Sj‖2)對膠囊長度放縮的前提下保持膠囊的方向不發(fā)生變化,即保持膠囊所代表事件的紋理,速度等特性不發(fā)生變化。Squash()函數(shù)中這兩部分的結(jié)合,使得膠囊在不改變方向的情況下有壓縮了膠囊的長度,使得膠囊長度介于0到1之間表示膠囊所指代事件發(fā)生的可能性,起到一種非線性激活的作用。
低層膠囊層向量神經(jīng)元通過篩分決策機制對高層向量神經(jīng)元進(jìn)行選擇性激活,此過程類似于投票選舉,票數(shù)相對較多的單元即為被選定即將被激活的單元。如圖6篩分決策機制原理圖所示,圖中圈起的紅點為投票數(shù)較多并將被激活的單元,這些點聚集在一起意味著低層膠囊對高級特征的預(yù)測較為接近,最終將代表低層膠囊對高層的預(yù)測。分散在圈外的藍(lán)點為投票數(shù)較少無法被激活的單元,由于其距離紅色的聚集點較遠(yuǎn),所以其預(yù)測結(jié)果將被舍棄。
圖6 篩分決策機制原理圖
在膠囊網(wǎng)絡(luò)結(jié)構(gòu)中,每個膠囊即為一個向量神經(jīng)元,該向量神經(jīng)元為低層特征根據(jù)局部姿態(tài)關(guān)系預(yù)測得到的表達(dá)高級特征的向量神經(jīng)元。向量神經(jīng)元具有長度和方向兩個屬性,通過向量的方向表示向量所指代的事件,兩個向量神經(jīng)元方向差別越小,則這兩個向量神經(jīng)元所指代的事件相似度越高,其過程如上圖6所示,則最多向量神經(jīng)元的指向方向即為最終決策向量方向,該決策向量方向所指代的事件為最終決策事件。這種利用向量神經(jīng)元方向來決策高級特征,并選擇性激活高級特征膠囊的方法稱為篩分決策機制。通過決策機制結(jié)合路由算法得到所識別物體最終的類別結(jié)果。
在本實驗中,采用經(jīng)典Cifar10數(shù)據(jù)集,該數(shù)據(jù)集由十個種類不同的對象構(gòu)成,數(shù)據(jù)集共包括60 000張彩色圖片,每張圖片均為32×32大小。而總共的60 000張圖片又分為50 000張訓(xùn)練樣本和10 000張測試樣本,其中10類不同對象的圖片各有6 000張,每種對象的圖片數(shù)量一樣多,且圖像大小均相同,在數(shù)據(jù)集圖片中,所識別目標(biāo)均處于較復(fù)雜場景之中,每張數(shù)據(jù)集背景圖片均不相同,且背景較為復(fù)雜,對于目標(biāo)的識別過程會造成較強的干擾。其中,Cifar10的十類對象的少數(shù)樣本如圖7 Cifar10數(shù)據(jù)集所示。
為估算本文算法對Cifar10數(shù)據(jù)集的識別效果,使用準(zhǔn)確率(accuracy,Acc)來衡量算法的性能,Acc的取值介于[0,1]之間,具體計算公式為
(2)
式中:TN為圖片識別正確的數(shù)量;EN為識別的圖片數(shù)量。
圖7 Cifar10數(shù)據(jù)集
3.2.1 文中網(wǎng)絡(luò)與CapsNet的性能對比
實驗通過采用Cifar10數(shù)據(jù)集來測試CapsNet和本文網(wǎng)絡(luò)在復(fù)雜場景下的表現(xiàn)情況。分別對兩個網(wǎng)絡(luò)進(jìn)行訓(xùn)練,通過對相同訓(xùn)練批次下的兩個不同網(wǎng)絡(luò)模型進(jìn)行測試發(fā)現(xiàn),本文中所構(gòu)建的網(wǎng)絡(luò)相比于CapsNet識別準(zhǔn)確率提高了3.2%,并且重構(gòu)效果有所提升但是提升不明顯,實驗結(jié)果見表1。
表1 對CapsNet逐步改進(jìn)的結(jié)果對比
參見表1,實驗分步對CapsNet網(wǎng)絡(luò)進(jìn)行改進(jìn)。在CapsNet網(wǎng)絡(luò)的基礎(chǔ)上增加一個卷積層,此時的初步模型測試準(zhǔn)確率有所提升,模型準(zhǔn)確率為68.1%。在此基礎(chǔ)上分別在網(wǎng)絡(luò)上添加膠囊層并且對膠囊進(jìn)行擴維的改進(jìn),經(jīng)過三次改進(jìn)的膠囊最高準(zhǔn)確率可達(dá)71%,相比于CapsNet準(zhǔn)確度提升了3.2%。雖然改進(jìn)后的網(wǎng)絡(luò)沒有達(dá)到預(yù)期結(jié)果,但是相較于CapsNet整體有所提升。
3.2.2 文中網(wǎng)絡(luò)與CapsNet的復(fù)雜度對比
在參數(shù)數(shù)量方面,CapsNet網(wǎng)絡(luò)模型中(不含解碼器部分)大約含有63.13萬個參數(shù)。在改進(jìn)后的網(wǎng)絡(luò)模型中參數(shù)數(shù)量增長到了82.88萬個。改進(jìn)后模型的參數(shù)量相較于CapsNet增加了31%,但是文中成功提升了CapsNet的模型性能。盡管最終的結(jié)果沒有達(dá)到預(yù)期的效果,但是的確證明了一些方法(增加卷積層與膠囊層、擴維)能夠有效的提升CapsNet網(wǎng)絡(luò)模型的識別性能。
3.2.3 動態(tài)路由算法迭代次數(shù)對于識別率的影響
動態(tài)路由算法作為膠囊網(wǎng)絡(luò)的核心算法,其迭代次數(shù)對網(wǎng)絡(luò)模型的識別結(jié)果有著舉足輕重的影響。在本實驗中在其它環(huán)境不變的情況下,調(diào)整動態(tài)路由算法的迭代參數(shù)。通過比較不同迭代次數(shù)的情況下,網(wǎng)絡(luò)模型的準(zhǔn)確率,并通過對所得數(shù)據(jù)進(jìn)行比較分析,從而分析迭代次數(shù)對于網(wǎng)絡(luò)模型的局部影響以及全局影響,見表2。
表2 不同路由迭代次數(shù)下的準(zhǔn)確率
在該網(wǎng)絡(luò)模型上,對膠囊層間動態(tài)路由算法路由迭代次數(shù)進(jìn)行改變,進(jìn)而通過實驗結(jié)果分析迭代次數(shù)對于整個網(wǎng)絡(luò)識別率的影響。通過在MNIST和Cifar10數(shù)據(jù)集上通過調(diào)整迭代次數(shù)R分別進(jìn)行四次實驗,通過觀察實驗結(jié)果得出當(dāng)R=3時,整個網(wǎng)絡(luò)模型對于MNIST和Cifar10數(shù)據(jù)集的識別準(zhǔn)確率都是最高的,此時即可認(rèn)為當(dāng)R=3時,整個網(wǎng)絡(luò)達(dá)到了最優(yōu)性能。
3.3.1 改進(jìn)網(wǎng)絡(luò)前向識別測試
通過對動態(tài)路由算法的研究以及大量實驗驗證,在R=3時算法最優(yōu),故在本實驗中擬設(shè)置R=3,采用Cifar10數(shù)據(jù)集對改進(jìn)的網(wǎng)絡(luò)進(jìn)行測試,使用Cifar10數(shù)據(jù)集中的50 000個訓(xùn)練樣本進(jìn)行訓(xùn)練,通過50 000個訓(xùn)練樣本每對網(wǎng)絡(luò)訓(xùn)練一個輪次,采用10 000個測試圖像對網(wǎng)絡(luò)本次訓(xùn)練情況進(jìn)行測試,以得到當(dāng)前網(wǎng)絡(luò)對于圖像的識別準(zhǔn)確率。在本實驗中,利用Cifar10數(shù)據(jù)集對該網(wǎng)絡(luò)模型進(jìn)行了80個輪次的訓(xùn)練。在訓(xùn)練過程中,該網(wǎng)絡(luò)模型識別準(zhǔn)確率的變化情況如圖8所示,網(wǎng)絡(luò)loss如圖9所示。
圖8 準(zhǔn)確率變化曲線Fig.8 Precision curve
該網(wǎng)絡(luò)模型在訓(xùn)練過程中,當(dāng)對網(wǎng)絡(luò)的第一個訓(xùn)練輪次完成時,網(wǎng)絡(luò)的準(zhǔn)確率如圖8所示,準(zhǔn)確率為0.390 9。當(dāng)對網(wǎng)絡(luò)模型的80個輪次的訓(xùn)練全部結(jié)束時,網(wǎng)絡(luò)模型的準(zhǔn)確率如圖8所示,準(zhǔn)確率為0.625 0。但結(jié)合圖9中網(wǎng)絡(luò)總的loss走勢來看,當(dāng)訓(xùn)練程度到達(dá)5.000 k左右時,識別準(zhǔn)確率達(dá)到最高水平為0.71,同時total loss降到最低點,此時網(wǎng)絡(luò)中參數(shù)之間協(xié)調(diào)度達(dá)到全局最優(yōu)。在訓(xùn)練程度超過5.000 k后,會產(chǎn)生過擬合,網(wǎng)絡(luò)模型識別準(zhǔn)確率降低,故應(yīng)在5.000 k時停止對網(wǎng)絡(luò)的訓(xùn)練,此時網(wǎng)絡(luò)識別效果最佳,識別準(zhǔn)確率為0.71。
圖9 網(wǎng)絡(luò)損失變化曲線Fig.9 Network loss curve
3.3.2 Advanced Capsule Layer膠囊擴維對重構(gòu)的影響
圖10為原始膠囊網(wǎng)絡(luò)和改進(jìn)后膠囊網(wǎng)絡(luò)的重構(gòu)誤差,圖11為原圖及重構(gòu)效果圖。
圖10 原始膠囊網(wǎng)絡(luò)和改進(jìn)后膠囊網(wǎng)絡(luò)的重構(gòu)誤差曲線
圖11 原圖及重構(gòu)效果圖
由于文中模型將前向識別網(wǎng)絡(luò)輸出膠囊維度擴至16D,對比圖10中重構(gòu)誤差曲線可看出,相比CapsNet的重構(gòu)結(jié)果,文中實驗所設(shè)計的網(wǎng)絡(luò)重構(gòu)誤差更小,效果稍好,這說明對輸出膠囊進(jìn)行擴維能夠提高重構(gòu)效果。但是從圖11中看出,重構(gòu)的效果還是不夠穩(wěn)定,重構(gòu)所得到的圖片清晰度不夠高。
在實驗的訓(xùn)練過程中,隨著訓(xùn)練的進(jìn)一步深入,整個網(wǎng)絡(luò)模型的total_loss值整體趨于下降趨勢,隨著總體誤差值的降低,網(wǎng)絡(luò)模型的識別準(zhǔn)確度也隨之逐漸上升,但在total_loss下降趨于0.60附近時該網(wǎng)絡(luò)模型中的總體誤差開始升高。
本文對CapsNet網(wǎng)絡(luò)進(jìn)行了改進(jìn),為使其在復(fù)雜場景下對于物體具有更良好的識別和表征能力,文中在CapsNet網(wǎng)絡(luò)的基礎(chǔ)上增加了一層卷積層和膠囊層,使其能夠提取到更多細(xì)節(jié)特征。并且對各層膠囊進(jìn)行了擴維,使每個膠囊能夠攜帶更多的特征信息。網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)化使得網(wǎng)絡(luò)不但能充分的提取低層特征,而且兩個膠囊層在經(jīng)過兩層動態(tài)路由和篩分決策之后,降低了復(fù)雜場景對于物體識別的干擾,并且改進(jìn)后的前向識別網(wǎng)絡(luò)相比于原來的CapsNet分類準(zhǔn)確率提高了3.2%,當(dāng)訓(xùn)練程度到達(dá)5.000 k左右時,識別準(zhǔn)確率達(dá)到最高水平為0.71。但目前的分類結(jié)果并沒有達(dá)到我們預(yù)期的結(jié)果,今后將嘗試對目前的網(wǎng)絡(luò)做進(jìn)一步的改動,以達(dá)到更高的分類準(zhǔn)確率。