Press "Enter" to skip to content

优化 Purina 的 Petfinder 应用程序的宠物配置文件,使用 Amazon Rekognition 自定义标签和 AWS Step Functions

Purina美国是雀巢的子公司,通过Petsfinder数字市场,帮助人们更容易地领养宠物。Petsfinder是一个覆盖美国、加拿大和墨西哥的超过11,000家动物收容所和救援组织的数字市场。作为领先的宠物领养平台,Petsfinder帮助了数百万只宠物找到了他们永远的家。

Purina始终致力于改进Petsfinder平台,以使其对收容所、救援组织和宠物领养者都更好。他们面临的一个挑战是准确反映出待领养动物的品种。因为很多收容所的动物是杂交品种,正确识别宠物概要中的品种和属性需要手动努力,非常耗时。Purina使用人工智能(AI)和机器学习(ML)来自动化大规模的动物品种检测。

本文详细介绍了Purina如何使用Amazon Rekognition定制标签,AWS Step Functions和其他AWS服务创建一个机器学习模型,从上传的图像中检测宠物品种,然后使用预测结果自动填充宠物属性。该解决方案关注数据准备、模型训练、模型评估和模型监控等开发AI/ML应用程序工作流程的基本原则。

解决方案概述

从图像中预测动物的品种需要定制的机器学习模型。开发用于分析图像的定制模型是一项重大任务,需要时间、专业知识和资源,通常需要数月才能完成。此外,通常需要数千或数万个手工标记的图像来为模型提供足够的数据以便准确做出决策。建立用于审核或审查模型预测以验证其符合要求的工作流程可能会进一步增加总体复杂性。

使用建立在Amazon Rekognition现有功能之上的Rekognition定制标签,您可以识别与您业务需求相关的图像中的对象和场景。它已经在多个类别的数千万张图像上进行了训练。您只需上传一小组针对您特定用例的训练图像(通常是每个类别少于几百张图像),而不是数千张图像。

这个解决方案使用以下服务:

  • Amazon API Gateway是一个完全托管的服务,使开发人员能够轻松地发布、维护、监控和保护任意规模的API。
  • AWS Cloud Development Kit(AWS CDK)是一个开源软件开发框架,用于使用现代编程语言定义云基础设施作为代码,并通过AWS CloudFormation进行部署。
  • AWS CodeBuild是一个完全托管的云端持续集成服务。CodeBuild编译源代码、运行测试,并生成可部署的软件包。
  • Amazon DynamoDB是一个快速灵活的非关系型数据库服务,适用于任何规模。
  • AWS Lambda是一种事件驱动的计算服务,可让您运行几乎任何类型的应用程序或后端服务的代码,无需预配置或管理服务器。
  • Amazon Rekognition提供预训练和可定制的计算机视觉(CV)功能,可从您的图像和视频中提取信息和洞察力。使用Amazon Rekognition定制标签,您可以识别与您业务需求相关的图像中的对象和场景。
  • AWS Step Functions是一个完全托管的服务,使协调分布式应用程序和微服务的组件更加方便,使用可视化工作流程。
  • AWS Systems Manager是一个安全的端到端管理解决方案,适用于AWS和多云和混合环境中的资源。Systems Manager的一个功能Parameter Store提供了安全的、分层的配置数据管理和秘密管理存储。

普瑞纳(Purina)的解决方案部署为一个API 网关 HTTP 终端,将请求路由到获取宠物属性的接口。它使用 Rekognition 自定义标签来预测宠物品种。ML 模型是从普瑞纳的数据库中提取的宠物资料训练而成的,假设主要品种标签是真实标签。DynamoDB 用于存储宠物属性。Lambda 用于处理宠物属性请求,协调 API 网关、亚马逊 Rekognition 和 DynamoDB 之间的交互。

该架构的实现方式如下:

  1. Petfinder 应用程序通过 API 网关路由请求以获取宠物属性。
  2. API 网关调用 Lambda 函数以获取宠物属性。
  3. Lambda 函数调用 Rekognition 自定义标签推理终端点以预测宠物品种。
  4. Lambda 函数使用预测的宠物品种信息在 DynamoDB 表中执行宠物属性查找。它收集宠物属性并将其发送回 Petfinder 应用程序。

下图展示了解决方案的工作流程。

优化 Purina 的 Petfinder 应用程序的宠物配置文件,使用 Amazon Rekognition 自定义标签和 AWS Step Functions 四海 第1张

普瑞纳的 Petfinder 团队希望能拥有一个能够以最小维护工作部署的自动化解决方案。为了实现这一目标,我们使用 Step Functions 创建了一个状态机,用于使用最新数据训练模型、在基准集上检查模型的性能,并在模型改进时重新部署模型。模型重新训练是由用户提交的宠物属性信息中繁殖修正数量触发的。

模型训练

开发一个用于分析图像的定制模型是一项庞大的任务,需要时间、专业知识和资源。此外,通常需要数千或数万个手工标记的图像,以为模型提供足够的数据来做出准确的决策。生成这些数据可能需要几个月的时间,并需要大量的工作来对其进行标记,以供机器学习使用。一种被称为迁移学习的技术可以通过借用预训练模型的参数来生成更高质量的模型,并且可以使用较少的图像进行训练。

我们的挑战是我们的数据不是完美标记的:输入配置文件数据的人可以犯错。然而,我们发现对于足够大的数据样本,错误标记的图像所占比例很小,模型的性能准确度只受影响不超过2%。

ML 工作流程和状态机

Step Functions 状态机被开发用于自动重新训练亚马逊 Rekognition 模型。在输入配置文件时收集反馈,每当用户将基于图像推断的品种修改为其他品种时,都会记录该修正。这个状态机会从可配置的修正数量和其他的一些数据的阈值触发。

状态机通过几个步骤创建解决方案:

  1. 创建包含亚马逊简单存储服务(Amazon S3)图像路径及其标签列表的训练和测试清单文件,供Amazon Rekognition使用。
  2. 使用清单文件创建亚马逊 Rekognition 数据集。
  3. 在创建数据集后,训练亚马逊 Rekognition 模型版本。
  4. 在训练完成后启动模型版本。
  5. 评估模型并生成性能指标。
  6. 如果性能指标满意,更新 Parameter Store 中的模型版本。
  7. 等待新的模型版本在 Lambda 函数中传播(20分钟),然后停止之前的模型。

模型评估

我们使用从数据样本中随机抽取的20%保留集来验证我们的模型。由于我们检测到的品种是可配置的,我们在训练过程中不使用固定的数据集进行验证,但我们使用手动标记的评估集进行集成测试。手动标记集和模型可检测到的品种的重叠用于计算指标。如果模型的品种检测准确度超过指定的阈值,我们将该模型推广为用于终端的模型。

以下是来自 Rekognition 自定义标签的宠物预测工作流程的几个截图。

优化 Purina 的 Petfinder 应用程序的宠物配置文件,使用 Amazon Rekognition 自定义标签和 AWS Step Functions 四海 第2张

优化 Purina 的 Petfinder 应用程序的宠物配置文件,使用 Amazon Rekognition 自定义标签和 AWS Step Functions 四海 第3张

使用 AWS CDK 进行部署

使用 Python 和 AWS CDK 部署 Step Functions 状态机及相关基础设施(包括 Lambda 函数、CodeBuild 项目和 Systems Manager 参数)。AWS CDK 代码合成了一个 CloudFormation 模板,用于部署解决方案的所有基础设施。

与 Petfinder 应用集成

Petfinder 应用通过 API Gateway 端点使用包含 JSON 负载的 POST 请求访问图像分类端点,其中包含到图像的 Amazon S3 路径和要返回的结果数量。

将会受到影响的关键绩效指标

为了证明运行图像推理端点增加的成本是合理的,我们进行了实验,以确定端点为 Petfinder 增加的价值。使用端点提供了两种主要改进:

  • 减少为创建宠物资料的宠物收容所所需的工作量
  • 更完整的宠物资料,预期能提高搜索相关性

用于衡量工作量和资料完整性的指标包括纠正的自动填充字段数量、填充字段的总数以及上传宠物资料所需的时间。搜索相关性的改进是通过测量与领养率相关的关键绩效指标间接推断出的。根据宝路纳 (Purina) 的数据,该解决方案上线后,宠物寻亲应用的创建宠物资料的平均时间从 7 分钟减少到 4 分钟。这是一项巨大的改进和节省时间,因为在 2022 年有 400 万份宠物资料被上传。

安全性

根据 AWS Well-Architected 得到的最佳实施方法,流经架构图的数据在传输过程中和静态保存时都进行了加密。在所有的 AWS 项目中,安全专家都会审查解决方案,确保提供了一个安全的实现。

结论

使用基于 Rekognition 自定义标签的解决方案,Petfinder 团队能够加快为宠物收容所创建宠物资料的速度,减轻了收容所人员的行政负担。使用基于 AWS CDK 的部署方式,可以部署一个 Step Functions 工作流来自动化训练和部署过程。要开始使用 Rekognition 自定义标签,请参阅 Amazon Rekognition 自定义标签入门指南。您还可以查看一些 Step Functions 示例AWS CDK 入门指南

Leave a Reply

Your email address will not be published. Required fields are marked *