你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
调用预测 API
训练模型后,可以将图像提交到预测 API 终结点,以编程方式测试它。 在本指南中,你将了解如何调用预测 API 来对图像进行评分。 你将了解此 API 行为的不同配置方式以满足你的需求。
注意
本文档演示如何使用适用于 C# 的 .NET 客户端库将图像提交到预测 API。 有关更多信息和示例,请参阅预测 API 参考。
设置
发布已训练的迭代
从自定义视觉网站,选择你的项目,然后选择“性能”选项卡。
若要将图像提交到预测 API,首先需要发布迭代以供预测,这可以通过选择“发布”并为已发布的迭代指定名称来完成。 这使得自定义视觉 Azure 资源的预测 API 可以访问你的模型。
成功发布模型后,你将在左侧边栏的迭代旁边看到一个“已发布”标签,其名称显示在迭代的说明中。
获取 URL 和预测密钥
发布模型后,可以通过选择“预测 URL”来检索所需信息。 随即将打开一个对话框,其中包含有关使用预测 API 的信息,包括“预测 URL”和“预测密钥”。
提交服务数据
本指南假定你已使用自定义视觉预测密钥和终结点 URL 构造了一个名为 predictionClient
的 CustomVisionPredictionClient 对象。 有关如何设置此功能的说明,请参阅其中一个快速入门。
在本指南中,你将使用本地图像,因此请下载要提交到已训练的模型的图像。 下面的代码提示用户指定本地路径,并获取该路径中的文件的字节流。
Console.Write("Enter image file path: ");
string imageFilePath = Console.ReadLine();
byte[] byteData = GetImageAsByteArray(imageFilePath);
包括以下帮助程序方法:
private static byte[] GetImageAsByteArray(string imageFilePath)
{
FileStream fileStream = new FileStream(imageFilePath, FileMode.Open, FileAccess.Read);
BinaryReader binaryReader = new BinaryReader(fileStream);
return binaryReader.ReadBytes((int)fileStream.Length);
}
ClassifyImageAsync 方法获取项目 ID 和本地存储的图像,并根据给定模型对图像进行评分。
// Make a prediction against the new project
Console.WriteLine("Making a prediction:");
var result = predictionApi.ClassifyImageAsync(project.Id, publishedModelName, byteData);
确定如何处理数据
可以选择性地使用替代方法来配置服务执行评分操作的方式。 有关详细信息,请参阅 CustomVisionPredictionClient 方法。
为了简单起见,可以使用上述方法的非异步版本,但它可能会导致程序锁定很长一段时间。
-WithNoStore
方法要求服务在预测完成后不保留预测图像。 通常,服务将保留这些图像,以便你可以选择将它们添加为训练数据,以供将来用于模型迭代。
-WithHttpMessages
方法返回 API 调用的原始 HTTP 响应。
获取服务结果
服务以 ImagePrediction 对象的形式返回结果。 Predictions
属性属性包含 PredictionModel 对象的列表,每个对象表示一个对象预测。 它们包括标签名称和在图像中检测到对象的边界框坐标。 例如,你的应用可以将此数据分析为在屏幕上显示带标签对象字段的图像。
下一步
在本指南中,你已了解如何使用 C# SDK 将图像提交到自定义图像分类器/检测器并以编程方式接收响应。 接下来,了解如何使用 C# 完成端到端方案,或使用其他语言 SDK 开始学习。