PeleeNet是DenseNet的一個變體,沒有使用流行的深度可分離卷積,PeleeNet和Pelee僅通過結構上的優化取得了很不錯的效能和速度,讀完論文可以學到很多網路設計的小竅門。
來源:曉飛的演算法工程筆記 公眾號
論文: Pelee: A Real-Time Object Detection System on Mobile Devices
Introduction
基於DenseNet的稠密連線思想,論文通過一系列的結構優化,提出了用於移動裝置上的網路結構PeleeNet,並且融合SSD提出目標檢測網路Pelee。從實驗來看,PeleeNet和Pelee在速度和精度上都是不錯的選擇。
PeleeNet
PeleeNet基於DenseNet思想,加入了幾個關鍵的改進。
Two-Way Dense Layer
受GoogLeNet的啟發,論文將原來的dense layer改為2-way dense layer,如圖1b所示,新的路徑疊加兩個$3\times 3$卷積來學習獲取不同的感受域特徵,特別是大物體特徵。
Stem Block
DenseNet使用stride=2的$7\times 7$卷積對輸入進行初步處理,受Inception-v4和DSOD啟發,論文設計了一個高效的stem block,結構如圖2所示,兩條路徑能提取不同的特徵。這樣可以在不帶來過多計算耗時的前提下,提高網路的特徵表達能力。
Dynamic Number of Channels in Bottleneck Layer
在DenseNet中,使用bottleneck layer進行輸入特徵的壓縮,但是bottleneck layer的輸出固定為dense layer輸出的4倍。在網路的早些層中,會存在bottleneck layer的輸出比輸入更多的情況,導致效率下降。為此,論文將bottleneck layer的輸出大小跟輸入掛鉤,保證不大於輸入大小,從圖4可以看出,修改後計算效率提升了一倍。
Transition Layer without Compression
DenseNet在dense layer間使用transition layer進行特徵維度壓縮,壓縮比為0.5。論文通過實驗發現這個操作會減弱網路特徵的表達能力,所以將transition layer的輸出維度固定為輸入的大小,不再壓縮。
Composite Function
DenseNet使用Conv-Relu-BN的預啟用方式,論文將其修改為Conv-BN-Relu的後啟用方式,這樣卷積層和BN層在inference時能夠進行合併運算,提高計算速度。另外,論文在最後的dense layer新增了$1\times 1$卷積,用以獲得更強的特徵表達能力。
Architecture
PeleeNet的結構如表1所示,包含一個stem block、4個特徵提取階段以及最後的stride為2的平均池化層。論文糾結使用3個特徵提取階段還是4個特徵提取階段,3個階段需要stem block更多地縮減特徵圖大小,考慮到開頭過快地減小特徵圖會大小會減弱網路的表達能力,最終仍採用4個階段。
Pelee
基於SSD,將PeleeNet作為主幹網路並做了幾個優化,提出目標檢測網路Pelee,主要的優化點如下:
- Feature Map Selection,使用5個尺寸的特徵圖(19x19, 10x10, 5x5, 3x3, 1x1),為了減少計算消耗,沒有使用38x38的特徵圖。
- Residual Prediction Block,在進行預測之前,使用圖4的ResBlock進行特徵提取,保證特徵表達能力。
- Small Convolutional Kernel for Prediction,由於使用了ResBlock進行了特徵的進一步提取,在預測部分可以使用$1\times 1$卷積核加速,準確率與$3\times 3$卷積差不多。
Experiment
PeleeNet
對PeleeNet的key feature進行驗證。
與其它輕量級網路對比。
PeleeNet在各種裝置上的實際推理速度對比。
Pelee
Pelee與其它網路的設定對比。
各改進措施的效能對比。
與其它網路的在VOC上的效能對比。
各裝置上的推理速度對比。
與其它網路的在COCO上的效能對比。
CONCLUSION
PeleeNet是DenseNet的一個變體,沒有使用流行的深度可分離卷積,PeleeNet和Pelee僅通過結構上的優化取得了很不錯的效能和速度,讀完論文可以學到很多網路設計的小竅門
如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的演算法工程筆記】