鄭秋梅,徐林康,王風(fēng)華,林超
(1.中國石油大學(xué)(華東)計算機科學(xué)與技術(shù)學(xué)院,山東 青島 266580;2.中國石油大學(xué)(華東)信息化建設(shè)處,山東 青島 266580)
語義分割是對目標(biāo)圖像中的所有像素進行分類,并賦予對應(yīng)的ID,利用顏色標(biāo)注表示該像素的語義信息在自動駕駛和醫(yī)療圖像中都得到了應(yīng)用。
圖像分割早期階段提取的是圖像的淺層特征,研究人員利用圖像中的像素值梯度或設(shè)置閾值提出了Ostu[1]、FCM[2]、分水嶺[3]等算法,但這些算法無法精細分割復(fù)雜場景的圖像,分割圖也不具有語義信息。
2015 年,LONG[4]等提出的全卷積網(wǎng)絡(luò)(Fully Convolutional Network,F(xiàn)CN)通過全卷積化將最后的全連接層刪除,滿足任意分辨率的輸入,并結(jié)合跳躍結(jié)構(gòu)保證網(wǎng)絡(luò)分割的健壯性和準(zhǔn)確率。文獻[5]提出了金字塔場景解析網(wǎng)絡(luò)(Pyramid Scenarios Parse Network,PSPNet),通過引入金字塔池化模塊,融合多尺度上下文信息,彌補了FCN 缺乏對圖像全局特征和上下文信息利用的問題。而此類基于特征融合的網(wǎng)絡(luò)[6-7]在將卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Nework,CNN)作為主干網(wǎng)絡(luò)進行特征提取時,針對特征圖中所有的通道和空間都默認具有相同的權(quán)重,但并非所有的通道都值得關(guān)注,這也導(dǎo)致PSPNet 得到的分割圖表現(xiàn)出對小目標(biāo)與物體邊緣語義分割效果不佳,因此可在主干網(wǎng)絡(luò)中添加注意力模塊[8-15]來計算不同的權(quán)重以提高主干網(wǎng)絡(luò)提取特征的能力。
2018 年,HU[16]等提出SE 注意力模塊,它從通道維度來計算全局信息并取得特征通道的權(quán)重,但忽略了特征圖空間位置的權(quán)重信息。文獻[17]針對城市場景數(shù)據(jù)集中像素的空間排布規(guī)律提出了層次對齊網(wǎng)絡(luò),通過類似于全連接的方式取得高度驅(qū)動的注意力圖,從而實現(xiàn)分割精度的提高,但是這種網(wǎng)絡(luò)只是針對特定的數(shù)據(jù)集,并不具有泛化性。文獻[18]提出了卷積塊注意模塊(Convolutional Block Attention Module,CBAM),它對特征圖的通道、空間進行注意力的計算,將其添加到基礎(chǔ)網(wǎng)絡(luò)中可使網(wǎng)絡(luò)更注意目標(biāo)物體的本身以得到更好的精度。該模塊雖然關(guān)注了通道和空間的權(quán)重信息,但這種采用全連接的方式并未考慮兩種維度的內(nèi)在相關(guān)性。對于網(wǎng)絡(luò)中的特征圖,無論空間或是通道信息之間都具有很強的相關(guān)性,網(wǎng)絡(luò)通過計算這種相關(guān)性能更好的識別目標(biāo)并進行分割,2021 年,YUAN[19]等提出了對象上下文網(wǎng)絡(luò),它是對通道和空間兩個維度采用自注意力機制來捕獲內(nèi)在相關(guān)性,自適應(yīng)地結(jié)合局部與全局特征。但該網(wǎng)絡(luò)并未考慮到使用自注意力機制時對特征圖進行降維后,像素排列的順序會對結(jié)果產(chǎn)生影響。而當(dāng)前對二維特征圖進行降維的方式會使具有相似語義的相鄰像素在降維后導(dǎo)致距離過大,這樣并不利于自注意力機制的計算。
GILBERT[20]提出一種空間填充曲線,可用一維曲線去包含整個二維空間,稱為希爾伯特曲線(Hilbert Curve,HC)。文獻[21]利用HC 對二維點云數(shù)據(jù)進行遍歷,這種利用HC 曲線進行遍歷的方法在計算機多個領(lǐng)域得到了廣泛應(yīng)用,但在圖像領(lǐng)域較少應(yīng)用。
本文提出一種基于希爾伯特曲線遍歷算法和自注意力機制的金字塔場景解析網(wǎng)絡(luò)HA-PSPNet。將通道、空間注意力模塊添加自注意力機制并分別放入PSPNet的兩個子網(wǎng)絡(luò)中,加強兩個子網(wǎng)絡(luò)提取特征的能力,同時利用HC 遍歷算法改變圖像降維方式,在不增加網(wǎng)絡(luò)參數(shù)量的情況下提高自注意力計算能力,以使網(wǎng)絡(luò)分割小目標(biāo)和物體邊緣更加精確。
針對FCN 缺乏對全局信息和上下文信息關(guān)注的問題,ZHAO 提出了金字塔池化模塊[5]。該模塊將主干特征提取網(wǎng)絡(luò)輸出的特征圖X∈RC×H×W進行平均池化,生成分辨率為1×1、2×2、3×3、6×6 的特征圖。通過卷積再聚合這些具有不同程度上下文信息的特征圖,以提高全局信息獲取能力,將聚合后的特征圖進行上采樣,再和特征圖X∈RC×H×W進行通道維度的拼接,通過像素分類最后輸出預(yù)測圖。金字塔池化模塊結(jié)構(gòu)如圖1 所示。
圖1 金字塔池化模塊結(jié)構(gòu)Fig.1 Structure of pyramid pooling module
為了使網(wǎng)絡(luò)具有采集全局上下文信息的能力,該模塊把不同區(qū)域的上下文信息進行聚合,但PSPNet 仍存在對圖像中目標(biāo)的邊緣輪廓和一些細小目標(biāo)進行分割時不夠精細的問題,這主要是由于PSPNet 的主干網(wǎng)絡(luò)進行特征提取時,對特征圖中所有通道都默認具有相同的權(quán)重,然而并不是所有的通道都值得關(guān)注,且在加強網(wǎng)絡(luò)中經(jīng)過平均池化后的特征圖具有豐富的語義信息,只進行普通的卷積并不能完全利用這些深層次信息。
CBAM 主要包括通道注意力模塊和空間注意力模塊。通道注意力模塊的作用是為特征圖通道分配不同的權(quán)重,給具有重要特征的通道更高的權(quán)值。該模塊會對輸入的特征圖進行基于空間的平均與最大池化,再將兩種特征圖分別進行兩次全連接后相加,經(jīng)過Sigmoid 進行激活操作得到通道注意力特征圖,其公式如下:
其中:Xin∈RB×C×H×W表示在主干網(wǎng)絡(luò)中輸出的特征圖;ω∈RB×C×1×1表示各個通道的權(quán)重;FC表示全連接操作;θ為全連接后的ReLU 操作;σ是Sigmoid 操作。經(jīng)過Sigmoid 操作后得到了每一個特征通道的權(quán)重信息,再和Xin進行相乘最終得到Xout∈RB×C×H×W。
空間注意力模塊是將上面模塊輸出的特征圖作為輸入,將該特征圖進行基于通道的全局最大與平均池化,得到兩個形狀為B×1×H×W的特征圖,然后對這兩個特征圖進行拼接,經(jīng)過卷積降維到1 個通道,利用Sigmoid 函數(shù)生成空間注意力特征圖,最后與該模塊的輸入做乘法,得到最終生成的特征??臻g注意力機制公式如下:
上述兩種注意力機制采用類似于全連接的方式,在該方式下計算的權(quán)重需要目標(biāo)圖像參與,再對權(quán)重值進行計算,忽略了源特征圖通道和空間兩種維度的內(nèi)在相關(guān)性,而采用自注意力機制可以解決這一問題。它將目標(biāo)像素與剩余像素進行協(xié)方差計算,把像素看成隨機變量,參與的目標(biāo)像素只是所有像素值的加權(quán)和,得到的權(quán)值信息都與所有像素有關(guān)。
2018 年,WANG[22]等在CNN 中提出用selfattention 來實現(xiàn)像素級預(yù)測的全局參考。
自注意力機制的協(xié)方差公式如下:
把自注意力機制引入到CBAM 模塊中,會使改進后的注意力模塊更好地關(guān)注于兩種維度的自相關(guān)性,得到特征圖更好的權(quán)重信息。
但將自注意力機制放入網(wǎng)絡(luò)[23]時,它對“詞”向量的位置很敏感,不同位置向量所代表的含義也是不同的。例如,“我喜歡她”和“她喜歡我”,雖然兩句話所用的字都一樣,但是因為字的順序不一樣,所表達的意思也不一樣。目前,大多數(shù)的降維工作都只是將后一行的像素拼接到前一行,使得特征圖上下相似語義像素的信息距離太遠,不利于自注意力的計算。
從數(shù)學(xué)的角度看,每一階偽希爾伯特曲線是一個映射Hn,它的起、終點是正方形的左下角和右下角:
通過將希爾伯特曲線在特征圖上的遍歷來代替?zhèn)鹘y(tǒng)的降維方式有一種優(yōu)點,即能夠保證二維平面在被降維到一維向量時四周的像素距離并未拉大,使一維向量能夠自然過渡。
本文將改進的通道注意力模塊添加到主干網(wǎng)絡(luò)的ResNet[24]中,通過對每個通道進行權(quán)重計算來提高主干網(wǎng)絡(luò)的特征圖提取能力,再把改進的空間注意力模塊添加進PSPNet 的加強網(wǎng)絡(luò)中,并將基于希爾伯特曲線設(shè)計的遍歷算法加入具有豐富語義特征的空間注意力模塊中,使得語義信息高度相似的像素排在一起,提高自注意力的計算能力,具體網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。
圖2 HA-PSPNet 網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Structure of HA-PSPNet network
在圖2 中,標(biāo)有星號和三角形方塊是本文基于自注意力的通道注意力(Channel Attention,CA)和空間注意力(Spatial Attention,SA)模塊。其中空間注意力模塊中添加了希爾伯特曲線遍歷算法,虛線框是本文對于PSPNet 改進的位置。
由于特征圖中的每個通道是某一特征的響應(yīng),而這些特征之間本身存在一定的聯(lián)系,若采用簡單的全連接獲取通道權(quán)值容易忽略這種特征間的依賴關(guān)系。同時,CNN 在計算全局信息來捕獲長范圍特征依賴時需要多層網(wǎng)絡(luò)的累積,導(dǎo)致學(xué)習(xí)效率低下。自注意力機制的非局部操作可以直接計算兩個語義像素之間的關(guān)系捕獲長范圍的依賴關(guān)系,且相較于堆疊的卷積網(wǎng)絡(luò)也更快速。
因此,將通道注意力模塊的中間兩次全連接變換成自注意力機制,利用自注意力機制從非局部的角度來捕獲通道維度上的特征依賴關(guān)系,為每個通道分配權(quán)重,其模塊結(jié)構(gòu)如圖3 所示。
圖3 非局部通道注意力模塊Fig.3 Non-local channel attention module
該模塊是先將平均池化和最大池化后的特征圖進行維度的交換,隨后通過三次1×1 的卷積變成3 個卷積Q(Query)、K(Key)、V(Value),Query 和Key 分支進行矩陣乘法得到一個形如B×1×C×C的關(guān)系矩陣,接著對該矩陣使用Softmax 函數(shù)得到每個通道與其他通道的關(guān)系的特征圖,最后將Value 的分支與特征圖相乘。此時得到的結(jié)果中每個值都與其他位置的值有關(guān)聯(lián),代表該通道與其他通道都進行了計算,故有了全局上下文的信息。最后將各個通道的權(quán)值圖ω與Xin相乘,得到所需的特征圖Xout。自注意力公式如下:
其中:γ表示對卷積后的特征圖的維度變換;ε表示Softmax 函數(shù)。
通過在主干網(wǎng)絡(luò)中添加改進后的通道注意力模塊,提高了主干網(wǎng)絡(luò)特征的提取能力,使得平均交并比和平均像素準(zhǔn)確率兩個指標(biāo)都有所提升。
為了得到特征圖中每個像素的權(quán)重值,將原模塊進行下采樣后再上采樣還原至原分辨率。通過全連接的方式利用源特征圖與目標(biāo)圖的關(guān)系來找到權(quán)重,而這忽略了特征圖像素內(nèi)部間的關(guān)系。因此,本文先將二維的特征圖降維到一維向量,再利用自注意力機制來得到特征圖中像素上下文的依賴關(guān)系,如圖4 所示。
圖4 非局部空間注意力模塊Fig.4 Non-local spatial attention modules
對于輸入的特征圖,本文只采用了平均池化,隨后對池化后的特征圖進行維度變換,通過三次卷積,分別生成Q、K、V。Query 和Key 進行矩陣乘法后使用Softmax 函數(shù)生成注意力圖,之后和Value 矩陣相乘得到各個像素權(quán)重值的向量,最終將向量維度轉(zhuǎn)換成權(quán)重圖ω,并和輸入的特征圖Xin相乘。
在1×1 的特征圖中不存在和其他像素的關(guān)聯(lián),故本文只對2×2、4×4、8×8 這3 種特征圖進行空間注意力的轉(zhuǎn)化。經(jīng)過空間注意力計算后,特征圖有了更好的表達能力,進一步提高了圖像的分割效果。
本文采用希爾伯特曲線而不采用最簡單的遍歷方式的原因在于:經(jīng)過多次下采樣和池化后的特征圖中的像素具有豐富的語義信息,原來語義緊密相關(guān)的像素在被降維后,因距離過大而使得用自注意力機制計算出的相關(guān)性也產(chǎn)生了變化。而在采用希爾伯特曲線進行遍歷后,周圍像素沒有產(chǎn)生很大的距離,這樣可以使自注意力機制發(fā)揮更好的作用。
本文針對空間注意力中的遍歷算法進行替換,利用希爾伯特曲線遍歷后的一維向量進行自注意力機制得到權(quán)重值向量,最后通過反希爾伯特曲線遍歷升維得到權(quán)重圖。
圖5 所示分別是一~三階的希爾伯特曲線在特征圖中的遍歷,可以看出,在二維的特征圖中相鄰的像素在變成一維后是接近的,盡可能地保持原空間中相鄰點的相關(guān)性,便于自注意力機制的計算,從而得到更加精確的權(quán)重信息。
圖5 特征圖的希爾伯特曲線遍歷Fig.5 Hilbert curve traversal of feature graph
本文通過對通道注意力模塊、空間注意力模塊的改進,將它們添加進PSPNet 網(wǎng)絡(luò)中不同的位置,使得原網(wǎng)絡(luò)中的主干網(wǎng)絡(luò)和加強網(wǎng)絡(luò)的特征提取能力都有了明顯提升,進而提高了整個網(wǎng)絡(luò)的分割精度。
本次實驗采用的是PASCAL VOC 2012 數(shù)據(jù)集,該數(shù)據(jù)集針對語義分割部分有20 個分類,外加1 個背景類。
在訓(xùn)練網(wǎng)絡(luò)時,由于訓(xùn)練集每張圖像的大小都不一樣,因此本次實驗將圖像和標(biāo)簽的大小設(shè)置為473×473。同時,在對圖像和標(biāo)簽進行大小調(diào)整時,分別對它們采用雙三次(BiCubic)插值和最鄰近(NEAREST)插值,隨機對圖像和對應(yīng)標(biāo)簽進行左翻轉(zhuǎn)。BiCubic 函數(shù)如下:
其中:a取-0.5。
本文采用語義分割的兩種指標(biāo)平均像素準(zhǔn)確率(Mean Pixel Accuracy,MPA)、平均交并比(Mean Intersection over Union,MIoU)來評價實驗效果。
1)MPA
像素準(zhǔn)確率(Pixel Accuracy,PA)表示分類正確的像素數(shù)與總像素數(shù)的比例。表1 所示的是網(wǎng)絡(luò)對于像素預(yù)測值與其真實值相比所包含的4 種結(jié)果,其中,TTP表示被模型預(yù)測為正類的正樣本,TTN表示被模型預(yù)測為負類的負樣本,F(xiàn)FP表示被模型預(yù)測為正類的負樣本,F(xiàn)FN表示被模型預(yù)測為負類的正樣本。
表1 像素預(yù)測的4 種結(jié)果Table 1 Pixels predict four results
其中:pii表示將第i類分割成第i類的像素數(shù)量(分類正確的像素數(shù)量);pij表示將第i類分割成第j類的像素數(shù)量(圖像中的像素總數(shù))。
2)MIoU
交并比(Intersection over Union,IoU)表示的是對圖像中某一種類別預(yù)測結(jié)果和真實值的交集與并集的比例,公式如下:
其中:MMIoU是對每種類別計算出的交并比求和后的平均值。
模型構(gòu)建、數(shù)據(jù)集的驗證與測試均在pytorch 框架下進行,網(wǎng)絡(luò)的訓(xùn)練是用單塊16 GB 的Tesla P100,而網(wǎng)絡(luò)的評估是在NVIDIA 1650 的顯卡下進行的。實驗的Batch 值為12,迭代次數(shù)Epoch 為60。優(yōu)化器采用的是Adam 優(yōu)化算法,初始學(xué)習(xí)率為0.000 1。該算法實現(xiàn)簡單且計算高效,對內(nèi)存的需求較少,適合應(yīng)用于大規(guī)模的數(shù)據(jù)場景。設(shè)置交叉熵損失函數(shù)Cross Entropy Loss(CE)與Dice_loss 之和為損失函數(shù),其公式如下:
其中:p表示真實值,為one-hot 形式;q表示預(yù)測值;X表示Ground Truth 分割圖像;Y表示網(wǎng)絡(luò)預(yù)測出的分割圖像;表示本次實驗的損失函數(shù)為兩種損失函數(shù)之和。
3.4.1 自注意力模塊性能評估
本節(jié)實驗將通道注意力模塊、空間注意力模塊以及改進后的模塊依次放入網(wǎng)絡(luò)中后對網(wǎng)絡(luò)在驗證集上分割效果進行對比、分析。
實驗將通道注意力分別放入以ResNet 為主干網(wǎng)絡(luò)的4 個模塊后,此時特征圖中的底層特征依然保留,利用通道注意力的加權(quán)保留特征圖中的一些邊緣和關(guān)鍵點的信息;將空間注意力放入到加強網(wǎng)絡(luò)中用來計算特征圖中高層特征的內(nèi)在相關(guān)性,對這些高層特征進行加權(quán)計算,同時也為了后面在模塊中添加遍歷算法。如表2 所示,當(dāng)初始的通道注意力模塊、空間注意力模塊加入到網(wǎng)絡(luò)后,網(wǎng)絡(luò)的評價指標(biāo)都得到提升,說明注意力模塊提高了網(wǎng)絡(luò)的特征提取能力。當(dāng)實驗將自注意力機制分別加入兩種模塊后,網(wǎng)絡(luò)分割指標(biāo)逐步得到提升,尤其是MPA提升了1%以上,說明改進后的兩種自注意力模塊對于基礎(chǔ)網(wǎng)絡(luò)的分割性能具有促進作用,其中,※表示添加自注意力模塊,√表示添加,×表示不添加,粗體表示最優(yōu)結(jié)果。
表2 自注意力模塊在驗證集上的性能Table 2 Performance of the self-attention module on validation set
3.4.2 希爾伯特曲線模塊性能評估
本節(jié)將希爾伯特曲線加入到改進的模塊中,并對網(wǎng)絡(luò)在驗證集上的表現(xiàn)進行分析。同時,把網(wǎng)絡(luò)在測試集的實驗結(jié)果放入官網(wǎng)的服務(wù)器中進行評價,并與經(jīng)典網(wǎng)絡(luò)進行對比。為了證明希爾伯特曲線具有提高自注意力機制計算能力且不增加計算量的優(yōu)點,增加一個息肉數(shù)據(jù)集來進行驗證。在表3中加入HC 后,MPA 達到了最高值,比基礎(chǔ)網(wǎng)絡(luò)提升了1.35 個百分點,而MIoU 比基礎(chǔ)網(wǎng)絡(luò)也有0.68 個百分點的提升,但還是低于HA☆-PSPNet(表示該網(wǎng)絡(luò)未添加希爾伯特曲線)。從表4 可以看出,HA☆-PSPNet 只在少數(shù)幾個類別上IoU 的提升幅度較大,導(dǎo)致MIoU 較高,而HA-PSPNet 對于數(shù)據(jù)集的絕大多數(shù)類別都有提升,且1/2 類別的IoU 達到最高值,因此HA-PSPNet 在整體表現(xiàn)上更優(yōu),其中,粗體表示最優(yōu)結(jié)果。
表3 希爾伯特曲線在驗證集上的性能Table 3 Performance of the HC on validation set
表4 不同類別在驗證集上的分割精度Table 4 Segmentation accuracy of different classes on verification set %
從表5 可以看出,本文網(wǎng)絡(luò)在測試集上對于基礎(chǔ)網(wǎng)絡(luò)依然有著一定的提高,證明了本文網(wǎng)絡(luò)具有泛化性。
表5 不同算法在測試集上的性能Table 5 Performance of different algorithms on test set %
為了體現(xiàn)HA-PSPNet 的優(yōu)越性,本文利用kaggle 競賽中的結(jié)腸鏡息肉分割和腫瘤表征數(shù)據(jù)集(BKAI-IGH NeoPolyp)進行再次驗證。該數(shù)據(jù)集圖像中所有息肉分為腫瘤性或非腫瘤性類別,外加一個背景類。本文在讀取數(shù)據(jù)集時,只將輸入圖像的大小設(shè)置為512×512 像素,未作其他的圖像預(yù)處理。
從表6 可以看出,希爾伯特曲線可以提高自注意力機制的計算能力,且由于希爾伯特曲線只是針對圖像降維算法的改變,并未設(shè)計網(wǎng)絡(luò)模型的改動,故從表7 可以看出,對于整個網(wǎng)絡(luò)的參數(shù)量并未提升,因此無需更多的計算量。
表6 息肉分割數(shù)據(jù)集驗證結(jié)果Table 6 Verification results of polyp segmentation data set %
表7 兩種方法的參數(shù)量Table 7 Parameters of two methods
3.4.3 結(jié)果分析
圖6 所示為三種方法在數(shù)據(jù)集上的分割效果,其中,HA-PSPNet 在一些小目標(biāo)和物體邊緣上處理的更好,比如HA-PSPNet 對于靠里面的飛機能夠很好地識別出來,對椅子、桌子的腿部和綿羊邊緣處分割效果比基礎(chǔ)網(wǎng)絡(luò)更為明顯、精細。無論是HA☆-PSPNet 還是HA-PSPNet,都對原網(wǎng)絡(luò)有所提升,但從兩種數(shù)據(jù)集的整體表現(xiàn)來看,HA-PSPNet 比HA☆-PSPNet 更好,而HA☆-PSPNet 在一些類別上分割大幅提升,只能說明具有一些特殊性。
圖6 三種方法在數(shù)據(jù)集上的分割效果Fig.6 The segmentation effect of three methods on data set
從圖6 可以看出,當(dāng)兩種改進后的自注意力模塊分別放入主干網(wǎng)絡(luò)和加強網(wǎng)絡(luò)后,使得網(wǎng)絡(luò)能夠識別到圖片中的小目標(biāo),且對于物體的邊緣分割更加精細,同時在不增加網(wǎng)絡(luò)參數(shù)量的情況下通過希爾伯特曲線遍歷算法代替?zhèn)鹘y(tǒng)的遍歷算法來提高自注意力模塊的計算能力是可行的,表明本文對于PSPNet 的改進是有效的。
本文通過對PSPNet 網(wǎng)絡(luò)進行改進,提出一種HA-PSPNet 網(wǎng)絡(luò)。該網(wǎng)絡(luò)將帶有自注意力機制的CA、SA 模塊放入到PSPNet 網(wǎng)絡(luò)中,增強了網(wǎng)絡(luò)的特征提取能力,使得整個網(wǎng)絡(luò)對細節(jié)的處理更加精細,并利用希爾伯特曲線對空間注意力模塊的像素進行遍歷,在沒有增加計算量的前提下,提高了自注意力模塊的計算能力。實驗結(jié)果表明,HA-PSPNet 網(wǎng)絡(luò)可明顯提高像素精度。但本文只對希爾伯特曲線遍歷算法進行初步研究,目前只運用在前三階的曲線遍歷,后續(xù)將其運用在更高階的特征圖上,從而能夠得到更廣泛的應(yīng)用。