我遇到了同样的问题并看到了这篇文章。经过一段时间的努力,我现在发现对我来说将这个输入列放入其他附加函数是有效的——让我在这里展示一下
这是我在微软官方文档中的代码:
var pipeline = mlContext.Transforms.LoadImages(outputColumnName: "image", imageFolder: "", inputColumnName: nameof(ImageNetData.ImagePath))
.Append(mlContext.Transforms.ResizeImages(outputColumnName: "image", imageWidth: ImageNetSettings.imageWidth, imageHeight: ImageNetSettings.imageHeight, inputColumnName: "image"))
.Append(mlContext.Transforms.ExtractPixels(outputColumnName: "image"))
.Append(mlContext.Transforms.ApplyOnnxModel(modelFile: modelLocation, outputColumnNames: new[] { TinyYoloModelSettings.ModelOutput }, inputColumnNames: new[] { TinyYoloModelSettings.ModelInput }));
ModelInput 和 ModelOutput 被声明为 const 字符串,并且在文档中提示使用 Netron 查找值来替换它。但也有 .ResizeImages() 和 .LoadImages() 和 .ExtractPixels() - 这里是 outputColumnName。对我来说,它可以使用 ModelInput 值配置它——对我来说那是“数据”——我在 customvision.ai 导出了 ONNX
所以现在我遇到了另一个问题,但我认为这对我有用。所以给它一个机会
要清楚我更改的代码
var pipeline = mlContext.Transforms.LoadImages(outputColumnName: "data", imageFolder: "", inputColumnName: nameof(ImageNetData.ImagePath))
.Append(mlContext.Transforms.ResizeImages(outputColumnName: "data", imageWidth: ImageNetSettings.imageWidth, imageHeight: ImageNetSettings.imageHeight, inputColumnName: "data"))
.Append(mlContext.Transforms.ExtractPixels(outputColumnName: "data"))
.Append(mlContext.Transforms.ApplyOnnxModel(modelFile: modelLocation, outputColumnNames: new[] { TinyYoloModelSettings.ModelOutput }, inputColumnNames: new[] { TinyYoloModelSettings.ModelInput }));
var model = pipeline.Fit(data);