Tyson 的工业自动化与计算机视觉、AWS Panorama 和 Amazon SageMaker

源节点: 1575225

这是关于 Tyson Foods, Inc. 如何利用 Amazon SageMaker 和 AWS Panorama 通过在边缘引入人工智能应用程序的好处来自动化其肉类加工厂的工业流程的两部分博客系列中的第一部分。 在第一部分中,我们讨论了包装线的库存盘点应用程序。 在第二部分中,我们讨论了一种基于视觉的边缘异常检测解决方案,用于工业设备的预测性维护。

作为世界上最大的鸡肉、牛肉和猪肉加工商和营销商之一, 泰森食品公司, 以为其生产和包装工厂带来创新解决方案而闻名。 2020年XNUMX月,泰森 公布 它计划将计算机视觉 (CV) 引入其养鸡场,并与 AWS 一起启动试点,以开拓库存管理工作。 泰森合作过 亚马逊机器学习解决方案实验室 创建最先进的鸡肉托盘计数 CV 解决方案,提供对包装库存水平的实时洞察。 在这篇博文中,我们提供了 AWS 架构的概述和解决方案的完整演练,以演示在 Tyson 工厂设置的托盘计数管道中的关键组件。 我们将专注于在边缘使用 CV 模型的数据收集和标记、训练和部署 亚马逊SageMaker, Apache MXNet 胶子AWS全景图.

卓越运营是泰森食品的重中之重。 泰森食品在其包装生产线上采用严格的质量保证 (QA) 措施,确保只有通过质量控制协议的包装产品才能运送给客户。 为满足客户需求并提前解决任何生产问题,泰森食品密切监控包装好的鸡肉托盘数量。 然而,目前用于计算通过 QA 的鸡托盘数量的人工技术并不准确,并且无法清楚地显示生产水平过高/过低的情况。 替代策略(例如每小时监控每个机架的生产总重量)不会向工厂员工提供即时反馈。 凭借每周 45,000,000 只鸡的加工能力,生产精度和效率对 Tyson 的业务至关重要。 CV 可以有效地用于此类场景,以实时准确估计鸡肉加工量,使员工能够在包装和生产线出现潜在瓶颈时识别它们。 这样可以实施纠正措施并提高生产效率。

在云中为 CV 应用程序流式传输和处理本地视频流需要高网络带宽和相关基础设施的配置。 这可能是一项成本高昂的任务。 AWS Panorama 消除了这些要求,并使 Tyson 能够在 AWS Panorama 设备的边缘处理视频流。 它减少了进出云的延迟和带宽成本,同时提供了一个易于使用的界面来管理边缘设备和应用程序。

对象检测是最常用的 CV 算法之一,可以定位图像和视频中对象的位置。 该技术目前被用于各种现实生活中的应用,例如自动驾驶汽车中的行人定位、医学扫描中的肿瘤检测、零售空间中监测客流量的人数统计系统等。 对于库存管理用例(例如 Tyson 的肉盘计数)来说,通过创建生产流程、成本节约和按时交付客户货物的反馈循环来减少浪费也很重要。

本博文的以下部分概述了我们如何使用 Tyson Foods 工厂之一的直播视频来训练使用 Amazon SageMaker 的对象检测模型。 然后,我们使用 AWS Panorama 设备将其部署在边缘。

AWS全景图

AWS Panorama 是一种机器学习 (ML) 设备,允许组织将 CV 带到本地摄像头,以在本地进行高精度和低延迟的预测。 AWS Panorama Appliance 是一种硬件设备,允许您运行使用 ML 从视频流收集数据、输出带有文本和图形叠加的视频,以及与其他 AWS 服务交互的应用程序。 该设备可以针对多个视频流并行运行多个 CV 模型,并实时输出结果。 它专为在商业和工业环境中使用而设计。

AWS Panorama Appliance 使您能够在边缘运行独立的 CV 应用程序,而无需将图像发送到 AWS 云。 您还可以使用 AWS Panorama Appliance 上的 AWS 开发工具包与其他 AWS 服务集成,并使用它们跟踪应用程序随时间变化的数据。 要构建和部署应用程序,您可以使用 AWS Panorama Application CLI。 CLI 是一个命令行工具,可以生成默认的应用程序文件夹和配置文件,使用 Docker 构建容器,并上传资产。

AWS Panorama 支持使用 Apache MXNet, 暗网, 胶水, Keras, 昂尼克斯, PyTorch, TensorFlowTensorFlow Lite。 参考 Free Introduction 博客文章以了解有关在 AWS Panorama 上构建应用程序的更多信息。 在部署过程中,AWS Panorama 负责编译特定于边缘平台的模型 Amazon SageMaker Neo 编译. 推理结果可以路由到 AWS 服务,例如 Amazon S3、Amazon CloudWatch 或与本地业务线应用程序集成。 部署日志存储在 Amazon CloudWatch 中。

要跟踪推理脚本逻辑或训练模型的任何变化,可以创建应用程序的新版本。 应用版本 是应用程序配置的不可变快照。 AWS Panorama 会保存您的应用程序的先前版本,以便您可以回滚不成功的更新,或在不同的设备上运行不同的版本。

欲了解更多信息,请参阅 AWS 全景页面. 要了解有关构建示例应用程序的更多信息,请参阅 AWS 全景图示例.

途径

如上图所示,工厂员工不断地将包装好的鸡肉托盘装入塑料桶中,并随着时间的推移进行堆叠。 我们希望能够检测和计算垂直堆叠的所有箱子中的托盘总数。

经过训练的对象检测模型可以预测每个视频帧中放置在垃圾箱中的所有托盘的边界框。 这可用于衡量给定实例中垃圾箱中的托盘数量。 我们还知道,在任何时候,只有一个箱子装满了包装好的托盘; 托盘计数从高(填充期间)连续振荡到低(当新垃圾箱挡住已填充垃圾箱的视线时)。

有了这些知识,我们采用以下策略来计算鸡托盘的总数:

  1. 维护两个不同的计数器——本地和全局。 全局计数器维护装箱的托盘总数,本地计数器存储放置在新箱中的最大托盘数。
  2. 当新托盘放入箱中时更新本地计数器。
  3. 通过以下方式检测新的 bin 事件:
    1. 给定帧中的托盘计数变为零。 (或者)
    2. 最后的托盘编号流 n 帧数不断下降。
  4. 一旦检测到新的 bin 事件,将本地计数器值添加到全局计数器。
  5. 将本地计数器重置为零。

我们在几个小时的视频上测试了这个算法并得到了一致的结果。

使用 Amazon SageMaker 训练对象检测模型

数据集创建:

为标记作业捕获新图像

为标记作业捕获新图像

我们使用 AWS Panorama Appliance 从包装线收集图像样本。 处理图像并保存它们的脚本被打包为应用程序并部署在 AWS Panorama 上。 该应用程序从包装区附近设置的本地摄像机收集视频帧,并以 60 秒的间隔将它们保存到 Amazon S3 桶; 这可以防止在相隔几秒的视频序列中捕获相似的图像。 我们还屏蔽了图像中与用例无关的相邻区域。

我们使用边界框标记鸡托盘 Amazon SageMaker Ground Truth 的 流标签作业。 我们还设置了一个 Amazon S3 事件通知,用于发布 对象创建的事件亚马逊简单通知服务 (SNS) 主题,作为标记作业的输入源。 当 AWS Panorama 应用程序脚本将图像保存到 S3 存储桶时,事件通知将发布到 SNS 主题,然后该主题将此图像发送到标记作业。 当注释器标记每个传入图像时,Ground Truth 将标签保存到清单文件中,其中包含图像的 S3 路径以及鸡肉托盘边界框的坐标。

我们对标记的图像执行多项数据增强(例如:随机噪声、随机对比度和亮度、通道混洗),以使模型对现实生活中的变化具有鲁棒性。 将原始图像和增强图像组合起来形成一个统一的数据集。

模型训练:

标记作业完成后,我们手动触发 AWS Lambda 功能。 此 Lambda 函数将输出清单中的图像及其相应标签捆绑到一个 文件. 我们的训练和测试文件包含从不同包装线收集的图像,以防止评估中的任何数据泄漏。 然后,Lambda 函数会触发 Amazon SageMaker 训练作业。

我们使用 SageMaker 脚本模式,它允许您使用自己的训练算法并直接训练模型,同时保持在 Amazon SageMaker 的用户友好范围内。 我们使用来自 SSD、Yolo-v3(用于实时推理延迟)的各种骨干网络组合来训练模型 用于物体检测的 GluonCV Model Zoo 在脚本模式下。 神经网络倾向于过度拟合训练数据,导致样本外结果不佳。 GluonCV 提供图像归一化和图像增强,例如随机图像翻转和裁剪,以帮助减少训练期间的过度拟合。 这 模型训练代码 容器化并使用我们的 AWS Elastic Container Registry 中的 Docker 镜像。 训练作业将 S3 图像文件夹和 LST 文件路径作为输入并保存最佳模型工件(.params.json) 完成后到 S3。

模型评估管道

模型评估管道

基于我们测试集的前 2 个模型是 SSD-resnet50Yolov3-darknet53,每个 mAP 得分为 0.91。 我们还通过在 AWS Panorama 设备上部署推理应用程序以及经过训练的模型来执行真实世界测试。 推理脚本将预测和视频帧保存到 Amazon S3 存储桶中。 我们创建了另一个 SageMaker Ground Truth 作业来注释 ground truth,然后执行额外的定量模型评估。 图像上的基本事实和预测边界框标签保存在 S3 中用于定性评估。 这些模型能够概括真实世界的数据,并产生与我们的测试集相似的一致性能。

您可以在 Amazon SageMaker 上找到有关创建自定义训练作业、训练最先进的对象检测模型、实施超参数优化 (HPO) 和模型部署的完整端到端示例 AWS 实验室 GitHub 存储库.

部署肉盘计数应用程序

生产架构

生产架构

在部署之前,我们将所有资产——模型、推理脚本、相机和全局变量配置打包到一个容器中,如 这个博文. 我们的持续集成和持续部署 (CI/CD) 管道将推理脚本中的任何更改更新为新的应用程序版本。 发布新应用程序版本后,我们将使用 Python 中的 boto3 SDK 以编程方式部署它。

应用程序部署后,AWS Panorama 首先创建一个 AWS SageMaker Neo 编译作业来为 AWS Panorama 设备编译模型。 推理应用程序脚本在设备上导入编译模型,并在每一帧执行鸡肉托盘检测。 除了 SageMaker Neo-Compilation 之外,我们还通过添加一个 os.environ['TVM_TENSORRT_USE_FP16'] = '1' 脚本中的标志。 这将模型权重的大小从 32 位浮点数减少到 16 位浮点数,将模型大小减少一半并改善延迟,而不会降低性能。 推理结果被捕获在 AWS SiteWise 监控器 通过来自 AWS Panorama 设备的 MQTT 消息 AWS 物联网核心. 然后将结果推送到 Amazon S3 并在 亚马逊QuickSight 仪表板。 工厂经理和员工可以直接查看这些仪表板,实时了解每条包装线的吞吐量。

结论

通过结合 Amazon SageMaker、Amazon S3 等 AWS 云服务和 AWS Panorama 等边缘服务,Tyson Foods Inc. 正在注入人工智能,以自动化其制造工厂中的库存盘点等人力密集型工业流程。 实时边缘推理功能使 Tyson 能够识别生产过剩/不足并动态调整其生产流程以最大限度地提高效率。 此外,通过在边缘拥有 AWS Panorama 设备,Tyson 还能够节省与将视频文件传输到云的昂贵网络带宽相关的成本,并且现在可以在其网络中本地处理所有视频/图像资产。

这篇博文为您提供端到端边缘应用程序概述和参考架构,用于使用 AWS Panorama 开发 CV 应用程序。 我们讨论了构建边缘 CV 应用程序的 3 个不同方面。

  1. 时间:使用 AWS Panorama 和 Amazon SageMaker Ground Truth 收集、处理和标记数据。
  2. 型号: 使用 Amazon SageMaker 和 AWS Lambda 进行模型训练和评估
  3. 应用程序包:为 AWS Panorama 捆绑经过训练的模型、脚本和配置文件。

请继续关注本系列的第二部分,了解 Tyson 如何使用 AWS Panorama 对工业机器进行基于 CV 的预测性维护。

点击 此处 开始您的 AWS Panorama 之旅。 要了解有关与 ML Solutions Lab 协作的更多信息,请参阅 亚马逊机器学习解决方案实验室.


作者简介

迪维亚·巴尔加维(Divya Bhargavi) 是数据科学家 亚马逊机器学习解决方案实验室 她与各个垂直领域的客户合作,运用创造性的问题解决方法,通过最先进的 ML/AI 解决方案为客户创造价值。

迪利普·苏布拉马尼亚姆 是泰森食品新兴技术团队的高级开发人员。 他热衷于构建大型分布式应用程序,以利用他在软件开发、机器学习和大数据方面的知识来解决业务问题和简化流程。

资料来源:https://aws.amazon.com/blogs/machine-learning/industrial-automation-at-tyson-with-computer-vision-aws-panorama-and-amazon-sagemaker/

时间戳记:

更多来自 AWS机器学习博客