鄭秋梅,徐林康,王風華,林超
(1.中國石油大學(華東)計算機科學與技術學院,山東 青島 266580;2.中國石油大學(華東)信息化建設處,山東 青島 266580)
語義分割是對目標圖像中的所有像素進行分類,并賦予對應的ID,利用顏色標注表示該像素的語義信息在自動駕駛和醫療圖像中都得到了應用。
圖像分割早期階段提取的是圖像的淺層特征,研究人員利用圖像中的像素值梯度或設置閾值提出了Ostu[1]、FCM[2]、分水嶺[3]等算法,但這些算法無法精細分割復雜場景的圖像,分割圖也不具有語義信息。
2015 年,LONG[4]等提出的全卷積網絡(Fully Convolutional Network,FCN)通過全卷積化將最后的全連接層刪除,滿足任意分辨率的輸入,并結合跳躍結構保證網絡分割的健壯性和準確率。文獻[5]提出了金字塔場景解析網絡(Pyramid Scenarios Parse Network,PSPNet),通過引入金字塔池化模塊,融合多尺度上下文信息,彌補了FCN 缺乏對圖像全局特征和上下文信息利用的問題。而此類基于特征融合的網絡[6-7]在將卷積神經網絡(Convolutional Neural Nework,CNN)作為主干網絡進行特征提取時,針對特征圖中所有的通道和空間都默認具有相同的權重,但并非所有的通道都值得關注,這也導致PSPNet 得到的分割圖表現出對小目標與物體邊緣語義分割效果不佳,因此可在主干網絡中添加注意力模塊[8-15]來計算不同的權重以提高主干網絡提取特征的能力。
2018 年,HU[16]等提出SE 注意力模塊,它從通道維度來計算全局信息并取得特征通道的權重,但忽略了特征圖空間位置的權重信息。文獻[17]針對城市場景數據集中像素的空間排布規律提出了層次對齊網絡,通過類似于全連接的方式取得高度驅動的注意力圖,從而實現分割精度的提高,但是這種網絡只是針對特定的數據集,并不具有泛化性。文獻[18]提出了卷積塊注意模塊(Convolutional Block Attention Module,CBAM),它對特征圖的通道、空間進行注意力的計算,將其添加到基礎網絡中可使網絡更注意目標物體的本身以得到更好的精度。該模塊雖然關注了通道和空間的權重信息,但這種采用全連接的方式并未考慮兩種維度的內在相關性。對于網絡中的特征圖,無論空間或是通道信息之間都具有很強的相關性,網絡通過計算這種相關性能更好的識別目標并進行分割,2021 年,YUAN[19]等提出了對象上下文網絡,它是對通道和空間兩個維度采用自注意力機制來捕獲內在相關性,自適應地結合局部與全局特征。但該網絡并未考慮到使用自注意力機制時對特征圖進行降維后,像素排列的順序會對結果產生影響。而當前對二維特征圖進行降維的方式會使具有相似語義的相鄰像素在降維后導致距離過大,這樣并不利于自注意力機制的計算。
GILBERT[20]提出一種空間填充曲線,可用一維曲線去包含整個二維空間,稱為希爾伯特曲線(Hilbert Curve,HC)。文獻[21]利用HC 對二維點云數據進行遍歷,這種利用HC 曲線進行遍歷的方法在計算機多個領域得到了廣泛應用,但在圖像領域較少應用。
本文提出一種基于希爾伯特曲線遍歷算法和自注意力機制的金字塔場景解析網絡HA-PSPNet。將通道、空間注意力模塊添加自注意力機制并分別放入PSPNet的兩個子網絡中,加強兩個子網絡提取特征的能力,同時利用HC 遍歷算法改變圖像降維方式,在不增加網絡參數量的情況下提高自注意力計算能力,以使網絡分割小目標和物體邊緣更加精確。
針對FCN 缺乏對全局信息和上下文信息關注的問題,ZHAO 提出了金字塔池化模塊[5]。該模塊將主干特征提取網絡輸出的特征圖X∈RC×H×W進行平均池化,生成分辨率為1×1、2×2、3×3、6×6 的特征圖。通過卷積再聚合這些具有不同程度上下文信息的特征圖,以提高全局信息獲取能力,將聚合后的特征圖進行上采樣,再和特征圖X∈RC×H×W進行通道維度的拼接,通過像素分類最后輸出預測圖。金字塔池化模塊結構如圖1 所示。

圖1 金字塔池化模塊結構Fig.1 Structure of pyramid pooling module
為了使網絡具有采集全局上下文信息的能力,該模塊把不同區域的上下文信息進行聚合,但PSPNet 仍存在對圖像中目標的邊緣輪廓和一些細小目標進行分割時不夠精細的問題,這主要是由于PSPNet 的主干網絡進行特征提取時,對特征圖中所有通道都默認具有相同的權重,然而并不是所有的通道都值得關注,且在加強網絡中經過平均池化后的特征圖具有豐富的語義信息,只進行普通的卷積并不能完全利用這些深層次信息。
CBAM 主要包括通道注意力模塊和空間注意力模塊。通道注意力模塊的作用是為特征圖通道分配不同的權重,給具有重要特征的通道更高的權值。該模塊會對輸入的特征圖進行基于空間的平均與最大池化,再將兩種特征圖分別進行兩次全連接后相加,經過Sigmoid 進行激活操作得到通道注意力特征圖,其公式如下:

其中:Xin∈RB×C×H×W表示在主干網絡中輸出的特征圖;ω∈RB×C×1×1表示各個通道的權重;FC表示全連接操作;θ為全連接后的ReLU 操作;σ是Sigmoid 操作。經過Sigmoid 操作后得到了每一個特征通道的權重信息,再和Xin進行相乘最終得到Xout∈RB×C×H×W。
空間注意力模塊是將上面模塊輸出的特征圖作為輸入,將該特征圖進行基于通道的全局最大與平均池化,得到兩個形狀為B×1×H×W的特征圖,然后對這兩個特征圖進行拼接,經過卷積降維到1 個通道,利用Sigmoid 函數生成空間注意力特征圖,最后與該模塊的輸入做乘法,得到最終生成的特征。空間注意力機制公式如下:

上述兩種注意力機制采用類似于全連接的方式,在該方式下計算的權重需要目標圖像參與,再對權重值進行計算,忽略了源特征圖通道和空間兩種維度的內在相關性,而采用自注意力機制可以解決這一問題。它將目標像素與剩余像素進行協方差計算,把像素看成隨機變量,參與的目標像素只是所有像素值的加權和,得到的權值信息都與所有像素有關。
2018 年,WANG[22]等在CNN 中提出用selfattention 來實現像素級預測的全局參考。
自注意力機制的協方差公式如下:

把自注意力機制引入到CBAM 模塊中,會使改進后的注意力模塊更好地關注于兩種維度的自相關性,得到特征圖更好的權重信息。
但將自注意力機制放入網絡[23]時,它對“詞”向量的位置很敏感,不同位置向量所代表的含義也是不同的。例如,“我喜歡她”和“她喜歡我”,雖然兩句話所用的字都一樣,但是因為字的順序不一樣,所表達的意思也不一樣。目前,大多數的降維工作都只是將后一行的像素拼接到前一行,使得特征圖上下相似語義像素的信息距離太遠,不利于自注意力的計算。
從數學的角度看,每一階偽希爾伯特曲線是一個映射Hn,它的起、終點是正方形的左下角和右下角:

通過將希爾伯特曲線在特征圖上的遍歷來代替傳統的降維方式有一種優點,即能夠保證二維平面在被降維到一維向量時四周的像素距離并未拉大,使一維向量能夠自然過渡。
本文將改進的通道注意力模塊添加到主干網絡的ResNet[24]中,通過對每個通道進行權重計算來提高主干網絡的特征圖提取能力,再把改進的空間注意力模塊添加進PSPNet 的加強網絡中,并將基于希爾伯特曲線設計的遍歷算法加入具有豐富語義特征的空間注意力模塊中,使得語義信息高度相似的像素排在一起,提高自注意力的計算能力,具體網絡結構如圖2 所示。

圖2 HA-PSPNet 網絡結構Fig.2 Structure of HA-PSPNet network
在圖2 中,標有星號和三角形方塊是本文基于自注意力的通道注意力(Channel Attention,CA)和空間注意力(Spatial Attention,SA)模塊。其中空間注意力模塊中添加了希爾伯特曲線遍歷算法,虛線框是本文對于PSPNet 改進的位置。
由于特征圖中的每個通道是某一特征的響應,而這些特征之間本身存在一定的聯系,若采用簡單的全連接獲取通道權值容易忽略這種特征間的依賴關系。同時,CNN 在計算全局信息來捕獲長范圍特征依賴時需要多層網絡的累積,導致學習效率低下。自注意力機制的非局部操作可以直接計算兩個語義像素之間的關系捕獲長范圍的依賴關系,且相較于堆疊的卷積網絡也更快速。
因此,將通道注意力模塊的中間兩次全連接變換成自注意力機制,利用自注意力機制從非局部的角度來捕獲通道維度上的特征依賴關系,為每個通道分配權重,其模塊結構如圖3 所示。

圖3 非局部通道注意力模塊Fig.3 Non-local channel attention module
該模塊是先將平均池化和最大池化后的特征圖進行維度的交換,隨后通過三次1×1 的卷積變成3 個卷積Q(Query)、K(Key)、V(Value),Query 和Key 分支進行矩陣乘法得到一個形如B×1×C×C的關系矩陣,接著對該矩陣使用Softmax 函數得到每個通道與其他通道的關系的特征圖,最后將Value 的分支與特征圖相乘。此時得到的結果中每個值都與其他位置的值有關聯,代表該通道與其他通道都進行了計算,故有了全局上下文的信息。最后將各個通道的權值圖ω與Xin相乘,得到所需的特征圖Xout。自注意力公式如下:

其中:γ表示對卷積后的特征圖的維度變換;ε表示Softmax 函數。
通過在主干網絡中添加改進后的通道注意力模塊,提高了主干網絡特征的提取能力,使得平均交并比和平均像素準確率兩個指標都有所提升。
為了得到特征圖中每個像素的權重值,將原模塊進行下采樣后再上采樣還原至原分辨率。通過全連接的方式利用源特征圖與目標圖的關系來找到權重,而這忽略了特征圖像素內部間的關系。因此,本文先將二維的特征圖降維到一維向量,再利用自注意力機制來得到特征圖中像素上下文的依賴關系,如圖4 所示。

圖4 非局部空間注意力模塊Fig.4 Non-local spatial attention modules
對于輸入的特征圖,本文只采用了平均池化,隨后對池化后的特征圖進行維度變換,通過三次卷積,分別生成Q、K、V。Query 和Key 進行矩陣乘法后使用Softmax 函數生成注意力圖,之后和Value 矩陣相乘得到各個像素權重值的向量,最終將向量維度轉換成權重圖ω,并和輸入的特征圖Xin相乘。
在1×1 的特征圖中不存在和其他像素的關聯,故本文只對2×2、4×4、8×8 這3 種特征圖進行空間注意力的轉化。經過空間注意力計算后,特征圖有了更好的表達能力,進一步提高了圖像的分割效果。
本文采用希爾伯特曲線而不采用最簡單的遍歷方式的原因在于:經過多次下采樣和池化后的特征圖中的像素具有豐富的語義信息,原來語義緊密相關的像素在被降維后,因距離過大而使得用自注意力機制計算出的相關性也產生了變化。而在采用希爾伯特曲線進行遍歷后,周圍像素沒有產生很大的距離,這樣可以使自注意力機制發揮更好的作用。
本文針對空間注意力中的遍歷算法進行替換,利用希爾伯特曲線遍歷后的一維向量進行自注意力機制得到權重值向量,最后通過反希爾伯特曲線遍歷升維得到權重圖。
圖5 所示分別是一~三階的希爾伯特曲線在特征圖中的遍歷,可以看出,在二維的特征圖中相鄰的像素在變成一維后是接近的,盡可能地保持原空間中相鄰點的相關性,便于自注意力機制的計算,從而得到更加精確的權重信息。

圖5 特征圖的希爾伯特曲線遍歷Fig.5 Hilbert curve traversal of feature graph
本文通過對通道注意力模塊、空間注意力模塊的改進,將它們添加進PSPNet 網絡中不同的位置,使得原網絡中的主干網絡和加強網絡的特征提取能力都有了明顯提升,進而提高了整個網絡的分割精度。
本次實驗采用的是PASCAL VOC 2012 數據集,該數據集針對語義分割部分有20 個分類,外加1 個背景類。
在訓練網絡時,由于訓練集每張圖像的大小都不一樣,因此本次實驗將圖像和標簽的大小設置為473×473。同時,在對圖像和標簽進行大小調整時,分別對它們采用雙三次(BiCubic)插值和最鄰近(NEAREST)插值,隨機對圖像和對應標簽進行左翻轉。BiCubic 函數如下:

其中:a取-0.5。
本文采用語義分割的兩種指標平均像素準確率(Mean Pixel Accuracy,MPA)、平均交并比(Mean Intersection over Union,MIoU)來評價實驗效果。
1)MPA
像素準確率(Pixel Accuracy,PA)表示分類正確的像素數與總像素數的比例。表1 所示的是網絡對于像素預測值與其真實值相比所包含的4 種結果,其中,TTP表示被模型預測為正類的正樣本,TTN表示被模型預測為負類的負樣本,FFP表示被模型預測為正類的負樣本,FFN表示被模型預測為負類的正樣本。

表1 像素預測的4 種結果Table 1 Pixels predict four results


其中:pii表示將第i類分割成第i類的像素數量(分類正確的像素數量);pij表示將第i類分割成第j類的像素數量(圖像中的像素總數)。
2)MIoU
交并比(Intersection over Union,IoU)表示的是對圖像中某一種類別預測結果和真實值的交集與并集的比例,公式如下:

其中:MMIoU是對每種類別計算出的交并比求和后的平均值。
模型構建、數據集的驗證與測試均在pytorch 框架下進行,網絡的訓練是用單塊16 GB 的Tesla P100,而網絡的評估是在NVIDIA 1650 的顯卡下進行的。實驗的Batch 值為12,迭代次數Epoch 為60。優化器采用的是Adam 優化算法,初始學習率為0.000 1。該算法實現簡單且計算高效,對內存的需求較少,適合應用于大規模的數據場景。設置交叉熵損失函數Cross Entropy Loss(CE)與Dice_loss 之和為損失函數,其公式如下:

其中:p表示真實值,為one-hot 形式;q表示預測值;X表示Ground Truth 分割圖像;Y表示網絡預測出的分割圖像;表示本次實驗的損失函數為兩種損失函數之和。
3.4.1 自注意力模塊性能評估
本節實驗將通道注意力模塊、空間注意力模塊以及改進后的模塊依次放入網絡中后對網絡在驗證集上分割效果進行對比、分析。
實驗將通道注意力分別放入以ResNet 為主干網絡的4 個模塊后,此時特征圖中的底層特征依然保留,利用通道注意力的加權保留特征圖中的一些邊緣和關鍵點的信息;將空間注意力放入到加強網絡中用來計算特征圖中高層特征的內在相關性,對這些高層特征進行加權計算,同時也為了后面在模塊中添加遍歷算法。如表2 所示,當初始的通道注意力模塊、空間注意力模塊加入到網絡后,網絡的評價指標都得到提升,說明注意力模塊提高了網絡的特征提取能力。當實驗將自注意力機制分別加入兩種模塊后,網絡分割指標逐步得到提升,尤其是MPA提升了1%以上,說明改進后的兩種自注意力模塊對于基礎網絡的分割性能具有促進作用,其中,※表示添加自注意力模塊,√表示添加,×表示不添加,粗體表示最優結果。

表2 自注意力模塊在驗證集上的性能Table 2 Performance of the self-attention module on validation set
3.4.2 希爾伯特曲線模塊性能評估
本節將希爾伯特曲線加入到改進的模塊中,并對網絡在驗證集上的表現進行分析。同時,把網絡在測試集的實驗結果放入官網的服務器中進行評價,并與經典網絡進行對比。為了證明希爾伯特曲線具有提高自注意力機制計算能力且不增加計算量的優點,增加一個息肉數據集來進行驗證。在表3中加入HC 后,MPA 達到了最高值,比基礎網絡提升了1.35 個百分點,而MIoU 比基礎網絡也有0.68 個百分點的提升,但還是低于HA☆-PSPNet(表示該網絡未添加希爾伯特曲線)。從表4 可以看出,HA☆-PSPNet 只在少數幾個類別上IoU 的提升幅度較大,導致MIoU 較高,而HA-PSPNet 對于數據集的絕大多數類別都有提升,且1/2 類別的IoU 達到最高值,因此HA-PSPNet 在整體表現上更優,其中,粗體表示最優結果。

表3 希爾伯特曲線在驗證集上的性能Table 3 Performance of the HC on validation set

表4 不同類別在驗證集上的分割精度Table 4 Segmentation accuracy of different classes on verification set %
從表5 可以看出,本文網絡在測試集上對于基礎網絡依然有著一定的提高,證明了本文網絡具有泛化性。

表5 不同算法在測試集上的性能Table 5 Performance of different algorithms on test set %
為了體現HA-PSPNet 的優越性,本文利用kaggle 競賽中的結腸鏡息肉分割和腫瘤表征數據集(BKAI-IGH NeoPolyp)進行再次驗證。該數據集圖像中所有息肉分為腫瘤性或非腫瘤性類別,外加一個背景類。本文在讀取數據集時,只將輸入圖像的大小設置為512×512 像素,未作其他的圖像預處理。
從表6 可以看出,希爾伯特曲線可以提高自注意力機制的計算能力,且由于希爾伯特曲線只是針對圖像降維算法的改變,并未設計網絡模型的改動,故從表7 可以看出,對于整個網絡的參數量并未提升,因此無需更多的計算量。

表6 息肉分割數據集驗證結果Table 6 Verification results of polyp segmentation data set %

表7 兩種方法的參數量Table 7 Parameters of two methods
3.4.3 結果分析
圖6 所示為三種方法在數據集上的分割效果,其中,HA-PSPNet 在一些小目標和物體邊緣上處理的更好,比如HA-PSPNet 對于靠里面的飛機能夠很好地識別出來,對椅子、桌子的腿部和綿羊邊緣處分割效果比基礎網絡更為明顯、精細。無論是HA☆-PSPNet 還是HA-PSPNet,都對原網絡有所提升,但從兩種數據集的整體表現來看,HA-PSPNet 比HA☆-PSPNet 更好,而HA☆-PSPNet 在一些類別上分割大幅提升,只能說明具有一些特殊性。

圖6 三種方法在數據集上的分割效果Fig.6 The segmentation effect of three methods on data set
從圖6 可以看出,當兩種改進后的自注意力模塊分別放入主干網絡和加強網絡后,使得網絡能夠識別到圖片中的小目標,且對于物體的邊緣分割更加精細,同時在不增加網絡參數量的情況下通過希爾伯特曲線遍歷算法代替傳統的遍歷算法來提高自注意力模塊的計算能力是可行的,表明本文對于PSPNet 的改進是有效的。
本文通過對PSPNet 網絡進行改進,提出一種HA-PSPNet 網絡。該網絡將帶有自注意力機制的CA、SA 模塊放入到PSPNet 網絡中,增強了網絡的特征提取能力,使得整個網絡對細節的處理更加精細,并利用希爾伯特曲線對空間注意力模塊的像素進行遍歷,在沒有增加計算量的前提下,提高了自注意力模塊的計算能力。實驗結果表明,HA-PSPNet 網絡可明顯提高像素精度。但本文只對希爾伯特曲線遍歷算法進行初步研究,目前只運用在前三階的曲線遍歷,后續將其運用在更高階的特征圖上,從而能夠得到更廣泛的應用。