hi3519yolov8转onnx出错
收藏回复举报
hi3519yolov8转onnx出错
t('forum.solved') 已解决
新人帖
发表于2025-03-24 13:55:44
0 查看

根据hi3519提供的教程进行如下操作:

代码下载命令

git clone https://github.com/ultralytics/ultralytics.git

在源码路径中运行命令

git reset --hard d3f097314f9478de7f995d4e4b4ccb0c6fbc65d3

pip install -r requirements.txt

pip install --upgrade pip

pip install -r requirements_yolov8.txt

git apply --reject 0001-yolov8-rpn.patch

然后执行自训练数据集(基于yolov8n)转 onnx代码:

from ultralytics import YOLO

model = YOLO("best.pt")

success = model.export(format="onnx", opset=13)

提示如下错误:

 File "/home/hi3516/ultralytics/ultralytics/yolo/engine/model.py", line 319, in export 

    return Exporter(overrides=args, _callbacks=self.callbacks)(model=self.model) 

  File "/home/hi3516/conda/envs/yolov8/lib/python3.7/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context 

    return func(*args, **kwargs) 

  File "/home/hi3516/ultralytics/ultralytics/yolo/engine/exporter.py", line 196, in __call__ 

    y = model(im)  # dry runs 

  File "/home/hi3516/conda/envs/yolov8/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1194, in _call_impl 

    return forward_call(*input, **kwargs) 

  File "/home/hi3516/ultralytics/ultralytics/nn/tasks.py", line 203, in forward 

    return self._forward_once(x, profile, visualize)  # single-scale inference, train 

  File "/home/hi3516/ultralytics/ultralytics/nn/tasks.py", line 58, in _forward_once 

    x = m(x)  # run 

  File "/home/hi3516/conda/envs/yolov8/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1194, in _call_impl 

    return forward_call(*input, **kwargs) 

  File "/home/hi3516/ultralytics/ultralytics/nn/modules.py", line 422, in forward 

    x_cat = torch.cat([xi.view(shape[0], self.no, -1) for xi in x], 2) 

  File "/home/hi3516/ultralytics/ultralytics/nn/modules.py", line 422, in <listcomp> 

    x_cat = torch.cat([xi.view(shape[0], self.no, -1) for xi in x], 2) 

RuntimeError: shape '[1, 144, -1]' is invalid for input of size 416000 

这个代码如果将best.pt换成yolov8的基础模型yolov8n.pt ,则可以转换成功;

如果没有git apply --reject 0001-yolov8-rpn.patch

也可以转换成功

本帖最后由 匿名用户2025/03/24 15:47:54 编辑

我要发帖子