作者丨Error@知乎
導讀
本文先厘清了語義分割、執行個體分割和全景分割等定義的差別。在此基礎上,進一步分析了FCN、Unet、Unet++等算法在醫學圖像上的适用情況。
先上目錄:
- 相關知識點解釋
- FCN 網絡算法的了解
- Unet 網絡算法的了解
- Unet++ 網絡算法的了解
- Unet+++ 網絡算法的了解
- DeepLab v3+ 算法簡閱
- Unet在醫學圖像上的适用與CNN分割算法的簡要總結
一、相關知識點解釋
1、圖像分割中幾種定義的差別
語義分割(Semantic Segmentation):就是對一張圖像上的所有像素點進行分類。(eg: FCN/Unet/Unet++/...)
執行個體分割(Instance Segmentation):可以了解為目标檢測和語義分割的結合。(eg: Mask R-CNN/...)相對目标檢測的邊界框,執行個體分割可精确到物體的邊緣;相對語義分割,執行個體分割需要标注出圖上同一物體的不同個體。
全景分割(Panoptic Segmentation):可以了解為語義分割和執行個體分割的結合。執行個體分割隻對圖像中的object進行檢測,并對檢測到的object進行分割;全景分割是對圖中的所有物體包括背景都要進行檢測和分割。

圖像分類:圖像中的氣球是一個類别。[1]
語義分割:分割出氣球和背景。
目标檢測:圖像中有7個目标氣球,并且檢測出每個氣球的坐标位置。
執行個體分割:圖像中有7個不同的氣球,在像素層面給出屬于每個氣球的像素。
2. CNN特征學習的優勢
高分辨率特征(較淺的卷積層)感覺域較小,有利于feature map和原圖進行對齊的,也就是我說的可以提供更多的位置資訊。
低分辨率資訊(深層的卷積層)由于感覺域較大,能夠學習到更加抽象一些的特征,可以提供更多的上下文資訊,即強語義資訊,這有利于像素的精确分類。
3. 上采樣(意義在于将小尺寸的高次元feature map恢複回去)
上采樣(upsampling)一般包括2種方式:
Resize,如雙線性插值直接對圖像進行縮放(這種方法在原文中提到)
Deconvolution(反卷積)[2],也叫Transposed Convolution(轉置卷積),可以了解為卷積的逆向操作。
4. 醫學影像語義分割的幾個評估名額[3]
1)Jaccard(IoU)
用于比較有限樣本集之間的相似性與差異性。Jaccard值越大,樣本相似度越高。
關于對TP、FP、TN、FN的了解,可參考我的另一篇目标檢測中mAP計算的博文:https://zhuanlan.zhihu.com/p/139073511
2)Dice相似系數
一種集合相似度度量名額,通常用于計算兩個樣本的相似度,值的範圍0~1 ,分割結果最好時值為1 ,最差時值為0 。Dice相似系數對mask的内部填充比較敏感。
3)Hausdorff 距離(豪斯多夫距離)
描述兩組點集之間相似程度的一種量度,對分割出的邊界比較敏感。
4)F1-score
用來衡量二分類模型精确度的一種名額,同時考慮到分類模型的準确率和召回率,可看做是準确率和召回率的一種權重平均。
二、FCN網絡的了解
FCN将一般的經典的分類網絡模型(VGG16...)的最後一層的FC層(全連接配接)換成卷積,這樣可以通過二維的特征圖,後接softmax獲得每個像素點的分類資訊,進而解決了分割問題。
核心思想:
- 不含全連接配接層(fc)的全卷積(fully conv)網絡。可适應任意尺寸輸入。
- 增大資料尺寸的反卷積(deconv)層。能夠輸出精細的結果。
- 結合不同深度層結果的跳級(skip)結構。同時確定魯棒性和精确性。
FCN結構示意圖
對于FCN-32s,直接對pool5 feature進行32倍上采樣獲得32x upsampled feature,再對32x upsampled feature每個點做softmax prediction獲得32x upsampled feature prediction(即分割圖)。
對于FCN-16s,首先對pool5 feature進行2倍上采樣獲得2x upsampled feature,再把pool4 feature和2x upsampled feature逐點相加,然後對相加的feature進行16倍上采樣,并softmax prediction,獲得16x upsampled feature prediction。
對于FCN-8s,首先進行pool4+2x upsampled feature逐點相加,然後又進行pool3+2x upsampled逐點相加,即進行更多次特征融合。
FCN缺點:
結果不夠精細。進行8倍上采樣雖然比32倍的效果好了很多,但是上采樣的結果還是比較模糊和平滑,對圖像中的細節不敏感。
對各個像素進行分類,沒有充分考慮像素與像素之間的關系。忽略了在通常的基于像素分類的分割方法中使用的空間規整(spatial regularization)步驟,缺乏空間一緻性。
附FCN論文位址:https://arxiv.org/abs/1411.4038
三、U-net網絡的了解
Unet網絡結構圖
整個U-Net網絡結構類似于一個大型的字母U,與FCN都是很小的分割網絡,既沒有使用空洞卷積,也沒有後接CRF,結構簡單。
1. 首先進行Conv+Pooling下采樣;
2. 然後反卷積進行上采樣,crop之前的低層feature map,進行融合;
3. 再次上采樣。
4. 重複這個過程,直到獲得輸出388x388x2的feature map,
5. 最後經過softmax獲得output segment map。總體來說與FCN思路非常類似。
UNet的encoder下采樣4次,一共下采樣16倍,對稱地,其decoder也相應上采樣4次,将encoder得到的進階語義特征圖恢複到原圖檔的分辨率。
它采用了與FCN不同的特征融合方式:
- FCN采用的是逐點相加,對應tensorflow的tf.add()函數
- U-Net采用的是channel次元拼接融合,對應tensorflow的tf.concat()函數
附Unet論文位址:https://arxiv.org/pdf/1505.04597.pdf
四、Unet++網絡的了解 [4]
文章對Unet改進的點主要是skip connection,作者認為skip connection 直接将unet中encoder的淺層特征與decoder的深層特征結合是不妥當的,會産生semantic gap。
文中假設:當所結合的淺層特征與深層特征是semantically similar時,網絡的優化問題就會更簡單,是以文章對skip connection的改進就是想bridge/reduce 這個semantic gap。
附Unet++論文位址:https://arxiv.org/pdf/1807.10165.pdf
代碼位址:https://github.com/MrGiovanni/UNetPlusPlus
五、Unet+++算法的了解 [5]
為了彌補UNet和UNet++的缺陷,UNet 3+中的每一個解碼器層都融合了來自編碼器中的小尺度和同尺度的特征圖,以及來自解碼器的大尺度的特征圖,這些特征圖捕獲了全尺度下的細粒度語義和粗粒度語義。
附U-net+++論文位址:https://arxiv.org/abs/2004.08790
六、DeepLab v3+算法簡閱 [6]
DeepLab v3+結構圖
Encoder部分
Encoder就是原來的DeepLabv3,
需要注意點:
1. 輸入尺寸與輸出尺寸比(output stride = 16),最後一個stage的膨脹率rate為2
2. Atrous Spatial Pyramid Pooling module(ASPP)有四個不同的rate,額外一個全局平均池化
Decoder部分
先把encoder的結果上采樣4倍,然後與resnet中下采樣前的Conv2特征concat一起,再進行3x3的卷積,最後上采樣4倍得到最終結果。
需要注意點:融合低層次資訊前,先進行1x1的卷積,目的是降通道(例如有512個通道,而encoder結果隻有256個通道)
附DeepLab v3+論文位址:https://arxiv.org/pdf/1802.02611.pdf
七、Unet在醫學圖像上的适用與CNN分割算法的簡要總結
1. Unet結構特點
UNet相比于FCN和Deeplab等,共進行了4次上采樣,并在同一個stage使用了skip connection,而不是直接在進階語義特征上進行監督和loss反傳,這樣就保證了最後恢複出來的特征圖融合了更多的low-level的feature,也使得不同scale的feature得到了的融合,進而可以進行多尺度預測和DeepSupervision。4次上采樣也使得分割圖恢複邊緣等資訊更加精細。
2. 為什麼适用于醫學圖像?[7]
1. 因為醫學圖像邊界模糊、梯度複雜,需要較多的高分辨率資訊。高分辨率用于精準分割。
2. 人體内部結構相對固定,分割目标在人體圖像中的分布很具有規律,語義簡單明确,低分辨率資訊能夠提供這一資訊,用于目标物體的識别。
UNet結合了低分辨率資訊(提供物體類别識别依據)和高分辨率資訊(提供精準分割定位依據),完美适用于醫學圖像分割。
3. 分割算法改進總結:
- 下采樣+上采樣:Convlution + Deconvlution/Resize