使用 OCI Vision 自动进行库存管理

人工库存管理可能是一个耗时且劳动密集型过程。制造商往往难以保持库存更新并跟踪其位置,从而导致收入损失和利用不足的资本。大型远程工厂或仓库设施的现场库存盘点流程涉及时间和资源密集的步骤、约束,并且容易出错。

OCI Vision 可用于通过使用无人机(或其他机器人)可靠、快速地观察、计算和报告信息来补充手动库存管理工作。

OCI Vision 是 Oracle Cloud Infrastructure 上提供的多个 AI 服务之一。OCI Vision 让您能够应用机器学习和人工智能,而不需要具备数据科学专业知识。OCI Vision 包含现成可用的预构建模型,可以在应用中内置图像识别和文本识别,无需事先具备机器学习 (ML) 专业知识。这些模型还可用于检测制造中的视觉异常,从文档中提取文本以自动执行业务工作流。

此参考架构描述了最近为 Oracle 行业实验室开发的概念验证,其中的目标是使用堆栈管道作为自动化库存盘点方案的示例,并利用可编程无人机和经过培训的定制 OCI Vision 模型。

体系结构

下图说明了此引用体系结构的逻辑流。


下面是 oci-vision-inventory-flow.png 的说明
插图 oci-vision-inventory-flow.png 的说明

开发过程的第一步是使用 OCI 数据标签服务为一组堆叠管道的图片添加标签。标签完成后,创建了 OCI Vision 项目和 OCI Vision 自定义模型。OCI Vision 自定义模型已使用堆叠管道图像的有标签数据集进行训练。

OCI Vision 模型准备使用后,便部署了 Python 代码来处理 OCI 函数的以下操作:
  • 通过 Skydio Cloud API 下载无人机图片
  • 将映像上载到 OCI 对象存储
  • 计算管道
  • 使用 Oracle Fusion Cloud Inventory Management API 更新 Oracle Cloud Enterprise Resource Planning 系统中的管道计数

创建的 OCI Vision 模型原生能够作为输出提供每个已识别对象的元数据(在此参考体系结构中:管道)。每个对象的元数据包含包含包含对象的边界框的坐标和置信度值。本机响应中不存在总计数,因此需要将其包含在代码中。

OCI 事件用于自动执行库存管理流程。将映像上载到对象存储时,关联的事件将触发 OCI 功能。然后,该函数直接调用 Oracle Fusion Cloud Inventory Management API 来更新项计数。

下图显示了可以映射到上面的逻辑流图的示例参考体系结构。


下面是 oci-vision-inventory-arch.png 的说明
插图 oci-vision-inventory-arch.png 的说明

该体系结构具有以下组成部分:

  • OCI 愿景

    OCI Vision 是一项人工智能服务,用于大规模执行基于深度学习的图像分析。借助现成的预构建模型,开发人员可以在不具备机器学习 (ML) 专业知识的情况下轻松将映像识别和文本识别构建到自己的应用。对于行业特定的用例,开发人员可以自动使用自己的数据训练自定义 Vision 模型。这些模型可用于检测制造中的视觉异常、从文档中提取文本以自动执行业务工作流,以及在图像中标记项目以计算产品或发运。

    除了访问预先训练的模型之外,开发人员还可以在不具备数据科学专业知识的情况下创建定制模型,或者管理定制模型基础设施。

  • OCI 数据标签

    OCI 数据标签服务是一种 OCI 本机服务,允许客户创建和浏览数据集、查看数据记录(文本、图像)和应用标签以构建 AI/ML 模型。该服务还提供交互式用户界面,这些界面用于辅助标签流程。开发人员可以上载原始图像、添加标签并突出显示图像区域。通过将这些标签添加到图像,生成的数据集可用于训练定制图像分类和对象检测模型。

    对记录进行标记后,数据集可以导出为以行分隔的 JSON,以用于 AI/ML 模型开发。在定制模型训练工作流中,还可以直接从其他服务(例如 OCI Vision 和 OCI Language)访问 OCI 数据标签。喜欢构建和训练自己深度学习或自然语言处理模型的数据科学家可以通过 OCI Data Science 使用有标签的数据集。

  • 对象存储

    通过对象存储,可以快速访问任意内容类型的大量结构化和非结构化数据,包括数据库备份、分析数据以及丰富的内容(例如图像和视频)。您可以安全可靠地存储数据,然后直接从互联网或云平台检索数据。您可以在不降低性能或服务可靠性的情况下无缝扩展存储。将标准存储用于需要快速、立即和频繁访问的“热”存储。将归档存储用于长时间保留的“冷”存储,很少或很少访问。

  • 函数

    Oracle Functions 是一个完全托管、多租户、高度可扩展、按需提供函数即服务 (FaaS) 平台。它由 Fn Project 开源引擎提供支持。使用函数可以部署代码,也可以直接调用代码或触发代码以响应事件。Oracle Functions 使用 Oracle Cloud Infrastructure Registry 中托管的 Docker 容器。

  • 事件

    Oracle Cloud Infrastructure 服务发出事件,这些事件是描述资源更改的结构化消息。事件针对创建、读取、更新或删除 (CRUD) 操作、资源生命周期状态更改以及影响云资源的系统事件发出。

  • Internet 网关

    互联网网关允许 VCN 中的公共子网与公共互联网之间的通信。

  • 网络地址转换 (network address translation,NAT) 网关

    NAT 网关允许 VCN 中的专用资源访问互联网上的主机,同时不会向传入的互联网连接公开这些资源。

建议

使用以下建议作为起点。您的要求可能不同于此处所述的体系结构。
  • 虚拟云网络 (VCN)

    创建 VCN 时,根据计划连接到 VCN 中的子网的资源数量,确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。

    创建 VCN 时,根据计划连接到 VCN 中的子网的资源数量,确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。

    选择与要设置专用连接的任何其他网络(在 Oracle Cloud Infrastructure、您的内部部署数据中心或其他云提供商)不重叠的 CIDR 块。

    创建 VCN 后,您可以更改、添加和删除其 CIDR 块。

    设计子网时,请考虑流量和安全性要求。将特定层或角色中的所有资源连接到可以用作安全边界的同一子网。

    使用区域子网。

  • 函数

    此体系结构使用函数调用具有特定映像的 OCI Vision REST API,然后存储 OCI Vision 返回的元数据。该函数可以使用 Java 或 Python SDK 构建。

  • 事件

    在此体系结构中,OCI 事件服务配置为监听对象存储创建中的更改。将对象上载到对象存储并调用函数进行处理后,将调用该服务。

  • 对象存储

    将映像上载到对象存储时,关联的事件可以用作项计数 OCI 功能的触发器。然后,该函数可以直接调用 Oracle Fusion Cloud Inventory Management API 来更新项计数。在这种情况下,可以在对象存储中以用于审计的详细结果(包括添加了边界框的图像)的方式执行实施。在此方案中,归档存储可用作更具成本效益的选项。

考虑事项

部署此体系结构时,请考虑以下几点。

  • 用户界面

    在 Oracle 行业实验室概念验证中,为了进行演示,开发了一个简单的 Web 应用,用于在输入图片上显示边框,这是流程的一个步骤。如果需要,可以构建和使用此类 Web 应用程序,以便操作员通过查看边框手动验证对象计数。

  • 访问

    OCI Vision 支持通过 OCI 控制台、Java 和 Python SDK 客户端以及 OCI CLI 进行访问。测试时,建议使用 CLI 工具或控制台。

致谢

  • Author: Nuno Goncalves
  • Contributors: Mihai Dragnea, Jason Monden, Hassan Ajan, Surya Kommareddy, Nithin TS