@
前言
Unet多應用於CNN中圖像分割領域。對於小數據集也有很好的性能。
一、Unet
1.Unet網絡框架
論文中只用分割出細胞邊界,所以最后使用的是2個1*1卷積得到背景和目標兩個。如果是多目標分割,根據分割目標的種類來決定使用1*1的卷積的數量來輸出Segmentation map.注:對於多目標的Label標注:可以使用不同顏色,然后使用One-hot編碼生成Label進行訓練。
2.Unet運用的 Skip connection
語義分割網絡在特征融合時也有2種辦法:
(1)FCN式的逐點相加,也叫加操作。如圖1。
(2)U-Net式的channel維度拼接融合,也叫疊操作。如圖2。
Copy and crop操作: 經過兩次3*3卷積后,大小變為28×28,然后經過一次2*2卷積,變為56×56,這時和左側大小為64×64的圖像進行維度的疊加,但是由於圖像大小不同,需要將左側的64×64大小的圖像裁剪為56×56大小,此處的裁剪是合理的,原因看下一步3中講的Overlap-tile策略。
3.Unet應用的Overlap-tile策略
可以發現Unet論文中輸入的圖像是572×572但是輸出圖像確實388×388.這是不是就意味着原圖像存在信息丟失的現象呢?實際上不是的,經過了no padding的卷積操作,輸入圖像和輸出圖像肯定是不一樣的尺寸,但是Unet在論文中提及了一種策略--Overlap-tile,將圖像進行鏡像擴充和輸入網絡,這樣經過卷積后得到的輸出圖像和實際需要提取的圖像是相同的尺寸。
例如下圖,實際需要分割的圖像是黃色框所選中部分,但是輸入到網絡中的圖像是藍色部分,對空白部分進行鏡像填充,這樣經過網絡后所得到的的輸出大小尺寸適合實際需要分割的圖像大小是一樣的。
4.Unet的LossFunction
Unet訓練時對細胞邊界的像素點增加了權重,使用加權損失函數,可以更注重細胞邊界分割。此處d1,d2個人不清楚是使用什么計算的距離
二、Pytorch環境搭建及Training
1.相關資源
數據集:https://github.com/Rwzzz/Unet
代碼:https://github.com/Rwzzz/Unet
2.實驗結果
- 訓練集大小30張圖片
- 訓練時間epochs=40,batch_size=1
- 訓練環境 pytorch1.7
在實際訓練中為了方便,沒有采用Unet中的策略。
統一輸入和輸出尺寸的兩種方案:
1.padding='same'形式
2.對小分辨率特征圖進行填充后進行維度的連接。
總結
Unet模型簡單,並且使用較少的數據集,可以達到非常理想的分割效果,對於醫學和其他一些數據集比較少的領域優勢很大。