此示例体系结构展示了制造业中物联网 (IoT) 计算机视觉的端到端方法。
体系结构
下载此体系结构的 Visio 文件。
数据流
- IoT Edge 自定义模块捕获实时视频流,将其分解为帧,并对图像数据执行推理,以确定是否发生了事件。
- 自定义模块还使用 Azure 存储 SDK 方法或 Blob API,将原始视频文件上传到用作原始媒体存储 Azure 存储。
- 自定义模块将推理结果和元数据发送到 Azure IoT 中心,该中心充当双向通信的中央消息中心。
- Azure 逻辑应用监视 IoT 中心以获取有关事件的消息。 逻辑应用将推理结果和元数据路由到 Microsoft Dataverse 进行存储。
- 发生事件时,逻辑应用会向现场工程师发送短信和电子邮件通知。 现场工程师使用基于 Power Apps 的移动应用来确认和解决事件。
- Power Apps 从 Dataverse 拉取推理结果和元数据,并从 Blob 存储中拉取原始视频文件,以显示有关事件的相关信息。 Power Apps 使用现场工程师提供的事件解决方案更新 Dataverse。 此步骤用作实现模型重新训练的人工干预验证。
- Azure 数据工厂是从原始媒体存储提取原始视频文件的数据业务流程协调程序,并从 Dataverse 获取相应的推理结果和元数据。
- 数据工厂将原始视频文件和元数据存储在 Azure Data Lake 中,后者用作用于审核的视频存档。
- 数据工厂将原始视频文件分解为帧,将推理结果转换为标签,并将数据上传到用作 ML 数据存储的 Blob 存储。
- 对模型代码的更改会自动触发 Azure Pipelines 模型业务流程协调程序管道,操作员也可以手动触发该管道。 代码更改还会在 Azure 机器学习中启动 ML 模型训练和验证过程。
- Azure 机器学习通过验证 ML 数据存储中的数据并将所需数据集复制到 Azure 高级 Blob 存储,开始训练模型。 此性能层提供数据缓存,可更快地训练模型。
- Azure 机器学习使用高级数据缓存中的数据集来训练模型、验证已训练模型的性能、对新训练的模型进行评分,并将模型注册到 Azure 机器学习注册表中。
- Azure Pipelines 模型业务流程协调程序会检查新训练的 ML 模型的性能,并确定它是否优于以前的模型。 如果新模型性能更好,管道会从 Azure 机器学习下载该模型,并生成要在Azure 容器注册表中发布的新版本的 ML 推理模块。
- 当新的 ML 推理模块准备就绪时,Azure Pipelines 会将模块容器从容器注册表部署到 IoT 中心的 IoT Edge 模块。
- IoT 中心使用新的 ML 推理模块更新 IoT Edge 设备。
组件
- Azure IoT Edge 服务在本地分析设备数据,以减少发送到云的数据、快速响应事件,并在低连接性条件下运行。 IoT Edge ML 模块可以从流式传输视频数据中提取可操作的见解。
- Azure IoT 中心是一项托管的服务,可在数百万个 IoT 设备和一个基于云的后端之间实现安全可靠的双向通信。 IoT 中心提供基于设备的身份验证、消息路由、与其他 Azure 服务的集成以及管理功能,用于控制和配置 IoT 设备。
- Azure 逻辑应用是一个无服务器云服务,用于创建和运行集成了应用、数据、服务和系统的自动化工作流。 开发人员可以使用视觉设计器来计划和协调常见任务工作流。 逻辑应用具有用于许多常用云服务、本地产品和其他软件即服务 (SaaS) 应用程序的连接器。 在此解决方案中,逻辑应用运行自动通知工作流,向现场工程师发送短信和电子邮件警报。
- Power Apps 是一个数据平台,也是一个由应用、服务和连接器构成的套件。 它充当快速应用程序开发环境。 基础数据平台是 Microsoft Dataverse。
- Dataverse 是一个面向 Power Apps 的基于云的存储平台。 Dataverse 支持人工干预通知,并存储与 MLOps 数据管道关联的元数据。
- Azure Blob 存储是适用于非结构化数据的可缩放安全对象存储。 可将它用于存档、数据湖、高性能计算、机器学习和云原生工作负载。 在此解决方案中,Blob 存储为 ML 数据存储提供本地数据存储,并为训练 ML 模型提供高级数据缓存。 Blob 存储的高级层适用于需要快速响应时间和高事务率的工作负载,例如此示例中的人工干预视频标签。
- Data Lake Storage 是一种高度可缩放且安全的存储服务,适用于高性能分析工作负载。 这些数据通常来自多个异构源,可以是结构化的、半结构化的或非结构化的。 Azure Data Lake Storage Gen2 将 Azure Data Lake Storage Gen1 功能与 Blob 存储组合起来,并提供文件系统语义、文件级安全性和缩放功能。 它还提供 Blob 存储的分层存储、高可用性和灾难恢复功能。 在此解决方案中,Data Lake Storage 为原始视频文件和元数据提供存档视频存储。
- Azure 数据工厂是一个混合、完全托管的无服务器解决方案,用于数据集成和转换工作流。 它提供无代码 UI 和易于使用的监视面板。 Azure 数据工厂使用管道进行数据移动。 映射数据流可执行各种转换任务,例如提取、转换和加载 (ETL),以及提取、加载和转换 (ELT)。 在此示例中,数据工厂将 ETL 管道中的数据编排为推理数据,并存储这些数据用于重新训练。
- Azure 机器学习是一个企业级机器学习服务,可以快速生成和部署模型。 它为各种技能级别的用户提供低代码设计器、自动化机器学习,以及支持各种 IDE 的托管 Jupyter 笔记本环境。
- Azure Pipelines 是 Azure DevOps 基于团队的开发人员服务的一部分,用于创建持续集成 (CI) 和持续部署 (CD) 管道。 在此示例中,Azure Pipelines 模型业务流程协调程序验证 ML 代码、触发无服务器任务管道、比较 ML 模型并生成推理容器。
- 容器注册表创建并管理 Docker 注册表,以生成、存储和管理 Docker 容器映像,包括容器化 ML 模型。
- Azure Monitor 从 Azure 资源收集遥测,因此团队可以主动识别问题并最大限度地提高性能和可靠性。
备选方法
可以将 Azure Blob 存储模块部署到 IoT Edge 设备上,而不是使用数据管道将视频流分解成图像帧。 然后,推理模块将推理的图像帧上传到边缘设备上的存储模块。 存储模块确定何时将帧直接上传到 ML 数据存储。 此方法的优点是,它从数据管道中删除了一个步骤。 弊端是边缘设备与 Azure Blob 存储紧密耦合。
对于模型业务流程,可以使用 Azure Pipelines 或 Azure 数据工厂。
- Azure Pipelines 的优势在于它与 ML 模型代码密切相关。 可以通过 CI/CD 更改代码,轻松触发训练管道。
- 数据工厂的优点是每个管道都可以预配所需的计算资源。 数据工厂不保留 Azure Pipelines 代理来运行 ML 训练,这可能会使正常的 CI/CD 流拥堵。
方案详细信息
完全自动化的智能工厂使用人工智能 (AI) 和机器学习 (ML) 来分析数据、运行系统并随着时间的推移改进流程。
在此示例中,相机将图像发送到运行 ML 模型的 Azure IoT Edge 设备。 该模型计算推理,并将可操作的输出发送到云端进行进一步处理。 人工干预是 ML 模型捕获的智能的一部分。 ML 过程是训练、测试、调整和验证 ML 算法的连续循环。
可能的用例
制造过程在安全和质量保证应用中使用物联网计算机视觉。 IoT 计算机视觉系统可以:
- 帮助确保符合制造指南,例如正确的标签。
- 确定表面不平整等制造缺陷。
- 通过监视建筑物或区域入口来增强安全性。
- 通过检测个人防护设备 (PPE) 的使用和其他安全实践来维护工作人员的安全。
注意事项
这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负荷质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架。
可用性
基于 ML 的应用程序通常需要一组资源用于训练,另一组资源用于提供服务。 训练资源通常无需高可用性,因为实时生产请求不会直接使用这些资源。 而为请求提供服务所需的资源需要具有高可用性。
Operations
此解决方案分为三个操作区域:
在 IoT 操作中,边缘设备上的 ML 模型使用来自连接的相机的实时图像来推断视频帧。 边缘设备还会将缓存的视频流发送到云存储,以用于审核和重新训练模型。 重新训练 ML 后,Azure IoT 中心使用新的 ML 推理模块更新边缘设备。
MLOps 使用 DevOps 实践来协调模型训练、测试和部署操作。 MLOps 生命周期管理可自动执行使用 ML 模型制定复杂决策或生产模型的过程。 MLOps 的关键在于生成、训练、评估和部署 ML 模型的团队之间的紧密协调。
人工干预操作通知人们干预自动化中的某些步骤。 在人工干预事务中,工作人员会检查和评估机器学习预测的结果。 人工干预成为 ML 模型捕获的智能的一部分,并可帮助验证模型。
以下人工角色是此解决方案的一部分:
现场工程师接收逻辑应用发送的事件通知,并手动验证 ML 模型的结果或预测。 例如,现场工程师可能会检查模型预测失败的值。
数据标签员为数据集加贴标签用于重新训练,以完成端到端解决方案的循环。 数据标签过程是通过算法训练可靠模型的第一步,对于图像数据尤其重要。 在此示例中,Azure 数据工厂将视频帧分为真正和假正分组,使数据标签员的工作更加轻松。
数据科学家使用加贴标签的数据集来训练算法,以便进行正确的实际预测。 数据科学家在 CI 过程中将 MLOps 与 GitHub Actions 或 Azure Pipelines 结合使用,以自动训练和验证模型。 可以手动触发训练,也可以通过签入新的训练脚本或数据自动触发训练。 数据科学家在可以自动注册、部署和管理模型的 Azure 机器学习工作区中工作。
IoT 工程师使用 Azure Pipelines 将容器中的 IoT Edge 模块发布到容器注册表。 工程师可以使用 CD 管道按需部署和缩放基础结构。
安全审核员检查存档的视频流,以检测异常、评估合规性,并在出现有关模型预测的问题时确认结果。
在此解决方案中,IoT 中心从相机引入遥测,并将指标发送到 Azure Monitor,以便现场工程师进行调查和排查故障。 Azure 机器学习向 Azure Monitor 发送可观测性指标和模型遥测,帮助 IoT 工程师和数据科学家优化操作。
性能
IoT 设备的内存和处理能力有限,因此必须限制发送到设备的模型容器的大小。 请确保使用的 IoT 设备可以执行模型推理,并在可接受的时间内生成结果。
为了优化训练模型的性能,此示例体系结构使用 Azure 高级 Blob 存储。 此性能层专为需要快速响应时间和高事务率的工作负载而设计,例如人工干预视频标签方案。
性能注意事项也适用于数据引入管道。 数据工厂通过提供经济高效的高性能解决方案来最大化数据移动。
可伸缩性
本解决方案中使用的大多数组件均为自动缩放的托管服务。
IoT 应用程序的可伸缩性取决于 IoT 中心配额和限制。 要考虑的因素包括:
- 发送到 IoT 中心的消息的最大每日配额。
- IoT 中心实例中连接的设备的配额。
- 引入和处理吞吐量。
在 ML 中,可伸缩性是指横向扩展用于针对大型数据集训练模型的群集。 可伸缩性还使 ML 模型能够满足使用它的应用程序的需求。 为了满足这些需求,ML 群集必须在启用了 CPU 和图形处理单元 (GPU) 的节点上提供横向扩展。
有关设计可缩放解决方案的一般性指导,请参阅 Azure 体系结构中心内的性能效率核对清单。
安全性
安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述。
Dataverse 和其他 Azure 服务中的访问管理有助于确保只有经过授权的用户才能访问环境、数据和报表。 本解决方案使用 Azure Key Vault 来管理密码和机密。 存储使用客户管理的密钥进行加密。
有关设计安全 IoT 解决方案的一般指南,请参阅 Azure 安全文档和 Azure IoT 参考体系结构。
成本优化
成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化支柱概述。
通常,使用 Azure 定价计算器来估算成本。 有关其他注意事项,请参阅成本优化。
Azure 机器学习还会部署容器注册表、Azure 存储和 Azure Key Vault 服务,这会产生额外费用。 有关详细信息,请参阅 Azure 机器学习的工作原理:体系结构和概念。
Azure 机器学习定价包括用于在云中训练模型的虚拟机 (VM) 的费用。 有关每个 Azure 区域中 Azure 机器学习和 VM 的可用性的信息,请参阅可用产品(按区域)。
作者
本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。
主要作者:
- Wilson Lee | 首席软件工程师
后续步骤
- IoT 概念和 Azure IoT 中心
- 什么是 Azure 逻辑应用?
- 什么是 Power Apps?
- Microsoft Power Apps 文档
- 什么是 Microsoft Dataverse?
- Microsoft Dataverse 文档
- Azure Data Lake Storage Gen2 简介
- 什么是 Azure 数据工厂?
- Azure 机器学习文档
- 什么是 Azure DevOps?
- 什么是 Azure Pipelines?
- Azure 容器注册表文档
- Azure Monitor 概述
- 使用 Azure IoT 提供更安全的工作场所
- Dow Chemical 在边缘使用视觉 AI 通过 Azure 提高员工的安全性
- 边缘对象检测 GitHub 示例