paper: ERFNet: Efficient Residual Factorized ConvNet for Real-time Semantic Segmentation
code: PyTorch
Abstract
- ERFNet可以看作是對ResNet結構的又一改變,同時也是對ENet的改進。相對ENet,其網絡結構的改進,一方面是將residual module改成non-bottleneck module,同時內部全部使用1D的cov(非對稱卷積)。另一方面,移除encode中的層和decode層之間的long-range鏈接,同時所有的downsampling模塊都是一組並行的max pooling和conv。
- ERFNet的non-bottleneck module示意圖如下:
- ERFNet的整體網絡結構示意圖如下:
- 由整體網絡結構可以發現,ERFNet也是encode較大、decode較小的模式。encode模塊全部有non-bottleneck module組成,且每個non-bottleneck module的第二組非對稱卷積都用到了不同比例的dilated conv
Details
- 為什么選擇non-bottleneck module?為什么在non-bottleneck module中全部使用非對稱卷積?
- 前者,論文中一言以蔽之:隨着網絡深度的增強,non-bottleneck的ResNet是能夠比bottleneck獲得更大的accuracy的(但是論文中,表格3可以看出,實際只在validation數據上有一處是non-bottleneck結構的精度比bottleneck結構高的,但是模型參數和inference time均減少了不少)
- 如上一條最后所述,將標准的conv轉成兩個非對稱conv的組合,能夠降低參數量,且提速很多,同時精度也不會有很多損失。(論文中,也理論分析了一下)
- 同時,作者也闡述了,這種non-bottleneck-1D結構,也同樣可以遷移到其他任務中,且取得不錯的效果
- 模型結構
- 模型也是Encode-Decode結構,前者較大,后者較小。同時,Encode模塊主要有non-bottleneck-1D和downsampling模塊組成,Decode模塊主要有upsampling和non-bottleneck-1D模塊組成。
- non-bottleneck-1D模塊大部分都采用了dilated conv。注意,不同層dilated conv的dilated rate不同,而且,都是non-bottleneck-1D的第二組非對稱conv中使用的。(這應該是能夠一定程度上規避dilated conv的棋盤效應)
- downsample全部是一組並行的maxpooling和conv操作
- decode模塊就是簡單的deconv操作
- 評估准則和訓練方式
- 使用的是IoU標准,即\(IoU = TP / (TP + FP + TN)\)
- 訓練方式:
- 作者的訓練過程分為兩步,第一步是訓練encode模塊,第二步是訓練decode模塊。而Encode模塊的訓練,又實驗了兩種,一種是from scratch,一種是pretrain,結果對比如下:
- 和其他模型的對比如下(在同等精度下,速度具有很大的優勢):
- 作者的訓練過程分為兩步,第一步是訓練encode模塊,第二步是訓練decode模塊。而Encode模塊的訓練,又實驗了兩種,一種是from scratch,一種是pretrain,結果對比如下:
寫在后面