論文閱讀筆記十七:RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation(CVPR2017)


論文源址:https://arxiv.org/abs/1611.06612

tensorflow代碼:https://github.com/eragonruan/refinenet-image-segmentation

摘要

      RefineNet是一種生成式的多路徑增強網絡,在進行高分辨率的預測時,借助遠距離的殘差連接,盡可能多的利用下采樣過程中的所有信息。這樣,通過前期卷積操作得到的細粒度特征可以增強能夠獲得圖像更高層次信息更深的網絡。RefineNet的組件基於殘差連接,可以進行端到端的訓練。該文還引入了鏈式殘差池化操作,進而以一種高效的方式捕捉更加豐富的背景上下文信息。

介紹

       分割問題可以被看做是一種密集的分類任務,VGG,ResNet等在分類任務上取得不俗的成績,但對於像密集深度,或者普通的評估,語義分割等密集預測時就會顯得力不從心。原因在於在下采樣過程中預測的圖片會縮為原圖大小的幾分之一,此過程會丟失大量的圖像結構信息。   解決方法是利用反卷積進行上采樣 ,但上采樣無法恢復在網絡前向過程中下采樣丟失的可視化的底層信息,因此,無法生成准確率較高分辨率的預測結果。然而,底層的可視化信息對於邊界細節信息的預測發揮着重大的作用。Deeplab在不縮減圖片尺寸的基礎上利用空洞卷積擴大感受野的范圍。但空洞卷積的做法存在兩個限制條件:(1)需要在大量高維度的空洞feature map上運行卷積操作,這需要大量的計算資源。此外,大量高維度和高分辨率的feature map在訓練階段需要更多的GPU內存資源,這通常限制了高分辨率feature map預測時的計算,通常輸出的尺寸為原圖的八分之一。(2)空洞卷積生成比較粗糙的下采樣feature map,造成重要細節信息的損失。

        直觀上中間層的網絡包含着目標物體中層次的信息,同時其包含的位置信息也是豐富的。 中間層的信息雖然保留了一定的前端網絡得到的像邊,點,等細節信息,同時也包含着高層編碼層的語義信息。但仍缺少足夠多的位置信息。

       該文主要是利用所有層的特征信息,較高的網絡層利於圖片區域的類別識別,低層網絡提取的可視化的特征利於高分辨率的更多細節信息的生成。主要貢獻如下:

(1)提出了多路增強網絡,從而利用多個層次網絡層的特征提取用於高分辨率的抽象信息。該網絡利用遞歸的方式增強低分辨率(粗糙)的語義特征來產生高分辨率的分割特征圖。

(2)該級聯網絡可以進行端到端的訓練,可以用於更好的預測。此外,RefineNet的所有組件都由殘差連接,梯度在訓練過程中可以通過長短距離的殘差連接進行高效的端到端的傳播。

(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.

實驗結果:目前分割效果不好,還在查找原因

                          

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM