YOLOv3剪枝壓縮99.04%參數,精度不變

基於 Learning Efficient Convolutional Networks Through Network Slimming (ICCV 2017) 論文的模型壓縮。

目前有很多的開源實現,基於各種方法對YOLOv3進行裁剪和壓縮,例如:

[SlimYOLOv3]

[YOLOv3-model-pruning]

[YOLOv3-complete-pruning]

等等...

數據集

收費卡口的車輛車輪數據,2266訓練集,530驗證集。

原理

對於一個訓練好的模型,會發現部分卷積核權重很小,因此相應的激活也會很小,這部分卷積核的貢獻其實是很小的,裁剪這些卷積核後再微調是可以恢復到之前的精度,這是在未作任何限制情況下,如果對權重做某些限制,如L1正則,那麼訓練的參數會比較稀疏,更加利於裁剪。論文給出,在BN層的Scale層其實相當於對激活的一個線性變換,那麼Scale層的Gamma做一個L1

正則,會學習到比較稀疏的Gamma,這部分Gamma會導致卷積通過BN的Scale層後輸出很小,這樣的通道是可以裁剪掉的,這就是論文的核心思想。詳細原理參考相關論文。

裁剪流程

稀疏訓練->裁剪->微調

其中最關鍵的當屬稀疏訓練。

實驗過程記錄

Metric mAP Parameters Inference Model Size/M Parameters Decrease
orignal YOLOv3 0.899230 61529119 0.0170 246.5 0
pruned 0.899493 589799 0.0074 2.4 99.04%

可以看到,極限壓縮YOLOv3的大小僅僅2.4M,參數雖然少依然可以獲得良好的性能,一方面是因爲我們的檢測任務相對單一和簡單,類別比較少,原始的YOLOv3模型龐大,能夠處理更多的複雜(COCO等)的檢測任務,對於簡單任務是不需要那麼多參數的,實際測試發現,壓縮後的模型在大多數任務上依然有很好的表現,但是在極端場景下的檢測相對不那麼魯棒,魚與熊掌不可兼得。

壓縮後的模型實測效果如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章