你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

调用预测 API

重要

Microsoft宣布计划停用 Azure 自定义视觉服务。 Microsoft将在 2028 年 9 月 25 日之前为所有现有 Azure 自定义视觉客户提供完全支持。 在此支持时段内,鼓励客户开始规划和执行其过渡到替代解决方案。 根据用例,我们建议使用以下转换路径:

  • 若要为图像分类和对象检测创建自定义模型, Azure 机器学习 AutoML 提供了使用经典机器学习技术训练这两种自定义模型类型的功能
  • 详细了解 Azure 机器学习 AutoML ,并了解如何为自定义模型训练提供支持。

Microsoft还投资于基于生成 AI 的解决方案,这些解决方案使用提示工程和其他技术提高自定义方案的准确性。

  • 若要使用生成模型,可以使用 Azure AI Foundry 模型目录中提供的模型之一,并为自定义视觉创建自己的解决方案。
  • 对于用于图像分类的托管生成解决方案,Azure AI 内容理解(目前为公共预览版)提供了创建自定义分类工作流的功能。 它还支持处理任何类型的非结构化数据(图像、文档、音频、视频),并根据预定义或用户定义的格式提取结构化见解。
  • 详细了解 Azure AI Foundry 模型Azure AI 内容理解(公共预览版), 并探索它们如何为自定义需求提供替代路径。

有关迁移的更详细指南,请参阅 Azure 自定义视觉迁移指南

训练模型后,可以将图像提交到预测 API 终结点,以编程方式测试它。 在本指南中,你将了解如何调用预测 API 来对图像进行评分。 你将了解此 API 行为的不同配置方式以满足你的需求。

注意

本文档演示如何使用适用于 C# 的 .NET 客户端库将图像提交到预测 API。 有关更多信息和示例,请参阅预测 API 参考

设置

发布已训练的迭代

自定义视觉网站,选择你的项目,然后选择“性能”选项卡

若要将图像提交到预测 API,首先需要发布迭代以供预测,这可以通过选择“发布”并为已发布的迭代指定名称来完成。 这使得自定义视觉 Azure 资源的预测 API 可以访问你的模型。

屏幕截图显示了性能选项卡,其“发布”按钮周围有红色矩形框。

成功发布模型后,你将在左侧边栏的迭代旁边看到一个“已发布”标签,其名称显示在迭代的说明中

屏幕截图显示了性能选项卡,其“已发布”标签和已发布迭代的名称周围有一个红色矩形框。

获取 URL 和预测密钥

发布模型后,可以通过选择“预测 URL”来检索所需信息。 随即将打开一个对话框,其中包含有关使用预测 API 的信息,包括“预测 URL”和“预测密钥”

屏幕截图显示了“性能”选项卡,其“预测 URL”按钮周围有红色矩形框。

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

提交服务数据

本指南假定你已使用自定义视觉预测密钥和终结点 URL 构造了一个名为 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 开始学习。