干货 | 一文概览主要语义分割网络,FCN、UNet、SegNet、DeepLab 等等等等应有尽有
翻譯不易,麻煩 Ctrl-C Ctrl-V 之后標注轉載并加上原譯者!!
部分內容翻譯,部分內容原創。
內容較多,可以傳送門直達。新網絡待更…
?
文章目錄
- 介紹
- 網絡架構
- Fully Convolution Networks (FCNs) 全卷積網絡
- SegNet
- U-Net
- DeepLab v1
- DeepLab v2
- DeepLab v3
- Fully Convolutional DenseNet
- E-Net 和 Link-Net
- Mask R-CNN
- PSPNet
- RefineNet
- G-FRNet
- 半監督語義分割
- DecoupledNet
- 基于GAN的方法
- 數據集
- 結果
?
原文地址:https://meetshah1995.github.io/semantic-segmentation/deep-learning/pytorch/visdom/2017/06/01/semantic-segmentation-over-the-years.html
介紹
圖像的語義分割是將輸入圖像中的每個像素分配一個語義類別,以得到像素化的密集分類。雖然自?2007?年以來,語義分割/場景解析一直是計算機視覺社區的一部分,但與計算機視覺中的其他領域很相似,自 2014 年?Long等人?首次使用全卷積神經網絡對自然圖像進行端到端分割,語義分割才產生了大的突破。
?
圖1:輸入圖像(左),FCN-8s 網絡生成的語義分割圖(右)(使用?pytorch-semseg?訓練)
?
FCN-8s 架構在 Pascal VOC 2012 數據集上的性能相對以前的方法提升了 20%,達到了 62.2% 的mIOU 。這種架構是語義分割的基礎,此后一些較新的和更好的體系結構都基于此架構。
全卷積網絡(FCNs)可以用于自然圖像的語義分割、多模態醫學圖像分析和多光譜衛星圖像分割。
我總結了 FCN、SegNet、U-Net、FC-Densenet E-Net 和 Link-Net、RefineNet、PSPNet、Mask-RCNN 以及一些半監督方法,例如 DecoupledNet 和 GAN-SS,并為其中的一些網絡提供了PyTorch實現。在文章的最后一部分,我總結了一些流行的數據集,并展示了一些網絡訓練的結果。
網絡架構
一般的語義分割架構可以被認為是一個編碼器-解碼器網絡。編碼器通常是一個預訓練的分類網絡,像 VGG、ResNet,然后是一個解碼器網絡。這些架構不同的地方主要在于解碼器網絡。解碼器的任務是將編碼器學習到的可判別特征(較低分辨率)從語義上投影到像素空間(較高分辨率),以獲得密集分類。
不同于分類任務中網絡的最終結果(對圖像分類的概率)是唯一重要的事,語義分割不僅需要在像素級有判別能力,還需要有能將編碼器在不同階段學到的可判別特征投影到像素空間的機制。不同的架構采用不同的機制(跳躍連接、金字塔池化等)作為解碼機制的一部分。
一些上述架構和加載數據的代碼可在以下鏈接獲得:
- Pytorch:meetshah1995/pytorch-semseg
這篇論文?對語義分割(包括 Recurrent Style Networks)作了一個更正式的總結。
Fully Convolution Networks (FCNs) 全卷積網絡
| CVPR 2015 | Fully Convolutional Networks for Semantic Segmentation | Arxiv |
我們將當前分類網絡(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 上,空洞卷積的計算成本也很高。distill.pub?上的這篇文章詳細介紹了反卷積。
SegNet
| 2015 | SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation | Arxiv |
SegNet 的新穎之處在于解碼器對其較低分辨率的輸入特征圖進行上采樣的方式。具體地說,解碼器使用了在相應編碼器的最大池化步驟中計算的池化索引來執行非線性上采樣。這種方法消除了學習上采樣的需要。經上采樣后的特征圖是稀疏的,因此隨后使用可訓練的卷積核進行卷積操作,生成密集的特征圖。我們將我們所提出的架構與廣泛采用的 FCN 以及眾所周知的 DeepLab-LargeFOV,DeconvNet 架構進行比較。比較的結果揭示了在實現良好的分割性能時所涉及的內存與精度之間的權衡。
圖7:SegNet 架構
關鍵特點:
- SegNet 在解碼器中使用反池化對特征圖進行上采樣,并在分割中保持高頻細節的完整性。
- 編碼器不使用全連接層(和 FCN 一樣進行卷積),因此是擁有較少參數的輕量級網絡。
圖8:反池化
?
如上圖所示,編碼器中的每一個最大池化層的索引都被存儲起來,用于之后在解碼器中使用那些存儲的索引來對相應的特征圖進行反池化操作。雖然這有助于保持高頻信息的完整性,但當對低分辨率的特征圖進行反池化時,它也會忽略鄰近的信息。
U-Net
| MICCAI 2015 | U-Net: Convolutional Networks for Biomedical Image Segmentation | Arxiv |
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競賽?中關于醫學圖像分割的獲勝的解決方案的一部分。
DeepLab v1
| ICLR 2015 | Semantic Image Segmentation with deep convolutional nets and fully connected CRFs | Arxiv |
近來,深度卷積網絡在高級視覺任務(圖像分類和目標檢測)中展示了優異的性能。本文結合 DCNN 和概率圖模型來解決像素級分類任務(即語義分割)。我們展示了 DCNN 最后一層的響應不足以精確定位目標邊界,這是 DCNN 的不變性導致的。我們通過在最后一層網絡后結合全連接條件隨機場來解決糟糕的定位問題。我們的方法在 PASCAL VOC 2012 上達到了 71.6% 的 mIoU。
?
圖10:空洞卷積,藍色為輸入,綠色為輸出?來源
?
關鍵特點:
- 提出?空洞卷積(atrous convolution)(又稱擴張卷積(dilated convolution))。
- 在最后兩個最大池化操作中不降低特征圖的分辨率,并在倒數第二個最大池化之后的卷積中使用空洞卷積。
- 使用?CRF(條件隨機場)?作為后處理,恢復邊界細節,達到準確定位效果。
- 附加輸入圖像和前四個最大池化層的每個輸出到一個兩層卷積,然后拼接到主網絡的最后一層,達到?多尺度預測?效果。
DeepLab v2
| TPAMI 2017 | DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs | Arxiv |
首先,我們強調上采樣過濾器的卷積,或“空洞卷積”,在密集預測任務中是一個強大的工具。空洞卷積允許我們顯式地控制在深度卷積神經網絡中計算的特征響應的分辨率。它還允許我們有效地擴大過濾器的視野,在不增加參數數量或計算量的情況下引入更大的上下文。其次,提出了一種空洞空間金字塔池化(ASPP)的多尺度魯棒分割方法。ASPP 使用多個采樣率的過濾器和有效的視野探測傳入的卷積特征層,從而在多個尺度上捕獲目標和圖像上下文。第三,結合 DCNNs 方法和概率圖形模型,改進了目標邊界的定位。DCNNs 中常用的最大池化和下采樣的組合實現了不變性,但對定位精度有一定的影響。我們通過將 DCNN 最后一層的響應與一個全連接條件隨機場(CRF)相結合來克服這個問題。DeepLab v2 在 PASCAL VOC 2012 上得到了 79.7% 的 mIoU。
論文中提出了語義分割中的三個挑戰:
對于第一個挑戰可以減少特征圖下采樣的次數,但是會增加計算量。
對于第二個挑戰可以使用圖像金字塔、空間金字塔等多尺度方法獲取多尺度上下文信息。
對于第三個挑戰可以使用跳躍連接或者引入條件隨機場。
DeepLab v2 使用 VGG 和 ResNet 作為主干網絡分別進行了實驗。
?
圖11:(a) DeepLab v1,(b) DeepLab v2
?
關鍵特點:
- 提出了空洞空間金字塔池化(Atrous Spatial Pyramid Pooling),在不同的分支采用不同的空洞率以獲得多尺度圖像表征。
DeepLab v3
| 2017 | Rethinking Atrous Convolution for Semantic Image Segmentation | Arxiv |
在本工作中,我們再次討論空洞卷積,一個顯式調整過濾器視野,同時控制特征相應分辨率的強大工具。為了解決多尺度目標的分割問題,我們串行/并行設計了能夠捕捉多尺度上下文的模塊,模塊中采用不同的空洞率。此外,我們增強了先前提出的空洞空間金字塔池化模塊,增加了圖像級特征來編碼全局上下文,使得模塊可以在多尺度下探測卷積特征。提出的 “DeepLab v3” 系統在沒有 CRF 作為后處理的情況下顯著提升了性能。
DeepLab v3 使用 ResNet 作為主干網絡。
?
圖12:?DeepLab v3
?
關鍵特點:
- 在殘差塊中使用多網格方法(MultiGrid),從而引入不同的空洞率。
- 在空洞空間金字塔池化模塊中加入圖像級(Image-level)特征,并且使用 BatchNormalization 技巧。
Fully Convolutional DenseNet
| 2016 | The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation | Arxiv |
在本文中,我們擴展了 DenseNets,以解決語義分割的問題。我們在城市場景基準數據集(如 CamVid 和 Gatech )上獲得了最優異的結果,沒有使用進一步的后處理模塊和預訓練模型。此外,由于模型的優異結構,我們的方法比當前發布的在這些數據集上取得最佳的網絡的參數要少得多。
圖10:全卷積 DenseNet 架構
全卷積 DenseNet 使用?DenseNet?作為它的基礎編碼器,并且也以類似于U-Net的方式,在每一層級上將編碼器和解碼器進行拼接。
E-Net 和 Link-Net
| 2016 | ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation | Arxiv |
| 2017 | LinkNet: Feature Forwarding: Exploiting Encoder Representations for Efficient Semantic Segmentation | Blog |
在本文中,我們提出了一種新穎的深度神經網絡架構,稱為 ENet(efficient neural network),專門為需要低延遲操作的任務創建。ENet 比當前網絡模型快18倍,少用75倍的 FLOPs,參數數量少79倍,并且提供相似甚至更好的準確率。我們在 CamVid、Cityscapes 和 SUN 數據集上進行了測試,展示了與現有的最優方法進行比較的結果,以及網絡準確率和處理時間之間的權衡。
LinkNet 可以在 TX1 和 Titan X 上,分別以 2fps 和 19fps 的速率處理分辨率為 1280x720 的圖像。
?????????
圖11:(左)LinkNet 架構(右)LinkNet 中使用的編碼器和解碼器模塊
?
LinkNet 架構類似于一個梯形網絡架構,編碼器的特征圖(橫向)和解碼器的上采樣特征圖(縱向)相加。還需要注意的是,由于它的通道約減方案,解碼器模塊包含了相當少的參數。大小為[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
| 2017 | Mask R-CNN ?????????????????????????????????????????????????????????????????????????????????????????????????????? | Arxiv |
該方法被稱為 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
| CVPR 2017 | PSPNet: Pyramid Scene Parsing Network???????????????????? | Arxiv |
在本文中,我們利用基于不同區域的上下文信息集合,通過我們的金字塔池化模塊,使用提出的金字塔場景解析網絡(PSPNet)來發揮全局上下文信息的能力。我們的全局先驗表征在場景解析任務中產生了良好的質量結果,而 PSPNet 為像素級的預測提供了一個更好的框架,該方法在不同的數據集上達到了最優性能。它首次在2016 ImageNet 場景解析挑戰賽,PASCAL VOC 2012 基準和 Cityscapes 基準中出現。
?????
?????
圖13:(上)PSPNet 架構
(下)使用 netscope 實現的可視化的空間金字塔池化
關鍵特點:
- PSPNet 通過引入空洞卷積來修改基礎的 ResNet 架構,特征經過最初的池化,在整個編碼器網絡中以相同的分辨率進行處理(原始圖像輸入的1/4),直到它到達空間池化模塊。
- 在 ResNet 的中間層中引入輔助損失,以優化整體學習。
- 在修改后的 ResNet 編碼器頂部的空間金字塔池化聚合全局上下文。
?????
圖14:圖片展示了全局空間上下文對語義分割的重要性。它顯示了層之間感受野和大小的關系。在這個例子中,更大、更加可判別的感受野(藍)相比于前一層(橙)可能在細化表征中更加重要,這有助于解決歧義
RefineNet
| CVPR 2017 | RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation | Arxiv |
在這里,我們提出了 RefineNet,一個通用的多路徑優化網絡,它明確利用了整個下采樣過程中可用的所有信息,使用遠程殘差連接實現高分辨率的預測。通過這種方式,可以使用早期卷積中的細粒度特征來直接細化捕捉高級語義特征的更深的網絡層。RefineNet 的各個組件使用遵循恒等映射思想的殘差連接,這允許網絡進行有效的端到端訓練。
?????
?????
圖15:(上)RefineNet 架構
(下)建立 RefineNet 的塊 - 殘差卷積單元,多分辨率融合和鏈式殘差池化
?
RefineNet 解決了傳統卷積網絡中空間分辨率減少的問題,與 PSPNet(使用計算成本高的空洞卷積)使用的方法非常不同。提出的架構迭代地池化特征,利用特殊的 RefineNet 模塊增加不同的分辨率,并最終生成高分辨率的分割圖。
關鍵特點:
- 使用多分辨率作為輸入,將提取的特征融合在一起,并將其傳遞到下一個階段。
- 引入鏈式殘差池化,可以從一個大的圖像區域獲取背景信息。它通過多窗口尺寸有效地池化特性,利用殘差連接和學習權重方式融合這些特征。
- 所有的特征融合都是使用sum(ResNet 方式)來進行端到端訓練。
- 使用普通ResNet的殘差層,沒有計算成本高的空洞卷積。
G-FRNet
| CVPR 2017 | G-FRNet: Gated Feedback Refinement Network for Dense Image Labeling | Arxiv |
本文提出了 Gated Feedback Refinement Network (G-FRNet),這是一種用于密集標記任務的端到端深度學習框架,解決了現有方法的局限性。最初,GFRNet 進行粗略的預測,然后通過在細化階段有效地集成局部和全局上下文信息,逐步細化細節。我們引入了控制信息前向傳遞的門控單元,以過濾歧義。
?????
?????
圖16:(上)G-FRNet 架構
(下)門控細化單元
?
上述大多數架構都依賴于從編碼器到解碼器的簡單特征,使用拼接、反池化或簡單的加和。然而,在編碼器中,從高分辨率(較難判別)層到對應的解碼器中相應的上采樣特征圖的信息,可能或不能用于分割。在每個階段,通過使用門控細化反饋單元,控制從編碼器傳送到解碼器的信息流,這樣可以幫助解碼器解決歧義,并形成更相關的門控空間上下文。
另一方面,本文的實驗表明,在語義分割任務中,ResNet是一個遠優于VGG16的編碼器。這是我在以前的論文中找不到的。
半監督語義分割
DecoupledNet
| NIPS 2015 | Decoupled Deep Neural Network for Semi-supervised Semantic Segmentation | Arxiv |
與現有的將語義分割作為基于區域分類的單一任務的方法相反,我們的算法將分類和分割分離,并為每個任務學習一個單獨的網絡。在這個架構中,通過分類網絡識別與圖像相關的標簽,然后在分割網絡中對每個識別的標簽執行二進制分割。它通過利用從橋接層獲得的特定類的激活圖來有效地減少用于分割的搜索空間。
?????
圖17:DecoupledNet 架構
這也許是第一個使用全卷積網絡進行語義分割的半監督方法。
關鍵特點:
- 分離分類和分割任務,從而使預訓練的分類網絡能夠即插即用(plug and play)。
- 分類和分割網絡之間的橋接層生成突出類的特征圖(k類),然后輸入分割網絡,生成一個二進制分割圖(k類)
- 但是,這個方法在一張圖像中分割k類需要傳遞k次。
基于GAN的方法
| 2017 | Semi and Weakly Supervised Semantic Segmentation Using Generative Adversarial Network | Arxiv |
特別地,我們基于生成對抗網絡(GANs)提出了一種半監督框架,它包含一個生成器網絡以提供額外的用于多類別分類器的訓練樣本,作為在 GAN 框架中的判別器,從K個可能的類中為樣本分配一個標簽y或者將其標記為一個假樣本(額外的類)。為了確保 GANs 生成的圖像質量更高,隨之改進像素分類,我們通過添加弱標注數據來擴展上述框架,即我們向生成器提供類級別的信息。
?????
圖18:弱監督(類級別標簽) GAN
?????
圖19:半監督GAN
數據集
| CamVid | 468(包含 101 張驗證圖像) | 233 | 32(SegNet 論文中使用 11 類) |
| PascalVOC 2012 | 9963 | 1447 | 20 |
| NYUDv2 | 795 | 645 | 40 |
| Cityscapes | 2975 | 500 | 19 |
| Sun-RGBD | 10355 | 2860 | 37 |
| MS COCO | 80000 | 40000 | 80 |
| ADE20K | 20210 | 2000 | 150 |
結果
圖20:FCN-32s 生成的樣本語義分割圖,來自 Pascal VOC 驗證集
最后掛兩個復制粘貼還標翻譯標原創的
https://blog.csdn.net/SHAOYEZUIZUISHAUI/article/details/82666558
https://blog.csdn.net/mieleizhi0522/article/details/82469160
總結
以上是生活随笔為你收集整理的干货 | 一文概览主要语义分割网络,FCN、UNet、SegNet、DeepLab 等等等等应有尽有的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pytorch载入预训练模型后,训练指定
- 下一篇: Caffe-windows入门学习,编译