1. 程式人生 > >全卷機神經網路影象分割(U-net)-keras實現

全卷機神經網路影象分割(U-net)-keras實現

全卷積神經網路

醫學影象分割框架

醫學影象分割主要有兩種框架,一個是基於CNN的,另一個就是基於FCN的。

基於CNN 的框架

這個想法也很簡單,就是對影象的每一個畫素點進行分類,在每一個畫素點上取一個patch,當做一幅影象,輸入神經網路進行訓練,舉個例子:

cnnbased

這是一個二分類問題,把影象中所有label為0的點作為負樣本,所有label為1的點作為正樣本。

這種網路顯然有兩個缺點: 
1. 冗餘太大,由於每個畫素點都需要取一個patch,那麼相鄰的兩個畫素點的patch相似度是非常高的,這就導致了非常多的冗餘,導致網路訓練很慢。 
2. 感受野和定位精度不可兼得,當感受野選取比較大的時候,後面對應的pooling層的降維倍數就會增大,這樣就會導致定位精度降低,但是如果感受野比較小,那麼分類精度就會降低。

基於FCN框架

在醫學影象處理領域,有一個應用很廣泛的網路結構—-U-net ,網路結構如下:

這裡寫圖片描述

可以看出來,就是一個全卷積神經網路,輸入和輸出都是影象,沒有全連線層。較淺的高解析度層用來解決畫素定位的問題,較深的層用來解決畫素分類的問題。

問題分析

資料集需要註冊下載,我的GitHub上也有下載好的資料集。

這個挑戰就是提取出細胞邊緣,屬於一個二分類問題,問題不算難,可以當做一個練手。

這裡寫圖片描述

這裡最大的挑戰就是資料集很小,只有30張512*512的訓練影象,所以進行影象增強是非常有必要的。

實現的效果如下:

這是扭曲之前:

這裡寫圖片描述

這是扭曲之後:

這裡寫圖片描述

keras 實現

效果

最後在測試集上的精度可以達到95.7。

效果如下所示:

這裡寫圖片描述

這裡寫圖片描述