Torch-Pruning icon indicating copy to clipboard operation
Torch-Pruning copied to clipboard

yolov8剪枝例子问题?

Open huangzongmou opened this issue 1 year ago • 21 comments

大佬!yolov8剪枝例子,我看没有发现稀疏化训练,那剪枝的依据是什么?没有稀疏化训练怎么可以直接剪枝,然后再训练。是不是例子不完善,需要自己去稀疏化训练么?不是很理解。

base_macs, base_nparams = tp.utils.count_ops_and_params(model.model, example_inputs)
for g in pruner.step(interactive=True):
    g.prune()

pruned_macs, pruned_nparams = tp.utils.count_ops_and_params(pruner.model, example_inputs)
print(model.model)
print("Before Pruning: MACs=%f G, #Params=%f M" % (base_macs / 1e9, base_nparams / 1e6))
print("After Pruning: MACs=%f G, #Params=%f M" % (pruned_macs / 1e9, pruned_nparams / 1e6))

# Fine-tuning (Post-training)
# Please replace the coco128.yaml with coco.yaml and choose an appropriate learning rate for finetuning
# This part works properly but the final performance has not been validated yet
model.train(data='coco128.yaml', epochs=100, imgsz=640)

huangzongmou avatar Apr 18 '23 08:04 huangzongmou

我在yolov8 加入trainer.py self.pruner.regularize(self.model,self.loss)是不是就可以稀疏化训练了 if ni - last_opt_step >= self.accumulate: if self.pruner is not None: self.pruner.regularize(self.model,self.loss) self.optimizer_step()

huangzongmou avatar Apr 18 '23 08:04 huangzongmou

您好,直接剪枝+Post-training也是可以的哈,稀疏训练的代价和难度实际上也不小。个人感觉做应用的话,直接剪枝比稀疏再剪更实用一些。

这里的yolo8 pruning只是个极简的例子,如果要稀疏训练确实需要修改trainer代码,类似

loss.backward()
self.pruner.regularize(self.model, reg=1e-5) # <- BNScalePruner
self.optimizer.step()

VainF avatar Apr 18 '23 09:04 VainF

您好!您的邮件已收到,尽快给你回复。谢谢                                                      黄总谋!

huangzongmou avatar Apr 18 '23 09:04 huangzongmou

您好,直接剪枝+Post-training也是可以的哈,稀疏训练的代价和难度实际上也不小。个人感觉做应用的话,直接剪枝比稀疏再剪更实用一些。

这里的yolo8 pruning只是个极简的例子,如果要稀疏训练确实需要修改trainer代码,类似

loss.backward()
self.pruner.regularize(self.model, reg=1e-5) # <- BNScalePruner
self.optimizer.step()

明白了,谢谢,我已经进行稀疏化训练了。直接剪枝感觉怪怪的。

huangzongmou avatar Apr 18 '23 09:04 huangzongmou

您好,直接剪枝+Post-training也是可以的哈,稀疏训练的代价和难度实际上也不小。个人感觉做应用的话,直接剪枝比稀疏再剪更实用一些。 这里的yolo8 pruning只是个极简的例子,如果要稀疏训练确实需要修改trainer代码,类似

loss.backward()
self.pruner.regularize(self.model, reg=1e-5) # <- BNScalePruner
self.optimizer.step()

明白了,谢谢,我已经进行稀疏化训练了。直接剪枝感觉怪怪的。

Hello hello, 方便问下稀疏化有结果吗?因为我看直接剪枝Detector 的效果普通掉点很厉害,想问下你关于稀疏化后的效果?

Janspiry avatar Apr 20 '23 06:04 Janspiry

您好,直接剪枝+Post-training也是可以的哈,稀疏训练的代价和难度实际上也不小。个人感觉做应用的话,直接剪枝比稀疏再剪更实用一些。 这里的yolo8 pruning只是个极简的例子,如果要稀疏训练确实需要修改trainer代码,类似

loss.backward()
self.pruner.regularize(self.model, reg=1e-5) # <- BNScalePruner
self.optimizer.step()

明白了,谢谢,我已经进行稀疏化训练了。直接剪枝感觉怪怪的。

Hello hello, 方便问下稀疏化有结果吗?因为我看直接剪枝Detector 的效果普通掉点很厉害,想问下你关于稀疏化后的效果?

你是在群里那位么?我们私聊。

huangzongmou avatar Apr 20 '23 09:04 huangzongmou

额我没加相关群,可以给个联系方式吗

Janspiry avatar Apr 20 '23 09:04 Janspiry

什么群?麻烦也带我一个👀

VainF avatar Apr 20 '23 11:04 VainF

求相关群链接

dercaft avatar Apr 20 '23 18:04 dercaft

什么群?麻烦也带我一个人👀

其它技术交流群,有人看到我问问题他想知道结果。

huangzongmou avatar Apr 21 '23 01:04 huangzongmou

求相关群链接

啥连接?

huangzongmou avatar Apr 21 '23 01:04 huangzongmou

求相关群链接

其它技术交流群,有人看到我问问题他想知道结果。

huangzongmou avatar Apr 21 '23 01:04 huangzongmou

额我没加相关群,可以给个联系方式吗

其它技术交流群,有人看到我问问题他想知道结果。

huangzongmou avatar Apr 21 '23 01:04 huangzongmou

咱也可以建一个群多多交流,我去上传个二维码

VainF avatar Apr 21 '23 05:04 VainF

image

各位大佬有兴趣可以来多多交流~

VainF avatar Apr 21 '23 05:04 VainF

重新发一个链接吧 失效了 我也想学习下

ghost avatar May 04 '23 06:05 ghost

是呀,大佬可以再给个链接不?

putizi-super avatar May 12 '23 14:05 putizi-super

麻烦移步项目主页,上面的二维码是新的

VainF avatar May 12 '23 22:05 VainF

麻烦移步项目主页,上面的二维码是新的

失效了

daixiangzi avatar Jun 07 '23 06:06 daixiangzi

您好!您的邮件已收到,尽快给你回复。谢谢                                                      黄总谋!

huangzongmou avatar Jun 07 '23 06:06 huangzongmou

@huangzongmou 请问直接剪枝和稀疏训练后再剪枝,精度差多少

TnoobT avatar Oct 10 '23 07:10 TnoobT