深度學習圖像分割:網絡結構設計一覽
本文總結了利用CNNs進行圖像語義分割時,針對網絡結構的創新,這些創新點主要包括新神經架構的設計(不同深度、寬度、連接和拓撲結構)和新組件或層的設計。前者是利用已有的組件組裝復雜的大型網絡,后者是更偏向于設計底層組件。首先介紹一些經典的語義分割網絡及其創新點,然后介紹網絡結構設計在醫學圖像分割領域內的一些應用。
1. 圖像語義分割網絡結構創新
1.1 FCN網絡
FCN整體架構
簡圖單獨將FCN網絡列出來是因為FCN網絡是第一個從全新的角度來解決語義分割問題的網絡。此前的基于神經網絡的圖像語義分割網絡是利用以待分類像素點為中心的圖像塊來預測中心像素的標簽,一般用CNN+FC的策略構建網絡,顯然這種方式無法利用圖像的全局上下文信息,而且逐像素推理速度很低;而FCN網絡舍棄全連接層FC,全部用卷積層構建網絡,通過轉置卷積以及不同層特征融合的策略,使得網絡輸出直接是輸入圖像的預測mask,效率和精度得到大幅度提升。
FCN不同層特征融合示意圖
創新點:全卷積網絡(不含fc層);轉置卷積deconv(反卷積);不同層特征圖跳躍連接(相加)
1.2 編解碼結構(Enconder-decoder)
- SegNet和FCN網絡的思路基本一致。編碼器部分使用VGG16的前13層卷積,不同點在于Decoder部分Upsampling的方式。FCN通過將特征圖deconv得到的結果與編碼器對應大小的特征圖相加得到上采樣結果;而SegNet用Encoder部分maxpool的索引進行Decoder部分的上采樣(原文描述:the decoder upsamples the lower resolution input feature maps. Speci?cally, the decoder uses pooling indices computed in the max-pooling step of the corresponding encoder to perform non-linear upsampling.)。
創新點:Encoder-Decoder結構;Pooling indices。
SegNet網絡
SegNet與FCN的Upsample方式對比
- U-Net網絡最初是針對生物醫學圖像設計的,但由于其初四的性能,現如今UNet及其變體已經廣泛應用到CV各個子領域。UNet網絡由U通道和短接通道(skip-connection)組成,U通道類似于SegNet的編解碼結構,其中編碼部分(contracting path)進行特征提取和捕獲上下文信息,解碼部分(expanding path)用解碼特征圖來預測像素標簽。短接通道提高了模型精度并解決了梯度消失問題,特別要注意的是短接通道特征圖與上采用特征圖是拼接而不是相加(不同于FCN)。
創新點:U型結構;短接通道(skip-connection)
U-Net網絡
- V-Net網絡結構與U-Net類似,不同在于該架構增加了跳躍連接,并用3D操作物替換了2D操作以處理3D圖像(volumetric image)。并且針對廣泛使用的細分指標(如Dice)進行優化。
V-Net網絡
創新點:相當于U-Net網絡的3D版本
- FC-DenseNet (百層提拉米蘇網絡)(paper title: The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation)該網絡結構是由用密集連接塊(Dense Block)和UNet架構組建的。該網絡最簡單的版本是由向下過渡的兩個下采樣路徑和向上過渡的兩個上采樣路徑組成。且同樣包含兩個水平跳躍連接,將來自下采樣路徑的特征圖與上采樣路徑中的相應特征圖拼接在一起。上采樣路徑和下采樣路徑中的連接模式不完全同:下采樣路徑中,每個密集塊外有一條跳躍拼接通路,從而導致特征圖數量的線性增長,而在上采樣路徑中沒有此操作。(多說一句,這個網絡的簡稱可以是Dense Unet,但是有一篇論文叫Fully Dense UNet for 2D Sparse Photoacoustic Tomography Artifact Removal, 是一個光聲成像去偽影的論文,我看到過好多博客引用這篇論文里面的插圖來談語義分割,根本就不是一碼事好么 =_=||,自己能分清即可。)
FC-DenseNet(百層提拉米蘇網絡)
創新點:融合DenseNet與U-Net網絡(從信息交流的角度看,密集連接確實要比殘差結構更強大)
- Deeplab系列網絡是在編解碼結構的基礎上提出的改進版本,2018年DeeplabV3+網絡在VOC2012和Cityscapes數據集上的表現優異,達到SOTA水平。DeepLab系列共有V1、V2、V3和V3+共四篇論文。簡要總結一些各篇論文的核心內容:
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更好)
- PSPNet(pyramid scene parsing network)通過對不同區域的上下文信息進行聚合,提升了網絡利用全局上下文信息的能力。在SPPNet,金字塔池化生成的不同層次的特征圖最終被flatten并concate起來,再送入全連接層以進行分類,消除了CNN要求圖像分類輸入大小固定的限制。而在PSPNet中,使用的策略是:poolling-conv-upsample,然后拼接得到特征圖,然后進行標簽預測。
PSPNet網絡
創新點:多尺度池化,更好地利用全局圖像級別的先驗知識來理解復雜場景
- RefineNet通過細化中間激活映射并分層地將其連接到結合多尺度激活,同時防止銳度損失。網絡由獨立的Refine模塊組成,每個Refine模塊由三個主要模塊組成,即:剩余卷積單元(RCU),多分辨率融合(MRF)和鏈剩余池(CRP)。整體結構有點類似U-Net,但在跳躍連接處設計了新的組合方式(不是簡單的concat)。個人認為,這種結構其實非常適合作為自己網絡設計的思路,可以加入許多其他CV問題中使用的CNN module,而且以U-Net為整體框架,效果不會太差。
RefineNet網絡
創新點:Refine模塊
1.3 降低計算復雜的網絡結構
也有很多工作致力于降低語義分割網絡的計算復雜度。一些簡化深度網絡結構的方法:張量分解;通道/網絡剪枝;稀疏化連接。還有一些利用NAS(神經架構搜索)取代人工設計來搜索模塊或整個網絡的結構,當然AutoDL所需的GPU資源會勸退一大批人。因此,也有一些人使用隨機搜索來搜索小的多的ASPP模塊,然后基于小模塊來搭建整個網絡模型。
網絡輕量化設計是業內共識,移動端部署不可能每臺機器配一張2080ti,另外耗電量、存儲等問題也會限制模型的推廣應用。不過5G如果能普及的話,數據就可以全部在云端處理,會很有意思。當然,短期內(十年),5G全方位部署不知道是否可行。
1.4 基于注意力機制的網絡結構
注意力機制可以定義為:使用后續層/特征圖信息來選擇和定位輸入特征圖中最具判斷力(或顯著性)的部分。簡單地可以認為是給特征圖加權的一種方式(權值通過網絡計算得到),按照權值的作用方式的不同,可以分為通道注意力機制(CA)和空間注意力機制(PA)。FPA(Feature Pyramid Attention,特征金字塔注意力)網絡是一種基于注意力機制的語義分割網絡,它將注意力機制和空間金字塔相結合,以提取用于像素級標記的精密特征,而沒有采用膨脹卷積和人為設計的解碼器網絡。
1.5 基于對抗學習的網絡結構
Goodfellow等人在2014年提出了一種對抗的方法來學習深度生成模型, 生成對抗網絡(GANs)中需要同時訓練兩個模型:捕獲數據分布的生成模型G,和估計樣本來自訓練數據的概率的判別模型D。
● G是一個生成式的網絡,它接收一個隨機的噪聲z(隨機數),通過這個噪聲生成圖像
● D是一個判別網絡,判別一張圖片是不是“真實的”。它的輸入參數是x(一張圖片),輸出D(x)代表x為真實圖片的概率,如果為1,就代表100%是真實的圖片,而輸出為0,就代表不可能是真實的圖片。
G的訓練程序是將D錯誤的概率最大化。可以證明在任意函數G和D的空間中,存在唯一的解決方案,使得G重現訓練數據分布,而D=0.5。訓練過程中,生成網絡G的目標就是盡量生成真實的圖片去欺騙判別網絡D。而D的目標就是盡量辨別出G生成的假圖像和真實的圖像。這樣,G和D構成了一個動態的“博弈過程”,最終的平衡點即納什均衡點.。在G和D由神經網絡定義的情況下,整個系統可以用反向傳播進行訓練。
GANs網絡結構示意受到GANs啟發,Luc等人訓練了一個語義分割網絡(G)以及一個對抗網絡(D),對抗網絡區分來自ground truth或語義分割網絡(G)的分割圖。G和D不斷地博弈學習, 它們的損失函數定義為 :
GANs loss function
回顧一下原始的GAN損失函數:GANs的損失函數體現的是一種零和博弈的思想,原始的GANs的損失函數如下:
損失的計算位置是在D(判別器)輸出處,而D的輸出一般是fake/true的判斷,所以整體可以認為是上采用了二分類交叉熵函數。由GANs的損失函數的形式可知,訓練要分為兩部分:
首先是maxD部分,因為訓練一般是先保持G(生成器)不變訓練D的。D的訓練目標是正確區分fake/true,如果我們以1/0代表true/fake,則對第一項E因為輸入采樣自真實數據所以我們期望D(x)趨近于1,也就是第一項更大。同理第二項E輸入采樣自G生成數據,所以我們期望D(G(z))趨近于0更好,也就是說第二項又是更大。所以是這一部分是期望訓練使得整體更大了,也就是maxD的含義了。這部分只更新D的參數。
第二部分保持D不變(不進行參數更新),訓練G,這個時候只有第二項E有用了,關鍵來了,因為我們要迷惑D,所以這時將label設置為1(我們知道是fake,所以才叫迷惑),希望D(G(z))輸出接近于1更好,也就是這一項越小越好,這就是minG。當然判別器哪有這么好糊弄,所以這個時候判別器就會產生比較大的誤差,誤差會更新G,那么G就會變得更好了,這次沒有騙過你,只能下次更努力了(引自https://www.cnblogs.com/walter-xh/p/10051634.html)。這時候只更新G的參數。
從另一個角度看GANs,判別器(D)相當于一種特殊的損失函數(由神經經網絡構成,不同于傳統的L1、L2、交叉熵等損失函數)。
另外GANs訓練方式特殊,存在梯度消失、模式崩潰等問題(目前好像有辦法可以解決),但其設計思想確實是深度學習時代一個偉大的發明。
1.6 小結
基于深度學習的圖像語義分割模型大多遵循編碼器-解碼器體系結構,如U-Net。近幾年的研究成果表明,膨脹卷積和特征金字塔池可以改善U-Net風格的網絡性能。在第2節中,我們總結一下,如何將這些方法及其變體應用于醫學圖像分割。
2. 網絡結構創新在醫學圖像分割中的應用
這部分介紹一些網絡結構創新在2D/3D醫學圖像分割中的應用研究成果。
2.1 基于模型壓縮的分割方法
為了實現實時處理高分辨率的2D/3D醫學圖像(例如CT、MRI和組織病理學圖像等),研究人員提出了多種壓縮模型的方法。weng等人利用NAS技術應用于U-Net網絡,得到了在CT,MRI和超聲圖像上具有更好的器官/腫瘤分割性能的小型網絡。Brugger通過利用組歸一化(group normalization )和Leaky-ReLU(leaky ReLU function),重新設計了U-Net架構,以使網絡對3D醫學圖像分割的存儲效率更高。也有人設計了參數量更少的擴張卷積module。其他一些模型壓縮的方法還有權重量化(十六位、八位、二值量化)、蒸餾、剪枝等等。
2.2 編碼-解碼結構的分割方法
Drozdal提出了一種在將圖像送入分割網絡之前應用簡單的CNN來對原始輸入圖像進行歸一化的方法,提高了單子顯微鏡圖像分割、肝臟CT、前列腺MRI的分割精度。Gu提出了在主干網絡利用擴張卷積來保留上下文信息的方法。Vorontsov提出了一種圖到圖的網絡框架,將具有ROI的圖像轉換為沒有ROI的圖像(例如存在腫瘤的圖像轉換為沒有腫瘤的健康圖像),然后將模型去除的腫瘤添加到新的健康圖像中,從而獲得對象的詳細結構。Zhou等人提出了一種對U-Net網絡的跳躍連接重新布線的方法,并在胸部低劑量CT掃描中的結節分割,顯微鏡圖像中的核分割,腹部CT掃描中的肝臟分割以及結腸鏡檢查視頻中的息肉分割任務中測試了性能。Goyal將DeepLabV3應用到皮膚鏡彩色圖像分割中,以提取皮膚病變區域。
2.3 基于注意力機制的分割方法
Nie提出了一種注意力模型,相比于baseline模型(V-Net和FCN),可以更準確地分割前列腺。SinHa提出了一種基于多層注意力機制的網絡,用于MRI圖像腹部器官分割。Qin等人提出了一個擴張卷積模塊,以保留3D醫學圖像的更多細節。其他基于注意力機制的啼血圖像分割論文還有很多。
2.4 基于對抗學習的分割網絡
Khosravan提出了從CT掃描中進行胰腺分割的對抗訓練網絡。Son用生成對抗網絡進行視網膜圖像分割。Xue使用全卷積網絡作為生成對抗框架中的分割網絡,實現了從MRI圖像分割腦腫瘤。還有其他一些成功應用GANs到醫學圖像分割問題的論文,不再一一列舉。
2.5 基于RNN的分割模型
遞歸神經網絡(RNN)主要用于處理序列數據,長短期記憶網絡(LSTM)是RNN的一個改進版本,LSTM通過引入自環(self-loops)使得梯度流能長期保持。在醫學圖像分析領域,RNN用于對圖像序列中的時間依賴性進行建模。Bin等人提出了一種將全卷積神經網絡與RNN融合的圖像序列分割算法,將時間維度上的信息納入了分割任務。Gao等人利用CNN和LSTM拉對腦MRI切片序列中的時間關系進行建模,以提高4D圖像中的分割性能。Li等人先用U-Net獲得初始分割概率圖,后用LSTM從3D CT圖像中進行胰腺分割,改善了分割性能。其他利用RNN進行醫學圖像分割的論文還有很多,不再一一介紹。
2.6 小結
這部分內容主要是分割算法在醫學圖像分割中的應用,所以創新點并不多,主要還是對不同格式(CT還是RGB,像素范圍,圖像分辨率等等)的數據和不同部位數據的特點(噪聲、對象形態等等),經典網絡需要針對不同數據進行改進,以適應輸入數據格式和特征,這樣能更好的完成分割任務。雖然說深度學習是個黑盒,但整體上模型的設計還是有章可循的,什么策略解決什么問題、造成什么問題,可以根據具體分割問題進行取舍,以達到最優的分割性能。
部分參考文獻:
1.Deep Semantic Segmentation of Natural and Medical Images: A Review
2.NAS-Unet: Neural architecture search for medical image segmentation. IEEE Access, 7:44247–44257, 2019.
3.Boosting segmentation with weak supervision from image-to-image translation. arXiv preprint arXiv:1904.01636, 2019
4.Multi-scale guided attention for medical image segmentation. arXiv preprint arXiv:1906.02849,2019.
5.SegAN: Adversarial network with multi-scale L1 loss for medical image segmentation.
6.Fully convolutional structured LSTM networks for joint 4D medical image segmentation. In 2018 IEEE7 https://www.cnblogs.com/walter-xh/p/10051634.html