1. 程式人生 > >【semantic segmentation】Pyramid Scene Parsing Network(轉)

【semantic segmentation】Pyramid Scene Parsing Network(轉)

論文地址: arxiv.org/pdf/1612.0110
原始碼地址: github.com/hszhao/PSPNe
來自: Semantic Segmentation--Pyramid Scene Parsing Network(PSPNet)論文解讀
《Pyramid Scene Parsing Network》論文筆記

What:PsPNet主要是通過金字塔池化提取多尺度資訊。按論文的描述:更好的提取全域性上下文資訊,同時利用區域性和全域性資訊,使得場景識別更加可靠。(從技術的角度來說,我覺得就是從不同的視野去尋找特徵,類似放大鏡放大,放大倍數大,視野小,物體清楚,但是看不清物體之間的關係;放大倍數小,視野大,物體模糊,但是可以看清楚物體之間的關係。)除此之外,文章還通過Ablation study (類似控制變數法,移除一個結構,研究這個結構的影響)研究金字塔多尺度池化,池化的方式,輔助損失函式,預訓練模型的作用。

Why:PsPNet提出的原因,可以總結為一句話:獲取全域性環境資訊,利用全域性資訊和區域性資訊獲得更加可靠地結果。怎麼做到的?提取多尺度資訊。為什麼提取多尺度資訊可以獲取全域性環境資訊?經驗總結。

Abstract

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

Introduction

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

  • 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。

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

金字塔等級的池化核大小是可以設定的,這與送到金字塔的輸入有關。論文中使用的4個等級,核大小分別為1×1,2×2,3×3,6×6。

整體架構

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

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

PSPNet本身提供了一個全域性上下文的先驗(即指代Pyramid Pooling Module這個結構),後面的實驗會驗證這一結構的有效性。

基於ResNet的深度監督網路

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

Experiment

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

訓練細節:

Conclusion

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