Unet論文:http://www.arxiv.org/pdf/1505.04597.pdf
Unet源代碼:https://github.com/jakeret/tf_unet
發表於:2015年的MICCAIgit
1、基本介紹
1.1歷史背景
卷積神經網絡(CNN)不只對圖像識別有所幫助,也對語義分割領域的發展起到巨大的促進做用。 2014 年,加州大學伯克利分校的 Long 等人提出全卷積網絡(FCN),這使得卷積神經網絡無需全鏈接層便可進行密集的像素預測,CNN 從而獲得普及。使用這種方法可生成任意大小的圖像分割圖,且該方法比圖像塊分類法要快上許多。以後,語義分割領域幾乎全部先進方法都採用了該模型。github
1.2 FCN(全卷積網絡)
網絡的總體結構分爲:全卷積部分和反捲積部分。
全卷積部分:借用了一些經典的CNN網絡並把最後的全鏈接層換成卷積,用於提取特徵,造成熱點圖;
反捲積部分:將小尺寸的熱點圖上採樣獲得原尺寸的語義分割圖像。
總的來講:FCN對圖像進行像素級的分類,從而解決了語義級別的圖像分割問題。與經典的CNN在卷積層以後使用全鏈接層獲得固定長度的特徵向量進行分類(全聯接層+softmax輸出)不一樣,FCN能夠接受任意尺寸的輸入圖像,採用反捲積層對最後一個卷積層的feature map進行上採樣, 使它恢復到輸入圖像相同的尺寸,從而能夠對每一個像素都產生了一個預測, 同時保留了原始輸入圖像中的空間信息, 最後在上採樣的特徵圖上進行逐像素分類。
具體可參考:https://zhuanlan.zhihu.com/p/30195134
https://www.jianshu.com/p/14641b79a672算法
1.3提出的背景
雖然卷積網絡已經存在很長時間了,可是因爲可用訓練集的大小和網絡結構的大小,它們的成功受到限制。在許多視覺任務中,特別是在生物醫學圖像處理中,指望的輸出應包括位置,因此應該給每一個像素都進行標註。然而在生物醫學任務中一般沒法得到數千個訓練圖像。所以,提出了一種數據加強方法來有效利用標註數據,提出一種U型的網絡結構能夠同時獲取上下文信息和位置信息網絡
2、網絡結構
2.1 網絡組件
①U型結構
②編碼器-解碼器結構
編碼和解碼,早在2006年就發表在了Nature上。當時這個結構提出的主要做用並非分割,而是壓縮圖像和去噪聲。後來把這個思路被用在了圖像分割的問題上,也就是如今咱們看到的FCN或者U-Net結構,在它被提出的三年中,有不少不少的論文去講如何改進U-Net或者FCN,不過這個分割網絡的本質的結構是沒有改動的, 即下采樣、上採樣和跳躍鏈接。
編碼器逐漸減小池化層的空間維度,解碼器逐步修復物體的細節和空間維度。編碼器和解碼器之間一般存在快捷鏈接,所以能幫助解碼器更好地修復目標的細節。U-Net 是這種方法中最經常使用的結構。
③skip-connection架構
2.2結構詳解
①U-net前半部分做用是特徵提取,後半部分是上採樣。每個藍色塊表示一個多通道特徵圖,特徵圖的通道數標記在頂部,X-Y尺寸設置在塊的左下邊緣。不一樣顏色的箭頭表明不一樣的操做。
②藍色箭頭表明3x3的卷積操做,channel的大小乘2,stride是1,padding爲0,所以,每一個該操做之後, feature map的大小會減2。輸入是572x572的,可是輸出變成了388x388,是由於灰色箭頭表示複製和剪切操做,在同一層左邊的最後一層要比右邊的第一層要大一些,這就致使了,想要利用淺層的feature,就要進行一些剪切,也致使了最終的輸出是輸入的中心某個區域。
③紅色箭頭表明2x2的max pooling操做,須要注意的是,若是pooling以前feature map的大小是奇數,那麼就會損失一些信息。
④綠色箭頭表明2x2的反捲積操做,操做會將feature map的大小乘2,channel的大小除以2。
⑤輸出的最後一層,使用了1x1的卷積層作了分類,把64個特徵向量分紅了2類(細胞類、背景類)。ide
3、方法亮點
3.1同時具有捕捉上下文信息的收縮路徑和容許精肯定位的對稱擴展路徑,而且與FCN相比,U-net的上採樣過程依然有大量的通道,這使得網絡將上下文信息向更高層分辨率傳播。
收縮路徑遵循卷積網絡的典型架構。每一次下采樣後都把特徵通道的數量加倍。擴展路徑中的每一步都首先使用反捲積,每次使用反捲積都將特徵通道數量減半,特徵圖大小加倍。反捲積事後,將反捲積的結果與收縮路徑中對應步驟的特徵圖拼接起來。函數
3.2 Overlap-tile 策略,這種方法用於補全輸入圖像的上下信息,能夠解決因爲現存不足形成的圖像輸入的問題。
爲了預測圖像邊界區域中的像素,經過鏡像輸入圖像來推斷缺失的上下文。 這種平鋪策略對於將網絡應用於大圖像很是重要,由於分辨率會受到GPU內存的限制。
該策略的思想是:對圖像的某一塊像素點(黃框內部分)進行預測時,須要該圖像塊周圍的像素點(藍色框內)提供上下文信息,以得到更準確的預測。簡單地說,就是在預處理中,對輸入圖像進行padding,經過padding擴大輸入圖像的尺寸,使得最後輸出的結果正好是原始圖像的尺寸, 同時, 輸入圖像塊(黃框)的邊界也得到了上下文信息從而提升預測的精度。工具
3.3使用隨機彈性變形進行數據加強。
做者採用了彈性變形的圖像增廣,以此讓網絡學習更穩定的圖像特徵。由於數據集是細胞組織的圖像,細胞組織的邊界每時每刻都會發生不規則的畸變,因此這種彈性變形的增廣是很是有效的。
若是 σ值很大,則結果值很小,由於隨機值平均爲0;若是σ很小,則歸一化後該字段看起來像一個徹底隨機的字段。
對於中間σ值,位移場看起來像彈性變形,其中σ是彈性係數。而後將位移場乘以控制變形強度的比例因子 α。 將通過高斯卷積的位移場乘以控制變形強度的比例因子 α,獲得一個彈性形變的位移場,最後將這個位移場做用在仿射變換以後的圖像上,獲得最終彈性形變加強的數據。做用的過程至關於在仿射圖像上插值的過程,最後返回插值以後的結果。性能
3.4使用加權損失。(分離同一類別的接觸物體)
(a)原始圖像
(b)標註圖像實況分割 不一樣的顏色表示HeLa細胞的不一樣狀況
(c)生成分割蒙版(白色:前景,黑色:背景)
(d)以像素爲單位的權重映射,迫使網絡學習邊界像素
方法:預先計算權重圖,一方面補償了訓練數據每類像素的不一樣頻率,另外一方面是網絡更注重學習相互接觸的細胞間邊緣。學習
所以,使用加權損失,其中接觸細胞之間的分離背景標籤在損失函數中得到大的權重。預先計算每一個真實分割的權重圖,以補償訓練數據集中某一類像素的不一樣頻率,並迫使網絡學習,在觸摸細胞之間引入的小分離邊界(見圖c和d)。
使用形態運算來計算分離邊界。權重圖計算以下:
4、網絡模型主要應用及結果
4.1在電子顯微鏡記錄中分割神經元結構,在下圖中演示了數據集中的一個例子和咱們的分割結果。咱們提供了所有結果做爲補充材料。數據集是EM分割挑戰提供的,這個挑戰是從 ISBI 2012開始的,如今依舊開放。訓練數據是一組來自果蠅幼蟲腹側腹側神經索(VNC)的連續切片透射電鏡的30張圖像(512x512像素)。每一個圖像都帶有一個對應的標註分割圖,細胞(白色)和膜(黑色)。測試集是公開可用的,但對應的標註圖是保密的,能夠經過將預測的膜機率圖發送給組織者來得到評估。經過在10個不一樣級別對結果進行閾值化和計算「warping error」, 「Rand error」還有「pixel error」(預測的label和實際的label)。u-net(輸入數據的7個旋轉版本的平均值)無需進行任何進一步的預處理或後處理便可得到0.0003529的warping error和0.0382的Rand error。
4.2 ISBI細胞追蹤挑戰的結果
(a)" PHc-U373 "數據集輸入圖像的一部分。(b)分割結果(青色mask)與人工真實(黃色邊框)(c)「DIC-HeLa」數據集的輸入圖像。(d)分割結果(隨機彩色mask)與人工真實(黃色邊框)。
4.3 ISBI細胞追蹤挑戰賽2015的分割結果(IOU)
將u-net應用於光顯微圖像中的細胞分割任務。這項分離任務是2014年和2015年ISBI細胞追蹤挑戰的一部分。第一個數據集「PHc-U373」包含Glioblastoma-astrocytoma(膠質母細胞瘤-星形細胞瘤)細胞在聚丙烯酰亞胺基底上,經過相差顯微鏡記錄。它包含35個部分註釋的訓練圖像。實現了92%的平均IOU,這明顯優於83%的第二好算法。第二個數據集「DIC-HeLa」是平板玻璃上的HeLa細胞,經過微分干涉對比顯微鏡記錄。它包含20個部分註釋的訓練圖像。在這裏,實現了77.5%的平均IOU,這明顯優於第二好的算法46%。
5、網絡缺陷和不足
5.1 不足之處
感興趣的目標尺寸很是小,對於尺寸極小的目標,U-Net分割性能可能會很差,分割效果也很差。
5.2研習Unet
①FCN與Unet的區別
U-Net和FCN很是的類似,U-Net比FCN稍晚提出來,但都發表在2015年,和FCN相比,U-Net的第一個特色是徹底對稱,也就是左邊和右邊是很相似的,而FCN的decoder相對簡單,只用了一個deconvolution的操做,以後並無跟上卷積結構。第二個區別就是skip connection,FCN用的是加操做(summation),U-Net用的是疊操做(concatenation)。這些都是細節,重點是它們的結構用了一個比較經典的思路,也就是編碼和解碼(encoder-decoder)結構。
②U型結構到底多深,是否是越深越好?
關於到底要多深這個問題,還有一個引伸的問題就是,降採樣對於分割網絡究竟是不是必須的?問這個問題的緣由就是,既然輸入和輸出都是相同大小的圖,爲何要折騰去降採樣一下再升採樣呢?
比較直接的回答固然是降採樣的理論意義,我簡單朗讀一下,它能夠增長對輸入圖像的一些小擾動的魯棒性,好比圖像平移,旋轉等,減小過擬合的風險,下降運算量,和增長感覺野的大小。升採樣的最大的做用其實就是把抽象的特徵再還原解碼到原圖的尺寸,最終獲得分割結果。
參考https://zhuanlan.zhihu.com/p/44958351
6、我的思考總結
從2015年這篇文章發表以來,Unet被引用數千次。成爲大多作醫療影像語義分割任務的baseline,也啓發了大量研究者去思考U型語義分割網絡。
新穎的特徵融合,對圖像特徵多尺度識別,skip connection,到如今依舊值得咱們學習借鑑。
附錄:
①Unet-family:https://github.com/ShawnBIT/UNet-family
②醫學圖像特色:
(1)圖像語義較爲簡單、結構較爲固定。作腦部圖像的,就用腦CT和腦MRI,作胸片的只用胸片CT,作眼底的只用眼底OCT,都是一個固定的器官的成像,而不是全身的。因爲器官自己結構固定和語義信息沒有特別豐富,因此高級語義信息和低級特徵都顯得很重要。
(2)數據量少。醫學影像的數據獲取相對難一些,不少比賽只提供不到100例數據。因此咱們設計的模型不宜多大,參數過多,很容易致使過擬合。(原始UNet的參數量在28M左右(上採樣帶轉置卷積的UNet參數量在31M左右),而若是把channel數成倍縮小,模型能夠更小。縮小兩倍後,UNet參數量在7.75M。縮小四倍,能夠把模型參數量縮小至2M之內)很是輕量。我的嘗試過使用Deeplab v3+和DRN等天然圖像語義分割的SOTA網絡在本身的項目上,發現效果和UNet差很少,可是參數量會大不少。
(3)多模態。相比天然影像,醫療影像是具備多種模態的。以ISLES腦梗競賽爲例,其官方提供了CBF,MTT,CBV,TMAX,CTP等多種模態的數據。好比CBF是腦血流量,CBV用於檢測鉅細胞病毒的。
(4)可解釋性重要。因爲醫療影像最終是輔助醫生的臨牀診斷,因此網絡告訴醫生一個3D的CT有沒有病是遠遠不夠的,醫生還要進一步的想知道,病在哪一層,在哪一層的哪一個位置,分割出來了嗎,能不能求體積。
參考文章:https://blog.csdn.net/haoji007/article/details/78442088?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-2&spm=1001.2101.3001.4242
https://blog.csdn.net/qian99/article/details/85084686
本文由博客羣發一文多發等運營工具平臺 OpenWrite 發佈