C# Pix2pixHD的推理
我用UWP训练了一个模型,然后将它导出到onnx,我想用C#使用UWP进行推理 Pix2PixHD所需的输入为:C# Pix2pixHD的推理,c#,machine-learning,artificial-intelligence,inference,onnx,C#,Machine Learning,Artificial Intelligence,Inference,Onnx,我用UWP训练了一个模型,然后将它导出到onnx,我想用C#使用UWP进行推理 Pix2PixHD所需的输入为: 1个语义标签图像(512x1024灰度) 1个图像实例(512x1024灰度) 培训期间用作热顶点的标签数量(例如--label_nc 16) 我可以用python测试我的模型,但我不知道如何用C#绑定它,所以我非常感谢任何帮助 以下是我的模型在WinML仪表板中的工作方式: 这是WinMLRunner中的外观: 这是从Visual Studio生成的代码: using Sy
- 1个语义标签图像(512x1024灰度)
- 1个图像实例(512x1024灰度)
- 培训期间用作热顶点的标签数量(例如--label_nc 16)
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Windows.Media;
using Windows.Storage;
using Windows.Storage.Streams;
using Windows.AI.MachineLearning;
namespace Onnx_test_02
{
public sealed class Input
{
public TensorFloat label; // shape(1,1,512,1024)
public TensorInt8Bit inst; // shape(1,1,512,1024)
}
public sealed class Output
{
public TensorFloat synthesized_image; // shape(1,3,512,1024)
}
public sealed class Model
{
private LearningModel model;
private LearningModelSession session;
private LearningModelBinding binding;
public static async Task<Model> CreateFromStreamAsync(IRandomAccessStreamReference stream)
{
Model learningModel = new Model();
learningModel.model = await LearningModel.LoadFromStreamAsync(stream);
learningModel.session = new LearningModelSession(learningModel.model);
learningModel.binding = new LearningModelBinding(learningModel.session);
return learningModel;
}
public async Task<Output> EvaluateAsync(Input input)
{
binding.Bind("label", input.label);
binding.Bind("inst", input.inst);
var result = await session.EvaluateAsync(binding, "0");
var output = new Output();
output.synthesized_image = result.Outputs["synthesized_image"] as TensorFloat;
return output;
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Threading.Tasks;
使用Windows.Media;
使用Windows.Storage;
使用Windows.Storage.Streams;
使用Windows.AI.MachineLearning;
名称空间Onnx\u测试\u 02
{
公共密封类输入
{
公共TensorFloat标签;//形状(1,15121024)
公共张力仪8bit inst;//形状(1,15121024)
}
公共密封类输出
{
公共TensorFloat合成_image;//形状(1,35121024)
}
公共密封类模型
{
私人学习模式;
私人学习模式课程;
私人学习模式绑定;
公共静态异步任务CreateFromStreamAsync(IRandomAccessStreamReference流)
{
模型学习模型=新模型();
learningModel.model=等待learningModel.LoadFromStreamAsync(流);
learningModel.session=新建LearningModelSession(learningModel.model);
learningModel.binding=新的LearningModelBinding(learningModel.session);
回归学习模型;
}
公共异步任务EvaluateAsync(输入)
{
binding.Bind(“label”,输入.label);
binding.Bind(“inst”,input.inst);
var result=wait session.EvaluateAsync(绑定,“0”);
变量输出=新输出();
output.synthesisted_image=result.Outputs[“synthesisted_image”]为TensorFloat;
返回输出;
}
}
}