Block - Factorized Residual Layers
結構特徵
網絡結構的關鍵點:A novel layer that uses residual connections and factorized convolutions
跳躍連接:使用ResNet網絡結構,讓網絡學習殘差函數來加速訓練
分解卷積:通過將2D卷積操作等效分解爲多個1D卷積操作,在獲得與2D相似準確率的情況下大幅減少了參數量
ERFNet網絡架構就是基於Non-bottlenect block結構的順序堆疊型網絡,不包含多級特徵圖融合或block間的長距離範圍跳躍連接。
關於跳躍連接作者分析了文章[6]中的ResNet block,包含Non-bottleneck和Bottleneck兩種;作者提到兩種版本實際上具有相似的參數量(作者是基於feature map降低4倍的情況下對比的,很明顯bottleneck大幅降低了參數量),並且準確率也差不多;但是bottleneck需要更少的計算資源,並且當網絡深度增加時計算量的增長不大。
從[6] [7] [12]作者說非bottleneck結構相對於bottlneck結構可以從深度獲得更高的準確率,意思是bottlneck結構仍然存在梯度彌散的問題。
卷積分解理論作者引用了[22],列出了任意2D濾波器可以由若干個1D濾波器組合的數學公式;作者主要對Non-bottleneck進行了改造,ERFNet架構中使用的也是Non-bottlenect-1D block;
寬度擴展
作者說從濾波器和特徵圖的計算量可以得出Non-bottleneck-1D直接增加了網絡結構的width,後面也有篇幅提到了這個block帶來的是wider layer的效果。
這裏沒有太理解他說的本意是什麼,大概意思可能是這個block降低了計算量;如果從相同計算量角度,那麼這個block可以獲取更wider的信息?
參數分析
文中提了三種Block結構,實際上對應的應該還有一種:對Bottleneck的1D分解;這個網絡在文中有提到且分析了一下參數量,但是沒有繼續往下做實驗(這個結構在ENet中使用了,表示爲asymmetric conv);
四種block在相應feature map下的參數量:
上表計算的參數量應該是不帶bias的數值,針對單個block參數量分析可以參考:http://cs231n.github.io/convolutional-networks/#conv,根據表中給定的 ,參數量數值計算如下:
Residual Block | without bias | with bias |
---|---|---|
bottleneck | 1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632 | (1x1x256+1)x64 + (3x3x64+1)x64 + (1x1x64+1)x256 = 70016 |
non-bottleneck | 3x3x64x64x2 = 73728 | (3x3x64+1)x64x2 = 73856 |
bottleneck-1D | 1x1x256x64 + 3x1x64x64x2 + 1x1x64x256 = 57344 | (1x1x256+1)x64 + (3x1x64+1)x64x2 + (1x1x64+1)x256 = 57792 |
non-bottleneck-1D | 3x1x64x64x4 = 49152 | (3x1x64+1)x64x4 = 49408 |
平臺測試
文中所述的網絡準確率在實時分割網絡裏面基本上是最優的,原文可看到實驗結果這裏不做對比;此外文中提到的網絡前向速度和我在海思NPU平臺測試的結果有出入。
問題跟進
關於Bottleneck-1D的實驗和wider layer的解釋,看作者後續會不會有什麼跟進:
https://github.com/Eromera/erfnet_pytorch/issues/45
Miscellaneous
近來的發展趨勢是將所有分類問題統一爲語義分割任務
相關工作
FCN 作爲第一個呈現端到端語義分割的網絡;通過將分類網絡變爲全卷積並上採樣輸出特徵圖,網絡輸出結果比較粗糙;這是由於在分類網絡中通常都是利用大的降採樣步驟來獲取更多的原圖信息;爲了獲得更精細的輸出,也通過將淺層的特徵圖與深層的跳躍鏈接;這裏上採樣用的是deconvolution層
SegNet 通過使用max-pooling indices的大decoder來提升unpooling的精度,segnet decoder的up-sampling使用的是帶mask的upsample層
DeepLab 利用CRF來作爲後端refine粗糙邊界
CRFasRNN 將CRF整合入卷積架構 兩者利用CRF的結構極大地增加了計算量
DeepLab2 將ResNet-101 SPP CRF整合
RefineNet 提出了一種通過多路優化的網絡,通過長範圍殘差連接來引入降採樣通路上的多種分辨率信息
FRRN 提出了一種類ResNet結構的網絡,通過兩個處理流程來將多尺度信息和像素級準確率組合;一個是在原圖分辨率的處理流程,另外一個實在降採樣操作過程中的流程
LRR 提出了一種通過拉普拉斯金字塔構造不同尺度特徵的複雜結構
ENet 也將ResNet結構引入了分割任務,但是爲了計算效率在精度上做了較大的犧牲