news 2026/5/1 1:49:22

05_yolox_s的后处理截断并导出onnx

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
05_yolox_s的后处理截断并导出onnx

目的是得到以下模型:

1、
官方yolox_s的源码和yolox_s.pth获取
https://github.com/Megvii-BaseDetection/YOLOX

2、
修改yolo_head.py的forward,替换为以下

defforward(self,xin,labels=None,imgs=None):outputs=[]fork,(cls_conv,reg_conv,stride_this_level,x)inenumerate(zip(self.cls_convs,self.reg_convs,self.strides,xin)):x=self.stems[k](x)cls_feat=cls_conv(x)reg_feat=reg_conv(x)cls_output=self.cls_preds[k](cls_feat)# [B, C, H, W]reg_output=self.reg_preds[k](reg_feat)# [B, 4, H, W]obj_output=self.obj_preds[k](reg_feat)# [B, 1, H, W]# 🚨 关键:不要 decode,不要 concatoutputs.append(reg_output)outputs.append(obj_output)outputs.append(cls_output)returnoutputs

3、
修改export_onnx.py的main()为以下

defmain():args=make_parser().parse_args()logger.info("args value: {}".format(args))exp=get_exp(args.exp_file,args.name)exp.merge(args.opts)ifnotargs.experiment_name:args.experiment_name=exp.exp_name model=exp.get_model()ifargs.ckptisNone:file_name=os.path.join(exp.output_dir,args.experiment_name)ckpt_file=os.path.join(file_name,"best_ckpt.pth")else:ckpt_file=args.ckpt# load the model state dictckpt=torch.load(ckpt_file,map_location="cpu")model.eval()if"model"inckpt:ckpt=ckpt["model"]model.load_state_dict(ckpt)model=replace_module(model,nn.SiLU,SiLU)model.head.decode_in_inference=Falselogger.info("loading checkpoint done.")dummy_input=torch.randn(args.batch_size,3,exp.test_size[0],exp.test_size[1])output_names=[]output_names=["reg1","obj1","cls1","reg2","obj2","cls2","reg3","obj3","cls3",]torch.onnx._export(model,dummy_input,args.output_name,input_names=[args.input],output_names=output_names,dynamic_axes={args.input:{0:'batch'},**{name:{0:'batch'}fornameinoutput_names}}ifargs.dynamicelseNone,opset_version=args.opset,)logger.info("generated onnx model named {}".format(args.output_name))ifnotargs.no_onnxsim:importonnxfromonnxsimimportsimplify# use onnx-simplifier to reduce reduent model.onnx_model=onnx.load(args.output_name)model_simp,check=simplify(onnx_model)assertcheck,"Simplified ONNX model could not be validated"onnx.save(model_simp,args.output_name)logger.info("generated simplified onnx model named {}".format(args.output_name))

4、
导出指令

python tools/export_onnx.py-fexps/default/yolox_s.py-cyolox_s.pth --output-name yolox_s.onnx--opset12--output.

上述完成就可得到需要的onnx

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 1:39:35

有机溶剂回收设备厂家:行业现状、技术路径与选型指南

随着化工、制药、电子等行业环保要求趋严,有机溶剂回收设备成为企业降本增效、合规排放的核心装备。行业报告显示,2025 年国内有机溶剂回收设备市场规模突破 80 亿元,年复合增长率超 15%,但市场供给端呈现 “量多质不均” 的格局&…

作者头像 李华
网站建设 2026/5/1 1:39:10

2025届最火的十大降AI率神器实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 核心策略是降低文章被识别成 AIGC 生成内容,其在于消解机器生成的规律性特征。其…

作者头像 李华