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僅通過結構上的優化取得了很不錯的性能和速度,讀完論文可以學到很多網絡設計的小竅門
如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的算法工程筆記】

