PSP-Net的理解(多尺度特徵融合分割)

Pyramid Scene Parsing Network

收錄:CVPR 2017 (IEEE Conference on Computer Vision and Pattern Recognition)

原文地址: PSPNet

代碼:

    pspnet-github
    Keras
    tensorflow

效果圖:

mark
Abstract

本文提出的金字塔池化模塊( pyramid pooling module)能夠聚合不同區域的上下文信息,從而提高獲取全局信息的能力。實驗表明這樣的先驗表示(即指代PSP這個結構)是有效的,在多個數據集上展現了優良的效果。
Introduction

場景解析(Scene Parsing)的難度與場景的標籤密切相關。先大多數先進的場景解析框架大多數基於FCN,但FCN存在的幾個問題:

mark

    Mismatched Relationship:上下文關係匹配對理解複雜場景很重要,例如在上圖第一行,在水面上的大很可能是“boat”,而不是“car”。雖然“boat和“car”很像。FCN缺乏依據上下文推斷的能力。
    Confusion Categories: 許多標籤之間存在關聯,可以通過標籤之間的關係彌補。上圖第二行,把摩天大廈的一部分識別爲建築物,這應該只是其中一個,而不是二者。這可以通過類別之間的關係彌補。
    Inconspicuous Classes:模型可能會忽略小的東西,而大的東西可能會超過FCN接收範圍,從而導致不連續的預測。如上圖第三行,枕頭與被子材質一致,被識別成到一起了。爲了提高不顯眼東西的分割效果,應該注重小面積物體。

總結這些情況,許多問題出在FCN不能有效的處理場景之間的關係和全局信息。本論文提出了能夠獲取全局場景的深度網絡PSPNet,能夠融合合適的全局特徵,將局部和全局信息融合到一起。並提出了一個適度監督損失的優化策略,在多個數據集上表現優異。

本文的主要貢獻如下:

    提出了一個金字塔場景解析網絡,能夠將難解析的場景信息特徵嵌入基於FCN預測框架中
    在基於深度監督損失ResNet上制定有效的優化策略
    構建了一個實用的系統,用於場景解析和語義分割,幷包含了實施細節

Related Work

受到深度神經網絡的驅動,場景解析和語義分割獲得了極大的進展。例如FCN、ENet等工作。許多深度卷積神經網絡爲了擴大高層feature的感受野,常用dilated convolution(空洞卷積)、coarse-to-fine structure等方法。本文基於先前的工作,選擇的baseline是帶dilated network的FCN。

大多數語義分割模型的工作基於兩個方面:

    一方面:具有多尺度的特徵融合,高層特徵具有強的語義信息,底層特徵包含更多的細節。
    另一方面:基於結構預測。例如使用CRF(條件隨機場)做後端細化分割結果。

爲了充分的利用全局特徵層次先驗知識來進行不同場景理解,本文提出的PSP模塊能夠聚合不同區域的上下文從而達到獲取全局上下文的目的。
Architecture
Pyramid Pooling Module

前面也說到了,本文的一大貢獻就是PSP模塊。

在一般CNN中感受野可以粗略的認爲是使用上下文信息的大小,論文指出在許多網絡中沒有充分的獲取全局信息,所以效果不好。要解決這一問題,常用的方法是:

    用全局平均池化處理。但這在某些數據集上,可能會失去空間關係並導致模糊。
    由金字塔池化產生不同層次的特徵最後被平滑的連接成一個FC層做分類。這樣可以去除CNN固定大小的圖像分類約束,減少不同區域之間的信息損失。

論文提出了一個具有層次全局優先級,包含不同子區域之間的不同尺度的信息,稱之爲pyramid pooling module。

mark

該模塊融合了4種不同金字塔尺度的特徵,第一行紅色是最粗糙的特徵–全局池化生成單個bin輸出,後面三行是不同尺度的池化特徵。爲了保證全局特徵的權重,如果金字塔共有N個級別,則在每個級別後使用的卷積將對於級別通道降爲原本的1/N。再通過雙線性插值獲得未池化前的大小,最終concat到一起。

金字塔等級的池化核大小是可以設定的,這與送到金字塔的輸入有關。論文中使用的4個等級,核大小分別爲。
整體架構

在PSP模塊的基礎上,PSPNet的整體架構如下:

mark

    基礎層經過預訓練的模型(ResNet101)和空洞卷積策略提取feature map,提取後的feature map是輸入的1/8大小
    feature map經過Pyramid Pooling Module得到融合的帶有整體信息的feature,在上採樣與池化前的feature map相concat
    最後過一個卷積層得到最終輸出

PSPNet本身提供了一個全局上下文的先驗(即指代Pyramid Pooling Module這個結構),後面的實驗會驗證這一結構的有效性。
基於ResNet的深度監督網絡

論文用了一個很“玄學”的方法搞了一個基礎網絡層,如下圖:

mark

在ResNet101的基礎上做了改進,除了使用後面的softmax分類做loss,額外的在第四階段添加了一個輔助的loss,兩個loss一起傳播,使用不同的權重,共同優化參數。後續的實驗證明這樣做有利於快速收斂。
Experiment

論文在ImageNet scene parsing challenge 2016, PASCAL VOC 2012,Cityscapes 三個數據集上做了實驗。

訓練細節:
項目     設置
學習率     採用“poly”策略,即,衰減動量設置爲0.9 and 0.0001
迭代次數     ImageNet上設置150K,PASCAL VOC設置30K,Cityscapes設置90K
數據增強     隨機翻轉、尺寸在0.5到2之間縮放、角度在-10到10之間旋轉、隨機的高斯濾波
batchsize     batch很重要,設置batch=16(這很喫顯存啊~)
訓練分支網絡     設置輔助loss的權重爲0.4
平臺     Caffe
ImageNet scene parsing challenge 2016

    測試不同配置下的ResNet的性能,找到比較好的預訓練模型:
    mark

    ResNet50-Baseline: 基於FCN的ResNet50結構,帶空洞卷積的baseline
    ResNet50+B1+MAX:只帶的平均池化,池化後做通道降維

可以看到做平均池化的都比最大池化效果要好,最後將多個操作結合得到最終最好的效果。

測試輔助loss的影響:
mark

實驗都是以ResNet50-Baseline爲基準,最後以爲最佳。

測試預訓練模型的深度:
mark

mark
可以看到在測試的{50,101,152,269}這四個層次的網絡中,網絡越深,效果越好。

多種技巧融合
mark
帶有DA即數據增強,AL即帶輔助loss,PSP帶金字塔池化模塊,MS多尺度。

在IamgeNet上的表現:
mark
PASCAL VOC 2012

mark

可以看到在MS-COCO上預訓練過的效果最好。
Cityscapes

mark

在Cityscapes上表現也是很不錯的。
Conclusion

論文在結構上提供了一個pyramid pooling module,在不同層次上融合feature,達到語義和細節的融合。 模型的性能表現很大,但感覺主要歸功於一個良好的特徵提取層。在實驗部分講了很多訓練細節,但還是很難復現,這裏值得好好推敲一下。
https://blog.csdn.net/u011974639/article/details/78985130
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章