C#图像分类应用加载ONNX模型失败:未知文件格式版本
解决ONNX模型加载时“Unknown model file format version”错误
运行C#图像分类应用时,加载ONNX模型出现以下错误:
System.ArgumentException: 'The parameter is incorrect.
Failed to load model with error: Unknown model file format version.'
针对这个问题,可按以下步骤排查解决:
检查ONNX版本兼容性
你使用的Model.CreateFromStreamAsync所属框架(如Windows ML、ML.NET)对ONNX模型版本有明确支持范围,比如Windows ML通常兼容ONNX 1.2~1.8版本,高版本(1.9及以上)可能无法识别。用Netron工具打开模型,查看其版本信息,确认是否超出框架支持范围。降级模型到兼容版本
如果模型版本过高,使用ONNX Runtime工具将模型转换为框架支持的版本。例如通过Python执行以下命令(需安装onnxruntime-tools):python -m onnxruntime.tools.convert_version --input Model.onnx --output Model_compatible.onnx --target_version 18替换
target_version为对应框架支持的版本号(18对应ONNX 1.8,以此类推)。验证模型文件完整性
检查Model.onnx是否损坏:重新下载或替换模型文件,用Netron打开确认能正常显示模型结构,排除文件传输或打包过程中损坏的可能。调整模型加载方式与文件属性
- 确保模型文件的Build Action设置为Content,Copy to Output Directory设置为Copy if newer,保证运行时能正确访问文件。
- 尝试改用文件流方式加载,替代直接传入StorageFile:
private async Task loadModel() { StorageFile modelFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Model.onnx")); using (var stream = await modelFile.OpenStreamForReadAsync()) { modelGen = await Model.CreateFromStreamAsync(stream.AsRandomAccessStream()); } }
内容的提问来源于stack exchange,提问作者user12312852
相关产品推荐
相关产品推荐

