YOLOv3模型剪枝,瘦身80%,提速100%,精度基本不變

  • 2019 年 12 月 27 日
  • 筆記

如果要在實際應用中部署目標檢測,你會想到哪項算法?

在52CV目標檢測交流群里,被提及最多的,恐怕就是YOLOv3了。

雖然新出的一些算法號稱「完勝」「吊打」某某某算法,但YOLOv3 仍是被推薦最多的。

首先它有着目前為止還不錯的精度表現,而且計算速度較快,適合在移動端、邊緣設備部署。

另一個重要原因是,YOLOv3是被很多人使用驗證過的模型,被某個數據庫驗證過的某算法精度好很重要,但被社區大量驗證過效果OK的算法更重要。

今天向大家推薦一個Github新工程,對YOLOv3進行模型剪枝:

https://github.com/Lam1360/YOLOv3-model-pruning

這份代碼是基於Python 3.6, PyTorch 實現的。

作者用 YOLOv3 做人手檢測(在 oxford hand 數據集上訓練的),並進行了模型剪枝,剪枝後YOLOv3 模型的參數量減少 80% ,FLOPs 降低 70%,推斷的速度提高了100%,而 mAP 基本保持不變!

可謂是相當成功了!

剪枝前後的對比

1. 部分卷積層的通道數大幅度減少

剪枝前後指標對比:

精度還略微上升了!

作者使用的剪枝算法來自:

Learning Efficient Convolutional Networks Through Network Slimming (ICCV 2017)

https://arxiv.org/abs/1708.06519

剪枝步驟也非常簡單:

作者稱,後續還會在其他數據集上做實驗。

看來剪枝在實際應用部署時還真的很重要呢!