你当前正在访问 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”按钮周围有红色矩形框。

显示性能选项卡,其中使用图像文件时所需的预测 URL 值和预测密钥值周围有红色矩形框。

提交服务数据

本指南假定你已使用自定义视觉预测密钥和终结点 URL 构造了一个名为 predictionClientCustomVisionPredictionClient 对象。 有关如何设置此功能的说明,请参阅其中一个快速入门

在本指南中,你将使用本地图像,因此请下载要提交到已训练的模型的图像。 下面的代码提示用户指定本地路径,并获取该路径中的文件的字节流。

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 对象的形式返回结果。 预测属性包含 PredictionModel 对象的列表,每个对象表示一个对象预测 。 它们包括标签名称和在图像中检测到对象的边界框坐标。 例如,你的应用可以将此数据分析为在屏幕上显示带标签对象字段的图像。

后续步骤

在本指南中,你已了解如何使用 C# SDK 将图像提交到自定义图像分类器/检测器并以编程方式接收响应。 接下来,了解如何使用 C# 完成端到端方案,或使用其他语言 SDK 开始学习。