当前位置: 首页 > news >正文

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

http://www.jsqmd.com/news/728789/

相关文章:

  • 全自动油水分离器技术解析与选型实操推荐:诸城,山东油脂回收设备厂家,矿山污水处理设备,实力盘点! - 优质品牌商家
  • 思源宋体CN免费开源字体完整指南:7种字重一站式解决方案
  • 运维监控POC怎么做才不踩坑?我踩过的5个坑和一份验证清单
  • 浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
  • 拆解汽车电源管理芯:TLF35584的MPS、ENK/WAK引脚配置全解析,从硬件设计到软件初始化
  • 【西瓜带你学Kafka | 第八期】 Kafka的主从同步、消息可靠性、流处理与顺序消费(文含图解)
  • 2026成都阳台防水补漏技术解析与商家选择推荐 - 优质品牌商家
  • 深度学习齿轮箱故障诊断与寿命预测【附代码】
  • STBDAI7220数字输入模块
  • 2026年卡通书包定制厂家怎么选:幼儿园书包定制/开学书包定制/托管班书包定制/拉杆书包定制/男士商务包定制/皮质商务包定制/选择指南 - 优质品牌商家
  • DP World Tour欧洲巡回赛携手HCLTech重建官网与球迷应用
  • 告别固定类别!用YOLO-World+自定义词汇,5分钟打造你的专属物体检测器
  • 工业物联网网关IOT-LINK硬件架构与软件生态解析
  • SoC FPGA在汽车雷达数字信号处理中的优势与应用
  • 从Hal库到标准库:手把手教你将机智云自动代码移植到STM32F103(附完整工程)
  • 如何在 matlab 中调用 taotoken 平台的大模型 api 接口
  • Python正则表达式
  • TFTX11702示教器模块
  • ARM SVE指令集与AES加密硬件加速详解
  • 高新技术企业认定条件解读及申报流程详解
  • 【车辆控制】基于电动车静态PID与动态(动学地平线)自适应巡航控制策略的比较分析附Matlab代码
  • 用Requests和BeautifulSoup4爬取豆瓣电影Top250:手把手教你构建个人电影数据库
  • 03C++ 定位 new 运算符(Placement new)
  • Windows 多层嵌套文件夹批量整理:三级文件一键移到二级文件夹
  • 定氢探头精准把控氢含量——唐山大方汇中仪表
  • SMUDebugTool深度解析:AMD Ryzen处理器底层调试与超频实战指南
  • 微软2026财年Q3财报:营收超800亿美元,AI业务成增长核心支柱!
  • C语言数组专题:从一维到二维,吃透内存与指针
  • 动手学深度学习(PyTorch版)深度详解(5):深度学习计算核心 —— 卷积操作、填充步幅、汇聚层与 LeNet 完整精讲
  • 去年科小高频踩坑点汇总,今年直接规避!