論文源址:https://arxiv.org/abs/1611.06612前端
tensorflow代碼:https://github.com/eragonruan/refinenet-image-segmentationgit
摘要github
RefineNet是一種生成式的多路徑加強網絡,在進行高分辨率的預測時,藉助遠距離的殘差鏈接,儘量多的利用下采樣過程當中的全部信息。這樣,經過前期卷積操做獲得的細粒度特徵能夠加強可以得到圖像更高層次信息更深的網絡。RefineNet的組件基於殘差鏈接,能夠進行端到端的訓練。該文還引入了鏈式殘差池化操做,進而以一種高效的方式捕捉更加豐富的背景上下文信息。網絡
介紹dom
分割問題能夠被看作是一種密集的分類任務,VGG,ResNet等在分類任務上取得不俗的成績,但對於像密集深度,或者普通的評估,語義分割等密集預測時就會顯得力不從心。緣由在於在下采樣過程當中預測的圖片會縮爲原圖大小的幾分之一,此過程會丟失大量的圖像結構信息。 解決方法是利用反捲積進行上採樣 ,但上採樣沒法恢復在網絡前向過程當中下采樣丟失的可視化的底層信息,所以,沒法生成準確率較高分辨率的預測結果。然而,底層的可視化信息對於邊界細節信息的預測發揮着重大的做用。Deeplab在不縮減圖片尺寸的基礎上利用空洞卷積擴大感覺野的範圍。但空洞卷積的作法存在兩個限制條件:(1)須要在大量高維度的空洞feature map上運行卷積操做,這須要大量的計算資源。此外,大量高維度和高分辨率的feature map在訓練階段須要更多的GPU內存資源,這一般限制了高分辨率feature map預測時的計算,一般輸出的尺寸爲原圖的八分之一。(2)空洞卷積生成比較粗糙的下采樣feature map,形成重要細節信息的損失。ide
直觀上中間層的網絡包含着目標物體中層次的信息,同時其包含的位置信息也是豐富的。 中間層的信息雖然保留了必定的前端網絡獲得的像邊,點,等細節信息,同時也包含着高層編碼層的語義信息。但仍缺乏足夠多的位置信息。學習
該文主要是利用全部層的特徵信息,較高的網絡層利於圖片區域的類別識別,低層網絡提取的可視化的特徵利於高分辨率的更多細節信息的生成。主要貢獻以下:編碼
(1)提出了多路加強網絡,從而利用多個層次網絡層的特徵提取用於高分辨率的抽象信息。該網絡利用遞歸的方式加強低分辨率(粗糙)的語義特徵來產生高分辨率的分割特徵圖。spa
(2)該級聯網絡能夠進行端到端的訓練,能夠用於更好的預測。此外,RefineNet的全部組件都由殘差鏈接,梯度在訓練過程當中能夠經過長短距離的殘差鏈接進行高效的端到端的傳播。3d
(3)該文提出了一種新的網絡組建-鏈式殘差池化,能夠從圖片中較大區域捕捉背景上下文信息。該模塊中不一樣大小的窗口獲得的池化特徵經過殘差鏈接和可學習的權重進行融合。
(4)該網絡刷新了7個數據集的分數。
說明
該文基於ResNet進行改進,在ResNet的前向過程當中,因爲卷積與池化操做,圖片的尺寸逐漸減小,而特徵的深度(通道數)逐漸增長。ResNet的層能夠根據輸出feature map的大小分爲4個不一樣的block。一系列的下采樣操做有以下好處:(1)在更深層的網絡中的感覺野增大,從而捕捉更多的全局文本信息用於後續更準確的分類。
(2)因爲每一層的網絡包含大量的卷積核,進而輸出的feature map中含有大量的通道數形成對訓練的效率上有必定的要求,所以,最終須要在feature map上的大小與通道數之間作一個權衡,通常狀況下,最後一層輸出的feature map的大小在空間維度上是原圖的32分之一,然而卻包含1000多個通道。
低分辨率的feature map會丟失由前層網絡獲得的可視化信息,生成一個粗略的分割map,這是基於深度卷積網絡的一個通病。一種替換方案是利用空洞卷積,在不下降分辨率的狀況下保留較大的感覺野。此方法中的下采樣操做被移除。在ResNet第一個block以後的全部卷積層被替換爲空洞卷積,空洞卷積能夠在不增長訓練參數的基礎上擴大感覺野的範圍。即便這樣,也會佔用大量的內存,不一樣於下采樣方法,空洞卷積在較高分辨率上保留大量的feature map(在網絡的後層,通道數量劇增)。實際發現,在應用空洞卷積下,輸出的feature map的尺寸最大不超過原圖的八分之一,而不是四分之一。
方法
該網絡基於通用的ResNet組建進行構建,經過不一樣分辨率及潛在的長距離的鏈接輔助等操做提供多通路的信息。
多通路加強
該文經過遠距離的殘差鏈接來得到不一樣尺寸的feature map用於高分辨率的預測。RefineNet提供一種通用的方式將粗糙的高級別的分割特徵與細粒度低級別特徵進行融合進而產生高分辨率的分割特徵圖。該網絡結構的一個重要關鍵點是確保能夠經過不一樣長距離的殘差鏈接將梯度在反向傳播時能夠傳遞到較低層的網絡層中,從而能夠保證整個網絡能夠進行端到端的訓練。
該網絡將在ImageNet上預訓練的ResNe根據feature map的尺寸的大小分爲4個block,外加一個帶有4個RefineNet單元的4級聯結構,每個RefineNet單元與對應的block進行直接相連,同時四個RefineNet單元進行級聯。同時,這種結構能夠進行多種變換,一個單元能夠接受全部block做爲輸入。每一個RefeineNet單元的結構相同,但之間的參數並不相關,所以,每個單元能夠針對對應層次的細節進行調整。
根據上圖c,從下網上,從ResNet的block4開始,將RefineNet4與ResNet對用的block4進行直接鏈接。RefineNet4只有一個輸入,RefineNet4後接一系列的卷積層用於調整與訓練的ResNet權重,下一階段,RefineNet4的輸出與ResNet3的輸出做爲RefineNet3的2通路輸入。RefineNet3的做用時利用從ResNet block3中的較高分辨率的feature map加強RefienNet4輸出的低分辨率的feature map。如此重複。最終生成的高分辨率的feature map送入一個密集的soft-max分類層。產生用於預測的score map。獲得的score map經過基於雙線性插值進行上採樣獲得與原圖大小相同的score map。
該網路的一個重要部分在於在ResNet block與RefineNet之間引入了長距離的殘差鏈接。在前向過程當中,殘差鏈接能夠將低層編碼的可視化細節信息用於加強粗糙的高級別的feature map。訓練時,這些鏈接能夠將梯度直接傳遞到前端的卷積層中。
RefineNet
RefineNet block結構圖以下圖a所示,每一個RefineNet單元能夠被修改成不一樣數量的尺寸與通道數不限的輸入。
殘差卷積單元(RCU):RefineNet的組成結構中的第一個,包含一系列的可調整的卷積集合,用於針對目標任務對與訓練的ResNet權重進行微調。最終,每一個輸入通路通過兩個RCU模塊。RCU是原始ResNet中卷積單元的一個精簡版本。移除了原始版本中的BN層。CMU中卷積核的數量在RefineNet4中設置爲512,在其餘的CMU中將爲256。
多尺寸融合模塊:全部通路的輸入經過一個多尺寸融合模塊獲得一個高分辨率的feature map。該模塊首先用卷積調整輸入,生成相同特徵維度,而後,童過上採樣將全部尺寸調整爲輸入中最大的尺寸。最終,全部獲得的feature map經過相加融合獲得最終的feature map。對於輸入特徵經過卷積的調整能夠將不一樣通路的特徵值進行適當的調整,利於後面的特徵融合。若是隻有一個通路特徵,則不會發生變化,直接穿過block。
鏈式殘差池化:該模塊的做用是從較大圖片區域中捕捉背景上下文信息。利用可學習的權重,經過不一樣窗口大小的卷積池化操做並將其特徵進行融合高效的實現特徵池化操做。該組件由一系列不一樣的pooling block鏈接組成,每一個pooling block由一層池化和卷積組成。每一個block的輸入是前一個block的輸出,所以,當前的block能夠再利用前一層block獲得的結果,從而再不使用大尺寸窗口的條件下能夠訪問到更多區域的信息。本文使用了連個pooling block stride爲1組成該鏈式殘差池化模塊。全部pooling blocks 輸出的結果經過殘差鏈接進行加和融合。該block中每一層池化後接一個卷積操做做爲一個融合的權重層。從而在訓練過程當中,卷積層會調整池化vblock的重要性(經過卷積的權重參數調整)。
輸出卷積:每一個RefineNet的最後一塊是另外一種類型的RCU組件。所以,在每一個RefineNet中存在三個RCU組塊。爲了反應RefineNet-1的block上的效果,在soft-max預測的前面添加了兩個額外的RCU模塊。這裏對多通路的融合特徵進行非線性操做生成後續用到或進行預測的特徵。在通過此模塊後,特徵的維度並未發生變化。
RefineNet中的獨立映射:
RefineNet中的全部卷積組件受ResNet啓發,並一一對應進行映射。這種形式能夠進行促進梯度的反向傳播,同時能夠對多通路的加強網絡進行端到端的學習。應用殘差鏈接,能夠將梯度從一個block傳到另外一個block中,這種作法有利於保持一個乾淨的信息通道,而不會被其餘非線性網絡層或者組件干擾。而非線性操做主要應用在主信息通路中。在全部的卷積單元中都加了ReLU非線性操做,在鏈式殘差池化中只含有一個ReLU非線性模塊。實驗發現,加入ReLU操做後,下降了模型對學習率的敏感度,並且對梯度的影響較小。
RefineNet中由長距離及短距離兩種殘差鏈接。短連接是指RCU或鏈式殘差池化中的局部鏈接,長鏈接是指RefineNet模型與ResNet blocks之間的鏈接。通過長鏈接,梯度能夠直接傳遞到ResNet前端的網絡中,進而實現端到端的訓練全部網絡組件。
fusion block 將具備必定的維度或者尺寸的殘差鏈接進行求和融合。這裏多尺寸融合模塊的做用相似於ResNet中傳統殘差卷積的融合做用。在RefineNet尤爲是在fusion block中有特徵的線性變換操做,像線性特徵維度下降和雙線性上採樣。ResNet中的兩個blocks的鏈接,用一個卷積層進行特徵維度的適應。因爲只有線性操做。所以,梯度能夠在網絡中進行高效的傳播。
實驗
Reference
[1] A. Arnab, S. Jayasumana, S. Zheng, and P. H. Torr. Higher order conditional random fields in deep neural networks. In European Conference on Computer Vision. Springer, 2016.
[2] V. Badrinarayanan, A. Kendall, and R. Cipolla. Segnet: A deep convolutional encoder-decoder architecture for image segmentation. CoRR, 2015.
[3] J. Carreira, R. Caseiro, J. Batista, and C. Sminchisescu. Semantic segmentation with second-order pooling. In ECCV, 2012.
實驗結果:目前分割效果很差,還在查找緣由