亞利桑那州立大學周縱葦:研習 U-Net——現有的分割網路創新
雷鋒網AI研習社按:經典的 Encoder-Decoder 結構在目標分割問題中展現出了舉足輕重的作用,然而這樣一個相對固定的框架使得模型在感受野大小和邊界分割精度兩方面很難達到兼顧。本次公開課,講者以 U-Net 為案例分析,總結現有的分割網路創新,以及探討還有哪些有針對性的改進方向。
分享嘉賓:
周縱葦,亞利桑那州立大學生物信息學在讀博士,師從 Jianming Liang 教授,主要研究方向為醫學圖像分析,深度學習等。其研究工作曾在 CVPR , DLMIA ,EJNMMI Research 發表。
分享主題:研習 U-Net ——現有的分割網路創新
分享提綱:
肢解經典的 U-Net 結構,反思其組成元素的必要性和優缺點
解讀現有的對於 U-Net 結構性創新的改進思路
分享我們對其提出的一個改進方案—— UNet++
雷鋒網AI研習社將其分享內容整理如下:
在計算機視覺領域,全卷積網路 FCN 毫無疑問是最有人氣的圖像分割網路,可一旦聚焦到醫學圖像處理領域,U-Net 網路會是更熱門的選擇。這麼說吧,幾乎所有的分割問題我們都會拿 U-Net 先看一下基本的結果,再進行「魔改」。
和 FCN 相比,U-Net 的第一個特點是完全對稱,也就是左邊和右邊是很類似的,而 FCN 的 decoder 相對簡單,只用了一個 deconvolution 的操作,之後並沒有跟上卷積結構;第二個區別就是 skip connection,FCN 用的是加操作(summation),U-Net 用的是疊操作(concatenation)。都是使用的「編碼-解碼」結構——需要強調的是,「編碼-解碼」結構一開始並非用於分割圖像,而是用在壓縮圖像和去除噪音上。
簡單的過一下這個網紅結構,我們先提取出它的拓撲結構,這樣會比較容易分析它的實質,排除很多細節的干擾。
輸入是一幅圖,輸出是目標的分割結果。繼續簡化就是,一幅圖,編碼,或者說降採樣,然後解碼,也就是升採樣,然後輸出一個分割結果。根據結果和真實分割的差異,反向傳播來訓練這個分割網路。
我們可以說,U-Net 裡面最精彩的部分就是這三部分:
下採樣
上採樣
skip connection
這就是在我眼中的大部分分割網路的拓撲結構。對於這個拓撲結構,一個非常廣義的問題就是:
這個三年不動的拓撲結構真的一點兒毛病都沒有嗎?
在這三年中,U-Net 得到的超過 2500 次的引用,FCN 接近 6000 次的引用,大家都在做什麼樣的改進呢?如果讓你在這個經典的結構基礎上改進,你會去關注哪些點呢?
首先一個問題是:要多深合適?
這裡我想強調的一點是,很多論文給出了他們建議的網路結構,其中包括非常多的細節,比如用什麼卷積,用幾層,怎麼降採樣,學習率多少,優化器用什麼,這些都是比較直觀的參數,其實這些在論文中給出參數並不見得是最好的,所以關注這些的意義不大,一個網路結構,我們真正值得關注的是它的設計傳達了什麼信息。
好,我們回來繼續討論到底需要多深的問題。其實這個是非常靈活的,涉及到的一個點就是特徵提取器,U-Net 和 FCN 為什麼成功,因為它相當於給了一個網路的框架,具體用什麼特徵提取器,隨便。
關於到底要多深這個問題,還有一個引申的問題就是,降採樣對於分割網路到底是不是必須的?問這個問題的原因就是,既然輸入和輸出都是相同大小的圖,為什麼要折騰去降採樣一下再升採樣呢?
比較直接的回答當然是降採樣的理論意義,我簡單朗讀一下,它可以增加對輸入圖像的一些小擾動的魯棒性,比如圖像平移,旋轉等,減少過擬合的風險,降低運算量,和增加感受野的大小。升採樣的最大的作用其實就是把抽象的特徵再還原解碼到原圖的尺寸,最終得到分割結果。
這些理論的解釋都是有道理的,在我的理解中,對於特徵提取階段,淺層結構可以抓取圖像的一些簡單的特徵,比如邊界,顏色,而深層結構因為感受野大了,而且經過的卷積操作多了,能抓取到圖像的一些說不清道不明的抽象特徵。總之,淺有淺的側重,深有深的優勢。
那麼接下來是關鍵,我們心中的目標很明確了,就是使用淺層和深層的特徵!但是總不能訓練這些個 U-Net 吧,未免也太多了。好,要你來,你怎麼來利用這些不同深度的,各自能抓取不同層次的特徵的 U-Net?
我把圖打出來就很簡單了。
我們來看一看,這樣是不是把 1~4 層的 U-Net 全給連一起了。我們來看它們的子集,包含 1 層 U-Net,2 層 U-Net,以此類推。這個結構的好處就是我不管你哪個深度的特徵有效,我乾脆都給你用上,讓網路自己去學習不同深度的特徵的重要性。第二個好處是它共享了一個特徵提取器,也就是你不需要訓練一堆 U-Net,而是只訓練一個 encoder,它的不同層次的特徵由不同的 decoder 路徑來還原。這個 encoder 依舊可以靈活的用各種不同的 backbone 來代替。
可惜的是,這個網路結構是不能被訓練的,原因在於,不會由任何梯度會經過這個紅色區域,因為它和算 loss function 的地方是在反向傳播時是斷開的。
關於解決方案,我主要想到了兩個:
第一個是用 deep supervision,強行加梯度是吧,關於這個,我待會兒展開來說。
第二個解決方案是把結構改成這樣子:
這個結構由 UC Berkeley 的團隊提出,發表在今年的 CVPR 上,是一個 oral 的論文,題目是"Deep Layer Aggregation"。現在我們和上面那個結構對比一下,不難發現這個結構強行去掉了 U-Net 本身自帶的長連接。取而代之的是一系列的短連接。
我們認為,U-Net 中的長連接是有必要的,它聯繫了輸入圖像的很多信息,有助於還原降採樣所帶來的信息損失。
因此,我的建議是最好給出一個綜合長連接和短連接的方案,也就是我們提出的 UNet++。
對於這個主體結構,我們在論文中給出了一些點評,說白了就是把原來空心的 U-Net 填滿了,優勢是可以抓取不同層次的特徵,將它們通過特徵疊加的方式整合,不同層次的特徵,或者說不同大小的感受野,對於大小不一的目標對象的敏感度是不同的,比如,感受野大的特徵,可以很容易的識別出大物體的,但是在實際分割中,大物體邊緣信息和小物體本身是很容易被深層網路一次次的降採樣和一次次升採樣給弄丟的,這個時候就可能需要感受野小的特徵來幫助。
另一個解讀就是如果你橫著看其中一層的特徵疊加過程,就像一個去年很火的 DenseNet 的結構,非常的巧合,原先的 U-Net,橫著看就很像是 Residual 的結構,這個就很有意思了,UNet++對於 U-Net 分割效果提升可能和 DenseNet 對於 ResNet 分類效果的提升,原因如出一轍,因此,在解讀中我們也參考了 Dense Connection 的一些優勢,比方說特徵的再利用等等。
這些解讀都是很直觀的認識,其實在深度學習裡面,某某結構效果優於某某結構的理由,或者你加這個操作比不加操作要好,很多時候是有玄學的味道在裡頭,也有大量的工作也在探索深度網路的可解釋性。關於 UNet++的主體結構,我不想花時間贅述了。
接下來我要說的這部分,非常的有意思。剛剛在講這裡的時候留了一個伏筆,說這個結構在反向傳播的時候中間部分會收不到過來的梯度,如果只用最右邊的一個 loss 來做的話。
剛才說了,一個非常直接的解決方案就是深監督,也就是 deep supervision。當 UNet++配合上這樣一個填滿的 U-Net 結構時,會帶來其中一個非常棒的優勢——剪枝。
這是因為,在測試的階段,由於輸入的圖像只會前向傳播,扔掉這部分對前面的輸出完全沒有影響的,而在訓練階段,因為既有前向,又有反向傳播,被剪掉的部分是會幫助其他部分做權重更新的。在深監督的過程中,每個子網路的輸出都其實已經是圖像的分割結果了,所以如果小的子網路的輸出結果已經足夠好了,我們可以隨意的剪掉那些多餘的部分了。
這裡我想問兩個問題:
為什麼要在測試的時候剪枝,而不是直接拿剪完的 L1,L2,L3 訓練?
怎麼去決定剪多少?
【答案請回看視頻http://www.mooc.ai/open/course/549?=Leiphone】
讓我們看一組結果。
先看看 L1~L4 的網路參數量,差了好多,L1 只有 0.1M,而 L4 有 9M,也就是理論上如果 L1 的結果我是滿意的,那麼模型可以被剪掉的參數達到 98.8%。不過根據我們的四個數據集,L1 的效果並不會那麼好,因為太淺了嘛。但是其中有三個數據集顯示 L2 的結果和 L4 已經非常接近了,也就是說對於這三個數據集,在測試階段,我們不需要用 9M 的網路,用半 M 的網路足夠了。
回想一下一開始我提出的問題,網路需要多深合適,這幅圖是不是就一目了然。網路的深度和數據集的難度是有關係的,這四個數據集當中,第二個,也就是息肉分割是最難的,大家可以看到縱坐標,它代表分割的評價指標,越大越好,其他都能達到挺高的,但是唯獨息肉分割只有在 30 左右,對於比較難的數據集,可以看到網路越深,它的分割結果是在不斷上升的。對於大多數比較簡單的分割問題,其實並不需要非常深,非常大的網路就可以達到很不錯的精度了。
橫坐標代表的是在測試階段,單顯卡 12G 的 TITAN X (Pascal) 下,分割一萬張圖需要的時間。我們可以看到不同的模型大小,測試的時間差好多。如果比較 L2 和 L4 的話,就差了三倍之多。
對於測試的速度,用這一幅圖會更清晰。我們統計了用不同的模型,1 秒鐘可以分割多少的圖。如果用 L2 來代替 L4 的話,速度確實能提升三倍。
剪枝應用最多的就是在移動手機端了,根據模型的參數量,如果 L2 得到的效果和 L4 相近,模型的內存可以省 18 倍。還是非常可觀的數目。
關於剪枝的這部分我認為是對原先的 U-Net 的一個很大的改觀,原來的結構過於刻板,並且沒有很好的利用不用層級的特徵。
簡單的總結一下,UNet++的第一個優勢就是精度的提升,這個應該它整合了不同層次的特徵所帶來的,第二個是靈活的網路結構配合深監督,讓參數量巨大的深度網路在可接受的精度範圍內大幅度的縮減參數量。
最後給大家分享一下我們工作成果的網路鏈接:
微博:@MrGiovanni
我今天的分享就到此為止,謝謝大家!
以上就是本期嘉賓的全部分享內容。更多公開課視頻請到雷鋒網AI研習社社區(https://club.leiphone.com/)觀看。關注微信公眾號:AI 研習社(okweiwu),可獲取最新公開課直播時間預告。
※順豐高級工程師跑路被開除後,我們應如何避免誤刪生產資料庫
※互聯網+傳統行業=產業互聯網 新華三如何挖掘產業價值?
TAG:雷鋒網 |