1. 程式人生 > >概覽主要語義分割網路

概覽主要語義分割網路

影象的語義分割是將輸入影象中的每個畫素分配一個語義類別,以得到畫素化的密集分類。雖然自 2007 年以來,語義分割/場景解析一直是計算機視覺社群的一部分,但與計算機視覺中的其他領域很相似,自 2014 年 Long 等人首次使用全卷積神經網路對自然影象進行端到端分割,語義分割才有了重大突破。

圖1:輸入影象(左),FCN-8s 網路生成的語義分割圖(右)(使用 pytorch-semseg 訓練)

FCN-8s 架構在 Pascal VOC 2012 資料集上的效能相比以前的方法提升了 20%,達到了 62.2% 的 mIOU。這種架構是語義分割的基礎,此後一些新的和更好的體系結構都基於此。

全卷積網路(FCNs)可以用於自然影象的語義分割、多模態醫學影象分析和多光譜衛星影象分割。與 AlexNet、VGG、ResNet 等深度分類網路類似,FCNs 也有大量進行語義分割的深層架構。

本文作者總結了 FCN、SegNet、U-Net、FC-Densenet E-Net 和 Link-Net、RefineNet、PSPNet、Mask-RCNN 以及一些半監督方法,例如 DecoupledNet 和 GAN-SS,併為其中的一些網路提供了 PyTorch 實現。在文章的最後一部分,作者總結了一些流行的資料集,並展示了一些網路訓練的結果。

▌網路架構

一般的語義分割架構可以被認為是一個編碼器——解碼器網路。編碼器通常是一個預訓練的分類網路,像 VGG、ResNet,然後是一個解碼器網路。這些架構之間的不同主要在於解碼器網路。解碼器的任務是將編碼器學習到的可判別特徵(較低解析度)從語義上對映到畫素空間(較高解析度),以獲得密集分類。

不同於分類任務中深度網路的最終結果(即類存在的概率)被視為唯一重要的事,語義分割不僅需要在畫素級有判別能力,還需要有能將編碼器在不同階段學到的可判別特徵對映到畫素空間的機制。不同的架構採用不同的機制(跳遠連線、金字塔池化等)作為解碼機制的一部分。

一些上述架構和載入資料的程式碼可在以下連結獲得:

這篇論文對語義分割(包括 Recurrent Style Networks)作了一個更正式的總結。

▌Fully Convolution Networks (FCNs) 全卷積網路

我們將當前分類網路(AlexNet, VGG net 和 GoogLeNet)修改為全卷積網路,通過對分割任務進行微調,將它們學習的表徵轉移到網路中。然後,我們定義了一種新架構,它將深的、粗糙的網路層語義資訊和淺的、精細的網路層的表層資訊結合起來,來生成精確的分割。我們的全卷積網路在 PASCAL VOC(在 2012 年相對以前有 20% 的提升,達到了62.2% 的平均 IU),NYUDv2 和 SIFT Flow 上實現了最優的分割結果,對於一個典型的影象,推斷只需要三分之一秒的時間。

圖2:FCN 端到端密集預測流程

關鍵特點:

特徵是由編碼器中的不同階段合併而成的,它們在語義資訊的粗糙程度上有所不同。

低解析度語義特徵圖的上取樣使用通過雙線性插值濾波器初始化的反捲積操作完成。

從 VGG16、Alexnet 等現代分類器網路進行知識轉移的優秀樣本來實現語義細分。

圖3:將全連線層轉換成卷積層,使得分類網路可以輸出一個類的熱圖。

如上圖所示,像 VGG16 分類網路的全連線層(fc6,fc7)被轉換為全卷積層。它生成了一個低解析度的類的熱圖,然後用雙線性初始化的反捲積,並在上取樣的每一個階段通過融合(簡單地相加)VGG16 中的低層(conv4和conv3)的更加粗糙但是解析度更高的特徵圖進一步細化特徵。在這裡可以找到更加詳細的 netscope 風格的網路視覺化。

在傳統的分類 CNNs 中,池化操作用來增加視野,同時減少特徵圖的解析度。這對於分類任務來說非常有用,因為分類的最終目標是找到某個特定類的存在,而物件的空間位置無關緊要。因此,在每個卷積塊之後引入池化操作,以使後續塊能夠從已池化的特徵中提取更多抽象、突出類的特徵。

圖4:FCN-8s 網路架構

另一方面,池化和帶步長的卷積對語義分割是不利的,因為這些操作造成了空間資訊的丟失。下面列出的大多數架構主要在解碼器中使用了不同的機制,但目的都在於恢復在編碼器中降低解析度時丟失的資訊。如上圖所示,FCN-8s 融合了不同粗糙度(conv3、conv4和fc7)的特徵,利用編碼器不同階段不同解析度的空間資訊來細化分割結果。

圖5:訓練 FCNs 時卷積層的梯度

第一個卷積層捕捉低層次的幾何資訊,因為這完全依賴資料集,你可以注意到梯度調整了第一層的權重以使模型適應資料集。VGG 中更深層的卷積層有非常小的梯度流,因為這裡捕獲的高層次的語義概念足夠用於分割。

圖6:反捲積(卷積轉置)

空洞卷積

語義分割架構的另一個重要方面是,對特徵圖使用反捲積,將低解析度分割圖上取樣至輸入影象解析度機制,或者花費大量計算成本,使用空洞卷積在編碼器上部分避免解析度下降。即使在現代 GPUs 上,空洞卷積的計算成本也很高。

SegNet

SegNet 的新穎之處在於解碼器對其較低解析度的輸入特徵圖進行上取樣的方式。具體地說,解碼器使用了在相應編碼器的最大池化步驟中計算的池化索引來執行非線性上取樣。這種方法消除了學習上取樣的需要。經上取樣後的特徵圖是稀疏的,因此隨後使用可訓練的卷積核進行卷積操作,生成密集的特徵圖。我們提出的架構與廣泛採用的 FCN 以及眾所周知的 DeepLab-LargeFOV,DeconvNet 架構進行比較。比較的結果揭示了在實現良好的分割效能時所涉及的記憶體與精度之間的權衡。

圖7:SegNet 架構

關鍵特點:

SegNet 在解碼器中使用去池化對特徵圖進行上取樣,並在分割中保持高頻細節的完整性。

編碼器不使用全連線層(和 FCN 一樣進行卷積),因此是擁有較少引數的輕量級網路。

圖8:去池化

如上圖所示,編碼器中的每一個最大池化層的索引都儲存了起來,用於之後在解碼器中使用那些儲存的索引來對相應特徵圖進行去池化操作。這有助於保持高頻資訊的完整性,但當對低解析度的特徵圖進行去池化時,它也會忽略鄰近的資訊。

▌U-Net

U-Net 架構包括一個捕獲上下文資訊的收縮路徑和一個支援精確本地化的對稱擴充套件路徑。我們證明了這樣一個網路可以使用非常少的影象進行端到端的訓練,並且在 ISBI 神經元結構分割挑戰賽中取得了比以前最好的方法(一個滑動視窗的卷積網路)更加優異的效能。我們使用相同的網路,在透射光顯微鏡影象(相位對比度和 DIC)上進行訓練,以很大的優勢獲得了 2015 年 ISBI 細胞追蹤挑戰賽。此外,網路推斷速度很快。一個 512x512 的影象分割在最新的 GPU 上花費了不到一秒。

圖9:U-Net 架構

關鍵特點:

U-Net 簡單地將編碼器的特徵圖拼接至每個階段解碼器的上取樣特徵圖,從而形成一個梯形結構。該網路非常類似於 Ladder Network 型別的架構。

通過跳遠拼接連線的架構,在每個階段都允許解碼器學習在編碼器池化中丟失的相關特性。

U-Net 在 EM 資料集上取得了最優異的結果,該資料集只有 30 個密集標註的醫學影象和其他醫學影象資料集,U-Net 後來擴充套件到 3D 版的 3D-U-Net。雖然 U-Net 的發表是因為在生物醫學領域的分割、網路實用性以及從非常少的資料中學習的能力,但現在已經成功應用在其他幾個領域,例如衛星影象分割,同時也成為許多 kaggle 競賽中關於醫學影象分割獲勝的解決方案中的一部分。

▌Fully Convolutional DenseNet

在文中我們擴充了 DenseNets,以解決語義分割的問題。我們在城市場景基準資料集(如 CamVid 和 Gatech )上獲得了最優異的結果,沒有使用進一步的後處理模組和預訓練模型。此外,由於模型的優異結構,我們的方法比當前釋出的在這些資料集上取得最佳的網路引數要少得多。

圖10:全卷積 DenseNet 架構

全卷積 DenseNet 使用 DenseNet 作為它的基礎編碼器,並且也以類似於 U-Net 的方式,在每一層級上將編碼器和解碼器進行拼接。

▌E-Net 和 Link-Net

在這篇文章中,我們提出了一種新的深度神經網路架構,稱為 ENet(efficient neural network),專門為需要低延遲操作的任務建立。ENet 比當前網路模型快 18 倍,少了 75 倍的  FLOPs,引數數量降低了 79 倍,並且提供相似甚至更好的準確率。我們在 CamVid、Cityscapes 和 SUN 資料集上進行了測試,展示了與現有的最優方法進行比較的結果,以及網路準確率和處理時間之間的權衡。

LinkNet 可以在 TX1 和 Titan X 上,分別以 2fps 和 19fps 的速率處理解析度為 1280x720 的影象。

圖11:(左)LinkNet 架構,(右)LinkNet 中使用的編碼器和解碼器模組

LinkNet 架構類似於一個梯形網路架構,編碼器的特徵圖(橫向)和解碼器的上取樣特徵圖(縱向)相加。還需要注意的是,由於它的通道約減方案(channel reduction scheme),解碼器模組包含了相當少的引數。大小為 [H, W, n_channels] 的特徵圖先通過 1*1 卷積核得到大小為 [H, W, n_channels / 4] 的特徵圖,然後使用反捲積將其變為 [2*H, 2*W, n_channels / 4],最後使用 1*1 卷積使其大小變為 [2*H, 2*W, n_channels / 2],因此解碼器有著更少的引數。這些網路在實現相當接近於最優準確率的同時,可以實時地在嵌入式 GPU 上進行分割。

▌Mask R-CNN

該方法被稱為 Mask R-CNN,以 Faster R-CNN 為基礎,在現有邊界框識別分支基礎上新增一個並行的預測目標掩碼的分支。Mask R-CNN 很容易訓練,僅僅在 Faster R-CNN 上增加了一點小開銷,執行速度為 5fps。此外,Mask R-CNN 很容易泛化至其他任務。例如,可以使用相同的框架進行姿態估計。我們在 COCO 所有的挑戰賽中都獲得了最優結果,包括例項分割,邊界框目標檢測,和人關鍵點檢測。在沒有使用任何技巧的情況下,Mask R-CNN 在每項任務上都優於所有現有的單模型網路,包括 COCO 2016 挑戰賽的獲勝者。

圖12:Mask R-CNN 分割流程

原始 Faster-RCNN 架構和輔助分割分支

Mask R-CNN 架構相當簡單,它是流行的 Faster R-CNN 架構的擴充套件,在其基礎上進行必要的修改,以執行語義分割。

關鍵特點:

在 Faster R-CNN 上新增輔助分支以執行語義分割。

對每個例項進行的 RoIPool 操作已經被修改為 RoIAlign ,它避免了特徵提取的空間量化,因為在最高解析度中保持空間特徵不變對於語義分割很重要。

Mask R-CNN 與 Feature Pyramid Networks(類似 於PSPNet,它對特徵使用了金字塔池化)相結合,在 MS COCO 資料集上取得了最優結果。

在 2017-06-01 的時候,在網路上還沒有 Mask R-CNN 的工作實現,而且也沒有在 Pascal VOC 上進行基準測試,但是它的分割掩碼顯示了它與真實標註非常接近。

▌PSPNet

在文中我們利用基於不同區域的上下文資訊集合,通過我們的金字塔池化模組,使用金字塔場景解析網路(PSPNet)來發揮全域性上下文資訊的能力。我們的全域性先驗表徵在場景解析任務中產生了良好的質量結果,而 PSPNet 為畫素級的預測提供了一個更好的框架,該方法在不同的資料集上達到了最優效能。它首次在 2016 ImageNet 場景解析挑戰賽 PASCAL VOC 2012 基準和 Cityscapes 基準中出現。

圖13:PSPNet 架構

使用 netscope 實現的視覺化的空間金字塔池化

關鍵特點:

PSPNet 通過引入空洞卷積來修改基礎的 ResNet 架構,特徵經過最初的池化,在整個編碼器網路中以相同的解析度進行處理(原始影象輸入的 1/4),直到它到達空間池化模組。

在 ResNet 的中間層中引入輔助損失,以優化整體學習。

在修改後的 ResNet 編碼器頂部的空間金字塔池化聚合全域性上下文。

圖 14:圖片展示了全域性空間上下文對語義分割的重要性。它顯示了層之間感受野和大小的關係。在這個例子中,更大、更加可判別的感受野(藍)相比於前一層(橙)可能在細化表徵中更加重要,這有助於解決歧義。

PSPNet 架構目前在 CityScapes、ADE20K 和 Pascal VOC 2012 中有最優結果。

▌RefineNet

在文中提出了 RefineNet,一個通用的多路徑優化網路,它明確利用了整個下采樣過程中可用的所有資訊,使用遠端殘差連線實現高解析度的預測。通過這種方式,可以使用早期卷積中的細粒度特徵來直接細化捕捉高階語義特徵的更深的網路層。RefineNet 的各個元件使用遵循恆等對映思想的殘差連線,這允許網路進行有效的端到端訓練。

圖15:RefineNet 架構

建立 RefineNet 的塊 - 殘差卷積單元,多解析度融合和鏈式殘差池化

RefineNet 解決了傳統卷積網路中空間解析度減少的問題,與 PSPNet(使用計算成本高的空洞卷積)使用的方法非常不同。提出的架構迭代地池化特徵,利用特殊的 RefineNet 模組增加不同的解析度,並最終生成高解析度的分割圖。

關鍵特點:

使用多解析度作為輸入,將提取的特徵融合在一起,並將其傳遞到下一個階段。

引入鏈式殘差池化,可以從一個大的影象區域獲取背景資訊。它通過多視窗尺寸有效地池化特性,利用殘差連線和學習權重方式融合這些特徵。

所有的特徵融合都是使用 sum(ResNet 方式)來進行端到端訓練。

使用普通 ResNet 的殘差層,沒有計算成本高的空洞卷積。

▌G-FRNet

在文中提出了 Gated Feedback Refinement Network (G-FRNet),這是一種用於密集標記任務的端到端深度學習框架,解決了現有方法的侷限性。最初,GFRNet 進行粗略地預測,然後通過在細化階段有效地整合區域性和全域性上下文資訊,逐步細化細節。我們引入了控制資訊前向傳遞的門控單元,以過濾歧義。

圖16:G-FRNet 架構

門控細化單元

上述大多數架構都依賴於從編碼器到解碼器的簡單特徵,使用拼接、去池化或簡單的加和。然而,在編碼器中,從高解析度(較難判別)層到對應的解碼器中相應的上取樣特徵圖的資訊,不確定是否對分割有用。在每個階段,通過使用門控細化反饋單元,控制從編碼器傳送到解碼器的資訊流,這樣可以幫助解碼器解決歧義,並形成更相關的門控空間上下文。 

另一方面,本文的實驗表明,在語義分割任務中,ResNet 是一個遠優於 VGG16 的編碼器。這是我在以前的論文中找不到的。

▌半監督語義分割

DecoupledNet

與現有的將語義分割作為基於區域分類的單一任務的方法相反,我們的演算法將分類和分割分離,併為每個任務學習一個單獨的網路。在這個架構中,通過分類網路識別與影象相關的標籤,然後在分割網路中對每個識別的標籤執行二進位制分割。它通過利用從橋接層獲得的特定類的啟用圖來有效地減少用於分割的搜尋空間。

圖17:DecoupledNet 架構

這也許是第一個使用全卷積網路進行語義分割的半監督方法。

關鍵特點:

分離分類和分割任務,從而使預訓練的分類網路能夠即插即用(plug and play)。

分類和分割網路之間的橋接層生成突出類的特徵圖(k 類),然後輸入分割網路,生成一個二進位制分割圖(k 類)

但是,這個方法在一張影象中分割 k 類需要傳遞 k 次。

基於 GAN 的方法

基於生成對抗網路(GANs),我們提出了一種半監督框架,它包含一個生成器網路以提供用於多類別分類器的額外訓練樣本,以此作為 GAN 框架中的判別器,從 K 個可能的類中為樣本分配一個標籤 y 或者將其標記為一個假樣本(額外的類)。為了確保 GANs 生成的影象質量更高,並改進畫素分類,我們通過新增弱標註資料來擴充套件上述框架,即我們向生成器提供類級別的資訊。

圖18:弱監督(類級別標籤) GAN

圖19:半監督GAN

▌資料集

▌結果

圖20:FCN-8s 生成的樣本語義分割圖(使用 pytorch-semseg 訓練)來自 Pascal VOC 驗證集