使用已经训练好的Unet模型导出ONNX模型无反应

1.芯片型号:X3派

2.天工开物开发包OpenExplorer版本:XJ3_OE_2.5.2

3.问题定位:模型转换为onnx没有报错,但是也没有生成onnx模型

4.问题具体描述

使用export_onnx.py脚本执行以下命令

python3 tools/export_onnx.py --config configs/segmentation/unet.py --ckpt float-checkpoint-best.pth.tar --onnx-name unet.onnx

没有报具体错误,也没有生成onnx模型,终端输出的信息感觉有用的如下:

/horizon_plugin_pytorch/nn/interpolate.py:69: UserWarning: default upsampling behavior when mode=bilinear is changed to align_corners=False since torch 0.4.0. Please specify align_corners=True if the old behavior is desired.

warnings.warn(

输出到这里就戛然而止了。

我以为是路径配置问题,又使用如下命令,还是一样。

python3 tools/export_onnx.py --config configs/segmentation/unet.py --ckpt tmp_models/dwunet_seg/float-checkpoint-best.pth.tar --onnx-name tmp_models/dwunet_seg/unet.onnx

所以如何将float-checkpoint-best.pth.tar转化为onnx模型?

感谢您使用地平线芯片算法工具链,最近我们在收集大家的满意度反馈,欢迎您填写问卷,详细情况可见:https://developer.horizon.ai/forumDetail/146177053698464782

您好,请在configs/segmentation/unet.py代码中增加以下onnx_cfg关键字,然后再使用export_to_onnx.py导出-
onnx_cfg = dict(-
model=deploy_model,-
stage=“float”,-
inputs=deploy_inputs,-
model_convert_pipeline=dict(-
type=“ModelConvertPipeline”,-
converters=[-
dict(-
type=“LoadCheckpoint”,-
checkpoint_path=os.path.join(-
ckpt_dir, “float-checkpoint-best.pth.tar”-
),-
ignore_extra=True,-
),-
],-
),-
)-

onnx_cfg = dict(-
model=deploy_model,-
stage=“float”,-
inputs=deploy_inputs,-
model_convert_pipeline=float_predictor[“model_convert_pipeline”],-
)

这是configs/segmentation/unet.py代码中原来的onnx_cfg关键字,我将其注释掉。

加上

onnx_cfg = dict(

model=deploy_model,

stage=“float”,

inputs=deploy_inputs,

model_convert_pipeline=dict(

type=“ModelConvertPipeline”,

converters=[

dict(

type=“LoadCheckpoint”,

checkpoint_path=os.path.join(

ckpt_dir, “float-checkpoint-best.pth.tar”

),

ignore_extra=True,

),

],

),

)

但是问题还是和原来一样。

您好,请查看您的工作空间,我这边修改了config文件中的**ckpt_dir = “../release_models/%s” % task_name,**然后运行python3 tools/export_onnx.py --config configs/segmentation/unet.py,成功在/release_models/dwunet_seg文件夹下生成了float.onnx,请检查你的workspace是否已有onnx生成,另外,输出到warnings.warn并不是出错了,而是已经生成了onnx

好的,谢谢,确实可以生成float.onnx,我以为加上–onnx-name unet.onnx这个会生成unet.onnx,不会重复的,原来是这个没用。