【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)
論文題目:Squeeze-and-Attention Networks for Semantic Segmentation(用于語義分割的擠壓—注意網絡)
下載鏈接:https://arxiv.org/abs/1909.03402
代碼:非官方僅SA模塊代碼:https://github.com/its-mayank/SqueezeAttention-PyTorch
?
文章貢獻:
1.?將語義分割分解為兩個子任務:像素預測和像素分組;
2.?提出了SA模塊,能兼顧單個像素的多尺度密集預測,及像素組的空間注意,優于SE;
3.?提出了由SA模塊構成的SANet網絡結構,整合多尺度背景特征和圖像級類別信息。
?
1 背景與動機
分割方法的進步主要是通過改進像素表示來實現精確標記。然而,語義分割并不完全等同于像素預測。
作者認為語義分割可以表示為2個獨立的部分:1)像素級預測(每個像素的分類)和 2)像素分組(像素之間的聯系)。
以往方法主要是在1)上改進,而忽視了2)。
因此作者引入像素分組的第二個子任務,直接鼓勵屬于同一類的像素在沒有空間限制的情況下被分組在一起,基于像素分組問題設計了SA模塊來緩解卷積核的局部約束。
?
2 相關工作
多尺度上下文
因此作者也采取類似結構,融合了骨干殘差網絡的4個不同階段輸出,以獲得多尺度信息。
通道注意力
- 有選擇地對特征圖的通道進行加權,有效地提高了傳統殘差模塊的表示能力,但例如SE模塊的方法會導致模型參數變多。
圖(a)是殘差結構,下分支為跳躍連接;圖(b)是將SE加入到殘差結構的分支中。圖中省略了歸一化層和激活層。
壓縮和激勵模塊SE的核心思想在于網絡訓練的同時學習不同通道特征圖的權重,使得有利于損失函數下降的特征圖的權重變大,而對損失函數下降沒有貢獻或者貢獻較小的特征圖權重變小。
壓縮步驟:輸入是HxWxC的特征圖,可以看成是C張HxW的圖片,每張圖片都用它所有像素點的均值來表示(即每個通道都采用1x1的平均池化),獲得1x1xC的大小。
激勵步驟:輸入是壓縮操作的輸出,大小為1x1xC,經過2層全連接層,可以認為是一層隱藏層+一層輸出層,隱藏層由1x1xC變為1x1xC’(C’<C),輸出層由1x1xC’變為1x1xC,即為每個通道代表的特征分配的權重。隱藏層后接ReLU激活函數,輸出層后接Sigmoid函數,把權重歸一化。
將激勵操作后的輸出結果1x1xC和原始的特征圖HxWxC相乘,得到融合了通道注意力信息的特征的結果。
?
與提高分類性能的SE模塊類似,作者提出SA模塊,專門為提高分割結果而設計,如圖(c)所示:
SE在下采樣時是完全壓縮的,變為1x1xC,但SA使用的注意力通道(下分支)是未完全壓縮的,可有效地產生非局部空間注意力,同時避免在上采樣時需要過大的倍數,模型參數量不大。
SE是由注意力通道獲取到權重,乘到Xin上再加上Xres,而SA整合了空間關注,對輸出進行聚合以提高分割性能。具體表現在注意力通道獲取的Xatt不是乘以Xin,而是乘上主通道的輸出Xres,之后再加上Xatt。
論文中,SA的主通道和注意力通道的通道數都減少為特征圖的1/4,注意力通道的中間ACONV1的通道數設置為4,下采樣pooling和上采樣upsample的因數都設置為8。
ACONV和CONV本質上是一樣的,只是它屬于注意通道所以叫注意卷積(attention convolution)。
?
3 網絡結構
圖中藍色框相當于是編碼部分,論文使用擴張的ResNet(resnet50&resnet101)和Effiicinets作為骨干網絡,FCN Head是用于生成語義分割的分支,相當于是解碼部分。
為了聚合多階段非局部特征,作者在骨干網絡的多階段輸出上采用SA模塊,從而得到更好的對象邊界和場景解析結果。
整個網絡一共包含3個損失,總損失為:
其中參數α和β是權重參數,經測試,在論文所使用的數據集中,α取0.2,β取0.8效果最好。
3個損失具體如下面公式所示:
N是訓練集的所有圖片總數,M表示空間位置(即若圖片大小是a*b,那么M=a*b,為像素點總數),C是類別數。
是SANet的預測值,是真實值。是類別的預測值和真實值,用來計算Lcat。Lcat相當于是一個多標簽分類,只判斷這張圖片中有哪些類別而不管他們的位置。具體為,將骨干網絡4個階段的輸出分別經過SA模塊后進行concat,之后再進行平均池化和全連接層,獲得一個1x1xn(n表示類別總數)的結果,將這個結果跟該張圖片的真實多標簽進行對比,計算Lcat損失。
Lmask和Lden是通常語義分割的交叉熵損失,Lcat是分類損失。
MASK是最終預測的語義分割結果。
?
總的來說感覺還是像素分類,Lmask和Lden所對應的真實值應該是一樣的,論文只是比一般方法多了Lcat和Lden的loss計算。
?
4 實驗結果
作者在Pascal?VOC和Pascal Context兩個數據集上進行測試,其中Pascal VOC設置學習率為0.0001,使用預訓練的COCO數據集權重,再訓練50個epoch;Pascal?Context設置學習率為0.001,不使用預訓練權重,一共訓練80epoch。在兩個數據集上均使用了隨機梯度下降和 poly learning rate annealing schedule ,設置batchsize為16,骨干網絡選用resnet50和resnet101,在多GPU上訓練。
1. 使用Pascal Context數據集來確定損失函數中α和β的取值為α=0.2,β=0.8:
具體來說,使用resnet50作為骨干網絡,訓練20個epoch。左圖為當β=0.8時α不同取值的mIoU對應情況,右圖為當α=0.2時β不同取值的mIoU對應情況。
2. Lcat和Lden的影響
在Pascal Context上,使用Cat和Den損失后有效了提高了分割的準確率,其中mIoU計算中不包含背景:
3. SANet的有效性
在Pascal Context上,對比SANet和其它的一些方法,其中mIoU計算中包含背景:
以resnet50作為骨干網絡的FCN基線結果和SANet分割結果效果對比:
4. SA模塊的有效性
在FCN基線上對比SA和SE,骨干網絡使用resnet50和resnet101:
resnet101比resnet50效果好一點,SE作用不明顯,SA作用明顯。
5. 注意力圖和特征圖的可視化
在Pascal?VOC數據集上進行可視化,體現注意力機制的關注點:
bcd分別是在原始輸入圖片上選擇的3個點對應的注意力圖,注意力圖中的紅色區域可以被認為是最關注的像素組。即圖b)藍點關注物為小車,圖c)黃點關注牛,圖d)紅點關注摩托。
在SA模塊的低級(SA Head1)和高級(SA Head4)上注意力的側重點不同。在低級階段,Attn注意力圖有廣闊的視野,體現在第1行紅色部分分布全局,具體關注點不明顯。而在高級階段,Attn注意圖主要集中在所選點周圍的區域,體現在第4行,bcd三張圖的紅色關注部分分別在小車、牛、摩托上。同時,Head4的Main特征圖也比Head1語義更強,更清晰。
6.?Pascal?VOC的一些結果
以下為未使用COCO預訓練權重的結果對比,SANet訓練80epoch:
使用COCO預訓練權重的結果對比:
模型復雜度比較:
MACs:每秒的乘法累積操作,Params:網絡參數。使用resnet101作為骨干網絡,未使用COCO預訓練權重。
?
參考文檔
[1]?CVPR2020 語義分割之將像素分類group成整體
[2]?Squeeze-and-Attention Networks for Semantic Segmentation
[3]?Squeeze-and-Attention Networks for Semantic Segmentation | CVPR2020
總結
以上是生活随笔為你收集整理的【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [spacemacs]git下载出错
- 下一篇: 数据备份的几种类型