paper: Pyramid Scene Parsing Network
Abstract
-
PSPNet是港中文和商湯在CVPR2017上的一篇工作,將pyramid pooling引入到場景解析的分割任務中,取得很好的效果,2016年ImageNet的scene parsing任務冠軍。在PASCAL VOC2012 test上的mIoU能夠達到85.4%
-
PSPNet的主要貢獻點在於:
- 將pyramid pooling引入到場景解析任務任務中
- 模型訓練時增加了一個輔助loss(auxiliary loss),即文中表述的effective optimization strategy
- 實踐技巧
-
個人想法:從多尺度特征的角度理解,PSPNet其實也只是使用了backbone網絡最后的某一個特征層,那么是否可以替換為FPN結構,真正的將低層特征融合進來。(巧合的是,FPN也是CVPR2017的一片工作)
Details
-
Pyramid pooling module
- 這個金字塔池化其實是對SPP的改進,見下圖:
- 具體的網絡結構見下圖:
- 在pyramid pooling模塊,根據不同大小的kernel和stride將feature map分為不同個\( 1\times1, 2\times2, 3\times3, 6\times6 \)個bin,然后每個模塊后加上一個\( 1\times1\)的conv,以降低channel個數為512(前面resnet用的是bottleneck結構,
con5_3/relu
的輸出channel個數為2048);再然后,每個模塊再通過bilinear interpolation縮放到pyramid pooling模塊輸入前的尺寸\( 60 \times 60\);再之后,將4個模塊的特征圖concat到一起,最終再通過bilinear interpolation返回到原圖大小
- 在pyramid pooling模塊,根據不同大小的kernel和stride將feature map分為不同個\( 1\times1, 2\times2, 3\times3, 6\times6 \)個bin,然后每個模塊后加上一個\( 1\times1\)的conv,以降低channel個數為512(前面resnet用的是bottleneck結構,
- 這個金字塔池化其實是對SPP的改進,見下圖:
-
auxiliary loss
- 個人理解是增加在網絡的中間某一個地方引入一個loss,這個loss和網絡最后的loss一樣,都是cross entropy,加入盡量應該是為了是網絡的backbone部分更加魯棒,這樣用於后面執行pyramid pooling的feature map表達能力也更強
- 官方PPT介紹
-
實踐技巧
- 對比了avg/max pooling,avg pooling的效果更好
- 使用auxiliary loss,權重設置為0.4
- 對比不同深度的resnet作為backbone,明顯越深越好
- pyramid pooling的每個模塊后加入dimension reduction的\( 1 \times 1\)卷積也能夠提升效果
- data augmentation:random mirror/resize/rotation/Gaussian blur
- 學習率更新策略poly
- appropriately large “cropsize” can yield good performance and “batchsize” in BN(不過這部分並沒有公布代碼,PSPNet的訓練部分代碼沒有)
- resnet中的\( 7\times7 \) conv轉為\( 3\times3 \)