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

Azure 上的图像分类

Azure Blob 存储
Azure 计算机视觉
Azure Cosmos DB
Azure 事件网格
Azure Functions

使用 Azure 服务(例如计算机视觉 API 和 Azure Functions),公司不需管理各个服务器,既减少了成本,又可充分利用 Microsoft 为认知服务图像处理开发的专业技术。 本示例方案专门解决图像处理用例问题。 如果有各种不同的的 AI 需求,可以考虑全套认知服务

体系结构

Architecture for image classification

下载此体系结构的 Visio 文件

工作流

本方案涉及 Web 或移动应用程序的后端组件。 数据流经方案的情形如下所示:

  1. 在 Blob 存储中添加新文件(映像上传)会在 Azure 事件网格中触发一个事件。 上传过程可以通过 Web 或移动应用程序进行协调。 也可以单独将映像上传到 Azure Blob 存储。
  2. 事件网格发送触发 Azure Functions 的通知。
  3. Azure Functions 调用 Azure 计算机视觉 API 来分析新上传的图像。 计算机视觉通过 Azure Functions 分析的 Blob URL 访问图像。
  4. Azure Functions 在 Azure Cosmos DB 中保留计算机视觉 API 响应。 此响应包括分析的结果以及图像元数据。
  5. 结果可以在 Web 或移动前端上使用并反映。 请注意,此方法检索分类的结果,但不检索上传的图像。

组件

  • 计算机视觉 API 是认知服务套件的一部分,用于检索每个图像的信息。
  • Azure Functions 为 Web 应用程序提供后端 API。 此平台还为已上传的图像提供事件处理。
  • Azure 事件网格在新图像上传到 Blob 存储时触发一个事件。 该图像然后就会通过 Azure Functions 进行处理。
  • Azure Blob 存储存储上传到 Web 应用程序中的所有图像文件,以及 Web 应用程序使用的任何静态文件。
  • Azure Cosmos DB 存储每个已上传图像的元数据,包括计算机视觉 API 的处理结果。

备选方法

  • 自定义视觉服务。 计算机视觉 API 返回一组基于分类的类别。 若需处理不是由计算机视觉 API 返回的信息,则可考虑使用自定义视觉服务,以便生成自定义图像分类器。
  • 认知搜索(以前称为 Azure 搜索)。 如果用例需要查询元数据来查找符合特定条件的图像,则可考虑使用认知搜索。 认知搜索目前为预览版,可以无缝集成此工作流。
  • 逻辑应用。 如果不需要对添加到 Blob 的文件进行实时响应,可以考虑使用逻辑应用。 逻辑应用可以检查是否添加文件,此应用可能由重复触发器或滑动窗口触发器启动。

方案详细信息

本方案适用于需处理图像的企业。

可能的应用包括:对时尚网站的图像分类、分析保险索赔的文本和图像,或者理解游戏屏幕截图中的遥测数据。 传统上,公司需开发机器学习模型方面的专业技术,训练模型,最后再通过自定义过程运行图像,以便从这些图像中获取数据。

可能的用例

此解决方案非常适合零售、游戏、金融和保险业。 其他相关用例包括:

  • 对时尚网站上的图像进行分类。 在平台上上传要销售的产品的图片时,卖家可以使用图像分类。 然后,他们可以自动执行涉及的后续手动标记。 客户还可以通过对产品的视觉印象进行搜索。

  • 对游戏屏幕截图中的遥测数据进行分类。 对屏幕截图中的视频游戏的分类正在演变成与计算机视觉耦合的社交媒体中的一个相关问题。 例如,当 Twitch 主播连续玩不同的游戏时,他们可能会跳过手动更新其流信息的操作。 未能更新流信息可能会导致用户搜索中的流分类错误,并可能导致内容创建者和流式处理平台丢失潜在观众。 引入新游戏时,自定义模型路由有助于引入从这些游戏中检测新图像的功能。

  • 对保险索赔的图像进行分类。 图像分类有助于缩短索赔处理和担保的时间和成本。 它有助于分析自然灾害损坏、车辆损坏以及识别住宅和商业物业。

注意事项

这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负载质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架

实现此解决方案时请考虑以下几点:

可伸缩性

在本示例方案中使用的大多数组件是托管服务,可以自动进行缩放。 一些需注意的例外:Azure Functions 存在限制,最多可以使用 200 个实例。 如果所需规模超出此限制,可以考虑使用多个区域或应用计划。

可以将 Azure Cosmos DB 预配为仅在 Azure Cosmos DB for NoSQL 中自动缩放。 如果计划使用其他 API,请参阅请求单元中有关估计需求的指南。 若要充分利用 Azure Cosmos DB 中的缩放功能,请了解分区键在 Azure Cosmos DB 中的工作方式。

很多情况下,为了确保可用性、可伸缩性和分区,NoSQL 数据库会牺牲一致性(这就是所谓的 CAP 法则)。 本示例方案使用键-值数据模型,很少需要事务一致性,因为大多数操作就其定义来说属于原子操作。 有关如何选择正确的数据存储的其他指南,请访问 Azure 体系结构中心。 如果实现要求高一致性,则可在 Azure Cosmos DB 中选择一致性级别

有关设计可缩放解决方案的一般性指导,请参阅 Azure 体系结构中心内的性能效率核对清单

安全性

安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述

适用于 Azure 资源的托管标识用于访问帐户的其他内部资源,然后会被系统分配给 Azure Functions。 只允许通过这些标识访问必要的资源,这样可确保不将额外的内容公开给函数(可能还包括客户)。

有关设计安全解决方案的一般性指导,请参阅 Azure 安全性文档

复原

本方案中的所有组件都是托管的,因此均可在区域级别自动复原。

若需可复原解决方案的通用设计指南,请参阅设计适用于 Azure 的可复原应用程序

成本优化

成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化支柱概述

为了方便用户了解运行本方案的成本,我们已在成本计算器中预配置了所有服务。 若要了解自己的特定用例的定价变化情况,请按预期的流量更改相应的变量。

我们已根据流量(假定所有图像的大小均为 100 kb)提供了三个示例性的成本配置文件:

  • :此定价示例对应于每月处理的图像数 < 5000 的情况。
  • :此定价示例对应于每月处理的图像数为 500,000 的情况。
  • :此定价示例对应于每月处理的图像数为 5 千万的情况。

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

后续步骤

产品文档

有关引导式学习路径,请参阅:

在生产环境中部署此示例方案之前,请查看用于优化 Azure Functions 的性能和可靠性的建议做法。

使用 Azure 认知搜索中的图像和自然语言处理实现 AI 扩充