最近開始嘗試醫療影像分割的任務,先從之前的Unet開始閱讀,記錄一部分筆記以供回顧。
論文地址:http://www.arxiv.org/pdf/1505.04597.pdf
摘要
作者提出了一個相對當時來說全新的網絡,Unet。Unet主要由contracting path(特征提取通路),symmetric expanding path(合成擴張通路)組成,運行速度很快,且遠勝於當時最好的方法——基於滑動窗口。在生物醫學中應用CNN有很多難點,其中之一便是醫學圖像數據往往比較稀有。因此,論文也提出了一些新的數據增強的思路。
1.網絡結構
圖像分割任務其實和圖像分類任務有很多相似之處,區別在於圖像分割任務需要將每一個像素都分類,而圖像分類則只需要將整張圖片分類。或者換個說法,圖像分割不僅需要分類,還需要定位,定位分類結果的位置。在生物醫學領域,大規模的數據集往往是難以獲得的,因此Ciresan等人訓練了一個基於滑動窗口(sliding-window)的網絡,對每一個需要預測的像素,輸入其局部的圖像信息(patch),然后對改像素進行分類。對輸入的圖像分割成patch然后輸出對應像素的類別可以有效地擴充數據集。
然而,Ciresan等人的方法有兩個明顯的缺點
- 分別對每一個像素進行分類,使得在分割整張圖片時運行非常緩慢,其中有大量冗余的計算,不同像素間進行分類時計算的特征圖不能共享
- 需要平衡定位和patch的大小,更大的patch輸入需要更多的max-pooling層,但這會降低對像素定位的精度,而小的patch則意味着網絡或許的信息過於局部,無法縱覽全局。
因此,作者借鑒FCN(fully convolutional network)提出了Unet,其中沒有使用任何的全連接層,幾乎都是卷積層和池化層的搭配。左邊部分為contracting path,由連續的卷積層來提取特征,並不斷縮小特征圖的尺寸,並增加特征圖的通道數。右邊部分為symmetric expanding path,通過上采樣改變輸出特征圖的尺寸。同時,為了定位(分割 ≈ 分類+定位)由contracting path得到的不同尺度的特征圖與上采樣得到的對應尺度的特征圖做拼接(concat)。
U-Net中的所有 3 * 3的卷積層都是無padding的,也就是每經過一個卷積層,特征圖長寬維度各減少2個像素。
最終輸出層使用1 * 1的卷積,調整通道數至物體類別數,得到分割結果。
圖1
值得注意的是,FCN 中深層信息與淺層信息融合是通過對應像素相加(add)的方式,而 Unet 是通過拼接的方式。其實在 ResNet 與 DenseNet 中也有一樣的區別,Resnet 使用了對應值相加,DenseNet 使用了拼接。個人理解在相加的方式下,feature map 的維度沒有變化,但每個維度都包含了更多特征,對於普通的分類任務這種不需要從 feature map 復原到原始分辨率的任務來說,這是一個高效的選擇;而拼接則保留了更多的維度/位置 信息,這使得后面的 layer 可以在淺層特征與深層特征自由選擇,這對分割這種需要將輸入像素級地恢復到原始圖像的任務來說更有優勢。
而在具體拼接時,由於不同層的分辨率或者說尺寸有些許差異,例如圖1中在contracting path中經過2次卷積得到的64 * 568 * 568地特征圖,需要經過中心裁剪(crop)為64 * 392 * 392才能拼接,並得到128 * 392 * 392,即通道數相加。
而在symmetric expanding path中Upsampling 上采樣常用的方式有兩種:1.FCN 中的轉置卷積;2. 插值。文中使用了插值的方式,具體是bicubic(雙三次插值)。此外,在其他的插值實現方式中,bilinear (雙線性插值)的綜合表現較好也比較常見 。
2.無縫分割
總體的U-Net結構是對稱的,但是輸出的分辨率小於輸入,因為無論左邊右邊,每次無padding的卷積操作都減小了特征圖的尺寸。
作者這樣設計的原因,主要在於應用場景。U-Net可以被應用於任意較大尺寸的生物醫學圖像的無縫分割。對於較大的輸入圖像,例如訓練的是572 * 572的輸入尺寸,而實際需要輸入5720 * 5720 的尺寸並進行分割,受輸入大小的限制,可以采用slide window的形式遍歷整張大圖像,每次通過網絡產生當前區域的分割輸出。最后將所有的silding windows無縫拼接起來就可以完成整張超大尺寸的圖像(5720 * 5720)的分割任務。
圖2
另外,當位於圖像的邊界區域時,采用將圖像按水平豎直方向鏡像翻轉的方式補充空缺區域,也是保持着完成利用圖像信息的思想。文中將其稱之為Overlap-tile , 具體操作結果如下圖所示:
3. 數據增強
由於醫學圖像分割的任務數據集往往比較小,因此作者充分利用彈性形變對訓練集進行擴充。這將一定程度上迫使網絡學習到在彈性形變中的,待檢測物體(如細胞)圖像數據中的不變量。這一方法對於生物醫學的圖像分割非常重要,人為的對圖像進行形變處理,可以很容易且有效地模擬出真實生物細胞或組織的形變。
具體而言,對於顯微圖像,主要需要平移和旋轉不變性以及對變形和灰度變化的魯棒性。特別是訓練樣本的隨機彈性變形是訓練一個只有很少注釋圖像的分割網絡的關鍵。作者使用3×3的coarse grid上進行隨機替換向量以生成平滑的變形圖像。隨機替換的內容是從標准偏差為10像素的高斯分布中采樣的。然后使用雙三次插值計算每像素的替換。contracting path末端的Drop-out層實現了進一步的隱式數據擴充。
4.Weighted Loss及訓練過程
在生物醫學圖像分割時還面臨一個問題,即對相互接觸的同類物體進行分割。文中采取的做法是對每個像素位置分配權重,計算加權損失,在訓練過程中以期更好地分割各物體的邊界。這一部分的筆記主要參考:https://zhuanlan.zhihu.com/p/128539526,博主寫得很好,因此摘錄過來借鑒學習。
公式1主要是用來計算soft-max
Loss采用交叉熵損失,error的形式為:
下圖d展示了loss權重的分布,在邊界區域權重比較高,可以看到邊界區域的權重至少在8以上,顏色越鮮艷(約接近紅色),權重越高,相當於強制網絡增加對邊界樣本的學習。
圖3
網絡初始化采用Gaussian分布,方差為:
N 表示和一個神經元節點連接的輸入結點的數量。例如對於3 * 3的卷積,特征通道為64的層,則N= 3 * 3 * 64 = 576。
5.評價指標
本文使用的評價指標包括wraping error,Rand error,pixel error以及IoU。
5.1warping error
warping error是基於拓撲不變性衡量分割質量。當pixel error很大當分割效果更好可以引入warping error,主要用來衡量分割目標的拓撲形狀效果。
將ground truth L*保持拓撲不變(沒有分裂、合並、產生或消去空洞、增加或減少物體數量等,可以增減像素的數量),並只在一定范圍產生像素變化,得到許多L,計算預測輸出 T和 L 間的最小距離作為warping error結果。計算公式如下:
即實現預測和ground truth拓撲一致需要變化的最少像素數量。
5.2 Random error
Rand error是根據Rand Index而來,是一種聚類的評價指標。即將分割任務看作是一種對像素的聚類,來衡量分割質量。
定義SC和 SK 分別表示圖片輸入 I 上的真實類別和預測結果。圖片I共有n個像素,不同位置的像素兩兩配對,則排列組合后共有C(2 n)個像素對。
定義 a 表示在 SC 和 SK 上都屬於同一類的像素對數量。 b表示在 SC 和 SK 上都屬於不同類的像素對數量。則此處的Rand Index(蘭德指數)的計算公式為:
即RI數值越大,可以反映聚類的效果越好。也即預測的結果越好。
Rand Error 計算公式為:
5.3 Pixel Error
pixel error 則是根據每個像素位置計算分類錯誤的數量。
即Pixel Error = 預測錯誤的像素個數 / 總像素個數。對於二進制的labels,歐式距離和漢明距離結果相同。
Pixel error過於敏感,會考慮所有分割細節,warping error 和 Rand error則相對緩和,更傾向於形態和整體的分割質量,在生物醫學圖像分割上是較為合理的評價指標。
5.4 交並比(IOU intersection over union)
- 記 I 為預測結果的像素集合與ground truth的像素集合的交集
- 記 U 為預測結果的像素集合與ground truth的像素集合的並集
IOU = I / U
IOU越大,說明預測結果與ground truth的重疊比例越大。
6.實驗結果
6.1 在EM segmentation challenge上的結果:
由於U-Net的邊界loss設計,U-Net擁有最低的warping error,反映較好地分割了不同的物體。rand error 和 pixel error也和其他方法相差不大。
6.2 在ISBI數據集上的IoU結果:
7 .U-Net總結
UNet的設計,為當時的分割任務帶來了很多新的思路,很多方法沿用至今,也產生了很多變體,如U-Net++和U-Net3+等。后續再補上相關的論文筆記。