如何使用张量流模型对图像进行单个预测?

时间:2020-08-12 19:56:15

标签: c# tensorflow ml.net

我只是从tensorflow和ml.net开始。文档到处都是。最初,我只想加载“狗或猫”张量流模型,然后将猫图像扔给它,然后得出预测。据我了解,该模型已经“经过训练”,因此不需要在其中填充任何输入数据。我认为我只需要输入图像并得出预测即可。

using System;
using Microsoft.ML;

namespace DogOrCatConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create MLContext
            MLContext mlContext = new MLContext();

            using var tf = mlContext.Model.LoadTensorFlowModel("model.pb");
            var inputSchema = tf.GetInputSchema();
            var modelSchema = tf.GetModelSchema();
        
        }
    }
}

到目前为止,我已经使用Nuget引入了一些不同的库:

  • Microsoft.ML
  • Microsoft.ML.ImageAnalytics
  • Microsoft.ML.TensorFlow
  • Microsoft.ML.Vision
  • SciSharp.TensorFlow.Redist

我从Microsoft教程中获得了该模型,其中他们展示了如何使用python http函数与该模型进行交互。我已经将图片缩小为256x256,因此我跳过了python示例中的一些预处理步骤。我正在努力弄清我在python示例中看到的与c#之间的api差异。

1 个答案:

答案 0 :(得分:0)

上面的代码仅加载Tensorflow模型。没有用于预测的代码。 您是否看过https://docs.microsoft.com/en-us/dotnet/machine-learning/tutorials/image-classification,它使用* .pb文件和LoadTensorFlowModel()API。 您需要添加分数张量流模型以进行预测。下面的代码行了。

.Append(mlContext.Model.LoadTensorFlowModel(_inceptionTensorFlowModel).
    ScoreTensorFlowModel(outputColumnNames: new[] { "softmax2_pre_activation" }, inputColumnNames: new[] { "input" }, addBatchDimensionInput: true))