圖像分割 - U-Net and U-Net++


鋪墊

在圖像分割領域,全卷積網絡 FCN 是非常經典的網絡,而 U-Net 在醫學圖像分割方面表現的更加突出;

FCN vs U-Nnet

相同點:二者都采用了 encode 和 decode 的經典思路,也就是 AutoEncode 的思路;

這種思路起初被用於 圖像壓縮和去噪,后來被用到圖像分割,是不是很厲害呢?所以別看他簡單,重要的是思想;

不同點

1. U-Net 是一種完全對稱的結構,網絡的 decode 部分仍然是卷積結構,而 FCN 的 decode 相對簡單,只是 deconvolution 反卷積操作;

2. skip connection 的使用,U-Net 是疊操作,FCN 是加操作;

疊操作:1,2 ==> [1, 2]

加操作:1, 2 ==> 3

一個 decode 被玩出這么多花,是不是很厲害?所以,別覺得簡單;

 

學習 U-Net 的重點是掌握 網絡結構的思想,而非 U-Net 本身; 

FCN 和 U-Net 都是非常經典的基礎網絡結構,事實上,他們已經被多次引用,擴展后的網絡屢次發表頂會;

 

U-Net

下面我們認識一下主角

看起來稍微有些亂;

 

我們把它的 拓撲結構 抽取出來,這樣更接近它的實質,排除細節的干擾;

這就是 大部分 分割網絡 的拓撲結構; 

分為三部分:

下采樣:增加 對輸入微小噪聲 的魯棒性,也就是關注主要矛盾,提取特征,增加感受野大小;

上采樣:對特征進行還原;

skip connection:把淺層特征 疊加到 深層特征上,同時關注了淺層和深層特征;

 

擴展

思考一下,U-Nnet 把這個拓撲結構擴展成它的模樣,如果讓你去擴展,你會如何?

 

思考-網絡深度

這是網絡設計時必須要考慮的問題;

首先,我要明確的告訴你,模型的深淺 並不是 作者設計多少就是多少;

 

U-Net 的重點就是 同時利用了 深淺層特征,那為什么 它 4 層就最深了呢?

有人在 他自己的數據集上 訓練了不同深度 的 U-Net 並測試,結果如下

實驗證明,並不是越深越好,也不是 4 層最好; 

實驗折射出這樣的結論:不同層次(深淺)的特征的重要性 在不同數據集上 表現不同;U-Net 作者設計 4 層,只能說 4 層適合他的數據集;

 

靈魂之問:到底要多深? 

最笨的辦法是 挨個試,訓練不同深度的模型,看看測試效果,顯然不是很高大上;

回到 U-Net 網絡的思想,即 同時使用淺層和深層特征,在這個思想的前提下探討網絡深度,腦洞開一下;

把 4 種不同深度的網絡強行疊加起來;

這么做的思想是,我不管哪個層次的特征最重要,都給你算上,讓模型自己去學習

可惜的是這個網絡中的紅色區域無法進行反向傳播,因為網絡是斷開的;

怎么解決呢?這才是本文的核心,即如何設計一個網絡;

 

網絡設計

針對上面的問題,給出幾套方案

1.  修改網絡結構

把長連接全部改成短連接;

這樣做雖然可反向傳播,但是長連接的作用是更好的利用淺層特征,改成短連接后,淺層特征被反卷積后的特征代替,顯然信息丟失很多;

 

雖然說這個設計不是很完美,但注意,這個設計也發表在 CVPR 上了哦,所以搞起來吧;

 

2. U-Net++

很簡單,把長連接全部加上,這就 CVPR 了 

 

3. deep supervision,深監督

深監督是一種思想,它把 不同深度的 模型 的 輸出 用一定的方法 統計起來,這樣可以觀測到不同 深度 的輸出,從而更好的設計網絡的深度;

再次強調,它只是一種思想,沒有具體形式;

下圖就是 把 深監督 套到了 U-Net++ 上;

深監督最大的意義在於 剪枝 

剪枝在移動端的作用十分明顯;

在訓練時 我們訓練不同深度融合的網絡,如果 淺層網絡的結果已經滿足需求,那么深層網絡的權重將置零,也就等於沒了,在測試時,速度會大大提升;

 

 

 

參考資料:

https://zhuanlan.zhihu.com/p/44958351  大神之作,堅決只看這一篇


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM