天天看點

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

語義分割一直是計算機視覺中十分重要的領域,随着深度學習的流行,語義分割任務也得到了大量的進步。本文首先闡釋何為語義分割,然後再從論文出發概述多種解決方案。本文由淺層模型到深度模型,簡要介紹了語義分割各種技術,雖然本文并沒有深入講解語義分割的具體實作,但本文簡要地概述了每一篇重要論文的精要和亮點,希望能給讀者一些指南。

什麼是語義分割?

.

語義分割指像素級地識别圖像,即标注出圖像中每個像素所屬的對象類别。如下圖:

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

左:輸入圖像,右:該圖像的語義分割

除了識别車和騎車的人,我們還需要描繪出每個物體的邊界。是以,與圖像分類不同,語義分割需要根據模型進行密集的像素級分類。

VOC2012 和 MSCOCO 是語義分割領域最重要的資料集。

有哪些不同的解決方案?

在深度學習應用到計算機視覺領域之前,人們使用 TextonForest 和 随機森林分類器進行語義分割。卷積神經網絡(CNN)不僅對圖像識别有所幫助,也對語義分割領域的發展起到巨大的促進作用。

語義分割任務最初流行的深度學習方法是圖像塊分類(patch classification),即利用像素周圍的圖像塊對每一個像素進行獨立的分類。使用圖像塊分類的主要原因是分類網絡通常是全連接配接層(full connected layer),且要求固定尺寸的圖像。

2014 年,加州大學伯克利分校的 Long 等人提出全卷積網絡(FCN),這使得卷積神經網絡無需全連接配接層即可進行密集的像素預測,CNN 進而得到普及。使用這種方法可生成任意大小的圖像分割圖,且該方法比圖像塊分類法要快上許多。之後,語義分割領域幾乎所有先進方法都采用了該模型。

除了全連接配接層,使用卷積神經網絡進行語義分割存在的另一個大問題是池化層。池化層不僅擴大感受野、聚合語境進而造成了位置資訊的丢失。但是,語義分割要求類别圖完全貼合,是以需要保留位置資訊。本文将介紹兩種不同結構來解決該問題。

 第一個是編碼器-解碼器結構。編碼器逐漸減少池化層的空間次元,解碼器逐漸修複物體的細節和空間次元。編碼器和解碼器之間通常存在快捷連接配接,是以能幫助解碼器更好地修複目标的細節。U-Net 是這種方法中最常用的結構。

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

U-Net:一種編碼器-解碼器結構

 第二種方法使用空洞/帶孔卷積(dilated/atrous convolutions)結構,來去除池化層。

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

Dilated/atrous 卷積,rate=1 是典型的卷積結構

條件随機場(CRF)預處理通常用于改善分割效果。CRF 是一種基于底層圖像像素強度進行「平滑」分割的圖模型。它的工作原理是灰階相近的像素易被标注為同一類别。CRF 可令分值提高 1-2%。

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

CRF 示意圖。(b)一進制分類器作為 CRF 的分割輸入。(c、d、e)是 CRF 的變體,其中(e)是廣泛使用的一種 CRF

下面,我将總結幾篇論文,介紹分割結構從 FCN 以來的發展變化。所有這些架構都使用 VOC2012 評估伺服器進行基準測試。

論文概述

下列論文按照時間順序進行介紹:

1. FCN

2. SegNet

3. Dilated Convolutions

4. DeepLab (v1 & v2)

5. RefineNet

6. PSPNet

7. Large Kernel Matters

8. DeepLab v3

我列出了每篇論文的主要貢獻,并稍加解釋。同時我還展示了這些論文在 VOC2012 測試資料集上的基準測試分數(IOU 均值)。

FCN

  • 使用全卷積網絡進行語義分割(Fully Convolutional Networks for Semantic Segmentation)
  • 2014 年 11 月 14 日送出
  • arXiv 連結(https://arxiv.org/abs/1411.4038)

主要貢獻:

  • 推廣端到端卷積網絡在語義分割領域的應用
  • 修改 Imagenet 預訓練網絡并應用于語義分割領域
  • 使用解卷積層進行上采樣
  • 使用跳躍連接配接,改善上采樣的粒度程度

相關解釋:

本論文的關鍵點是分類網絡中的全連接配接層可視為使用卷積核覆寫整個輸入區域的卷積操作。這相當于根據重疊的輸入圖像塊評估原始分類網絡,但由于計算過程由圖像塊的重疊部分共同分擔,這種方法比之前更加高效。盡管該結論并非獨一無二,但它顯著提高了 VOC2012 資料集上模型的最佳效果。

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

全連接配接層作為卷積操作

将全連接配接層在 VGG 等 Imagenet 預訓練網絡中進行卷積操作後,由于 CNN 中的池化操作,特征圖仍舊需要上采樣。解卷積層不使用簡單的雙線性插值,而是學習所進行的插值。解卷積層又被稱為上卷積(upconvolution)、完全卷積、轉置卷積或微步卷積(fractionally-strided convolution)。

但是,由于池化過程造成資訊丢失,上采樣(即使帶有解卷積層)生成的分割圖較為粗糙。是以我們可以從高分辨率的特征圖中引入跳躍連接配接(shortcut/skip connection)來改善上采樣的粗糙程度。

VOC2012 基準測試分數:

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

個人評價:

這是一項重要的貢獻,但是目前的技術水準又有了很大發展。

SegNet

SegNet:用于圖像分割的一種深度卷積編碼器-解碼器架構(SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation)

2015 年 11 月 2 日送出

Arxiv 連結(https://arxiv.org/abs/1511.00561)

主要貢獻:

将最大池化索引(Maxpooling indices)轉移到解碼器,進而改善分割分辨率。

相關解釋:

在 FCN 網絡中,盡管使用了解卷積層和一些跳躍連接配接,但輸出的分割圖仍然比較粗糙。是以,更多的跳躍連接配接被引入 FCN 網絡。但是,SegNet 沒有複制 FCN 中的編碼器特征,而是複制了最大池化索引。這使得 SegNet 比 FCN 更節省記憶體。

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

Segnet 結構

VOC2012 基準測試分數:

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

個人評價:

  • FCN 和 SegNet 都是最早出現的編碼器-解碼器結構。
  • SegNet 的基準測試分數不夠好,不宜繼續使用。

空洞卷積(Dilated Convolutions)

  • 使用空洞卷積進行多尺度背景聚合(Multi-Scale Context Aggregation by Dilated Convolutions)
  • 2015 年 11 月 23 日送出
  • Arxiv 連結(https://arxiv.org/abs/1511.07122)

主要貢獻:

使用空洞卷積,一種可進行稠密預測的卷積層。

提出「背景子產品」(context module),該子產品可使用空洞卷積進行多尺度背景聚合。

相關解釋:

池化使感受野增大,是以對分類網絡有所幫助。但池化會造成分辨率下降,不是語義分割的最佳方法。是以,論文作者使用空洞卷積層(dilated convolution layer),其工作原理如圖:

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

空洞/帶孔卷積

空洞卷積層(DeepLab 将其稱為帶孔卷積)可使感受野呈指數級增長,而空間次元不至于下降。

從預訓練好的分類網絡(此處指 VGG)中移除最後兩個池化層,之後的卷積層都使用空洞卷積。尤其是,pool-3 和 pool-4 之間的卷積是空洞卷積 2,pool-4 後面的卷積是空洞卷積 4。使用這個子產品(論文中稱為前端子產品 frontend module)之後,無需增加參數即可實作稠密預測。另一個子產品(論文中稱為背景子產品 context module)将使用前端子產品的輸出作為輸入進行單獨訓練。該子產品是多個不同擴張程度的空洞卷積級聯而成,是以該子產品可聚合多尺度背景,并改善前端子產品擷取的預測結果。

VOC2012 基準測試分數:

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

個人評價:

預測分割圖的大小是圖像大小的 1/8。幾乎所有的方法都存在這個現象,通常使用插值的方法擷取最終分割圖。

DeepLab (v1 & v2)

  • v1: 使用深度卷積網絡和全連接配接 CRF 進行圖像語義分割(Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs)
  • 2014 年 12 月 22 日送出
  • Arxiv 連結(https://arxiv.org/abs/1412.7062)
  • v2 : DeepLab: 使用深度卷積網絡、帶孔卷積和全連接配接 CRF 進行圖像語義分割(DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs)
  • 2016 年 6 月 2 日送出
  • Arxiv 連結(https://arxiv.org/abs/1606.00915)

主要貢獻:

  • 使用帶孔/空洞卷積。
  • 提出金字塔型的空洞池化(ASPP)
  • 使用全連接配接 CRF

相關解釋:

帶孔/空洞卷積在不增加參數的情況下增大感受野。如上文中空洞卷積論文中所述,分割網絡得到改進。

将原始圖像的多個重新縮放版本傳遞到 CNN 網絡的并行分支(圖像金字塔)中,或者使用采樣率不同的多個并行空洞卷積層(ASPP),實作多尺度處理。

結構化預測可通過全連接配接 CRF 實作。CRF 的訓練/微調需作為後處理的步驟單獨進行。

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

DeepLab2 流程圖

VOC2012 基準測試分數:

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

RefineNet

  • RefineNet:使用多路徑精煉網絡進行高分辨率語義分割(RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation)
  • 2016 年 11 月 20 日送出
  • Arxiv 連結(https://arxiv.org/abs/1611.06612)

主要貢獻:

  • 具備精心設計解碼器子產品的編碼器-解碼器架構
  • 所有元件遵循殘差連接配接設計

相關解釋:

使用空洞/帶孔卷積的方法也有弊端。由于空洞卷積需要大量高分辨率特征圖,是以其計算成本高昂,且占用大量記憶體。這妨礙了高分辨率預測的計算。例如,DeepLab 的預測結果大小是原始輸入圖像的 1/8。

是以,這篇論文提出使用編碼器-解碼器結構。編碼器是 ResNet-101 子產品,解碼器是 RefineNet 子產品,該子產品融合了編碼器中的高分辨率特征和先前 RefineNet 子產品中的低分辨率特征。

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

RefineNet 架構

 每一個 RefineNet 子產品都有兩個元件,一個元件通過對低分辨率特征進行上采樣來融合多分辨率特征,另一個元件基于步幅為 1、5 x 5 大小的重複池化層來擷取背景資訊。這些元件遵循機關映射的思想,采用殘差連接配接設計。

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

RefineNet 子產品

VOC2012 基準測試分數:

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

PSPNet

  • 金字塔型場景解析網絡
  • 2016 年 12 月 4 日送出
  • Arxiv 連結(https://arxiv.org/abs/1612.01105)

主要貢獻:

  • 提出金字塔池化子產品幫助實作背景聚合。
  • 使用輔助損失(auxiliary loss)。

相關解釋:

全局場景分類為分割的類别分布提供線索,是以很重要。金字塔池化子產品(Pyramid pooling module)通過應用較大核池化層的擷取這些資訊。如上文中空洞卷積論文中所述,PSPNet 也使用空洞卷積改善 ResNet,并添加一個金字塔池化子產品。該子產品将 ResNet 的特征圖與并行池化層的上采樣輸出結果連接配接起來,其中卷積核核覆寫了圖像的全部、一半和小塊區域。

在 ResNet 的第四階段之後(即輸入到金字塔池化子產品),在主分支損失之外又增加了附加損失。這個想法在其他研究中也被稱為中間監督(intermediate supervision)。

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

PSPNet 架構

VOC2012 基準測試分數:

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

Large Kernel Matters

  • 大型核的問題——通過全局卷積網絡改善語義分割(Large Kernel Matters -- Improve Semantic Segmentation by Global Convolutional Network)
  • 2017 年 3 月 8 日送出
  •  Arxiv 連結(https://arxiv.org/abs/1703.02719)

主要貢獻:

提出使用帶有大型卷積核的編碼器-解碼器結構

相關解釋:

語義分割不僅需要分割,同時還需要對分割目标進行分類。由于分割結構中無法使用全連接配接層,是以帶有大核函數的卷積可以替代全連接配接層得到應用。

使用大型核的另一個原因是,盡管 ResNet 等更深層的網絡擁有較大的感受野,但相關研究顯示這樣的網絡更易收集較小範圍(即有效感受野)内的資訊。大型核的計算成本高昂,且擁有大量參數。是以,k x k 卷積可近似成 1 x k + k x 1、k x 1 和 1 x k。這篇論文中将該子產品稱為全局卷積網絡(GCN)。

再來看結構,ResNet(沒有空洞卷積)構成該結構的編碼器部分,而 GCN 和反卷積構成了解碼器部分。該結構還采用了一個叫做邊界細化(BR)的簡單殘差塊。

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

GCN 結構

VOC2012 測試分數:

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

DeepLab v3

  • 重新思考使用空洞卷積進行圖像語義分割(Rethinking Atrous Convolution for Semantic Image Segmentation)
  • 2017 年 6 月 17 日送出
  • Arxiv 連結(https://arxiv.org/abs/1706.05587)

主要貢獻:

  • 改進了金字塔型的空洞池化(ASPP)
  • 模型級聯了多個空洞卷積

相關解釋:

與 DeepLabv2 和空洞卷積論文一樣,該研究也使用空洞/擴張卷積來改進 ResNet 模型。改進後的 ASPP 包括圖像層級特征連接配接、一個 1x1 的卷積和三個 3x3 的不同比率空洞卷積。每一個并行卷積層之後使用批量歸一化操作。

級聯模型是一個 ResNet 子產品,但其中的卷積層是不同比率的空洞卷積。該模型與空洞卷積論文中的背景子產品相似,但是它直接應用于中間特征圖,而不是可信度地圖(信念圖是通道數與類别數相同的最終 CNN 特征圖)。

該論文分别評估了這兩個已提出的模型。兩個模型在 驗證集上的性能相似,帶有 ASPP 的模型性能稍好,且未使用 CRF。這兩個模型優于 DeepLabv2 中最優的模型。論文作者還提到性能的改進來自于批量歸一化操作和更好的多尺度背景編碼方式。

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

DeepLabv3 ASPP

VOC2012 測試分數:

[深度學習]從全卷積網絡到大型卷積核:深度學習的語義分割全指南

原文位址:http://blog.qure.ai/notes/semantic-segmentation-deep-learning-review

繼續閱讀