圖像分割大總結


圖像分割

2020入坑圖像分割,我該從哪兒入手?

轉自機器之心

初識圖像分割

顧名思義,圖像分割就是指將圖像分割成多個部分。在這個過程中,圖像的每個像素點都和目標的種類相關聯。圖像分割方法主要可分為兩種類型:語義分割和實例分割。語義分割會使用相同的類標簽標注同一類目標(下圖左),而在實例分割中,相似的目標也會使用不同標簽進行標注(下圖右)。

圖片

圖源:Anurag Arnab, Shuai Zheng et. al 2018「Conditional Random Fields Meet Deep Neural Networks for Semantic Segmentation」

圖像分割模型的基本架構包括編碼器與解碼器。編碼器通過卷積核提取圖像特征。解碼器負責輸出包含物體輪廓的分割蒙版。

圖片

圖源:Vijay Badrinarayanan et. al 2017「SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation」

大多數圖像分割架構都具有這樣的結構或是其變體,比如以下幾種:

U-Net

U-Net 最初是一個用於分割生物醫學圖像的卷積神經網絡。它的架構由兩部分組成,左側是提取路徑,右側是擴展路徑。提取路徑用來捕獲上下文,擴展路徑用來精准定位。提取路徑由兩個 33 的卷積組成。卷積后經過 ReLU 激活和用於降采樣的 22 最大池化計算。

圖片

圖源:Olaf Ronneberger et. al 2015「U-net architecture image segmentation」

快速全連接網絡:FastFCN

在快速全連接網絡(FastFCN)架構中,聯合金字塔上采樣(Joint Pyramid Upsampling, JPU)模型代替了消耗大量存儲空間和時間的擴張卷積。該架構在核心部分使用了全連接網絡,並應用 JPU 進行上采樣。JPU 將低分辨率特征圖上采樣為高分辨率特征圖。

圖片

圖片

圖源:Huikai Wu et.al 2019「FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation」

Gated-SCNN

Gated-SCNN 架構包括一個雙流卷積神經網絡結構。在該模型中,使用一個單獨的分支來處理圖像的形狀信息。該形狀流被用來處理邊界信息。

圖片

圖源:Towaki Takikawa et. al 2019「Gated-SCNN: Gated Shape CNNs for Semantic Segmentation」

DeepLab

在 DeepLab 架構中,帶有上采樣濾波器的卷積被用於密集預測型任務。多尺度的物體分割是通過空洞空間金字塔池化(atrous spatial pyramid pooling)完成的。最后,使用 DCNN 來提升物體邊界的定位精准度。通過在上采樣濾波器過程中插入 0 或對輸入特征圖稀疏采樣,來實現空洞卷積。

圖片

圖源:iang-Chieh Chen et. al 2016「DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs」

Mask R-CNN

在 Mask R-CNN 架構中,使用邊界框和將圖片分割成一系列像素點的語義分割來對物體進行分類和定位。每個興趣區域會得到一個分割蒙版。最終還會輸出類標簽和邊界框。

圖片

圖源:Kaiming He et. al 2017「Mask R-CNN」。

下圖為在 COCO 測試集上實現的分割效果。

圖片

圖源:Kaiming He et. al 2017「Mask R-CNN」

圖像分割的損失函數、數據集、框架

語義分割模型在訓練過程中通常使用簡單的跨類別熵損失函數。但是,如果你想獲得圖像的細節信息,則需要更高級的損失函數。

損失函數

1.Focal 損失

該損失是對標准的交叉熵評價函數的改進。通過對其變形實現,以使分配給分好類別樣本的損失是低權重的。最終,這確保了沒有分類失衡。在該損失函數中,隨着正確類別置信度的增加,交叉熵損失隨比例因子逐漸衰減為零。比例因子會在訓練時自動降低簡單樣本的貢獻,更注重復雜的樣本。

圖片

2.Dice 損失

Dice 損失通過計算平滑的 dice 系數函數得到。該損失是分割問題中最常用的損失函數之一。

圖片

3.IoU-平衡損失

IoU-平衡分類損失旨在增加高 IoU 樣本的梯度同時減少低 IoU 樣本的梯度。通過這種方法,提升機器學習模型的定位准確率。

圖片

圖片

4. 邊界損失

邊界損失的一種變體被用於高度不平衡的分割任務。這種損失的形式是一種空間輪廓而非區域的距離度量。此方式解決了高度不平衡任務中區域損失帶來的問題。

圖片

5. 加權交叉熵

在交叉熵的一種變體中,所有正向的樣本都按一定的系數加權,用於類不平衡的情況下。

圖片

圖片

6.Lovász-Softmax 損失

該損失基於凸 Lovasz 擴展的子模塊損失,直接優化神經網絡中的平均 IoU。

圖片

另外還有幾種值得注意的損失:

  • TopK 損失:用來確保網絡在訓練過程中專注於復雜樣例;
  • 距離懲罰 CE 損失:用在那些難以分割的區域為網絡提供指引;
  • 靈敏度-特異性(SS)損失:計算特異性和靈敏度均方差的加權和;
  • Hausdorff 距離(HD)損失:通過卷積神經網絡估計 Hausdorff 距離。

數據集

圖像分割可能用到的數據集有:

  • Common Objects in COntext—Coco Dataset
  • PASCAL Visual Object Classes (PASCAL VOC)
  • The Cityscapes Dataset
  • The Cambridge-driving Labeled Video Database—CamVid

框架

在圖像分割領域,可用的框架有如下幾種:

  • FastAI 庫:給出一張圖像,該庫能為圖像中的物體創建蒙版;
  • Sefexa 圖像分割工具:Sefexa 是一個用於圖像分割、圖像分析、創造基本事實的免費的半自動工具;
  • Deepmask:Facebook 研究中心的 Deepmask 是 DeepMask 和 SharpMask 的 Torch 實現;
  • MultiPath:它是一個來自「用於對象檢測的多路徑網絡」的目標檢測網絡的 Torch 實現;
  • OpenCV:一個有超過 2500 種的優化算法的開源計算機視覺庫;
  • MIScnn:一個醫學圖像分割的開源庫。它僅需數行代碼就能用 SOTA 卷積神經網絡和深度學習模型建立路徑;
  • Fritz:Fritz 提供了包括移動設備中的圖像分割工具在內的幾種計算機視覺工具。

9102年了,語義分割的入坑指南和最新進展都是什么樣的

接下來,我們將會回顧一些構建語義分割模型的最先進的方法的研究論文,它們分別是:

  1. Weakly- and Semi-Supervised Learning of a Deep Convolutional Network for Semantic Image Segmentation
  2. Fully Convolutional Networks for Semantic Segmentation
  3. U-Net: Convolutional Networks for Biomedical Image Segmentation
  4. The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation
  5. Multi-Scale Context Aggregation by Dilated Convolutions
  6. DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs
  7. Rethinking Atrous Convolution for Semantic Image Segmentation
  8. Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
  9. FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation
  10. Improving Semantic Segmentation via Video Propagation and Label Relaxation
  11. Gated-SCNN: Gated Shape CNNs for Semantic Segmentation

1. Weakly- and Semi-Supervised Learning of a Deep Convolutional Network for Semantic Image Segmentation (ICCV, 2015)

這篇論文提出了一個解決方法,主要面對處理深度卷積網絡中的弱標簽數據,以及具有良好標簽和未被合適標記得數據的結合時的挑戰。在這篇論文結合了深度卷積網絡和全連接條件隨機場。

在 PASCAL VOC 的分割基准測試中,這個模型高於 70% 的交並比(IOU)

圖片

這篇論文的主要貢獻如下:

  • 為邊界框或圖像級別的訓練引入 EM 算法,這可以用在弱監督和半監督環境中。
  • 證明了弱標注和強標注的結合能夠提升性能。在合並了 MS-COCO 數據集和 PASCAL 數據集的標注之后,論文的作者在 PASCAL VOC 2012 上達到了 73.9% 的交並比性能。
  • 證明了他們的方法通過合並了少量的像素級別標注和大量的邊界框標注(或者圖像級別的標注)實現了更好的性能。

圖片

2. Fully Convolutional Networks for Semantic Segmentation (PAMI, 2016)

這篇論文提出的模型在 PASCAL VOC 2012 數據集上實現了 67.2% 的平均 IoU。全連接網絡以任意大小的圖像為輸入,然后生成與之對應的空間維度。在這個模型中,ILSVRC 中的分類器被丟在了全連接網絡中,並且使用逐像素的損失和上采樣模塊做了針對稠密預測的增強。針對分割的訓練是通過微調來實現的,這個過程通過在整個網絡上的反向傳播完成。

圖片

3. U-Net: Convolutional Networks for Biomedical Image Segmentation (MICCAI, 2015)

在生物醫學圖像處理中,得到圖像中的每一個細胞的類別標簽是非常關鍵的。生物醫學中最大的挑戰就是用於訓練的圖像是不容易獲取的,數據量也不會很大。U-Net 是非常著名的解決方案,它在全連接卷積層上構建模型,對其做了修改使得它能夠在少量的訓練圖像數據上運行,得到了更加精確的分割。

圖片

由於少量訓練數據是可以獲取的,所以這個模型通過在可獲得的數據上應用靈活的變形來使用數據增強。正如上面的圖 1 所描述的,模型的網絡結構由左邊的收縮路徑和右邊的擴張路徑組成。

收縮路徑由 2 個 3X3 的卷積組成,每個卷積后面跟的都是 ReLU 激活函數和一個進行下采樣的 2X2 最大池化運算。擴張路徑階段包括一個特征通道的上采樣。后面跟的是 2X2 的轉置卷積,它能夠將特征通道數目減半,同時加大特征圖。最后一層是 1X1 的卷積,用這種卷積來組成的特征向量映射到需要的類別數量上。

在這個模型中,訓練是通過輸入的圖像、它們的分割圖以及隨機梯度下降來完成的。數據增強被用來教網絡學會在使用很少的訓練數據時所必需的魯棒性和不變性。這個模型在其中的一個實驗中實現了 92% 的 mIoU。

4. The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation (2017)

DenseNets 背后的思想是讓每一層以一種前饋的方式與所有層相連接,能夠讓網絡更容易訓練、更加准確。

模型架構是基於包含下采樣和上采樣路徑的密集塊構建的。下采樣路徑包含 2 個 Transitions Down (TD),而上采樣包含 2 個 Transitions Up (TU)。圓圈和箭頭代表網絡中的連接模式。

圖片

這篇論文的主要貢獻是:

  • 針對語義分割用途,將 DenseNet 的結構擴展到了全卷積網絡。
  • 提出在密集網絡中進行上采樣路徑,這要比其他的上采樣路徑性能更好。
  • 證明網絡能夠在標准的基准測試中產生最好的結果。

這個模型在 CamVid 數據集中實現 88% 的全局准確率。

5. Multi-Scale Context Aggregation by Dilated Convolutions (ICLR, 2016)

這篇論文提出了一個卷積網絡模塊,能夠在不損失分辨率的情況下混合多尺度的上下文信息。然后這個模塊能夠以任意的分辨率被嵌入到現有的結構中,它主要基於空洞卷積。

這個模塊在 Pasca VOC 2012 數據集上做了測試。結果證明,向現存的語義分割結構中加入上下文模塊能夠提升准確率。

圖片

在實驗中訓練的前端模塊在 VOC-2012 驗證集上達到了 69.8% 的平均交並比(mIoU),在測試集上達到了 71.3% 的平均交並比。這個模塊對不同對象的預測准確率如下所示:

圖片

6. DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs (TPAMI, 2017)

在這篇論文中,作者對語義分割任務中做出了下面的貢獻:

  • 為密集預測任務使用具有上采樣的卷積
  • 在多尺度上為分割對象進行帶洞空間金字塔池化(ASPP)
  • 通過使用 DCNNs 提升了目標邊界的定位

論文地址:https://arxiv.org/abs/1606.00915

這篇論文提出的 DeepLab 系統在 PASCAL VOC-2012 圖像語義分割上實現了 79.7% 的平均交並比(mIoU)。

這篇論文解決了語義分割的主要挑戰,包括:

  • 由重復的最大池化和下采樣導致的特征分辨率降低
  • 檢測多尺度目標
  • 因為以目標為中心的分類器需要對空間變換具有不變性,因而降低了由 DCNN 的不變性導致的定位准確率。

7. Rethinking Atrous Convolution for Semantic Image Segmentation (2017)

這篇論文解決了使用 DCNN 進行語義分割所面臨的兩個挑戰(之前提到過):當使用連續的池化操作時會出現特征分辨率的降低,以及多尺度目標的存在。

為了解決第二個問題,本文提出了帶洞卷積(atrous convolution),也被稱作 dilated convolution。我們能使用帶洞卷積增大感受野,因此能夠包含多尺度上下文,這樣就解決了第二個問題。

圖片

在沒有密集條件隨機場(DenseCRF)的情況下,論文的 DeepLabv3 版本在 PASCAL VOC 2012 測試集上實現了 85.7% 的性能。

8. Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation (ECCV, 2018)

這篇論文的方法「DeepLabv3+」在 PASCAL VOC 2012 數據集和 Cityscapes 數據集上分別實現了 89.0% 和 82.1% 的性能,而且沒有做任何后處理。這個模型在 DeepLabv3 的基礎上增加一個簡單的解碼模塊,從而改善了分割結果。

這篇論文實現了為語義分割使用兩種帶空間金字塔池化的神經網絡。一個通過以不同的分辨率池化特征捕捉上下文信息,另一個則希望獲取明確的目標邊界。

圖片

9. FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation (2019)

這篇論文提出了一種被稱作聯合金字塔上采樣(Joint Pyramid Upsampling/JPU)的聯合上采樣模塊來代替消耗大量時間和內存的帶洞卷積。它通過把抽取高分辨率圖的方法形式化,並構建成一個上采樣問題來取得很好的效果。

此方法在 Pascal Context 數據集上實現了 53.13% 的 mIoU,並且具有三倍的運行速度。

該方法以全卷積網絡(FCN)作為主體架構,同時應用 JPU 對低分辨率的最終特征圖進行上采樣,得到了高分辨率的特征圖。使用 JPU 代替帶洞卷積並不會造成任何性能損失。

圖片

聯合采樣使用低分辨率的目標圖像和高分辨率的指導圖像。然后通過遷移指導圖像的結構和細節生成高分辨率的目標圖像。

10. Improving Semantic Segmentation via Video Propagation and Label Relaxation (CVPR, 2019)

這篇論文提出了基於視頻的方法來增強數據集,它通過合成新的訓練樣本來達到這一效果,並且該方法還能提升語義分割網絡的准確率。本文探討了視頻預測模型預測未來幀的能力,進而繼續預測未來的標簽。

這篇論文證明了用合成數據訓練語義分割網絡能夠帶來預測准確率的提升。論文提出的方法在 Cityscape 上達到了 8.5% 的 mIoU,在 CamVid 上達到了 82.9% 的 mIoU。

11. Gated-SCNN: Gated Shape CNNs for Semantic Segmentation (2019)

這篇論文是語義分割領域最新的成果(2019.07),作者提出了一個雙流 CNN 結構。在這個結構中,目標的形狀信息通過一個獨立的分支來處理,該形狀流僅僅處理邊界相關的信息。這是由模型的門卷控積層(GCL)和局部監督來強制實現的。

圖片

在用 Cityscapes 基准測試中,這個模型的 mIoU 比 DeepLab-v3 高出 1.5%,F-boundary 得分比 DeepLab-v3 高 4%。在更小的目標上,該模型能夠實現 7% 的 IoU 提升。下表展示了 Gated-SCNN 與其他模型的性能對比。

深度學習圖像分割:網絡結構設計一覽

本文總結了利用CNNs進行圖像語義分割時,針對網絡結構的創新,這些創新點主要包括新神經架構的設計(不同深度、寬度、連接和拓撲結構)和新組件或層的設計。前者是利用已有的組件組裝復雜的大型網絡,后者是更偏向於設計底層組件。首先介紹一些經典的語義分割網絡及其創新點,然后介紹網絡結構設計在醫學圖像分割領域內的一些應用。

1 FCN網絡

圖片

單獨將FCN網絡列出來是因為FCN網絡是第一個從全新的角度來解決語義分割問題的網絡。此前的基於神經網絡的圖像語義分割網絡是利用以待分類像素點為中心的圖像塊來預測中心像素的標簽,一般用CNN+FC的策略構建網絡,顯然這種方式無法利用圖像的全局上下文信息,而且逐像素推理速度很低;而FCN網絡舍棄全連接層FC,全部用卷積層構建網絡,通過轉置卷積以及不同層特征融合的策略,使得網絡輸出直接是輸入圖像的預測mask,效率和精度得到大幅度提升。

圖片

FCN不同層特征融合示意圖

創新點:全卷積網絡(不含fc層);轉置卷積deconv(反卷積);不同層特征圖跳躍連接(相加)

2. 編解碼結構(Enconder-decoder)

SegNet

SegNet和FCN網絡的思路基本一致。編碼器部分使用VGG16的前13層卷積,不同點在於Decoder部分Upsampling的方式。FCN通過將特征圖deconv得到的結果與編碼器對應大小的特征圖相加得到上采樣結果;而SegNet用Encoder部分maxpool的索引進行Decoder部分的上采樣(原文描述:the decoder upsamples the lower resolution input feature maps. Specifically, the decoder uses pooling indices computed in the max-pooling step of the corresponding encoder to perform non-linear upsampling.)。

創新點:Encoder-Decoder結構;Pooling indices。

U-Net

U-Net網絡最初是針對生物醫學圖像設計的,但由於其初四的性能,現如今UNet及其變體已經廣泛應用到CV各個子領域。UNet網絡由U通道和短接通道(skip-connection)組成,U通道類似於SegNet的編解碼結構,其中編碼部分(contracting path)進行特征提取和捕獲上下文信息,解碼部分(expanding path)用解碼特征圖來預測像素標簽。短接通道提高了模型精度並解決了梯度消失問題,特別要注意的是短接通道特征圖與上采用特征圖是拼接而不是相加(不同於FCN)。

創新點:U型結構;短接通道(skip-connection)

3.DeepLab系列

\1) DeepLabV1:融合卷積神經網絡和概率圖模型:CNN+CRF,提高了分割定位精度;

圖片

\2) DeepLabV2:ASPP(擴張空間金字塔池化);CNN+CRF

圖片

圖片

\3) DeepLabV3:改進ASPP,多了1*1卷積和全局平均池化(global avg pool);對比了級聯和並聯空洞卷積的效果。

圖片

級聯空洞卷積

圖片

並聯空洞卷積(ASPP)

\4) DeepLabV3+:加入編解碼架構思想,添加一個解碼器模塊來擴展DeepLabv3;將深度可分離卷積應用於ASPP和解碼器模塊;將改進的Xception作為Backbone。

圖片

DeepLabV3+

總的來說,DeepLab系列的核心貢獻: 空洞卷積;ASPP;CNN+CRF(僅V1和V2使用CRF,應該是V3和V3+通過深度網絡解決了分割邊界模糊的問題,效果要比加了CRF更好)

4. PSPNet金字塔結構

PSPNet(pyramid scene parsing network)通過對不同區域的上下文信息進行聚合,提升了網絡利用全局上下文信息的能力。在SPPNet,金字塔池化生成的不同層次的特征圖最終被flatten並concate起來,再送入全連接層以進行分類,消除了CNN要求圖像分類輸入大小固定的限制。而在PSPNet中,使用的策略是:poolling-conv-upsample,然后拼接得到特征圖,然后進行標簽預測。

圖片

5.RefineNet

RefineNet通過細化中間激活映射並分層地將其連接到結合多尺度激活,同時防止銳度損失。網絡由獨立的Refine模塊組成,每個Refine模塊由三個主要模塊組成,即:剩余卷積單元(RCU),多分辨率融合(MRF)和鏈剩余池(CRP)。整體結構有點類似U-Net,但在跳躍連接處設計了新的組合方式(不是簡單的concat)。個人認為,這種結構其實非常適合作為自己網絡設計的思路,可以加入許多其他CV問題中使用的CNN module,而且以U-Net為整體框架,效果不會太差。

圖片

6.其他結構

6.1 降低計算復雜的網絡結構

也有很多工作致力於降低語義分割網絡的計算復雜度。一些簡化深度網絡結構的方法:張量分解;通道/網絡剪枝;稀疏化連接。還有一些利用NAS(神經架構搜索)取代人工設計來搜索模塊或整個網絡的結構,當然AutoDL所需的GPU資源會勸退一大批人。因此,也有一些人使用隨機搜索來搜索小的多的ASPP模塊,然后基於小模塊來搭建整個網絡模型。

網絡輕量化設計是業內共識,移動端部署不可能每台機器配一張2080ti,另外耗電量、存儲等問題也會限制模型的推廣應用。不過5G如果能普及的話,數據就可以全部在雲端處理,會很有意思。當然,短期內(十年),5G全方位部署不知道是否可行。

6.2 基於注意力機制的網絡結構

注意力機制可以定義為:使用后續層/特征圖信息來選擇和定位輸入特征圖中最具判斷力(或顯著性)的部分。簡單地可以認為是給特征圖加權的一種方式(權值通過網絡計算得到),按照權值的作用方式的不同,可以分為通道注意力機制(CA)和空間注意力機制(PA)。FPA(Feature Pyramid Attention,特征金字塔注意力)網絡是一種基於注意力機制的語義分割網絡,它將注意力機制和空間金字塔相結合,以提取用於像素級標記的精密特征,而沒有采用膨脹卷積和人為設計的解碼器網絡。

6.3 基於對抗學習的網絡結構

  • SegAN: Adversarial network with multi-scale L1 loss for medical image segmentation.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM