語義分割網絡總結:FCN、SegNet、U-Net、PSPNet、RefineNet到DeepLab v1~v3+

語義分割梳理

寫這篇博客也是想主要梳理一下最流行的幾個語義分割網絡,並且做一個小總結。接下來將從2014年的FCN到2018年的DeepLabv3+,來描述幾個基於FCNs的深度語義分割網絡的結構是如何變化。

  • 值得注意的是語義分割的任務是基於像素點的密集預測任務,其目的是將輸入圖像的每個像素分配一個語義類別。

在之前基於CNN的分割網絡中存在兩個問題:

  1. 在利用全連接層的情況下進行密集預測
  2. 池化操作和帶步長的卷積在提取更多抽象、突出的特徵的同時,也造成了空間信息的丟失

FCNs網絡,以VGG16爲backbone,去掉了最後的全連接層(fc6和fc7)轉換爲卷積層,以生成一個低分辨率的特徵圖,然後用雙線性初始化的飯卷積,並在上採樣的每一個階段採用skip-connection的方式融合(求和)VGG16中的低層信息(conv4、conv3)的更加粗糙但是分辨率更高的特徵圖進一步融合多尺度信息。如下圖所示,FCN-8s 融合了不同粗糙度(conv3、conv4和fc7)的特徵,利用編碼器不同階段不同分辨率的空間信息來細化分割結果。
在這裏插入圖片描述

在這裏插入圖片描述
SegNet的新穎之處在於解碼器(Decoder)對其低分辨率的輸入特徵圖進行 上採樣 的方式。具體地說,解碼器使用了在相應編碼器(Encoder)的最大池化步驟中計算的池化索引來執行非線性上採樣。這種方法消除了學習上採樣的需要。經上採樣後的特徵圖是稀疏的,因此隨後使用的可訓練的卷積核進行卷積操作,生成密集的特徵圖。
在這裏插入圖片描述
SegNet的關鍵優勢:

  1. 在解碼器中使用去池化對特徵圖進行上採樣操作,並在分割中保持高頻細節的完整性
  2. 編碼器不使用全連接層,因此是擁有較少參數的輕量級網絡

在這裏插入圖片描述
U-Net的關鍵優勢

  1. 編碼過程中每經過一個池化層就是一個尺度,通過skip-connection就結合了多尺度的信息。
  2. 簡單有效地將編碼器的特徵圖拼接至每個階段解碼器的上採樣特徵圖,從而形成一個U型結構,並通過skip-connection(不是求和,這裏使用級聯)的架構,在每個階段都允許解碼器學習在編碼器池化中丟失的相關特性
  3. 適合超大圖像分割,適合醫學圖像分割(把一個大圖像切成小patch進行訓練)。

在這裏插入圖片描述
PSPNet利用不同區域的上下文信息集合,通過設計的金字塔池化模塊,來充分的利用全局上下問信息。
PSPNet的關鍵優勢:

  1. PSP基於ResNet架構並且在此基礎上引入空洞卷積,特徵通過CNN提取以獲得Feature Map(原圖像尺寸的1/4),然後進入金字塔池化模塊。
  2. 在ResNet的中間層引入輔助損失,以優化整體的學習。
  3. 在修改後的ResNet頂部引入空間金字塔池化來聚合上下文信息

RefineNet是一個通用的多路徑優化網絡,它明確利用了整個下采用過程中可用的所有信息,使用遠程殘差連接實現高分辨率的預測。通過這種方式,可以使用早起卷積中的細粒度特徵(low-level)來直接細化捕捉高級語義特徵(high-level)的更深的網絡層。RefineNet的各個組件使用遵循恆等映射思想的殘差連接,這也是的網絡能夠更有效的端到端訓練。
在這裏插入圖片描述
在這裏插入圖片描述
RefineNet解決了傳統卷積網絡中的空間分辨率減少的問題,與PSPNet(使用計算成本高的空洞卷積)使用方法不通。提出的架構迭代地池化特徵,利用特殊的RefineNet模塊增加不同的分辨率,並最終生成高分辨率的分割圖。其關鍵特點如下:

  1. 使用多分辨率作爲輸入,將提取的特徵融合在一起,並將其傳遞到下一階段。
  2. 引入鏈式殘差池化,可以從一個大的圖像區域獲取背景信息。它通過多窗口尺寸有效地池化特性,利用殘差連接和學習權重方式融合這些特徵,所有的特徵都是使用sum方式來進行end-to-end訓練。
  3. 使用ResNet的殘差層,而沒使用計算成本更高的空洞卷積。
  • DeepLab v1~v3+

語義分割是一種對每個像素進行分類的密集預測,而普通的分類神經網絡具有平移不變性,對位置不敏感,而且降採樣過程會損失空間信息,不利於分割結果輸出。然而分類網絡不停的降採樣,也是爲了增加感受野,提高更高層的語義。那麼有沒有辦法保存特徵圖的分辨率而同時增加感受野呢?DeepLab就採用了空洞卷積(或帶孔卷積)。
谷歌的DeepLab系列是語義分割中非常重要的存在。目前一共出了四個版本。爲了讓大家更好地、有邏輯性地熟悉語義分割中重要的DeePLab系列網絡,在這裏將DeepLab系列網絡放在一起講解

  • 帶孔卷積和普通卷積的區別示意圖:

在這裏插入圖片描述
使用空洞卷積的使用,可以服從之前與訓練的分類網絡,把後面幾層的下采樣去掉,複用後面幾層的卷積參數,卷積方法改爲空洞卷積。這樣網絡最後輸出的特徵圖分辨率提高了,感受野也增加了。下圖從左到右,主要在DCNN中應用了空洞卷積密集的提取特徵,左邊輸出步幅是16,需要上採樣16倍得到預測結果,可以看到結果是比較模糊的;而右邊是在DCNN中使用空洞卷積,保持步幅爲8,只需要上採樣8倍,結果清晰了很多。
在這裏插入圖片描述

  • DapLab v1

DeepLab v1是在VGG16的基礎上做了一下的修改:

  1. VGG16的全連接層改爲卷積
  2. 最後的兩個池化層去掉了
  3. 後句卷積層的卷積核改爲了空洞卷積(rate=2)【串行計算
  4. 在ImageNet上預訓練的VGG16權重上做fine-tune
  5. 最後也採用了條件隨機場(CRF)進行了細化邊緣分割效果。【在最新的v3已經被棄用
  • DapLab v2

DeepLab v1的空洞卷積是串行的。v2採用了一個ASPP模塊改爲並行使用,每個分支才用不同rate(獲得不同的感受野),已解決多尺度問題。同時v2也保留了CRF作爲後處理手段。
v2相對於v1的改進:

  1. 利用多尺度獲得更好的分割效果(ASPP)
  2. Backbone由VGG16改爲了ResNet
  3. 使用不同的學習策略(Poly)
    重點說一下ASPP(Atrous Spatial Pyramid Pooling),ASPP中在給定的Input Feature Map上以r=(6,12,18,24)的3×3空洞卷積並行採樣。ASPP各個空洞卷積分支採樣後結果最後融合到一起(通道相同,做像素加),得到最終預測結果.
    在這裏插入圖片描述
  • DapLab v3

DeepLab v3 第一感覺就是空洞卷積串行和並行方法的一個結合,在細節之處(BN和rate)有所改進。v3在論文中討論了並行(ASPP)和串行的兩種風格的網絡,通過實驗對比發現並行的效果更好,所以後來再提到DeepLab v3世紀說的ASPP風格的那個版本。
爲了解決多尺度的問題,作者做了兩種嘗試:在串行網絡結構中依次使用double空洞卷積率;以及在ASPP網絡結構中加入了全劇池化和多種空洞卷積分支平行計算再融合

  • Multi-grid

Multi-grid是指在一個block內部,才用不同的空洞卷積率。
比如,在resnet的block4內有3層卷積,那麼當Multi-grid = (r1,r2,r3) = (1,2,4),rate=2時,最終這3層的空洞卷積率爲rates = 2*(1,2,4) = (2,4,8)。所以空洞卷積率數是Multi-grid和rate參數的乘積。注意這個規則僅僅在串行的Mutli-grid有用,在ASPP中不需要相乘。

串行的DeepLab v3

以上是串行的DeepLab v3,都是基於ResNet的基礎上進行的。接下來,介紹一下並行的DeepLab v3版本,這裏的並行版本是在保留block4的基礎上,加入了ASPP模塊。網絡結構如下:

在這裏插入圖片描述

  • 相比於DeepLab v2,v3在ASPP中應用了BN層。這裏的ASPP中的空洞卷積率不需要做變換(不用乘Multi-grid)。值得注意的是,作者在ASPP中加入了全局池化,這是因爲作者發現空洞卷積率太大,效果就接近1x1卷積了,起不到增大感受野的作用,所以作者增加了一個分支做全局池化,然後在上採樣回原來的尺度。
  • DapLab v3+

DeepLab v3+ 就是v3的改進版,主要體現在以下三點:

  1. 主幹網絡是微軟的可變形卷積思想改造的Xception
  2. 增加了decoder部分,融合更加底層的特徵以補充細節信息
  3. 使用深度可分離卷積改造ASPP和decoder部分,減少計算量

下圖左側是v3的結構,中間是U-Net風格的編解碼結構,最右側就是DeepLab v3+的結構。和v3相比,v3+融合了一次底層特徵圖。

在這裏插入圖片描述
更詳細的結構如下:
在這裏插入圖片描述

學習參考

[1] https://blog.csdn.net/qq_18293213/article/details/79882890
[2] https://blog.csdn.net/caicai2526/article/details/79984950
[3] https://blog.csdn.net/yuanlulu/article/details/88930810
[4] https://www.tinymind.cn/articles/410?from=articles_commend
[5] https://blog.csdn.net/zhuzemin45/article/details/79709874
[6] https://blog.csdn.net/Formlsl/article/details/80373200
[7] https://blog.csdn.net/yuanlulu/article/details/88930810
[8] https://www.jianshu.com/p/f7457d9380ad

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