Open GalSang17 opened 1 year ago
elif m in [C2fPruned]: #model.4和6的cf2为n=2层数更多需要注意规则 if named_m_base == 'model.4' or named_m_base == 'model.6': args_list=[] for q in range(n): named_m_cv1_bn = named_m_base + ".{}.cv1.bn".format(q) named_m_cv2_bn = named_m_base + ".{}.cv2.bn".format(q)
from_to_map[named_m_cv2_bn] = fromlayer[f] cv1in = ch[f] cv1out = int(maskbndict[named_m_cv1_bn].sum()) cv2out = int(maskbndict[named_m_cv2_bn].sum()) c3fromlayer = [named_m_cv1_bn] named_m_bottle_cv1_bn = named_m_base + ".{}.m.0.cv1.bn".format(q) named_m_bottle_cv2_bn = named_m_base + ".{}.m.0.cv2.bn".format(q) bottle_cv1out = int(maskbndict[named_m_bottle_cv1_bn].sum()) bottle_cv2out = int(maskbndict[named_m_bottle_cv2_bn].sum()) bottle_args = [] #Bottleneck_C2f的传参,int(cv1in/2)是该模块的split操作 bottle_args.append([int(cv1out/2), bottle_cv1out, bottle_cv2out]) from_to_map[named_m_bottle_cv1_bn] = c3fromlayer[0] from_to_map[named_m_bottle_cv2_bn] = named_m_bottle_cv1_bn c3fromlayer.append(named_m_bottle_cv2_bn) from_to_map[named_m_cv2_bn] = [c3fromlayer[-1], named_m_cv1_bn] if q ==0: args = [cv1in, cv1out, cv2out, n, args[-1]] args.insert(3, bottle_args) args_list.append(args) from_to_map[named_m_cv1_bn] = fromlayer[f] else: args = [args_list[0][2], cv1out, cv2out, n, args[-1]] args.insert(3, bottle_args) args_list.append(args) from_to_map[named_m_cv1_bn] = named_m_base + ".0.cv2.bn" c2 = cv2out fromlayer.append(named_m_cv2_bn) print('args_list',args_list) n = 2
这块代码的的处理部分会抛错,错误信息是Traceback (most recent call last): File "prune.py", line 858, in main(opt) File "prune.py", line 831, in main run_prune(*vars(opt)) File "/home/yangyang/miniconda3/envs/py38/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 28, in decorate_context return func(args, kwargs) File "prune.py", line 509, in run_prune pruned_model = ModelPruned(maskbndict=maskbndict, cfg=pruned_yaml, ch=3).cuda() File "/home/yangyang/Code/YOLOv8-OBB/models/yolo_prune.py", line 154, in init** self.model, self.save,self.from_to_map = parse_pruned_model(self.maskbndict,deepcopy(self.yaml), ch=[ch]) # model, savelistW File "/home/yangyang/Code/YOLOv8-OBB/models/yolo_prune.py", line 339, in parse_pruned_model cv1out = int(maskbndict[named_m_cv1_bn].sum()) KeyError: 'model.4.0.cv1.bn',如果我修改了这个错误信息后prune.py中的assert pruned_model_state.keys() == modelstate.keys()这块的断言也会出现问题,请问需要怎么处理,代码是9月6号16:30分后拉取的,应该是最新的,期待回复!
目前只支持v8n的剪枝,后续会优化其他结构的剪枝
@yzqxy 我就是用的v8n的yaml文件呢,稀疏训练的配置是这样 然后test-p.yaml里面是这样子 你看方便加个微信吗,我有一些剪枝的问题想向你请教呢^_^,J-M116
@yzqxy 我就是用的v8n的yaml文件呢,稀疏训练的配置是这样 然后test-p.yaml里面是这样子 你看方便加个微信吗,我有一些剪枝的问题想向你请教呢^_^,J-M116
我这边n是可行的,你再确认一下,你训练的yaml是不是n,剪枝命令也得是n
@yzqxy 我就是用的v8n的yaml文件呢,稀疏训练的配置是这样 然后test-p.yaml里面是这样子 你看方便加个微信吗,我有一些剪枝的问题想向你请教呢^_^,J-M116
我这边n是可行的,你再确认一下,你训练的yaml是不是n,剪枝命令也得是n
再次确认了,就是v8n.yaml,配置截图和报错如下 不过我稀疏训练结束时验证图片的预测效果好像偏移不对,像这样 训练的命令都是按照你的博客来的,单卡训练的
@yzqxy 我就是用的v8n的yaml文件呢,稀疏训练的配置是这样 然后test-p.yaml里面是这样子 你看方便加个微信吗,我有一些剪枝的问题想向你请教呢^_^,J-M116
我这边n是可行的,你再确认一下,你训练的yaml是不是n,剪枝命令也得是n
再次确认了,就是v8n.yaml,配置截图和报错如下 不过我稀疏训练结束时验证图片的预测效果好像偏移不对,像这样 训练的命令都是按照你的博客来的,单卡训练的
你需要用detect.py来测试效果,模型训完产生的val图片有缩放问题,我没改了。 剪枝这块等我再优化一下结构和命令把,我这样看实在看不出来啥问题
@yzqxy 我就是用的v8n的yaml文件呢,稀疏训练的配置是这样 然后test-p.yaml里面是这样子 你看方便加个微信吗,我有一些剪枝的问题想向你请教呢^_^,J-M116
我这边n是可行的,你再确认一下,你训练的yaml是不是n,剪枝命令也得是n
再次确认了,就是v8n.yaml,配置截图和报错如下 不过我稀疏训练结束时验证图片的预测效果好像偏移不对,像这样 训练的命令都是按照你的博客来的,单卡训练的
你需要用detect.py来测试效果,模型训完产生的val图片有缩放问题,我没改了。 剪枝这块等我再优化一下结构和命令把,我这样看实在看不出来啥问题
好呢,那等你的好消息,很优秀的工作^_^!
@yzqxy 我就是用的v8n的yaml文件呢,稀疏训练的配置是这样 然后test-p.yaml里面是这样子 你看方便加个微信吗,我有一些剪枝的问题想向你请教呢^_^,J-M116
我这边n是可行的,你再确认一下,你训练的yaml是不是n,剪枝命令也得是n
再次确认了,就是v8n.yaml,配置截图和报错如下 不过我稀疏训练结束时验证图片的预测效果好像偏移不对,像这样 训练的命令都是按照你的博客来的,单卡训练的
你需要用detect.py来测试效果,模型训完产生的val图片有缩放问题,我没改了。 剪枝这块等我再优化一下结构和命令把,我这样看实在看不出来啥问题
好呢,那等你的好消息,很优秀的工作^_^!
感谢支持!
@yzqxy 我就是用的v8n的yaml文件呢,稀疏训练的配置是这样 然后test-p.yaml里面是这样子 你看方便加个微信吗,我有一些剪枝的问题想向你请教呢^_^,J-M116
我这边n是可行的,你再确认一下,你训练的yaml是不是n,剪枝命令也得是n
再次确认了,就是v8n.yaml,配置截图和报错如下 不过我稀疏训练结束时验证图片的预测效果好像偏移不对,像这样 训练的命令都是按照你的博客来的,单卡训练的
你需要用detect.py来测试效果,模型训完产生的val图片有缩放问题,我没改了。 剪枝这块等我再优化一下结构和命令把,我这样看实在看不出来啥问题
好呢,那等你的好消息,很优秀的工作^_^!
剪枝已经重新优化完,之前确实有点bug,跟现在训的模型结构居然不一样,也是日鬼,现在可以训了
elif m in [C2fPruned]:
model.4和6的cf2为n=2层数更多需要注意规则
这块代码的的处理部分会抛错,错误信息是Traceback (most recent call last): File "prune.py", line 858, in
main(opt)
File "prune.py", line 831, in main
run_prune(*vars(opt))
File "/home/yangyang/miniconda3/envs/py38/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 28, in decorate_context
return func(args, **kwargs)
File "prune.py", line 509, in run_prune
pruned_model = ModelPruned(maskbndict=maskbndict, cfg=pruned_yaml, ch=3).cuda()
File "/home/yangyang/Code/YOLOv8-OBB/models/yolo_prune.py", line 154, in init
self.model, self.save,self.from_to_map = parse_pruned_model(self.maskbndict,deepcopy(self.yaml), ch=[ch]) # model, savelistW
File "/home/yangyang/Code/YOLOv8-OBB/models/yolo_prune.py", line 339, in parse_pruned_model
cv1out = int(maskbndict[named_m_cv1_bn].sum())
KeyError: 'model.4.0.cv1.bn',如果我修改了这个错误信息后prune.py中的assert pruned_model_state.keys() == modelstate.keys()这块的断言也会出现问题,请问需要怎么处理,代码是9月6号16:30分后拉取的,应该是最新的,期待回复!