Tencent / ncnn

ncnn is a high-performance neural network inference framework optimized for the mobile platform
Other
20.09k stars 4.13k forks source link

使用onnx2ncnn转换模型,部分权重变为-nan #5599

Closed sen-O closed 1 month ago

sen-O commented 1 month ago

error log | 日志或报错信息 | ログ

使用onnx2ncnn转换模型,部分权重变为-nan,使用netron可视化源onnx模型权重如下:

ncnn

使用ncnn读取模型权重并打印结果如下:

error

对比发现似乎所有权重后移了一位,导致第一位权重变成-nan,最后一位权重缺失,整体权重错位。

同时转换输出的bin文件无法使用netron可视化

bin'

model | 模型 | モデル

  1. original model https://github.com/opencv/opencv_zoo/blob/main/models/object_tracking_vittrack/object_tracking_vittrack_2023sep.onnx

    how to reproduce | 复现步骤 | 再現方法

    读取ncnn模型打印权重 main

wzyforgit commented 1 month ago

用pnnx转

nihui commented 1 month ago

针对onnx模型转换的各种问题,推荐使用最新的pnnx工具转换到ncnn In view of various problems in onnx model conversion, it is recommended to use the latest pnnx tool to convert your model to ncnn

pip install pnnx
pnnx model.onnx inputshape=[1,3,224,224]

详细参考文档 Detailed reference documentation https://github.com/pnnx/pnnx https://github.com/Tencent/ncnn/wiki/use-ncnn-with-pytorch-or-onnx#how-to-use-pnnx