一 寫在前面
之前沒有太了解segmentation任務是怎么做的,重溫一下經典的u net結構。
- U-Net: Convolutional Networks for Biomedical Image Segmentation
- https://arxiv.org/abs/1505.04597 (MICCA 2015)
主要解決兩個問題:
- 如何實現pixel level的分割任務?
- u-NET網絡結構如何設計的?
二 網絡結構如何設計
整個網絡結構呈現U形狀,所以也被稱之為U-net.
U-net同樣也被認為是經典的encoder-decoder結構,左邊不斷降低feature map大小提高特征維度的部分是encoder,反之,右邊不斷提升feature map大小降低特征維度的部分是decoder。
具體來說,
- 左邊,例如從568x568x64的特征維度到284x284x128的過程是利用一個3x3的卷積(使得特征維度double,從64到128)和2x2的max pool(stride=2,使得特征大小減半,從568到284)完成的;
- 右邊,則主要是通過上采樣,concat with左邊的特征,以及3x3的卷積完成的,例如從右邊的第二層到右邊第一層的過程為:先由198x198x128經過3x3卷積得到196x196x64,1) 對其進行2x2上采樣得到392x392x64, 2)然后再取左邊第一層568x568x64中的392x392x64(左邊虛線框的位置)進行concat得到392x392x128(右邊藍白條紋相疊的位置)3)然后對concat得到的392x392x128進行兩次3x3卷積,得到388x388x64的特征維度;
二 如何實現分割
其實就是圖里的最后一個conv1x1, 用1x1的卷積對388x388x64的特征圖進行卷積,得到388x388x2 (U-net本身做的是二分類)