FCN與U-Net語義分割算法

FCN與U-Net語義分割算法

圖像語義分割(Semantic Segmentation)是圖像處理和是機器視覺技術中關於圖像理解的重要一環,也是 AI 領域中一個重要的分支。語義分割即是對圖像中每一個像素點進行分類,確定每個點的類別(如屬於背景、人或車等),從而進行區域劃分。目前,語義分割已經被廣泛應用於自動駕駛、無人機落點判定等場景中。

在這裏插入圖片描述

圖1 自動駕駛中的圖像語義分割

而截止目前,CNN已經在圖像分類分方面取得了巨大的成就,涌現出如VGG和Resnet等網絡結構,並在ImageNet中取得了好成績。CNN的強大之處在於它的多層結構能自動學習特徵,並且可以學習到多個層次的特徵:

  1. 較淺的卷積層感知域較小,學習到一些局部區域的特徵;

  2. 較深的卷積層具有較大的感知域,能夠學習到更加抽象一些的特徵。

這些抽象特徵對物體的大小、位置和方向等敏感性更低,從而有助於分類性能的提高。這些抽象的特徵對分類很有幫助,可以很好地判斷出一幅圖像中包含什麼類別的物體。圖像分類是圖像級別的!

在這裏插入圖片描述

與分類不同的是,語義分割需要判斷圖像每個像素點的類別,進行精確分割。圖像語義分割是像素級別的!但是由於CNN在進行convolution和pooling過程中丟失了圖像細節,即feature map size逐漸變小,所以不能很好地指出物體的具體輪廓、指出每個像素具體屬於哪個物體,無法做到精確的分割。

針對這個問題,Jonathan Long等人提出了Fully
Convolutional Networks(FCN)用於圖像語義分割。自從提出後,FCN已經成爲語義分割的基本框架,後續算法其實都是在這個框架中改進而來。
在這裏插入圖片描述
一. FCN

Fully Convolutional Networks for Semantic Segmentation

論文鏈接:https://arxiv.org/abs/1411.4038

摘要

卷積網絡是一種強大的視覺模型,可以產生特徵的層次結構。結果表明,經過訓練的端到端、像素到像素的卷積網絡在語義分割方面超過了目前的水平。的關鍵見解是建立“完全卷積”網絡,它接受任意大小的輸入,並通過有效的推理和學習產生相應大小的輸出。定義並詳細描述了全卷積網絡的空間,解釋了它們在空間密集預測任務中的應用,並繪製了與先前模型的連接。將當代的分類網絡(AlexNet、VGG網和GoogLeNet)轉化爲完全卷積的網絡,並通過對分割任務的微調來傳遞它們所學習的表示。然後,定義了一個新的架構,它將來自深層、粗糙層的語義信息與來自淺層、精細層的外觀信息結合起來,以產生準確和詳細的分段。的全卷積網絡實現了PASCAL VOC(2012年平均IU爲62.2%,相對提高20%)NYUDv2和SIFT流的最新分割,而對於典型圖像,推理需要三分之一秒。
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

FCN改變了什麼?

對於一般的分類CNN網絡,如VGG和Resnet,都會在網絡的最後加入一些全連接層,經過softmax後就可以獲得類別概率信息。但是這個概率信息是1維的,即只能標識整個圖片的類別,不能標識每個像素點的類別,所以這種全連接方法不適用於圖像分割。

在這裏插入圖片描述

圖3 全連接層

而FCN提出可以把後面幾個全連接都換成卷積,這樣就可以獲得一張2維的feature map,後接softmax獲得每個像素點的分類信息,從而解決了分割問題,如圖4。
在這裏插入圖片描述
圖4

2 FCN結構

整個FCN網絡基本原理如圖5(只是原理示意圖):

  1. image經過多個conv和+一個max pooling變爲pool1 feature,寬高變爲1/2

  2. pool1 feature再經過多個conv+一個max
    pooling變爲pool2 feature,寬高變爲1/4

  3. pool2 feature再經過多個conv+一個max
    pooling變爲pool3 feature,寬高變爲1/8

  1. 直到pool5 feature,寬高變爲1/32。

在這裏插入圖片描述

圖5 FCN網絡結構示意圖

那麼:

  1. 對於FCN-32s,直接對pool5 feature進行32倍上採樣獲得32x upsampled feature,再對32x upsampled
    feature每個點做softmax prediction獲得32x
    upsampled feature prediction(即分割圖)。

  2. 對於FCN-16s,首先對pool5 feature進行2倍上採樣獲得2x upsampled feature,再把pool4 feature和2x upsampled feature逐點相加,然後對相加的feature進行16倍上採樣,並softmax prediction,獲得16x upsampled feature prediction。

  3. 對於FCN-8s,首先進行pool4+2x upsampled feature逐點相加,然後又進行pool3+2x
    upsampled逐點相加,即進行更多次特徵融合。具體過程與16s類似,不再贅述。

作者在原文種給出3種網絡結果對比,明顯可以看出效果:FCN-32s < FCN-16s < FCN-8s,即使用多層feature融合有利於提高分割準確性。
在這裏插入圖片描述
圖6

二.U-Net

U-Net: Convolutional Networks for Biomedical Image Segmentation

論文鏈接:https://arxiv.org/abs/1505.04597

人們普遍認爲,成功的深層網絡訓練需要數千個帶註釋的訓練樣本。本文提出了一種網絡和訓練策略,該策略依賴於數據增強的強大使用,以更有效地使用可用的註釋樣本。該體系結構由捕獲上下文的收縮路徑和支持精確定位的對稱擴展路徑組成。這種網絡可以從很少的圖像中端到端地訓練,並且在電子顯微鏡堆棧中神經元結構分割的ISBI挑戰上優於先前的最佳方法(滑動窗口卷積網絡)。使用同樣的傳輸光學顯微鏡圖像(相位對比度和DIC)訓練網絡,在2015年的ISBI細胞跟蹤挑戰賽中以較大的優勢贏得了這些類別的比賽。而且,網絡速度很快。在最近的GPU上,512x512圖像的分割不到一秒鐘。

圖像語義分割(Semantic Segmentation)是圖像處理和是機器視覺技術中關於圖像理解的重要一環,也是 AI 領域中一個重要的分支。語義分割即是對圖像中每一個像素點進行分類,確定每個點的類別(如屬於背景、人或車等),從而進行區域劃分。目前,語義分割已經被廣泛應用於自動駕駛、無人機落點判定等場景中。

U-Net是原作者參加ISBI Challenge提出的一種分割網絡,能夠適應很小的訓練集(大約30張圖)。U-Net與FCN都是很小的分割網絡,既沒有使用空洞卷積,也沒有後接CRF,結構簡單。
在這裏插入圖片描述

整個U-Net網絡結構如圖,類似於一個大大的U字母:首先進行Conv+Pooling下采樣;然後Deconv反捲積進行上採樣,crop之前的低層feature map,進行融合;然後再次上採樣。重複這個過程,直到獲得輸出388x388x2的feature map,最後經過softmax獲得output segment map。總體來說與FCN思路非常類似。

爲何要提起U-Net?是因爲U-Net採用了與FCN完全不同的特徵融合方式:拼接!
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

語義分割網絡在特徵融合時也有2種辦法:

FCN式的逐點相加,對應caffe的EltwiseLayer層,對應tensorflow的tf.add()

U-Net式的channel維度拼接融合,對應caffe的ConcatLayer層,對應tensorflow的tf.concat()

相比其他大型網絡,FCN/U-Net還是蠻簡單的,就不多廢話了。

總結一下,CNN圖像語義分割也就基本上是這個套路:

下采樣+上採樣:Convlution+ Deconvlution/Resize

多尺度特徵融合:特徵逐點相加/特徵channel維度拼接

獲得像素級別的segement map:對每一個像素點進行判斷類別看,即使是更復雜的DeepLabv3+依然也是這個基本套路。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章