Zoinye 2024-07-04 18:38 采纳率: 100%
浏览 26
已结题

yolov5使用export.py将pt文件转为onnx报错

在yolov5使用export.py将pt文件转为onnx时,报错:

(yolov5) PS D:\zn\yolov5-fire> python export.py --include onnx --opset 11
export: weights=runs/train/exp41/weights/best.pt, img_size=[320, 320], batch_size=1, device=cpu, include=['onnx'], half=False, inplace=False, train=False, optimize=False, dynamic=False, simplify=False, opset=11
YOLOv5  72f8dad torch 1.8.2+cu111 CPU

Fusing layers... 
Model Summary: 230 layers, 9539697 parameters, 0 gradients, 19.2 GFLOPs

PyTorch: starting from runs/train/exp41/weights/best.pt (19.3 MB)

ONNX: starting export with onnx 1.13.1...
D:\zn\yolov5-fire\models\yolo.py:58: TracerWarning: Converting a tensor to a Python boolean might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!
  if self.grid[i].shape[2:4] != x[i].shape[2:4] or self.onnx_dynamic:
ONNX: export failure: Exporting the operator deform_conv2d to ONNX opset version 11 is not supported. Please feel free to request support or submit a pull request on PyTorch GitHub.

Export complete (1.63s)
Results saved to D:\zn\yolov5-fire\runs\train\exp41\weights
Visualize with https://netron.app


  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-04 18:38
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的报错信息,问题在于尝试将PyTorch中的deform_conv2d操作符导出到ONNX操作时,不支持目标opset版本(即版本11)。这可能是由以下原因导致的:

    1. ONNX Operator的支持问题:在ONNX的不同版本中,不是所有的PyTorch操作符都被完全支持。deform_conv2d可能在新版本的ONNX中未被完全支持,或者支持的版本与您尝试使用的版本不匹配。
    2. PyTorch与ONNX的兼容性问题:在某些情况下,特定的PyTorch版本可能与某些ONNX版本不完全兼容。这可能是由库之间的差异或更新导致的。

    为了解决这个问题,您可以尝试以下方法:

    方法一:升级或降级ONNX和PyTorch版本

    确保您的PyTorch和ONNX库是最新的版本,或者尝试降级到一个更稳定的版本,以确保deform_conv2d操作符被支持。您可以使用以下命令来更新库:

    pip install --upgrade torch torchvision onnx onnxruntime
    

    方法二:使用不同的opset版本

    尝试使用不同的opset版本进行导出。例如,尝试使用更高的opset版本(如opset 13或更高),以查看是否支持deform_conv2d。您可以在export.py脚本中指定opset版本。

    方法三:检查并修改YOLOv5代码

    考虑查看YOLOv5的代码以确认是否有办法避免使用不被直接支持的deform_conv2d操作或将其替换为等效的、受支持的操作。这可能涉及到模型的某些部分需要重新实现或使用不同的API调用。这可能是一个复杂的解决方案,需要深入了解YOLOv5的内部结构。

    方法四:使用其他工具或库进行转换

    考虑使用其他工具或库将YOLOv5模型从PyTorch转换为ONNX格式,如使用官方的PyTorch提供的工具或其他第三方工具。确保所选工具支持所需的操作符。这种方法可能需要一些额外的配置和调整。不过根据您的具体情况和需求来选择最适合的解决方案。希望这些建议能帮助您解决问题!如果您需要进一步的帮助或有其他问题,请随时告诉我。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月15日
  • 已采纳回答 7月7日
  • 创建了问题 7月4日

悬赏问题

  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥20 python忆阻器数字识别
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊