Получите метку и прогнозирование результатов в ML.NET использование тензорного потока модели ONNX

#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 это не предусмотрено?