你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
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 构造了一个名为 的 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 开始学习。