#tensorflow #machine-learning #.net-core #ml.net #onnx
Вопрос:
Я уже пробовал этот учебник и получить прогноз по баллам, но в нем не указано, как получить прогноз по меткам, и это привело меня в замешательство.
по этому учебнику предоставьте 2 выходных столбца classlabel и loss.
на основе моей модели ONNX с не предоставляет столбец classlabel. Вот моя модель, когда я открою ее в Netron.
вот код, как предсказать на основе модели onn с использованием ml.net
public void OnnxAnalys()
{
var mlContext = new MLContext();
var pipeline = mlContext.Transforms
.ResizeImages("image", 331, 331, nameof(ImageInputData.Image))
.Append(mlContext.Transforms.ExtractPixels("resnet50_input", "image"))
.Append(mlContext.Transforms.ApplyOnnxModel("dense_1", "resnet50_input", "WoodResnet50.onnx"));
var data = mlContext.Data.LoadFromEnumerable(new List<ImageInputData>());
var model = pipeline.Fit(data);
var predictionEngine = mlContext.Model.CreatePredictionEngine<ImageInputData, ImagePredictionOutput>(model);
var bitmap = new Bitmap(@"D:/Test/test/photo_2021-07-02_23-38-53.jpg"); //get file from local directory
var modelInput = new ImageInputData { Image = bitmap };
var modelOutput = predictionEngine.Predict(modelInput);
var classification = prediction.Score[0]; // highest scoring label
var LabelValue = modelOutput.PredictedLabelValue; //LABEL THAT I WANNA DISPLAY IN RESULT
Console.WriteLine($"Classified as: {LabelValue} with Score: {ScoreValue}");
}
class ImageInputData
{
[ImageType(224, 224)]
public Bitmap Image { get; set; }
}
class ImagePredictionOutput
{
[ColumnName("dense_1")]
public float[] Score { get; set; }
public string PredictedLabelValue { get; set; }
}
Согласно этой статье, он должен использовать столбец classlabel на основе модели monnx.
var transformer = mlContext.Transforms.ResizeImages("image", 224, 224, "Image")
.Append(mlContext.Transforms.ExtractPixels("data", "image"))
.Append(mlContext.Transforms.ApplyOnnxModel(new[] { "classLabel", "loss" }, new[] { "data" }, "model.onnx"))
.Fit(mlContext.Data.LoadFromEnumerable(new List<ImageInputData>()));
возможно ли получить предсказание метки, но в модели onnx это не предусмотрено?