YOLOv3通道+层剪枝,参数压缩98%,砍掉48个层,提速2倍!

本文介绍了针对YOLOv3的通道和层剪枝方法,通过这种方法在手部检测任务中,模型精度几乎不变,但参数减少98%,层数减少48个,推理速度提升2倍。作者提供了开源实现,允许灵活地在不同数据集上应用剪枝策略,包括通道剪枝和层剪枝的组合,以实现模型的深度和宽度压缩。
摘要由CSDN通过智能技术生成

点击我爱计算机视觉标星,更快获取CVML新技术


尽管目标检测新算法层出不穷,但在实际工程项目中不少52CV群友还是念着YOLOv3的好。将其部署到边缘设备等时,模型剪枝是非常有必要的,毕竟有原始模型有239M的参数,剪枝后往往也能提速不少。

比如之前52CV曾经分享过:

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

YOLOv3剪枝再升级!

上述剪枝是减少模型通道数,而今天向大家介绍的工程可以实现通道和层的双向剪枝,在oxford hand 数据集hand检测问题中,作者实验中可以实现精度下降很小而参数减少 98%,砍掉 48 个层,提速 2 倍!(不同问题参数减少和提速比例不同,在作者另一个私人项目中,实现了提速 3 倍。)

作者已将其开源,仅需要几行命令就可以在自己数据集中实现更加灵活和搜索空间更大的剪枝。

工程地址:

https://github.com/tanluren/yolov3-channel-and-layer-pruning

欢迎大家给大佬加Star!

以下内容为原作者52CV群友漂的投稿。

本项目以ultralytics/yolov3(https://github.com/ultralytics/yolov3)为基础实现,根据论文Learning Efficient Convolutional Networks Through Network Slimming (ICCV 2017)原理基于bn层Gmma系数进行通道剪枝,下面引用了几种不同的通道剪枝策略,并对原策略进行了改进,提高了剪枝率和精度;在这些工作基础上,又衍生出了层剪枝,本身通道剪枝已经大大减小了模型参数和计算量,降低了模型对资源的占用,而层剪枝可以进一步减小了计算量,并大大提高了模型推理速度;通过层剪枝和通道剪枝结合,可以压缩模型的深度和宽度,某种意义上实现了针对不同数据集的小模型搜索。

项目的基本工作流程是,使用yolov3训练自己数据集,达到理想精度后进行稀疏训练,稀疏训练是重中之重,对需要剪枝的层对应的bn gamma系数进行大幅压缩,理想的压缩情况如下图,然后就可以对不重要的通道或者层进行剪枝,剪枝后可以对模型进行微调恢复精度,后续会写篇博客记录一些实验过程及调参经验,在此感谢行云大佬(https://github.com/zbyuan)的讨论和合作!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值