在Yolov8中model.export后self.export=false问题(记录)

遇到一个问题是自己创建了新的Detect检测头,但是在导出模型时,想要修改输出格式,在yolo中可以通过if self.export:来修改网络的返回值格式
当使用model.export()导出时,理论上会自动将export设置为True
但是在实际中发现export=false,于是通过调试发现在ultralytics/engine/exporter.py
for m in model.modules():
   if isinstance(m, (Detect, RTDETRDecoder)):  # includes all Detect subclasses like Segment, Pose, OBB
       m.dynamic = self.args.dynamic
       m.export = True
       m.format = self.args.format
   elif isinstance(m, C2f) and not any((saved_model, pb, tflite, edgetpu, tfjs)):
       # EdgeTPU does not support FlexSplitV while split provides cleaner ONNX graph
       m.forward = m.forward_split
需要对自己的检测头进行实例,加入到代码中,如下
if isinstance(m, (Detect, RTDETRDecoder,MyDetect)):

再次执行model.export() self.export则为True

但是这个方法并不是最规范的,设置自己的类继承Detect会更好MyDetect(Detect)

参考地址:github

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值