當前位置:
首頁 > 最新 > 一文概覽主要語義分割網路:FCN,SegNet,U-Net……

一文概覽主要語義分割網路:FCN,SegNet,U-Net……

本文來自 CSDN 網站,譯者藍三金

圖像的語義分割是將輸入圖像中的每個像素分配一個語義類別,以得到像素化的密集分類。雖然自 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 中更深層的卷積層有非常小的梯度流,因為這裡捕獲的高層次的語義概念足夠用於分割。

GIF

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

GIF

空洞卷積

語義分割架構的另一個重要方面是,對特徵圖使用反卷積,將低解析度分割圖上採樣至輸入圖像解析度機制,或者花費大量計算成本,使用空洞卷積在編碼器上部分避免解析度下降。即使在現代 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 上進行分割。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI科技大本營 的精彩文章:

Variable和Tensor合併後,PyTorch的代碼要怎麼改?
美國國會傳喚扎克伯格:來,就5000萬用戶數據泄露案作證;菜鳥無人車路測視頻曝光

TAG:AI科技大本營 |