FCN圖像分割
一. 圖像語義分割
傳統的圖像分割方法主要包括以下幾種:
1)基於邊緣檢測
2)基於閾值分割
比如直方圖,顏色,灰度等
3)水平集方法
這裏我們要說的是語義分割,什麽是語義分割呢?先來看張圖:
將目標按照其分類進行像素級的區分,比如區分上圖的 摩托車 和 騎手,這就是語義分割,語義分割賦予了場景理解更進一步的手段。
我們直接跳過傳統的語義分割方法,比如 N-Cut,圖割法等,直接進入深度學習。
二. FCN 的引入
CNN 在圖像分割中應用,起源於2015年的這篇影響深遠的文章:
Fully Convolutional Networks for Semantic Segmentation
這裏提到的就是全卷積網絡,那麽這個全卷積是如何理解 和 Work 的呢?來看一個對比:
上圖紅色部分 對應CNN分類網絡的最後三層,也就是 FC 全連接,通過 Softmax 得到一個1000維的向量(基於Imagenet的圖像分類),表示1000個不同的分類對應的概率,“tabby cat” 作為概率最高的結果。
下圖藍色部分將 分類網絡對應的最後三層全連接 替換成了 卷積。整個網絡全部通過卷積連接,so called 全卷積。這麽做的目的是什麽呢?
● 通過像素分類來定義語義分割
全卷積網絡的輸出是一張分割圖,如何輸出這張分割圖呢? 通過卷積,圖像的分辨率逐漸降低,這裏需要 引入一個概念,就是上采樣,即將低分辨率的圖像放大到和原始圖像同分辨率上,這是一個關鍵點。比如經過5次卷積(pooling)後,圖像的分辨率依次縮小了2,4,8,16,32倍。對於最後一層的輸出圖像,需要進行32倍的上采樣,得到原圖大小一樣的圖像。
這個上采樣是通過 反卷積(DeConvolution)實現的。來直觀看一下反卷積的過程:
加上反卷積過程,整個的網絡可以描述成:
由於前面采樣部分過大,有時候會導致後面進行反卷積得到的結果分辨率比較低,導致一些細節丟失,解決的一個辦法是 將 第 3|4|5 層反卷積結果疊加,結果我們就不貼了,肯定是上采樣倍數越小,結果越好,來看疊加示意圖(這種方式應該不陌生):
三. FCN 的改進
雖然 FCN引領了CNN基於語義分割的方向,但仍有很多地方需要改進,比如上采樣導致的像素分割不精細,效率也不夠快等等,我們相信一定有辦法讓其 更高效、更精細。這裏提到的一個 方法就是結合 CRF。
CRF 全稱是 Conditional Random Field,中文叫 “條件隨機場”,首先來理解什麽是隨機場,一堆隨機的樣本就可以理解為是隨機場,假設這些樣本之間有關聯關系,就成立條件隨機場,CRF 最早在深度學習的 NLP 領域有比較多的應用,可以理解為語境的上下文關系,可以參考下面這篇文章:
Introduction to Conditional Random Fields
第一個改進 來自於 UCLA 的 Liang-Chieh Chen,在像素分類後疊加了一個 Fully Connected Conditional Random Fields(全連接的條件隨機場)。
論文地址:Semantic image segmentation with deep convolutional nets and fully connected crfs
通過上圖示意可以看到,Fully Connected CRF 在前面 FCN 輸出的基礎上,以全連接的形式,實現了後處理過程,使得像素分割更加細致,具體請參考論文。
接下來的改進有 通過 RNN + CRF 的idea:
參考論文:Conditional random fields as recurrent neural networks
根據實驗對比效果來看,相當不錯(註:DeepLab 就是上面的 Full connected CRF方法):
針對FCN的改進會在近兩年一直持續,作者最關註的還是,Mask-RCNN,將目標檢測與分割一起work的方法,接下來在下一篇文章介紹!
“桃李不言,下自成蹊”,FCN 當真是屬於這個級別的貢獻,引領了在這條道路上的每一次Follow。
四. 實例分割(Instance Segment)
實例分割 與 語義分割的區別是要區分出每個目標(不僅僅是像素),相當於 檢測+分割,通過一張圖來直觀理解一下:
關於 實例分割 的一篇典型論文 MaskRCNN,可以參考【Mask RCNN】,代碼實現可以參考【淺入淺出TensorFlow 8 - 行人分割】
相關論文:
Instace-sensitive Fully Convolutional Networks.ECCV 2016【2016.3月上傳到arxiv】
R-FCN:Object Detection via Region-based Fully Convolutional Networks.NIPS 2016【2016.7月上傳到arxiv】
Fully Convolutional Instance-aware Semantic Segmentation.xxxx 2017【2016年11月上傳到arxiv,MSCOCO2016的第一名】
FCN圖像分割