yolov5prune
yolov5prune copied to clipboard
更改backbone后如何全局剪枝
大佬你好!看了您的代码受益匪浅,这里有两个问题想请教下
- 如何实现对网络不同的层采用不同的剪枝率 或者说代码支持这样的功能嘛,比如同第一层设置剪枝率60% 第二层80%...
- 如果我要更换yolov5网络的backbone,比如换成ghostnet,mobilenetv3 ,之后对整个网络模型全局进行剪枝 包括backbone和head部分,需要做那些工作
- 目前是统计整个网络参加剪枝的bn层weights的norm,然后sort后选取阈值,如果要分层设置剪枝率,可以分层统计该层bn层的weights然后选阈值。不过可以先分析不同层的bn层weights分布,并不是所有层都是适合剪的,一般深层的channel多应该更容易裁剪。
- 替换backbone的话,可以参考论文 Learning Efficient Convolutional Networks Through Network Slimming 提供的思路,可以具体研究下,稀疏训练较为简单,就是: https://github.com/midasklr/yolov5prune/blob/45254c275433e916857e36a33ff43bbfa093dfed/train_sparsity.py#L325-L338
主要是剪纸的时候处理稍微复杂,注意前后层的关系。
我也是改了主干网络 然后进行剪枝,稀疏训练简单 但是剪枝是您的代码 看的不是很懂 能否加点注释 特别是剪枝mask的内容。谢谢
我也改了主干网络后剪枝,请问您成功了吗
请问你们成功了吗?求指教