Unet++: A Nested U-Net Architecture for Medical Image Segmentation
Unet++ 論文地址
這裡僅進行簡要介紹,可供讀者熟悉其結構與特點,若想更為深入的瞭解,可以閱讀原論文和參考文獻。
在計算機視覺領域,全卷積網路(FCN)是比較有名的影象分割網路,在醫學影象處理方向,U-net更是一個炙手可熱的網路,基本上所有的分割問題,我們都會拿U-Net先看一下基本的結果,然後進行修改。和FCN相比,U-Net的第一個特點是完全對稱,也就是左邊和右邊是很類似的,而FCN的decoder相對簡單,只用了一個deconvolution的操作,之後並沒有跟上卷積結構。第二個區別就是skip connection,FCN用的是加操作(summation),U-Net用的是疊操作(concatenation)。它們的結構總最為經典的思路就是都使用了編碼和解碼(encoder-decoder)。
U-net中最為重要的三個部分就是 1. 下采樣 2. 上取樣 3. skip connection,其結構圖如下:
該網路結構中使用下采樣的理論意義是:它可以增加對輸入影象的一些小擾動的魯棒性,比如影象平移,旋轉等,減少過擬合的風險,降低運算量,和增加感受野的大小。上取樣的作用是:把抽象的特徵再還原解碼到原圖的尺寸,最終得到分割結果。
簡言之就是:淺層結構可以抓取影象的一些簡單的特徵,比如邊界,顏色;而深層結構因為感受野大了,而且經過的卷積操作多了,能抓取到影象的一些更為高層的抽象特徵。
而Unet++在原生的Unet基礎上進行一些改進,主要針對了原結構中的skip connection部分。先放一張Unet++的結構圖
相對於原來的Unet網路,Unet++把1~4層的U-Net全給連一起了。這個結構的好處就是我不管你哪個深度的特徵有效,我乾脆都給你用上,讓網路自己去學習不同深度的特徵的重要性。第二個好處是它共享了一個特徵提取器,也就是你不需要訓練一堆U-Net,而是隻訓練一個encoder,它的不同層次的特徵由不同的decoder路徑來還原。這個encoder依舊可以靈活的用各種不同的backbone來代替。
Unet++主要改進就是將原來空心的U-Net填滿了,優勢是可以抓取不同層次的特徵,將它們通過特徵疊加的方式整合,不同層次的特徵,或者說不同大小的感受野,對於大小不一的目標物件的敏感度是不同的,比如,感受野大的特徵,可以很容易的識別出大物體的,但是在實際分割中,大物體邊緣資訊和小物體本身是很容易被深層網路一次次的降取樣和一次次升取樣給弄丟的,這個時候就可能需要感受野小的特徵來幫助。
除了skip connection做出的改變之外,為了能夠讓中間部分收到傳遞過來的梯度,Unet++使用了深監督(deep supervision)的方案。具體的操作就是將結構的\(x^{0,1}, x^{0,2}和x^{0,3}\)也直接連線到最後的輸出。
參考文獻