yolov5prune icon indicating copy to clipboard operation
yolov5prune copied to clipboard

更改backbone后如何全局剪枝

Open lrh454830526 opened this issue 3 years ago • 4 comments

大佬你好!看了您的代码受益匪浅,这里有两个问题想请教下

  1. 如何实现对网络不同的层采用不同的剪枝率 或者说代码支持这样的功能嘛,比如同第一层设置剪枝率60% 第二层80%...
  2. 如果我要更换yolov5网络的backbone,比如换成ghostnet,mobilenetv3 ,之后对整个网络模型全局进行剪枝 包括backbone和head部分,需要做那些工作

lrh454830526 avatar Dec 15 '21 10:12 lrh454830526

  1. 目前是统计整个网络参加剪枝的bn层weights的norm,然后sort后选取阈值,如果要分层设置剪枝率,可以分层统计该层bn层的weights然后选阈值。不过可以先分析不同层的bn层weights分布,并不是所有层都是适合剪的,一般深层的channel多应该更容易裁剪。
  2. 替换backbone的话,可以参考论文 Learning Efficient Convolutional Networks Through Network Slimming 提供的思路,可以具体研究下,稀疏训练较为简单,就是: https://github.com/midasklr/yolov5prune/blob/45254c275433e916857e36a33ff43bbfa093dfed/train_sparsity.py#L325-L338

主要是剪纸的时候处理稍微复杂,注意前后层的关系。

midasklr avatar Dec 16 '21 02:12 midasklr

我也是改了主干网络 然后进行剪枝,稀疏训练简单 但是剪枝是您的代码 看的不是很懂 能否加点注释 特别是剪枝mask的内容。谢谢

hhnxAI avatar Mar 28 '22 02:03 hhnxAI

我也改了主干网络后剪枝,请问您成功了吗

AustinzzZ-1997 avatar Feb 06 '23 12:02 AustinzzZ-1997

请问你们成功了吗?求指教

Doris-miao avatar Sep 25 '23 08:09 Doris-miao