圖像的語義分割是將輸入圖像中的每個像素分配一個語義類別,以得到像素化的密集分類。雖然自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,然后是一個解碼器網絡。這些架構之間的不同主要在于解碼器網絡。解碼器的任務是將編碼器學習到的可判別特征(較低分辨率)從語義上映射到像素空間(較高分辨率),以獲得密集分類。
不同于分類任務中深度網絡的最終結果(即類存在的概率)被視為唯一重要的事,語義分割不僅需要在像素級有判別能力,還需要有能將編碼器在不同階段學到的可判別特征映射到像素空間的機制。不同的架構采用不同的機制(跳遠連接、金字塔池化等)作為解碼機制的一部分。
一些上述架構和加載數據的代碼可在以下鏈接獲得:
Pytorch:https://github.com/meetshah1995/pytorch-semseg
這篇論文對語義分割(包括 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 上,空洞卷積的計算成本也很高。
論文鏈接:https://arxiv.org/abs/1411.4038
▌SegNet
SegNet 的新穎之處在于解碼器對其較低分辨率的輸入特征圖進行上采樣的方式。具體地說,解碼器使用了在相應編碼器的最大池化步驟中計算的池化索引來執行非線性上采樣。這種方法消除了學習上采樣的需要。經上采樣后的特征圖是稀疏的,因此隨后使用可訓練的卷積核進行卷積操作,生成密集的特征圖。我們提出的架構與廣泛采用的 FCN 以及眾所周知的 DeepLab-LargeFOV,DeconvNet 架構進行比較。比較的結果揭示了在實現良好的分割性能時所涉及的內存與精度之間的權衡。
圖7:SegNet 架構
關鍵特點:
SegNet 在解碼器中使用去池化對特征圖進行上采樣,并在分割中保持高頻細節的完整性。
編碼器不使用全連接層(和 FCN 一樣進行卷積),因此是擁有較少參數的輕量級網絡。
圖8:去池化
如上圖所示,編碼器中的每一個最大池化層的索引都存儲了起來,用于之后在解碼器中使用那些存儲的索引來對相應特征圖進行去池化操作。這有助于保持高頻信息的完整性,但當對低分辨率的特征圖進行去池化時,它也會忽略鄰近的信息。
論文鏈接:https://arxiv.org/abs/1511.00561
▌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 競賽中關于醫學圖像分割獲勝的解決方案中的一部分。
論文鏈接:https://arxiv.org/abs/1505.04597
▌Fully Convolutional DenseNet
在文中我們擴充了 DenseNets,以解決語義分割的問題。我們在城市場景基準數據集(如 CamVid 和 Gatech )上獲得了最優異的結果,沒有使用進一步的后處理模塊和預訓練模型。此外,由于模型的優異結構,我們的方法比當前發布的在這些數據集上取得最佳的網絡參數要少得多。
圖10:全卷積 DenseNet 架構
全卷積 DenseNet 使用DenseNet作為它的基礎編碼器,并且也以類似于 U-Net 的方式,在每一層級上將編碼器和解碼器進行拼接。
論文鏈接:https://arxiv.org/abs/1611.09326
▌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 上進行分割。
相關鏈接:https://arxiv.org/abs/1606.02147;
https://codeac29.github.io/projects/linknet/
▌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 上進行基準測試,但是它的分割掩碼顯示了它與真實標注非常接近。
論文鏈接:https://arxiv.org/abs/1703.06870
▌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中有最優結果。
論文鏈接:https://arxiv.org/abs/1612.01105
▌RefineNet
在文中提出了 RefineNet,一個通用的多路徑優化網絡,它明確利用了整個下采樣過程中可用的所有信息,使用遠程殘差連接實現高分辨率的預測。通過這種方式,可以使用早期卷積中的細粒度特征來直接細化捕捉高級語義特征的更深的網絡層。RefineNet 的各個組件使用遵循恒等映射思想的殘差連接,這允許網絡進行有效的端到端訓練。
圖15:RefineNet 架構
建立 RefineNet 的塊 - 殘差卷積單元,多分辨率融合和鏈式殘差池化
RefineNet 解決了傳統卷積網絡中空間分辨率減少的問題,與 PSPNet(使用計算成本高的空洞卷積)使用的方法非常不同。提出的架構迭代地池化特征,利用特殊的 RefineNet 模塊增加不同的分辨率,并最終生成高分辨率的分割圖。
關鍵特點:
使用多分辨率作為輸入,將提取的特征融合在一起,并將其傳遞到下一個階段。
引入鏈式殘差池化,可以從一個大的圖像區域獲取背景信息。它通過多窗口尺寸有效地池化特性,利用殘差連接和學習權重方式融合這些特征。
所有的特征融合都是使用 sum(ResNet 方式)來進行端到端訓練。
使用普通 ResNet 的殘差層,沒有計算成本高的空洞卷積。
論文鏈接:https://arxiv.org/abs/1611.06612
▌G-FRNet
在文中提出了 Gated Feedback Refinement Network (G-FRNet),這是一種用于密集標記任務的端到端深度學習框架,解決了現有方法的局限性。最初,GFRNet 進行粗略地預測,然后通過在細化階段有效地集成局部和全局上下文信息,逐步細化細節。我們引入了控制信息前向傳遞的門控單元,以過濾歧義。
圖16:G-FRNet 架構
門控細化單元
上述大多數架構都依賴于從編碼器到解碼器的簡單特征,使用拼接、去池化或簡單的加和。然而,在編碼器中,從高分辨率(較難判別)層到對應的解碼器中相應的上采樣特征圖的信息,不確定是否對分割有用。在每個階段,通過使用門控細化反饋單元,控制從編碼器傳送到解碼器的信息流,這樣可以幫助解碼器解決歧義,并形成更相關的門控空間上下文。
另一方面,本文的實驗表明,在語義分割任務中,ResNet 是一個遠優于 VGG16 的編碼器。這是我在以前的論文中找不到的。
論文鏈接:http://www.cs.umanitoba.ca/~ywang/papers/cvpr17.pdf
▌半監督語義分割
DecoupledNet
與現有的將語義分割作為基于區域分類的單一任務的方法相反,我們的算法將分類和分割分離,并為每個任務學習一個單獨的網絡。在這個架構中,通過分類網絡識別與圖像相關的標簽,然后在分割網絡中對每個識別的標簽執行二進制分割。它通過利用從橋接層獲得的特定類的激活圖來有效地減少用于分割的搜索空間。
圖17:DecoupledNet 架構
這也許是第一個使用全卷積網絡進行語義分割的半監督方法。
關鍵特點:
分離分類和分割任務,從而使預訓練的分類網絡能夠即插即用(plug and play)。
分類和分割網絡之間的橋接層生成突出類的特征圖(k 類),然后輸入分割網絡,生成一個二進制分割圖(k 類)
但是,這個方法在一張圖像中分割 k 類需要傳遞 k 次。
論文鏈接:https://arxiv.org/abs/1506.04924
基于 GAN 的方法
基于生成對抗網絡(GANs),我們提出了一種半監督框架,它包含一個生成器網絡以提供用于多類別分類器的額外訓練樣本,以此作為 GAN 框架中的判別器,從 K 個可能的類中為樣本分配一個標簽 y 或者將其標記為一個假樣本(額外的類)。為了確保 GANs 生成的圖像質量更高,并改進像素分類,我們通過添加弱標注數據來擴展上述框架,即我們向生成器提供類級別的信息。
論文鏈接:https://arxiv.org/abs/1703.09695
圖18:弱監督(類級別標簽) GAN
圖19:半監督GAN
▌數據集
▌結果
圖20:FCN-8s 生成的樣本語義分割圖(使用pytorch-semseg訓練)來自 Pascal VOC 驗證集
-
解碼器
+關注
關注
9文章
1107瀏覽量
40443 -
神經網絡
+關注
關注
42文章
4717瀏覽量
100006 -
網絡
+關注
關注
14文章
7389瀏覽量
88211
原文標題:一文概覽主要語義分割網絡:FCN,SegNet,U-Net...
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論