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

剪枝步骤也非常简单:

作者称,后续还会在其他数据集上做实验。

看来剪枝在实际应用部署时还真的很重要呢!