謝海聞,葉東毅,陳昭炯
(福州大學(xué) 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,福州 350108)
卷積神經(jīng)網(wǎng)絡(luò) (Convolutional Neural Network,CNN)是一類用于處理圖像問(wèn)題的神經(jīng)網(wǎng)絡(luò)模型,最初用于字符識(shí)別問(wèn)題[1,2],而后擴(kuò)展到自然圖像分類[3-5]、目標(biāo)檢測(cè)[6-9]等更復(fù)雜的問(wèn)題.CNN的主要結(jié)構(gòu)是卷積層和池化層,其中卷積層通過(guò)卷積得到一定數(shù)量的特征圖(feature map),池化層下采樣前一層的特征圖以獲得具有空間不變性的特征[10].CNN通過(guò)“卷積-池化”獲取空間不變特征時(shí)很好地捕獲了目標(biāo)實(shí)體的共性,但與此同時(shí)目標(biāo)實(shí)體的個(gè)性被逐步舍棄.
Sabour 、Frosst和 Hinton[11]提出 CapsNet用于目標(biāo)識(shí)別任務(wù).CapsNet使用capsule表示一個(gè)特定的實(shí)體(entity),capsule包含一個(gè)編碼向量,向量的模表示實(shí)體的存在概率,即活躍度,向量的方向表示實(shí)體的存在形態(tài)(個(gè)性).這里所說(shuō)的實(shí)體可以是一個(gè)完整的目標(biāo),也可以是目標(biāo)的一部分.CapsNet通過(guò)動(dòng)態(tài)路由(dynamic routing)的方式實(shí)現(xiàn)一致性路由(routing-byagreement)取代CNN使用的最大池化(max-pooling),使得只有活躍度高的capsule受到高層的關(guān)注,避免最大池化引起的位置信息缺失.具體而言,在低層級(jí)capsule中位置信息是不同區(qū)域capsule的活躍度,動(dòng)態(tài)路由能夠?qū)⑽恢眯畔⑥D(zhuǎn)移到高層級(jí)capsule并以編碼向量的碼字表示,因此CapsNet在高層級(jí)仍然保持了位置信息.而且動(dòng)態(tài)路由使得CapsNet在不增強(qiáng)或變形數(shù)據(jù)的情況下,能夠識(shí)別已知目標(biāo)的新形態(tài).在輸出層,CapsNet輸出各個(gè)類別的編碼向量,級(jí)聯(lián)全部類別的編碼向量,然后屏蔽(mask out)低活躍度類別的編碼向量得到輸入圖像的編碼,即提取了輸入圖像中目標(biāo)的表征.
為了促使表征能夠更好地表示輸入圖像中的目標(biāo),CapsNet在訓(xùn)練過(guò)程中加入重構(gòu)損失.重構(gòu)損失由重構(gòu)圖像和原始圖像的L2范數(shù)(L2norm)刻畫(huà).重構(gòu)圖像由解碼器根據(jù)表征得到.而且文獻(xiàn)[11]的實(shí)驗(yàn)結(jié)果表明加入重構(gòu)損失提升了CapsNet的目標(biāo)識(shí)別效果.
本文從新的角度思考該模型.將CapsNet視作編碼器,與文獻(xiàn)[11]重構(gòu)圖像的解碼器一同構(gòu)成一種可以完成目標(biāo)識(shí)別和目標(biāo)重構(gòu)的自編碼器模型.我們注意到CapsNet解碼器輸入層的規(guī)模隨類別數(shù)量的增加而增加,可延展性較差.
針對(duì)上述問(wèn)題,本文提出多分支自編碼器.結(jié)構(gòu)上,多分支自編碼器的表征是一個(gè)二維矩陣,不屏蔽任何編碼向量;解碼器的輸入是單一類別的編碼向量而非全部類別編碼向量的級(jí)聯(lián),使解碼器規(guī)模獨(dú)立于類別數(shù)量,增強(qiáng)模型解碼器的可延展性.訓(xùn)練方式上,加入新的優(yōu)化目標(biāo),使非標(biāo)簽類別編碼向量的重構(gòu)圖像接近全零圖像.這種訓(xùn)練方式減少低活躍度類別的編碼向量中所包含的噪聲,提升了正確類別編碼向量的表征能力,使重構(gòu)目標(biāo)更加精確.MNIST[1]數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果表明,本文模型具有良好的識(shí)別能力且重構(gòu)能力明顯優(yōu)于CapsNet,因而具有更全面的表征能力.
設(shè)一組單目標(biāo)圖像集合 X ={x1,x2,···},其對(duì)應(yīng)的類別CX={cx1,cx2,···},所有的類別構(gòu)成集合 C = {c1,c2,···}.現(xiàn)有一組復(fù)合圖像 Z ={z1,z2,···},其對(duì)應(yīng)的類別是CZ={Cz1,Cz2,···},其中Czi是C 中元素的集合.
本文研究目標(biāo)是以單目標(biāo)圖像集合 X 和對(duì)應(yīng)的類別 CX作為訓(xùn)練數(shù)據(jù),求得多分支自編碼器的最優(yōu)參數(shù),使得編碼器的類別估計(jì)與真實(shí)類別 CZ一致并且使得重構(gòu)的復(fù)合圖像與原始復(fù)合圖像Z 一致.
CapsNet是用于目標(biāo)識(shí)別的神經(jīng)網(wǎng)絡(luò)模型,其結(jié)構(gòu)如圖1所示.該模型首先利用一組卷積操作提取原始圖像的初級(jí)特征,然后利用編碼層將初級(jí)特征轉(zhuǎn)化為各個(gè)類別的編碼向量.其中,編碼層首先將卷積得到的初級(jí)特征整理成低層級(jí)capsule,然后利用動(dòng)態(tài)路由的方式推斷出高層級(jí)capsule.每個(gè)高層級(jí)capsule對(duì)應(yīng)一個(gè)目標(biāo)類別,其編碼向量是對(duì)應(yīng)類別的編碼向量.類別的存在概率是類別的編碼向量的模,即高級(jí)實(shí)體的活躍度.根據(jù)類別的存在概率判斷原始圖像包含的目標(biāo)類別.

圖1 CapsNet及其相應(yīng)的解碼器
動(dòng)態(tài)路由是一種確定低層級(jí)capsule與高層級(jí)capsule耦合系數(shù)(coupling coefficient)的一種迭代算法.這種算法使得與高層級(jí)capsule方向接近的低層級(jí)capsule具有更高的耦合系數(shù).相比CNN使用的最大池化,動(dòng)態(tài)路由更好地保持了位置信息.低層級(jí)以capsule的空間活躍度表示的位置信息,由動(dòng)態(tài)路由傳遞到高層級(jí)capsule編碼向量的碼字.同時(shí),以capsule表征實(shí)體相比以標(biāo)量表征實(shí)體而言,能夠更準(zhǔn)確地識(shí)別出以新形態(tài)呈現(xiàn)的已知目標(biāo).
當(dāng)原始圖像僅有一個(gè)類別時(shí),類別的編碼向量經(jīng)過(guò)級(jí)聯(lián)后,屏蔽活躍度低的編碼向量,僅保留活躍度最高的一個(gè)編碼向量,得到原始圖像的編碼.編碼經(jīng)過(guò)解碼器得到原始圖像的重構(gòu)圖像.
當(dāng)原始圖像包含多個(gè)類別時(shí),根據(jù)活躍度保留高活躍度的編碼向量得到多個(gè)編碼,每個(gè)編碼對(duì)應(yīng)原始圖像中的一個(gè)類別.解碼器分別解碼每個(gè)類別的編碼,得到對(duì)應(yīng)類別的重構(gòu)圖像,即類別重構(gòu)圖像.疊加這些類別重構(gòu)圖像,得到原始圖像的重構(gòu)圖像.
上述對(duì)編碼的處理方式使編碼變得稀疏,可以用共同的解碼器重構(gòu)所有類別的編碼.但是這種級(jí)聯(lián)的處理方式,導(dǎo)致模型的可延展性較差,解碼器輸入層的規(guī)模隨類別數(shù)的增加而增加.當(dāng)新增類別時(shí),無(wú)法利用已有的解碼器,無(wú)法將已有的解碼器參數(shù)作為初始化信息.
本文提出的多分支自編碼器是用于目標(biāo)識(shí)別和目標(biāo)重構(gòu)的神經(jīng)網(wǎng)絡(luò)模型,該模型改進(jìn)了CapsNet的結(jié)構(gòu)和訓(xùn)練方式,克服了上節(jié)提到的不足,其結(jié)構(gòu)如圖2所示.多分支自編碼器在編碼部分與CapsNet相似,編碼層輸出各個(gè)類別的編碼向量.與CapsNet不同的是,本文模型分別處理每個(gè)類別的編碼向量,而不考慮其活躍度.每個(gè)類別的編碼向量分別激勵(lì)解碼器產(chǎn)生各自類別的重構(gòu)圖像.所有類別重構(gòu)圖像疊加起來(lái)獲得完整的重構(gòu)圖像.解碼器的輸入端神經(jīng)元數(shù)量獨(dú)立于類別數(shù),即解碼器的輸入層規(guī)模不隨類別的增加而增加,使得模型具有更好的可延展性.下面舉例說(shuō)明,假設(shè)n類編碼向量的長(zhǎng)度分別為a,則CapsNet的解碼器輸入層需要有n×a個(gè)神經(jīng)元,而本文模型的解碼器輸入層需要a個(gè)神經(jīng)元.當(dāng)類別數(shù)增加n′類時(shí),CapsNet解碼器輸入層需要 (n+n′)×a個(gè)神經(jīng)元,輸入層的規(guī)模增加;而本文模型的解碼器輸入層仍只需要a個(gè)神經(jīng)元,輸入層的規(guī)模不變.

圖2 多分支自編碼器流程
Capsule和動(dòng)態(tài)路由機(jī)制,已經(jīng)能夠?qū)⒃紙D像的各類信息蘊(yùn)含到類別編碼向量中,包括目標(biāo)位置、形態(tài)和目標(biāo)的類別信息.即使不采用屏蔽作為編碼稀疏化策略,也能激勵(lì)解碼器產(chǎn)生相應(yīng)類別的重構(gòu)圖像.
本文模型采用解卷積網(wǎng)絡(luò)替換文獻(xiàn)[11]采用的全連接網(wǎng)絡(luò)作為解碼器.因?yàn)閿?shù)字圖像是二維空間中像素的集合,像素點(diǎn)之間存在二維空間上的關(guān)系,所以解卷積網(wǎng)絡(luò)相比全連接網(wǎng)絡(luò),更好地利用空間關(guān)系,能夠更精確地重構(gòu)圖像.
我們采用端到端的方式(end-to-end)訓(xùn)練網(wǎng)絡(luò)模型.為了更清晰地表述,我們假設(shè)對(duì)于 ?x∈X多分支自編碼器生成一組編碼向量{r1,r2,···}.
為了實(shí)現(xiàn)目標(biāo)識(shí)別,我們引入邊際損失(margin loss),促使編碼層輸出的類別編碼向量的活躍度(編碼向量的模){ | |r1||,||r2||,···},能夠反映相應(yīng)類別在原始圖像中的存在概率:

其中,當(dāng)?shù)趉個(gè)類別存在時(shí),Tk= 1,反之Tk=0,概率上限m+=0.9,概率下限m-=0.1.λ= 0.5防止最初的訓(xùn)練過(guò)程抑制所有類別的活躍度[11].
為了實(shí)現(xiàn)按類別重構(gòu),標(biāo)簽對(duì)應(yīng)的編碼向量(活躍的編碼向量)的重構(gòu)目標(biāo)是原始圖像,其余編碼向量(不活躍的編碼向量)的重構(gòu)目標(biāo)是全零圖像.我們引入L2范數(shù)度量重構(gòu)誤差:

其中,當(dāng)?shù)趉個(gè)類別存在時(shí),Tk= 1,反之是第k個(gè)類別的重構(gòu)圖像,x是原始圖像.相比CapsNet的訓(xùn)練方式,本文的訓(xùn)練方式不僅指導(dǎo)解碼器將活躍的編碼向量映射到原始圖像,而且進(jìn)一步指導(dǎo)解碼器將不活躍的編碼向量映射到全零圖像.因此,從理論上說(shuō),如果能夠獲得極小化上述損失函數(shù)的最優(yōu)解,則可以促使活躍的編碼向量激勵(lì)解碼器產(chǎn)生與原始圖像一致的重構(gòu)圖像,而促使不活躍的編碼向量映射為全零圖像,亦即抑制不活躍的編碼向量激勵(lì)解碼器產(chǎn)生任何形式的圖形.所以我們采用的訓(xùn)練方式更加全面,因而本文模型提取的編碼具有更強(qiáng)的表征能力,能夠更精確地重構(gòu)原始圖像.而且編碼向量表征能力的增強(qiáng),使得編碼向量能夠更準(zhǔn)確地反映相應(yīng)類別目標(biāo)的存在形式,提升模型的目標(biāo)識(shí)別效果.
為了同時(shí)優(yōu)化兩類目標(biāo),取兩類誤差的加權(quán)和作為整體的優(yōu)化目標(biāo)

其中,α是權(quán)值系數(shù),用于調(diào)節(jié)分類損失和重構(gòu)損失的重要性.
因?yàn)槊總€(gè)輸入圖像所包含的目標(biāo)類別數(shù)是不確定的,所以無(wú)法使用排序取最大若干項(xiàng)的方法判斷輸入圖像包含的目標(biāo)類別.又因?yàn)閷?shí)驗(yàn)中輸入圖像的類別數(shù)小于類別總數(shù),所以對(duì)于多數(shù)不存在的類別而言,存在的類別是相對(duì)少數(shù).因此,考慮采用離群點(diǎn)檢測(cè)的方法實(shí)現(xiàn)類別估計(jì).
記編碼器輸入的類別存在概率為pi(i=1~n),則概率均值為mp=E[pi].記各個(gè)類別存在概率與概率均值mp的距離為:

則距離均值為:

判決閾值為:

當(dāng)pi>Thread時(shí),第i類是離群點(diǎn),認(rèn)為輸入圖像中存在第i類;反之,第i類不是離群點(diǎn),認(rèn)為輸入圖像中不存在第i類.
實(shí)驗(yàn)采用主流的深度學(xué)習(xí)框架Tensorflow[12]構(gòu)造多分支自編碼器.訓(xùn)練使用的優(yōu)化器(optimizer)是Adam優(yōu)化器[13],優(yōu)化器的參數(shù)保持默認(rèn)設(shè)置.模型參數(shù)初始化采用Xiao等人[14]提出的正交初始化方法.為了使實(shí)驗(yàn)結(jié)果客觀公平,實(shí)驗(yàn)中CapsNet和多分支自編碼器的編碼器部分采用相同的結(jié)構(gòu).
為了評(píng)價(jià)模型的目標(biāo)識(shí)別能力,實(shí)驗(yàn)采用查準(zhǔn)率(P)、查全率(R)和F1-score作為客觀評(píng)價(jià)指標(biāo).查全率評(píng)價(jià)模型檢出部件的比例;查準(zhǔn)率評(píng)價(jià)模型檢出部件中屬于真實(shí)部件的比例;F1-score是查全率和查準(zhǔn)率的調(diào)和均值,F1-score高意味著模型既不傾向于將負(fù)類識(shí)別為正類以獲得更高的查全率,也不傾向于將使用過(guò)分嚴(yán)格的閾值以獲得更高的查準(zhǔn)率.設(shè)測(cè)試樣例數(shù)N,Pi是測(cè)試樣例的類別估計(jì),Yi是測(cè)試樣例的真實(shí)類別,則查準(zhǔn)率、查全率和F1-score的計(jì)算方式如下:

為直觀展現(xiàn)估計(jì)和真實(shí)標(biāo)簽之間的重合度,采用交并比(Intersection-Over-Union,IOU)展現(xiàn)模型識(shí)別的準(zhǔn)確率:

模型的目標(biāo)重構(gòu)能力可以通過(guò)直接觀察進(jìn)行比較,此外,實(shí)驗(yàn)采用峰值信噪比 (Peak Signal Noise Ratio,PSNR)作為評(píng)價(jià)指標(biāo),更加客觀地評(píng)價(jià)模型的重構(gòu)能力.

其中,MAX是圖像像素的最大值,MSE是重構(gòu)圖像與原圖像 Z的均方誤差
訓(xùn)練數(shù)據(jù)是MNIST[11]的訓(xùn)練集,其包含六萬(wàn)幅有數(shù)字類別標(biāo)記的圖像,其每幅圖像包含1類數(shù)字.原始的MNIST圖像尺寸是28×28,我們將28×28的數(shù)字隨機(jī)投入64×64的黑色背景中.測(cè)試數(shù)據(jù)由MNIST數(shù)據(jù)集的測(cè)試集制作.測(cè)試數(shù)據(jù)是多類別的圖像,由MNIST的測(cè)試集制成.測(cè)試圖像是在64×64的黑色背景中投入任意多個(gè)不同類別的數(shù)字,考慮到畫(huà)幅的容量,每張測(cè)試圖像至多包含5個(gè)不同類別的數(shù)字,至少有1個(gè)數(shù)字.
CapsNet和多分支自編碼器的卷積部分設(shè)置如表1所示,解碼部分設(shè)置如表2所示.

表1 MNIST 實(shí)驗(yàn)卷積部分結(jié)構(gòu)參數(shù)

表2 MNIST 實(shí)驗(yàn)解碼器結(jié)構(gòu)參數(shù)
圖3和圖4展示了模型對(duì)多類別圖像的重構(gòu)結(jié)果.圖3的第1行是原始圖像,第2行是本文模型的重構(gòu)結(jié)果,第3行是CapsNet的重構(gòu)結(jié)果,每組重構(gòu)結(jié)果的第1列是所有類別重構(gòu)圖像的疊加,第2列是僅疊加高活躍度類別的重構(gòu)圖像,說(shuō)明本文模型和CapsNet的重構(gòu)能力不隨輸入圖像中包含的類別數(shù)量增加而降低,重構(gòu)能力較為穩(wěn)定.圖4的“按類別重構(gòu)”是對(duì)每個(gè)類別的編碼向量分別重構(gòu)的結(jié)果.當(dāng)類別不存在時(shí),本文模型提取的編碼向量不會(huì)激勵(lì)解碼器產(chǎn)生任何形狀,而CapsNet產(chǎn)生了較大的“迷霧狀”圖形.出現(xiàn)這種現(xiàn)象的原因是,CapsNet的訓(xùn)練過(guò)程中,僅有活躍的編碼向量到原始圖像的訓(xùn)練數(shù)據(jù)對(duì),缺少不活躍的編碼向量到全零圖像的訓(xùn)練數(shù)據(jù)對(duì),使得其解碼器不知道應(yīng)該將不活躍的編碼向量映射為何種圖形,所以產(chǎn)生了“迷霧狀”圖形.而本文模型在訓(xùn)練過(guò)程中增加了不活躍編碼向量到全零圖像的訓(xùn)練數(shù)據(jù)對(duì),使得解碼器不僅能夠?qū)⒒钴S的編碼向量映射到正確的圖形,而且能夠?qū)⒉换钴S的編碼向量映射到全零圖像.所以如果本文模型提取的編碼向量是低活躍度的,解碼器會(huì)將其映射到全零圖像,該編碼向量不會(huì)激勵(lì)解碼器產(chǎn)生任何形狀.由表3可得,在所有類別重構(gòu)圖像和僅活躍類別重構(gòu)圖像上,本文模型的PSNR明顯高于CapsNet,說(shuō)明本文模型更好地還原了原始圖像.在所有類別重構(gòu)圖像和僅活躍類別重構(gòu)圖像上,本文模型的PSNR近似相等,說(shuō)明本文模型產(chǎn)生的不活躍類別的重構(gòu)圖像是近乎純凈的全零圖像,進(jìn)一步說(shuō)明不活躍的編碼向量幾乎不會(huì)激勵(lì)解碼器產(chǎn)生任何圖形.由此可得,本文模型具有更強(qiáng)、更全面的表征能力,對(duì)目標(biāo)的重構(gòu)能力優(yōu)于CapsNet.

圖3 輸入類別數(shù)為 1、2、3、4 和 5 時(shí),本文模型和 CapsNet的重構(gòu)結(jié)果.每組的左側(cè)是所有類別重構(gòu)圖像,右側(cè)是僅活躍類別重構(gòu)圖像
表3同時(shí)展示了模型對(duì)多類別圖像的識(shí)別結(jié)果,說(shuō)明本文模型和CapsNet在MNIST數(shù)據(jù)集的多目標(biāo)識(shí)別任務(wù)上效果接近,具有良好的識(shí)別能力.
圖5展示了本文模型輸入不同圖像時(shí),“數(shù)字3”類別編碼向量的重構(gòu)圖像.第1行是輸入圖像,第2行是“數(shù)字3”類別的重構(gòu)圖像,呈現(xiàn)的重構(gòu)圖像整體經(jīng)過(guò)歸一化.當(dāng)輸入圖像中不含“數(shù)字3”時(shí),該類別的編碼向量不會(huì)激勵(lì)解碼器產(chǎn)生任何圖形.一方面說(shuō)明不論活躍度如何編碼向量的表征能力都很強(qiáng);另一方面說(shuō)明不采用屏蔽作為編碼稀疏化策略,類別重構(gòu)圖像也不會(huì)出現(xiàn)混淆.

圖4 輸入圖像包含 5 類數(shù)字時(shí),按類別重構(gòu)圖像

表3 MNIST 實(shí)驗(yàn)的結(jié)果

圖5 “數(shù)字3”對(duì)應(yīng)編碼向量在不同輸入情況的重構(gòu)結(jié)果
綜上所述,經(jīng)過(guò)單類別數(shù)字圖像訓(xùn)練,在多類別MNIST數(shù)據(jù)集上,本文模型和CapsNet均展現(xiàn)出良好的識(shí)別能力而本文模型的重構(gòu)能力明顯優(yōu)于CapsNet.
針對(duì)CapsNet解碼器的輸入層規(guī)模隨類別數(shù)增加而增加,可延展性較弱的問(wèn)題,本文提出多分支自編碼器.該模型的解碼器分別重構(gòu)每個(gè)類別的編碼向量,使得解碼器的規(guī)模獨(dú)立于類別數(shù)量,增強(qiáng)了模型的可延展性.此外在訓(xùn)練方法上,增加全零圖像作為非標(biāo)簽類別編碼向量的重構(gòu)目標(biāo),提升了編碼向量的表征能力,模型的表征能力更全面.實(shí)驗(yàn)部分展示了模型經(jīng)過(guò)單一類別圖像的訓(xùn)練,識(shí)別多類別圖像的能力.實(shí)驗(yàn)結(jié)果表明在多類別MNIST數(shù)據(jù)集上,多分支自編碼器具有良好的識(shí)別能力而重構(gòu)能力明顯優(yōu)于CapsNet,說(shuō)明本文對(duì)CapsNet的改進(jìn)是有效的,使模型具有更全面的表征能力.
進(jìn)一步工作,將研究如何將CapsNet應(yīng)用于漢字字符識(shí)別和漢字風(fēng)格表征.