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

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

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

其中,當第k個類別存在時,Tk= 1,反之Tk=0,概率上限m+=0.9,概率下限m-=0.1.λ= 0.5防止最初的訓練過程抑制所有類別的活躍度[11].
為了實現按類別重構,標簽對應的編碼向量(活躍的編碼向量)的重構目標是原始圖像,其余編碼向量(不活躍的編碼向量)的重構目標是全零圖像.我們引入L2范數度量重構誤差:

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

其中,α是權值系數,用于調節分類損失和重構損失的重要性.
因為每個輸入圖像所包含的目標類別數是不確定的,所以無法使用排序取最大若干項的方法判斷輸入圖像包含的目標類別.又因為實驗中輸入圖像的類別數小于類別總數,所以對于多數不存在的類別而言,存在的類別是相對少數.因此,考慮采用離群點檢測的方法實現類別估計.
記編碼器輸入的類別存在概率為pi(i=1~n),則概率均值為mp=E[pi].記各個類別存在概率與概率均值mp的距離為:

則距離均值為:

判決閾值為:

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

為直觀展現估計和真實標簽之間的重合度,采用交并比(Intersection-Over-Union,IOU)展現模型識別的準確率:

模型的目標重構能力可以通過直接觀察進行比較,此外,實驗采用峰值信噪比 (Peak Signal Noise Ratio,PSNR)作為評價指標,更加客觀地評價模型的重構能力.

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

表1 MNIST 實驗卷積部分結構參數

表2 MNIST 實驗解碼器結構參數
圖3和圖4展示了模型對多類別圖像的重構結果.圖3的第1行是原始圖像,第2行是本文模型的重構結果,第3行是CapsNet的重構結果,每組重構結果的第1列是所有類別重構圖像的疊加,第2列是僅疊加高活躍度類別的重構圖像,說明本文模型和CapsNet的重構能力不隨輸入圖像中包含的類別數量增加而降低,重構能力較為穩定.圖4的“按類別重構”是對每個類別的編碼向量分別重構的結果.當類別不存在時,本文模型提取的編碼向量不會激勵解碼器產生任何形狀,而CapsNet產生了較大的“迷霧狀”圖形.出現這種現象的原因是,CapsNet的訓練過程中,僅有活躍的編碼向量到原始圖像的訓練數據對,缺少不活躍的編碼向量到全零圖像的訓練數據對,使得其解碼器不知道應該將不活躍的編碼向量映射為何種圖形,所以產生了“迷霧狀”圖形.而本文模型在訓練過程中增加了不活躍編碼向量到全零圖像的訓練數據對,使得解碼器不僅能夠將活躍的編碼向量映射到正確的圖形,而且能夠將不活躍的編碼向量映射到全零圖像.所以如果本文模型提取的編碼向量是低活躍度的,解碼器會將其映射到全零圖像,該編碼向量不會激勵解碼器產生任何形狀.由表3可得,在所有類別重構圖像和僅活躍類別重構圖像上,本文模型的PSNR明顯高于CapsNet,說明本文模型更好地還原了原始圖像.在所有類別重構圖像和僅活躍類別重構圖像上,本文模型的PSNR近似相等,說明本文模型產生的不活躍類別的重構圖像是近乎純凈的全零圖像,進一步說明不活躍的編碼向量幾乎不會激勵解碼器產生任何圖形.由此可得,本文模型具有更強、更全面的表征能力,對目標的重構能力優于CapsNet.

圖3 輸入類別數為 1、2、3、4 和 5 時,本文模型和 CapsNet的重構結果.每組的左側是所有類別重構圖像,右側是僅活躍類別重構圖像
表3同時展示了模型對多類別圖像的識別結果,說明本文模型和CapsNet在MNIST數據集的多目標識別任務上效果接近,具有良好的識別能力.
圖5展示了本文模型輸入不同圖像時,“數字3”類別編碼向量的重構圖像.第1行是輸入圖像,第2行是“數字3”類別的重構圖像,呈現的重構圖像整體經過歸一化.當輸入圖像中不含“數字3”時,該類別的編碼向量不會激勵解碼器產生任何圖形.一方面說明不論活躍度如何編碼向量的表征能力都很強;另一方面說明不采用屏蔽作為編碼稀疏化策略,類別重構圖像也不會出現混淆.

圖4 輸入圖像包含 5 類數字時,按類別重構圖像

表3 MNIST 實驗的結果

圖5 “數字3”對應編碼向量在不同輸入情況的重構結果
綜上所述,經過單類別數字圖像訓練,在多類別MNIST數據集上,本文模型和CapsNet均展現出良好的識別能力而本文模型的重構能力明顯優于CapsNet.
針對CapsNet解碼器的輸入層規模隨類別數增加而增加,可延展性較弱的問題,本文提出多分支自編碼器.該模型的解碼器分別重構每個類別的編碼向量,使得解碼器的規模獨立于類別數量,增強了模型的可延展性.此外在訓練方法上,增加全零圖像作為非標簽類別編碼向量的重構目標,提升了編碼向量的表征能力,模型的表征能力更全面.實驗部分展示了模型經過單一類別圖像的訓練,識別多類別圖像的能力.實驗結果表明在多類別MNIST數據集上,多分支自編碼器具有良好的識別能力而重構能力明顯優于CapsNet,說明本文對CapsNet的改進是有效的,使模型具有更全面的表征能力.
進一步工作,將研究如何將CapsNet應用于漢字字符識別和漢字風格表征.