楊洪剛,陳潔潔,徐夢飛
(湖北師范大學 計算機與信息工程學院,湖北 黃石 435002)
在當代醫(yī)學診斷的過程中,醫(yī)療影像作為臨床上病癥檢測的客觀依據(jù),為醫(yī)生診斷提供支持[1]。眼底圖像的應(yīng)用目前已經(jīng)較為成熟,但醫(yī)生通過它進行眼部疾病的判斷需要大量的臨床經(jīng)驗作為積累。對于醫(yī)療資源較差的地區(qū),通過眼底圖像進行診斷的精度并不理想,而使用計算機技術(shù)對眼底圖像進行分類能有效提高診斷精度[2]。
深度學習的出現(xiàn)為基于眼底圖像的分類問題提供了一種有效的方法:王宇光等[3]提出一種基于5 個深度卷積模型的集成訓練結(jié)構(gòu),通過正則化隨機性,增強了模型面對不同眼底數(shù)據(jù)集的魯棒性;姜聲[4]提出用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)作為底層模型對眼底圖像進行特征提取,用長短期記憶(Long Short-Term Memory,LSTM)[5]作為上層模型輸出關(guān)于該圖像的文本描述信息;Li等[6]利用多示例多模態(tài)網(wǎng)絡(luò)學習思想,解決了眼底圖像分辨率太大不利于深度神經(jīng)網(wǎng)絡(luò)訓練的問題。因類間差異和樣本差異都很細微的特性,眼底圖像分類可被視作細粒度分類問題[7],傳統(tǒng)的CNN 模型對眼底圖像細粒度的特征提取有限[8],因此如何提高模型的特征提取能力是眼底圖像的分類模型的研究重點。
雙線性卷積神經(jīng)網(wǎng)絡(luò)(Bilinear Convolutional Neural Network,BCNN)[8]是針對細粒度問題提出的分類模型,該模型使用兩個經(jīng)過預(yù)訓練的VGG16[9]網(wǎng)絡(luò)提取圖片的特征信息,并使用雙線性池化進行二階信息融合。這雖然提高了精度但也造成參數(shù)量爆炸式的增長。針對上述問題,Gao 等[10]采用線性核機器的思想,提出了Random Maclaurin 和Tensor Sketch 兩種低維投影函數(shù)對二階特征融合矩陣的計算進行降維。Kong 等[11]運用矩陣的特征值分解來進行低秩計算,在沒有明顯降低精度的情況下,將參數(shù)量降低了99.6%。Zheng等[12]首先對輸入圖片進行語義分割,然后對語義聯(lián)系緊密的區(qū)域進行二階融合,最后刪除非關(guān)聯(lián)部分的融合過程。通過上述操作,對比原始BCNN 模型在CUB200-2011 數(shù)據(jù)集上提高了4%的精度的同時將參數(shù)量降低了96%。
Transformer[13]是基于注意力機制來提取內(nèi)在特征聯(lián)系的模型,具有強大的全局表達能力,開始被廣泛地應(yīng)用在NLP、視覺任務(wù)等領(lǐng)域中。TransFG[14]是Transformer 第一個用于細粒度的分類任務(wù)的基于注意力機制的模型。通過滑動提取圖塊和增加有效區(qū)域選擇模塊使最后一層注意力層只輸入對分類有意義的部分圖塊,判斷過程更能集中注意力。在前期工作中,筆者團隊提出了TransEye(Transformer Eye)[15]來解決眼底圖像分類問題,在輸入端增加CNN 模塊提取底層語義信息和降低圖塊維度,另一方面利用自注意機制的權(quán)值積來定位有效區(qū)域。
為了進一步提高眼底圖像分類任務(wù)的精度,本文提出基于involution 算子[16]實現(xiàn)注意力結(jié)構(gòu),并以這種結(jié)構(gòu)作為子網(wǎng)絡(luò)模型之一改造BCNN,設(shè)計了注意力雙線性內(nèi)卷神經(jīng)網(wǎng)絡(luò)(Attention Bilinear Involution Neural Network,ABINN)模型,如圖1 所示。ABINN 是CNN 和注意力機制結(jié)合的模型,打破了BCNN 模型的對稱性,兩個子網(wǎng)絡(luò)由CNN 架構(gòu)和注意力架構(gòu)組成,分別完成底層語義信息提取和空間結(jié)構(gòu)信息關(guān)聯(lián)兩個任務(wù),并統(tǒng)一由involution 算子實現(xiàn)。這不僅可以同時提取到輸入圖片的局部特征和長距離語義關(guān)系,也簡化了模型結(jié)構(gòu),使雙線性池化的計算不再需要進行維度上的縮減。
圖1 ABINN模型的結(jié)構(gòu)Fig.1 Structure of ABINN model
綜上所述,本文主要工作如下:
1)提出了兩種基于involution 算子實現(xiàn)注意力計算的方法,分別為基于像素的注意力子網(wǎng)絡(luò)(Attention Subnetwork based on PiXel,ASX)和基于圖塊的注意力子網(wǎng)絡(luò)(Attention Subnetwork based on PaTch,AST),該方法可以將注意力的思想用CNN 結(jié)構(gòu)的網(wǎng)絡(luò)實現(xiàn)。
2)使用ASX 和AST 改進BCNN,提出了針對眼底圖像細粒度分類的ABINN,該網(wǎng)絡(luò)是卷積和注意力機制的有效結(jié)合,能實現(xiàn)語義信息二階融合。
3)針對眼底圖像識別任務(wù)特點對雙線性池化計算進行了優(yōu)化,使模型參數(shù)量僅為BCNN 的11%。
4)在OIA-ODIR 數(shù)據(jù)集[17]進行了實驗,實驗結(jié)果顯示ABINN 模型在精度上優(yōu)于TransEye、TransFG 等模型。
BCNN 是解決細粒度分類問題的模型,與一階CNN 模型相比,BCNN 通過雙線性結(jié)構(gòu)完成特征融合,提取輸入圖片的二階特征用于分類。首先由兩個VGG-16 網(wǎng)絡(luò)作為子網(wǎng)絡(luò)提取輸入圖片的特征映射;然后使用雙線性池化操作融合兩個子網(wǎng)絡(luò)提取的特征;最后通過一層全連接分類器進行分類。BCNN 模型可以定義為:
其中:fA和fB是兩個用于特征提取的子函數(shù),P是雙線性池化函數(shù),C是分類函數(shù)。兩個VGG-16 網(wǎng)絡(luò)作為骨干網(wǎng)絡(luò)在ImageNet 數(shù)據(jù)集[18]上使用相同的預(yù)訓練手段,并去除最后一層全連接層。
BCNN 是一個端到端訓練的模型。使用長步驟、多結(jié)構(gòu)的組合模型解決細粒度分類問題時,各模塊訓練目標的不一致會導致某個模塊的目標函數(shù)與系統(tǒng)的宏觀目標有偏差。因此,在統(tǒng)一模型下使用單獨目標函數(shù)進行訓練的端到端模型更符合眼底疾病圖像分類任務(wù)的需求[19]。
involution 是一種有效的視覺表征學習算子,扭轉(zhuǎn)了卷積的設(shè)計原則,完成了從空間一致性和通道特異性到空間特異性和通道一致性的轉(zhuǎn)變。這在一定程度上解決了感受野在一次卷積中無法捕獲長距離信息的挑戰(zhàn)。不僅如此,卷積過程內(nèi)部通道間冗余突出成為了一個共識,而involution 算子有效避免了這個問題。在網(wǎng)絡(luò)中,involution 算子可以直接替換卷積操作從而更新現(xiàn)有的卷積神經(jīng)網(wǎng)絡(luò)。
具體來說,involution 算子的前饋過程[16]如圖2 所示,對應(yīng)位置的特征向量通過G(X)非線性函數(shù)生成只屬于此位置的involution 核,并在所有通道上進行共享。將展平的involution 核與對應(yīng)位置周圍的圖塊在通道上作乘法廣播計算,在空間上作向量加法計算即M(X),最終得到一個與輸入維度完全一致的特征映射。對于對應(yīng)位置來說,它可以是一個圖塊也可以是一個像素。這樣的設(shè)計非常方便上下游任務(wù)中輸入不同分辨率特征映射的參數(shù)交流。
圖2 involution算子的前饋計算過程Fig.2 Involution operator feedforward calculation process
另外,involution 的結(jié)構(gòu)與注意力機制的計算方法類似。在基于注意力結(jié)構(gòu)的視覺模型中,價值矩陣V的值通過計算查詢矩陣Q和關(guān)鍵內(nèi)容K之間的對應(yīng)關(guān)系得到。直觀上講,自注意力算法通過計算對應(yīng)圖塊與周圍部分的關(guān)系得到了自己包含的信息。然而,在involution 算子中,將生成函數(shù)設(shè)置為類似形式,也可以產(chǎn)生相應(yīng)效果。由于通道共享的設(shè)計理念,整體過程并不會產(chǎn)生巨大的參數(shù)量。
involution 算子的出現(xiàn)將注意力的思想集成在CNN 框架下實現(xiàn),為本文后續(xù)的工作提供了支持。
ABINN 沿用了BCNN 的雙線性框架,但對內(nèi)部結(jié)構(gòu)進行了重構(gòu)。本章主要從CNN 子網(wǎng)絡(luò)設(shè)計和注意力子網(wǎng)絡(luò)設(shè)計兩個部分來介紹該模型。
ABINN 類似BCNN 結(jié)構(gòu)用兩個子網(wǎng)絡(luò)模塊對輸入圖片進行特征提取,然而不同的是,這兩個子網(wǎng)絡(luò)不再使用完全相同的結(jié)構(gòu)。研究認為相同結(jié)構(gòu)提取的特征本質(zhì)上是高度相似的,使得后續(xù)的池化融合過程中丟失了二階特征融合的優(yōu)勢[19]。因此,受CNN 與注意力機制結(jié)合的啟發(fā),本文提出分別用基于CNN 模型和注意力模型做子網(wǎng)絡(luò)。
基于CNN 的模型使用了中間層截斷的ResNet18[20]和RedNet18[21]兩種具有殘差結(jié)構(gòu)的網(wǎng)絡(luò),其中,ResNet18 的參數(shù)在ImageNet1K 數(shù)據(jù)集[18]上進行了預(yù)訓練。通過預(yù)訓練,當領(lǐng)域特定數(shù)據(jù)稀缺時可以從額外的訓練數(shù)據(jù)中獲益,這對于從大物體分類到細粒度分類的許多任務(wù)都是有益的。使用CNN 的另一個優(yōu)點是,CNN 被證明是提取圖像底層語義信息的有效手段,經(jīng)典的深層CNN 模型在過去一直被認為是處理細粒度問題的主要方式。無論ResNet18 還是RedNet18,本文實現(xiàn)中都去除了最后的分類層并使最后一層卷積的輸出通道固定為7(因為在OIA-ODIR 數(shù)據(jù)集的眼底圖像分類是一個7 分類任務(wù)),同時保留了全局平均池化操作??傊?,CNN 的輸出X是一個1 × 7 維度的向量。
ABINN 沒有直接將類似視覺Transformer(Vision in Transformer,ViT)[22]的基于注意力機制的網(wǎng)絡(luò)直接作為另一個子網(wǎng)絡(luò),而是采用了基于involution 算子下實現(xiàn)的類注意力機制網(wǎng)絡(luò)。原因如下:
1)ViT 網(wǎng)絡(luò)的輸出不利于做全局平均池化操作,這使得池化融合操作之前需要進行維度的修剪,必然會造成信息的丟失。
2)ViT 網(wǎng)絡(luò)的參數(shù)量已經(jīng)相當龐大,直接集成到ABINN中會使整體的模型體積成倍增加。
3)involution 算子下實現(xiàn)的注意力網(wǎng)絡(luò)具有類似ViT 的功能,而且是在CNN 基礎(chǔ)結(jié)構(gòu)上完成的,這使得兩個子網(wǎng)絡(luò)可以在一個框架下進行訓練,更好地進行信息傳遞。
本文給出了兩種involution 核函數(shù)的實例化方法,分別以像素和圖塊作為函數(shù)的輸入,稱其為Gpix函數(shù)和Gpat函數(shù)。Gpix函數(shù)如下:
其中:Xij表示維度為1 × 1 ×C對應(yīng)輸入圖像中所有第i行j列的像素組成的一個向量;WQ(維度K×K×C)和WK(維度G×C)表示兩個線性變換,G是一個超參數(shù),表示將所有通道分成G個組,每個組共享核參數(shù)(根據(jù)involution 論文[16]中的結(jié)論,所有的實驗中G均設(shè)置為4),并且沒有使用ResNet中的通道壓縮技術(shù)。為了構(gòu)建具有注意力性質(zhì)的完整網(wǎng)絡(luò)結(jié)構(gòu),該子網(wǎng)絡(luò)同樣通過堆疊塊狀結(jié)構(gòu)來鏡像地復制ResNet設(shè)計,其中ResNet 的殘差結(jié)構(gòu)也能夠匹配注意力編碼器結(jié)構(gòu)中的思想。在網(wǎng)絡(luò)設(shè)計方面,替換了ResNet 中“莖”的部分(使用K=7 的involution 核)和主干部分中所有瓶頸位置(使用K=3 的involution 核)的3 × 3 卷積,但保留所有的1 ×1 卷積進行降維和通道融合。簡稱上述結(jié)構(gòu)為ASX。ASX 的計算流程與RedNet 保持一致,如圖2 所示。
Yu 等[23]在MetaFormer 結(jié)構(gòu)實驗中證明,注意力機制能有效實現(xiàn)分類工作的本質(zhì)是像素之間的信息交互而并非特定的注意力計算方式。Liu 等[24]提到在指定大小的區(qū)域內(nèi)完成注意力計算再進行區(qū)域間的交互可以在不影響精度的前提下降低計算復雜度。ASX 在3 × 3 的區(qū)域內(nèi)計算注意力,并使用1 × 1 的降維融合一個計算單元中區(qū)域間的信息。通過多層計算單元的堆疊,實現(xiàn)了在CNN 結(jié)構(gòu)中插入注意力機制。
盡管延續(xù)involution 思路的ASX 能完成類似注意力機制的計算,但有一個問題不能被忽視,即幾乎所有基于注意力的視覺網(wǎng)絡(luò)都是以圖塊作為輸入單元實現(xiàn)的。因此,設(shè)計了AST 算法模擬上述結(jié)構(gòu),如圖3 所示。AST 擁有和ASX 不同的計算過程,以在第t層任意一個輸入圖塊Xt∈RK×K×C為例,具體前饋算法如下所示:
圖3 AST前饋計算過程Fig.3 AST feedforward calculation process
AST 和ASX 替代的位置相同。另外,AST 在所有層都將輸入劃分為9 × 9 個圖塊,在尺寸不能整除的層中會有一些像素的重疊。
對比傳統(tǒng)雙線性卷積神經(jīng)網(wǎng)絡(luò),ABINN 主要在3 個方面進行了降參:
1)使用ResNet18 為子網(wǎng)絡(luò)主干網(wǎng)絡(luò)代替了VGG16。
2)使用involution 算子代替卷積計算。在一層卷積計算中,由于空間不變性和通道特異性,卷積核的參數(shù)量可以表示為:
其中:Cinput是本層輸入特征圖的通道數(shù),Coutput是本層輸出特征圖的通道數(shù),K是卷積核的尺寸。involution 算子具有空間不變性和通道特異性,相同位置的參數(shù)量可以表示為:
其中:H和W是輸入特征圖的高和寬,G是共享通道的數(shù)量。在深層神經(jīng)網(wǎng)絡(luò)中C?G。
3)保留全局平均池化層,用兩個長度為7 的向量代替BCNN 中兩個長度為1 024 的向量做雙線性池化計算。
實驗在GPU 服務(wù)器上進行,運行系統(tǒng)為ubuntu18.04.5,GPU 為NVIDIA Tesla P100,顯存為16 GB。實驗全部使用Python 作為開發(fā)語言并使用PyTorch 深度學習框架。
實驗使用OIA 的 子數(shù)據(jù)集OIA-ODIR[17]。OIA-ODIR 數(shù)據(jù)集共包含10 000 張高清眼底圖像,其中訓練集占比70%,測試集占比30%。圖像來自全年齡段人群,包含7 種疾病標簽和正常標簽,分別為:正常標注N 共4 322 張;糖尿病標注D 共2 311 張;青光眼標注G 共390 張;白內(nèi)障標注C 共428張;老年黃斑病變標注A 共368 張;高血壓視網(wǎng)膜病變標注H共177 張;病理性近視標注M 共323 張;其他疾病及異常圖片標注O 共1 381 張。所有實驗均去除了標注為O 的圖片。除了未使用指數(shù)移動平均對可訓練的參數(shù)進行測試,實驗中保持了自注意力機制和軸向注意力機制的所有訓練方案[20]。
表1 總結(jié)了一系列基于CNN 和注意力機制以及廣泛應(yīng)用的細粒度分類模型的精度,并與ABINN 進行了對比,其中AlexNet[25]、VGG16、InceptionV3[26]、ResNet18、BCNN、ViT 均使用了預(yù)訓練參數(shù),AcNet[27]和TransEye 則是完全初始化訓練。由表1 可知,傳統(tǒng)的基于CNN 的分類網(wǎng)絡(luò),無論是通用的ResNet 還是針對細粒度設(shè)計的BCNN,在OIA-ODIR 上的精度最高僅為72.6%。基于自注意力架構(gòu)的網(wǎng)絡(luò)如ViT 等精度大幅優(yōu)于CNN,其中將CNN 和注意力機制結(jié)合的TransEye 精度為84.1%。這說明區(qū)域間的互信息對眼底圖像分類任務(wù)至關(guān)重要。ABINN 的精度為85.0%,超過了以上所有對比模型。與TransEye 相比,ABINN 模型用非對稱網(wǎng)絡(luò)提取了輸入圖像的二階信息是精度提高的關(guān)鍵。
表1 10種模型的精度對比 單位:%Tab.1 Accuracy comparison of ten models unit:%
表2 對比了ABINN 模型和傳統(tǒng)用于眼底圖像分類任務(wù)模型的參數(shù)量。在OIA-ODIR 數(shù)據(jù)集上的測試結(jié)果顯示,通過三種降參操作使ABINN 模型更輕量化,參數(shù)量是BCNN 模型的11%。
表2 4種模型的參數(shù)量對比Tab.2 Comparison of parameter amount of four models
在消融實驗部分主要針對RedNet、ResNet、ASX 和AST四種結(jié)構(gòu)在子網(wǎng)絡(luò)的選擇上進行了測試,結(jié)果如表3 所示:其中ABINN-1 和ABINN-2 是由兩個基于CNN 的網(wǎng)絡(luò)作為子網(wǎng)絡(luò)搭建的,是BCNN 的一個殘差結(jié)構(gòu)版本。實驗結(jié)果表明,精度的提高主要來自于將對稱結(jié)構(gòu)轉(zhuǎn)換為非對稱結(jié)構(gòu),其中“CNN+注意力”的組合要大幅優(yōu)于不同CNN 結(jié)構(gòu)之間的組合。這是因為CNN+注意力的非對稱結(jié)構(gòu)既能同時兼顧底層細節(jié)特征的提取和長距離空間位置的融合,又能在訓練防止兩個網(wǎng)絡(luò)學習到相同的內(nèi)容。
表3 6種子網(wǎng)絡(luò)組合的精度對比Tab.3 Comparison of combination accuracy of six sub-networks
對比ASX 和AST,AST 對最終分類效果的增幅更大。這是因為細粒度的眼底圖像中更需要較大尺寸的核去提取特征來保證關(guān)鍵區(qū)域內(nèi)的相互信息不受破壞。顯然,ASX 中對圖塊的卷積操作能更好地完成這項任務(wù)。
實驗同時還測試了四種對輸入圖像預(yù)處理方法對ABINN 靈敏度的影響,結(jié)果如表4 所示。
表4 ABINN-D模型輸入圖像的4種預(yù)處理方法對比 單位:%Tab.4 Comparison of four preprocessing methods for input image unit:%
根據(jù)王曉華等[28]、王萍等[29]的實驗結(jié)論選擇了預(yù)處理方法中的超參數(shù),其中線性對比度增強參數(shù)值為2、伽馬變換中伽馬值取1.5。實驗結(jié)果表明,三種預(yù)處理方法均對判斷精度有一點提高。相較于直接將原始圖片作為輸入,直方圖均衡化將準確率提高了0.4 個百分點。直方圖均衡化能使圖像全局各區(qū)域之間的像素化能使圖像全局各區(qū)域之間的像素對比差異增大,這對用于提取空間總體特征的注意力子網(wǎng)絡(luò)的工作起到了促進作用。而在前期工作的實驗中發(fā)現(xiàn),直方圖均衡處理會在OIA-ODIR 數(shù)據(jù)集上降低CNN 的分類精度。因此直方圖均衡處理的圖片僅用在基于注意力的子網(wǎng)絡(luò)一側(cè)。
圖4 顯示了AST 子模型不同層輸出橫切面熱力圖[30]的可視化效果,其中Layer2 和Layer4 分別是倒數(shù)第二層和最后一層的輸出,Layer3 是倒數(shù)第一層的第一次involution 計算。顏色越接近紅色的區(qū)域,ASX 網(wǎng)絡(luò)就越關(guān)注??梢郧逦乜吹剑S著層數(shù)的不斷加深,提取到的特征逐漸由分散到集中,并最終匯集在視盤、黃斑、血管和其他病變區(qū)域。這與臨床眼科醫(yī)生診斷疾病的經(jīng)驗是一致的。
圖4 熱力圖Fig.4 Heat maps
本文提出了輕量化改進模型ABINN 用于細粒度眼底圖像分類。其中兩個子網(wǎng)絡(luò)分別由CNN 結(jié)構(gòu)和自注意力結(jié)構(gòu)搭建并統(tǒng)一使用involution 算子實現(xiàn)。與BCNN 相比,ABINN打破了網(wǎng)絡(luò)的對稱結(jié)構(gòu),參數(shù)量是前者的11%。本文還提出了兩種具體的使用involution 算子在CNN 結(jié)構(gòu)上實現(xiàn)注意力計算的方法,并通過熱力圖給出了直觀的展示。實驗結(jié)果顯示,在OIA-ODIR 數(shù)據(jù)集上的最佳預(yù)測精度遠超BCNN 模型并比TransEye 提高了0.9 個百分點。用involution 算子實現(xiàn)的CNN 和注意力機制的結(jié)合在細粒度圖像分類領(lǐng)域有著巨大的潛力,實現(xiàn)了底層語義信息提取和空間結(jié)構(gòu)信息的二階融合,可以用于改進端到端的細粒度分類網(wǎng)絡(luò)。ABINN 將是這一系列工作的起點,未來將嘗試更多有效結(jié)合的方法。