1. 程式人生 > >CVPR 2017論文筆記— Dilated Residual Networks

CVPR 2017論文筆記— Dilated Residual Networks

轉自:極市平臺微信公眾號

1.Background

這次我來介紹一篇深度網路文章《Dilated Residual Networks》,發表在CVPR 2017會議上。作者是普林斯頓大學的Fisher Yu博士等人。網路簡稱為DRN。文章原文可在作者主頁閱覽:Fisher Yu主頁(http://www.yf.io/)

這篇文章實則是作者將何愷明(Kaiming He)博士殘差網路Deep Residual Networks與其之前研究的Dilated Convolution相結合的結果。 前者是發表於CVPR2016上的《Deep Residual Learning for Image Recognition

》的成果,後者是發表於ICLR2016會議上的《Multi-Scale Context Aggregation by Dilated Convolutions》的理論研究。論文連結分別是:

  • Deep Residual Learning for Image Recognition(https://arxiv.org/pdf/1512.03385.pdf)

  • Multi-Scale Context Aggregation by Dilated Convolutions(https://arxiv.org/pdf/1511.07122.pdf)

2. Introduction

作者先提出,之前的卷積神經網路(Convolutional Networks)都是通過不斷降低影象精度,直到影象被一個僅保留微弱空間資訊的特徵map表示(一般最後卷積層輸出僅為7×7),最後通過計算類別概率來分類影象。這樣情況下,儘管前面卷積網路做的很好,但是整個網路卻不能獲取一個十分精確的結果,例如一個很小的目標對解析圖片資訊十分重要,但是卻被前面卷積網路因為過多降維和其體積很小而直接忽略掉了。

此外,影象分類的深度網路大多數還作為其他需要更多詳細場景理解的任務的預訓練模型,而很高的空間解析度損失對這些任務而言是非常不利的。

所以卷積神經網路應用在影象分類中,維護圖片空間一定的解析度是一個很重要的任務。現有演算法有以下的做法: up-convolutions,skip connections 和 other post-hoc measures。

但是上面的方法會造成圖片變形,所以本文提出使用Dilated Convolutions方法來解決這個問題。Dilated Convolutions的好處就是既能保持原有網路的感受野(Receptive Field),同時又不會損失影象空間的解析度(224×224輸入的最後卷積層輸出特徵map是28×28)。

3. Dilated Convolutions

Dilated Convolutions是為了在我們不使用池化層和striding前提下,能夠保證與原深度網路諸如FCN每一層同樣的感受野,同時影象輸出的特徵map尺寸不會變小。 實現過程如下圖(摘自論文《Multi-Scale Context Aggregation by Dilated Convolutions》):

 上面實現過程總結來說就是,假設網路輸入為28×28,我們使用padding和stride=1的卷積,卷積filter尺寸都是3×3。 
  (a) 輸入28*28基礎上3×3卷積,也就是經過1-dilated處理,感受野為 3×3,該操作和其他正常卷積操作一樣,沒有區別; 
  (b) 在(a)輸出的基礎上進行 3×3卷積,經過2-dilated處理,也就是隔一個畫素進行與filter點乘最後相加作為中心畫素的特徵值,所以感受野變為 7×7; 
  (c) 在(b)的輸出基礎上進行 3×3卷積,經過4-dilated處理,也就是隔三個畫素進行預filter點乘最後相加作為中心畫素的特徵值,所以感受野變為 15×15;

整個感受野的變化如上圖綠色區域所示。並且我們看出,由於filter卷積過程stride=1以及依靠padding,最後每層輸出的特徵map尺寸都依舊保持為28×28,和原圖同樣的大小。但是我們可以看到,網路無需藉助池化層也能增大後續網路的感受野。


總結來說,Dilated Convolution可以不降低特徵map的尺寸而增大卷積感受野。而之前例如FCN使用pooling下采樣來增大感受野,但隨後又不得不通過Deconvolution或者upsampling來增大特徵map尺寸,這樣先減後增的操作會讓圖片特徵損失很多資訊。

4. Dilated Residual Networks 

好了,有了上面Dilated Convolutions的理解,我們對於這種擴張卷積思想(暫且稱謂它為擴張卷積)如何應用到殘差網路就很清晰了。實際上,我要指出,擴張卷積可以應用到任何CNN上,從而達到保護網路的空間解析度。至於作者為什麼應用和撰寫將其擴充套件到殘差網路,自然是因為殘差網路是當前表現最好的網路之一。 


原始的殘差網路卷積層是經過了5次striding處理達到降取樣的目的,如下圖,每一種顏色對應同一尺度大小的特徵map輸出。(圖片摘自文章《Deep Residual Learning for Image Recognition》,僅顯示網路部分結構)

 

輸出的特徵也就是發生了5次尺度的變化,所以結果對於224×224解析度輸入,最後卷積層輸出為7×7。每一層卷積忽略bias不寫的演算法表示式如下:

但是最終特徵map輸出僅為7×7,最直接增加特徵map解析度的方法就是直接移除層間的subsampling(striding)操作,但是這樣操作不能達到原網路每一層同一感受野,顯然為了高解析度而降低感受野是非常不可取的行為。這裡就體現了擴張卷積的優點了,就是保持原有網路的感受野並且還能提高圖片空間解析度。 這裡由於前面三種類型層(g1,g2,g3)對原始輸入進行了總共8倍的降取樣,28×28解析度足夠識別圖片場景的結構,並且儲存了大多數的圖片資訊去幫助我們正確解析原始影象的畫素級資訊。 所以本文是在前三層網路輸出28×28特徵map之後改變原始網路結構(即改變g4,g5)。前後變化如下圖:

首先作者移除這兩層中striding操作,然後對g4,g5分別進行2-dilated和4-dilated convolutions操作,如下:

原始ResNet中兩層網路解析度分別相對於g3輸出降了2倍和4倍,也就是從28×28降到了14×14和7×7。但是經過擴張卷積操作特徵map的尺度沒有發生任何改變,並且感受野和原ResNet對應層一樣。最終DRN的g5輸出為28×28。 

5. 影象分類和目標標定

影象分類和目標標定在經過上面卷積操作得到特徵map之後,分別進行下面的最後處理:

對於影象分類,操作和ResNet中一樣,進行global average pooling,然後再經過1×1×n卷積得到最終n類得分,從而判斷圖片中目標的分類。
而對於Localization預測,作者直接對g5(28×28)輸出進行1×1×n的卷積來替代global average pooling操作。這樣每一類包含一張對應啟用的預測map。對於map中每個畫素標籤,表示這個畫素屬於該類目標的概率。

DRNs時為了影象分類而設計的網路,同時能夠輸出高解析度的啟用maps。實驗表明,DRNs在影象分類上比原始ResNet表現要出色。此外,DRNs可以直接由輸入而生成高解析度的輸出maps,其中無需對其增加任何其他層,無需多餘引數和再訓練模型從而很好的預測目標位置。

6. Degridding

但是從上圖第三列我們會發現,最終輸出maps會產生很差的網格狀態(gridding artifacts)。作者主要通過Removing max pooling和Adding layers等操作一定程度上改善了最終輸出結果。最終三種類型網路格局如下:

7. Experiments 

影象分類實驗結果如下表,效果比原始ResNet要好。

目標位置預測實驗結果如下圖,效果比原始ResNet也要好。