楊洪剛,陳潔潔,徐夢飛
(湖北師范大學 計算機與信息工程學院,湖北 黃石 435002)
在當代醫學診斷的過程中,醫療影像作為臨床上病癥檢測的客觀依據,為醫生診斷提供支持[1]。眼底圖像的應用目前已經較為成熟,但醫生通過它進行眼部疾病的判斷需要大量的臨床經驗作為積累。對于醫療資源較差的地區,通過眼底圖像進行診斷的精度并不理想,而使用計算機技術對眼底圖像進行分類能有效提高診斷精度[2]。
深度學習的出現為基于眼底圖像的分類問題提供了一種有效的方法:王宇光等[3]提出一種基于5 個深度卷積模型的集成訓練結構,通過正則化隨機性,增強了模型面對不同眼底數據集的魯棒性;姜聲[4]提出用卷積神經網絡(Convolutional Neural Network,CNN)作為底層模型對眼底圖像進行特征提取,用長短期記憶(Long Short-Term Memory,LSTM)[5]作為上層模型輸出關于該圖像的文本描述信息;Li等[6]利用多示例多模態網絡學習思想,解決了眼底圖像分辨率太大不利于深度神經網絡訓練的問題。因類間差異和樣本差異都很細微的特性,眼底圖像分類可被視作細粒度分類問題[7],傳統的CNN 模型對眼底圖像細粒度的特征提取有限[8],因此如何提高模型的特征提取能力是眼底圖像的分類模型的研究重點。
雙線性卷積神經網絡(Bilinear Convolutional Neural Network,BCNN)[8]是針對細粒度問題提出的分類模型,該模型使用兩個經過預訓練的VGG16[9]網絡提取圖片的特征信息,并使用雙線性池化進行二階信息融合。這雖然提高了精度但也造成參數量爆炸式的增長。針對上述問題,Gao 等[10]采用線性核機器的思想,提出了Random Maclaurin 和Tensor Sketch 兩種低維投影函數對二階特征融合矩陣的計算進行降維。Kong 等[11]運用矩陣的特征值分解來進行低秩計算,在沒有明顯降低精度的情況下,將參數量降低了99.6%。Zheng等[12]首先對輸入圖片進行語義分割,然后對語義聯系緊密的區域進行二階融合,最后刪除非關聯部分的融合過程。通過上述操作,對比原始BCNN 模型在CUB200-2011 數據集上提高了4%的精度的同時將參數量降低了96%。
Transformer[13]是基于注意力機制來提取內在特征聯系的模型,具有強大的全局表達能力,開始被廣泛地應用在NLP、視覺任務等領域中。TransFG[14]是Transformer 第一個用于細粒度的分類任務的基于注意力機制的模型。通過滑動提取圖塊和增加有效區域選擇模塊使最后一層注意力層只輸入對分類有意義的部分圖塊,判斷過程更能集中注意力。在前期工作中,筆者團隊提出了TransEye(Transformer Eye)[15]來解決眼底圖像分類問題,在輸入端增加CNN 模塊提取底層語義信息和降低圖塊維度,另一方面利用自注意機制的權值積來定位有效區域。
為了進一步提高眼底圖像分類任務的精度,本文提出基于involution 算子[16]實現注意力結構,并以這種結構作為子網絡模型之一改造BCNN,設計了注意力雙線性內卷神經網絡(Attention Bilinear Involution Neural Network,ABINN)模型,如圖1 所示。ABINN 是CNN 和注意力機制結合的模型,打破了BCNN 模型的對稱性,兩個子網絡由CNN 架構和注意力架構組成,分別完成底層語義信息提取和空間結構信息關聯兩個任務,并統一由involution 算子實現。這不僅可以同時提取到輸入圖片的局部特征和長距離語義關系,也簡化了模型結構,使雙線性池化的計算不再需要進行維度上的縮減。

圖1 ABINN模型的結構Fig.1 Structure of ABINN model
綜上所述,本文主要工作如下:
1)提出了兩種基于involution 算子實現注意力計算的方法,分別為基于像素的注意力子網絡(Attention Subnetwork based on PiXel,ASX)和基于圖塊的注意力子網絡(Attention Subnetwork based on PaTch,AST),該方法可以將注意力的思想用CNN 結構的網絡實現。
2)使用ASX 和AST 改進BCNN,提出了針對眼底圖像細粒度分類的ABINN,該網絡是卷積和注意力機制的有效結合,能實現語義信息二階融合。
3)針對眼底圖像識別任務特點對雙線性池化計算進行了優化,使模型參數量僅為BCNN 的11%。
4)在OIA-ODIR 數據集[17]進行了實驗,實驗結果顯示ABINN 模型在精度上優于TransEye、TransFG 等模型。
BCNN 是解決細粒度分類問題的模型,與一階CNN 模型相比,BCNN 通過雙線性結構完成特征融合,提取輸入圖片的二階特征用于分類。首先由兩個VGG-16 網絡作為子網絡提取輸入圖片的特征映射;然后使用雙線性池化操作融合兩個子網絡提取的特征;最后通過一層全連接分類器進行分類。BCNN 模型可以定義為:

其中:fA和fB是兩個用于特征提取的子函數,P是雙線性池化函數,C是分類函數。兩個VGG-16 網絡作為骨干網絡在ImageNet 數據集[18]上使用相同的預訓練手段,并去除最后一層全連接層。
BCNN 是一個端到端訓練的模型。使用長步驟、多結構的組合模型解決細粒度分類問題時,各模塊訓練目標的不一致會導致某個模塊的目標函數與系統的宏觀目標有偏差。因此,在統一模型下使用單獨目標函數進行訓練的端到端模型更符合眼底疾病圖像分類任務的需求[19]。
involution 是一種有效的視覺表征學習算子,扭轉了卷積的設計原則,完成了從空間一致性和通道特異性到空間特異性和通道一致性的轉變。這在一定程度上解決了感受野在一次卷積中無法捕獲長距離信息的挑戰。不僅如此,卷積過程內部通道間冗余突出成為了一個共識,而involution 算子有效避免了這個問題。在網絡中,involution 算子可以直接替換卷積操作從而更新現有的卷積神經網絡。
具體來說,involution 算子的前饋過程[16]如圖2 所示,對應位置的特征向量通過G(X)非線性函數生成只屬于此位置的involution 核,并在所有通道上進行共享。將展平的involution 核與對應位置周圍的圖塊在通道上作乘法廣播計算,在空間上作向量加法計算即M(X),最終得到一個與輸入維度完全一致的特征映射。對于對應位置來說,它可以是一個圖塊也可以是一個像素。這樣的設計非常方便上下游任務中輸入不同分辨率特征映射的參數交流。

圖2 involution算子的前饋計算過程Fig.2 Involution operator feedforward calculation process
另外,involution 的結構與注意力機制的計算方法類似。在基于注意力結構的視覺模型中,價值矩陣V的值通過計算查詢矩陣Q和關鍵內容K之間的對應關系得到。直觀上講,自注意力算法通過計算對應圖塊與周圍部分的關系得到了自己包含的信息。然而,在involution 算子中,將生成函數設置為類似形式,也可以產生相應效果。由于通道共享的設計理念,整體過程并不會產生巨大的參數量。
involution 算子的出現將注意力的思想集成在CNN 框架下實現,為本文后續的工作提供了支持。
ABINN 沿用了BCNN 的雙線性框架,但對內部結構進行了重構。本章主要從CNN 子網絡設計和注意力子網絡設計兩個部分來介紹該模型。
ABINN 類似BCNN 結構用兩個子網絡模塊對輸入圖片進行特征提取,然而不同的是,這兩個子網絡不再使用完全相同的結構。研究認為相同結構提取的特征本質上是高度相似的,使得后續的池化融合過程中丟失了二階特征融合的優勢[19]。因此,受CNN 與注意力機制結合的啟發,本文提出分別用基于CNN 模型和注意力模型做子網絡。
基于CNN 的模型使用了中間層截斷的ResNet18[20]和RedNet18[21]兩種具有殘差結構的網絡,其中,ResNet18 的參數在ImageNet1K 數據集[18]上進行了預訓練。通過預訓練,當領域特定數據稀缺時可以從額外的訓練數據中獲益,這對于從大物體分類到細粒度分類的許多任務都是有益的。使用CNN 的另一個優點是,CNN 被證明是提取圖像底層語義信息的有效手段,經典的深層CNN 模型在過去一直被認為是處理細粒度問題的主要方式。無論ResNet18 還是RedNet18,本文實現中都去除了最后的分類層并使最后一層卷積的輸出通道固定為7(因為在OIA-ODIR 數據集的眼底圖像分類是一個7 分類任務),同時保留了全局平均池化操作。總之,CNN 的輸出X是一個1 × 7 維度的向量。
ABINN 沒有直接將類似視覺Transformer(Vision in Transformer,ViT)[22]的基于注意力機制的網絡直接作為另一個子網絡,而是采用了基于involution 算子下實現的類注意力機制網絡。原因如下:
1)ViT 網絡的輸出不利于做全局平均池化操作,這使得池化融合操作之前需要進行維度的修剪,必然會造成信息的丟失。
2)ViT 網絡的參數量已經相當龐大,直接集成到ABINN中會使整體的模型體積成倍增加。
3)involution 算子下實現的注意力網絡具有類似ViT 的功能,而且是在CNN 基礎結構上完成的,這使得兩個子網絡可以在一個框架下進行訓練,更好地進行信息傳遞。
本文給出了兩種involution 核函數的實例化方法,分別以像素和圖塊作為函數的輸入,稱其為Gpix函數和Gpat函數。Gpix函數如下:

其中:Xij表示維度為1 × 1 ×C對應輸入圖像中所有第i行j列的像素組成的一個向量;WQ(維度K×K×C)和WK(維度G×C)表示兩個線性變換,G是一個超參數,表示將所有通道分成G個組,每個組共享核參數(根據involution 論文[16]中的結論,所有的實驗中G均設置為4),并且沒有使用ResNet中的通道壓縮技術。為了構建具有注意力性質的完整網絡結構,該子網絡同樣通過堆疊塊狀結構來鏡像地復制ResNet設計,其中ResNet 的殘差結構也能夠匹配注意力編碼器結構中的思想。在網絡設計方面,替換了ResNet 中“莖”的部分(使用K=7 的involution 核)和主干部分中所有瓶頸位置(使用K=3 的involution 核)的3 × 3 卷積,但保留所有的1 ×1 卷積進行降維和通道融合。簡稱上述結構為ASX。ASX 的計算流程與RedNet 保持一致,如圖2 所示。
Yu 等[23]在MetaFormer 結構實驗中證明,注意力機制能有效實現分類工作的本質是像素之間的信息交互而并非特定的注意力計算方式。Liu 等[24]提到在指定大小的區域內完成注意力計算再進行區域間的交互可以在不影響精度的前提下降低計算復雜度。ASX 在3 × 3 的區域內計算注意力,并使用1 × 1 的降維融合一個計算單元中區域間的信息。通過多層計算單元的堆疊,實現了在CNN 結構中插入注意力機制。
盡管延續involution 思路的ASX 能完成類似注意力機制的計算,但有一個問題不能被忽視,即幾乎所有基于注意力的視覺網絡都是以圖塊作為輸入單元實現的。因此,設計了AST 算法模擬上述結構,如圖3 所示。AST 擁有和ASX 不同的計算過程,以在第t層任意一個輸入圖塊Xt∈RK×K×C為例,具體前饋算法如下所示:

圖3 AST前饋計算過程Fig.3 AST feedforward calculation process


AST 和ASX 替代的位置相同。另外,AST 在所有層都將輸入劃分為9 × 9 個圖塊,在尺寸不能整除的層中會有一些像素的重疊。
對比傳統雙線性卷積神經網絡,ABINN 主要在3 個方面進行了降參:
1)使用ResNet18 為子網絡主干網絡代替了VGG16。
2)使用involution 算子代替卷積計算。在一層卷積計算中,由于空間不變性和通道特異性,卷積核的參數量可以表示為:

其中:Cinput是本層輸入特征圖的通道數,Coutput是本層輸出特征圖的通道數,K是卷積核的尺寸。involution 算子具有空間不變性和通道特異性,相同位置的參數量可以表示為:

其中:H和W是輸入特征圖的高和寬,G是共享通道的數量。在深層神經網絡中C?G。
3)保留全局平均池化層,用兩個長度為7 的向量代替BCNN 中兩個長度為1 024 的向量做雙線性池化計算。
實驗在GPU 服務器上進行,運行系統為ubuntu18.04.5,GPU 為NVIDIA Tesla P100,顯存為16 GB。實驗全部使用Python 作為開發語言并使用PyTorch 深度學習框架。
實驗使用OIA 的 子數據集OIA-ODIR[17]。OIA-ODIR 數據集共包含10 000 張高清眼底圖像,其中訓練集占比70%,測試集占比30%。圖像來自全年齡段人群,包含7 種疾病標簽和正常標簽,分別為:正常標注N 共4 322 張;糖尿病標注D 共2 311 張;青光眼標注G 共390 張;白內障標注C 共428張;老年黃斑病變標注A 共368 張;高血壓視網膜病變標注H共177 張;病理性近視標注M 共323 張;其他疾病及異常圖片標注O 共1 381 張。所有實驗均去除了標注為O 的圖片。除了未使用指數移動平均對可訓練的參數進行測試,實驗中保持了自注意力機制和軸向注意力機制的所有訓練方案[20]。
表1 總結了一系列基于CNN 和注意力機制以及廣泛應用的細粒度分類模型的精度,并與ABINN 進行了對比,其中AlexNet[25]、VGG16、InceptionV3[26]、ResNet18、BCNN、ViT 均使用了預訓練參數,AcNet[27]和TransEye 則是完全初始化訓練。由表1 可知,傳統的基于CNN 的分類網絡,無論是通用的ResNet 還是針對細粒度設計的BCNN,在OIA-ODIR 上的精度最高僅為72.6%。基于自注意力架構的網絡如ViT 等精度大幅優于CNN,其中將CNN 和注意力機制結合的TransEye 精度為84.1%。這說明區域間的互信息對眼底圖像分類任務至關重要。ABINN 的精度為85.0%,超過了以上所有對比模型。與TransEye 相比,ABINN 模型用非對稱網絡提取了輸入圖像的二階信息是精度提高的關鍵。

表1 10種模型的精度對比 單位:%Tab.1 Accuracy comparison of ten models unit:%
表2 對比了ABINN 模型和傳統用于眼底圖像分類任務模型的參數量。在OIA-ODIR 數據集上的測試結果顯示,通過三種降參操作使ABINN 模型更輕量化,參數量是BCNN 模型的11%。

表2 4種模型的參數量對比Tab.2 Comparison of parameter amount of four models
在消融實驗部分主要針對RedNet、ResNet、ASX 和AST四種結構在子網絡的選擇上進行了測試,結果如表3 所示:其中ABINN-1 和ABINN-2 是由兩個基于CNN 的網絡作為子網絡搭建的,是BCNN 的一個殘差結構版本。實驗結果表明,精度的提高主要來自于將對稱結構轉換為非對稱結構,其中“CNN+注意力”的組合要大幅優于不同CNN 結構之間的組合。這是因為CNN+注意力的非對稱結構既能同時兼顧底層細節特征的提取和長距離空間位置的融合,又能在訓練防止兩個網絡學習到相同的內容。

表3 6種子網絡組合的精度對比Tab.3 Comparison of combination accuracy of six sub-networks
對比ASX 和AST,AST 對最終分類效果的增幅更大。這是因為細粒度的眼底圖像中更需要較大尺寸的核去提取特征來保證關鍵區域內的相互信息不受破壞。顯然,ASX 中對圖塊的卷積操作能更好地完成這項任務。
實驗同時還測試了四種對輸入圖像預處理方法對ABINN 靈敏度的影響,結果如表4 所示。

表4 ABINN-D模型輸入圖像的4種預處理方法對比 單位:%Tab.4 Comparison of four preprocessing methods for input image unit:%
根據王曉華等[28]、王萍等[29]的實驗結論選擇了預處理方法中的超參數,其中線性對比度增強參數值為2、伽馬變換中伽馬值取1.5。實驗結果表明,三種預處理方法均對判斷精度有一點提高。相較于直接將原始圖片作為輸入,直方圖均衡化將準確率提高了0.4 個百分點。直方圖均衡化能使圖像全局各區域之間的像素化能使圖像全局各區域之間的像素對比差異增大,這對用于提取空間總體特征的注意力子網絡的工作起到了促進作用。而在前期工作的實驗中發現,直方圖均衡處理會在OIA-ODIR 數據集上降低CNN 的分類精度。因此直方圖均衡處理的圖片僅用在基于注意力的子網絡一側。
圖4 顯示了AST 子模型不同層輸出橫切面熱力圖[30]的可視化效果,其中Layer2 和Layer4 分別是倒數第二層和最后一層的輸出,Layer3 是倒數第一層的第一次involution 計算。顏色越接近紅色的區域,ASX 網絡就越關注。可以清晰地看到,隨著層數的不斷加深,提取到的特征逐漸由分散到集中,并最終匯集在視盤、黃斑、血管和其他病變區域。這與臨床眼科醫生診斷疾病的經驗是一致的。

圖4 熱力圖Fig.4 Heat maps
本文提出了輕量化改進模型ABINN 用于細粒度眼底圖像分類。其中兩個子網絡分別由CNN 結構和自注意力結構搭建并統一使用involution 算子實現。與BCNN 相比,ABINN打破了網絡的對稱結構,參數量是前者的11%。本文還提出了兩種具體的使用involution 算子在CNN 結構上實現注意力計算的方法,并通過熱力圖給出了直觀的展示。實驗結果顯示,在OIA-ODIR 數據集上的最佳預測精度遠超BCNN 模型并比TransEye 提高了0.9 個百分點。用involution 算子實現的CNN 和注意力機制的結合在細粒度圖像分類領域有著巨大的潛力,實現了底層語義信息提取和空間結構信息的二階融合,可以用于改進端到端的細粒度分類網絡。ABINN 將是這一系列工作的起點,未來將嘗試更多有效結合的方法。