我们的星球面临全球灭绝危机。 联合国报告 显示出数量惊人的超过 XNUMX 万个物种可能正处于灭绝的道路上。 灭绝的最常见原因包括栖息地丧失、偷猎和入侵物种。 一些 野生动物保护基金会、研究科学家、志愿者和 反偷猎游骑兵 一直在不知疲倦地应对这场危机。 掌握有关野外濒危动物的准确和定期信息将提高野生动物保护主义者研究和保护濒危物种的能力。 野生动物科学家和现场工作人员使用配备红外触发器的相机,称为 相机陷阱,并将它们放置在森林中最有效的位置以捕捉野生动物的图像。 然后手动查看这些图像,这是一个非常耗时的过程。
在这篇文章中,我们演示了一个使用 Amazon Rekognition自定义标签 与运动传感器相机陷阱一起,使这一过程自动化,以识别产生的物种并对其进行研究。 Rekognition Custom Labels 是一项完全托管的计算机视觉服务,允许开发人员构建自定义模型来分类和识别图像中特定于其用例的对象。 我们详细介绍了如何从相机陷阱收集的图像中识别濒临灭绝的动物物种,了解它们的种群数量,并检测它们周围的人类。 这些信息将对环保主义者有所帮助,他们可以做出积极的决定来拯救它们。
解决方案概述
下图说明了该解决方案的体系结构。
该解决方案使用以下AI服务,无服务器技术和托管服务来实现可扩展且具有成本效益的体系结构:
- 亚马逊雅典娜 – 一种无服务器交互式查询服务,可以使用标准 SQL 轻松分析 Amazon S3 中的数据
- 亚马逊CloudWatch – 一种监控和可观察性服务,以日志、指标和事件的形式收集监控和操作数据
- Amazon DynamoDB – 一个键值和文档数据库,可在任何规模下提供个位数毫秒的性能
- AWS Lambda – 一种无服务器计算服务,可让您运行代码以响应数据更改、系统状态变化或用户操作等触发器
- 亚马逊QuickSight – 无服务器、机器学习 (ML) 支持的商业智能服务,可提供洞察力、交互式仪表板和丰富的分析
- 亚马逊重新认识 – 使用 ML 识别图像和视频中的对象、人物、文本、场景和活动,并检测任何不当内容
- Amazon Rekognition自定义标签 – 使用 AutoML 帮助训练自定义模型以识别图像中特定于您的业务需求的对象和场景
- Amazon Simple Queue Service(Amazon SQS) – 完全托管的消息队列服务,使您能够解耦和扩展微服务、分布式系统和无服务器应用程序
- 亚马逊简单存储服务(Amazon S3) – 用作文档的对象存储,并允许通过微调访问控制进行集中管理。
此解决方案中的高级步骤如下:
- 使用 Rekognition 自定义标签训练和构建自定义模型,以识别该地区的濒危物种。 在这篇文章中,我们使用犀牛的图像进行训练。
- 通过运动传感器相机陷阱捕获的图像被上传到 S3 存储桶,该存储桶为每个上传的图像发布一个事件。
- 每个发布的事件都会触发一个 Lambda 函数,该函数从 S3 存储桶中检索图像并将其传递给自定义模型以检测濒危动物。
- Lambda 函数使用 Amazon Rekognition API 来识别图像中的动物。
- 如果图像中有任何濒临灭绝的犀牛物种,该函数会使用动物数量、捕获图像的日期以及可以从图像中提取的其他有用元数据来更新 DynamoDB 数据库 EXIF 标头。
- QuickSight 用于可视化 DynamoDB 数据库中收集的动物数量和位置数据,以了解动物种群随时间的变化。 通过定期查看仪表板,保护组织可以识别模式并隔离可能导致这种差异的疾病、气候或偷猎等可能原因,并主动采取措施解决问题。
先决条件
使用 Rekognition 自定义标签构建有效模型需要良好的训练集。 我们使用了来自 AWS Marketplace 的图片(Shutterstock 的动物和野生动物数据集) 以及 Kaggle 建立模型。
实施解决方案
我们的工作流程包括以下步骤:
- 使用 Rekognition 自定义标签的 AutoML 功能训练自定义模型以对濒危物种(在我们的示例中为犀牛)进行分类。
您还可以从 Rekognition 自定义标签控制台执行这些步骤。 有关说明,请参阅 建立专案, 创建训练和测试数据集及 训练 Amazon Rekognition 自定义标签模型.
在这个例子中,我们使用来自 Kaggle 的数据集。 下表总结了数据集的内容。
标签 | 训练套 | 测试集 |
狮子 | 625 | 156 |
犀牛 | 608 | 152 |
非洲大象 | 368 | 92 |
- 将从相机陷阱捕获的图片上传到指定的 S3 存储桶。
- 定义事件通知 权限 S3 存储桶的部分,用于在将对象添加到存储桶时向定义的 SQS 队列发送通知。
上传操作使用 Amazon S3 事件通知触发在 Amazon SQS 中排队的事件。
- 通过 SQS 队列的访问策略添加适当的权限,以允许 S3 存储桶向队列发送通知。
- 为 SQS 队列配置 Lambda 触发器,以便在收到新消息时调用 Lambda 函数。
- 修改访问策略以允许 Lambda 函数访问 SQS 队列。
Lambda 函数现在应该具有访问 SQS 队列的正确权限。
- 设置环境变量,以便可以在代码中访问它们。
Lambda 函数代码
Lambda 函数在接收到来自 SNS 队列的通知时执行以下任务:
- 对 Amazon Rekognition 进行 API 调用,以检测自定义模型中识别濒危物种的标签:
- 从图像中获取 EXIF 标签以获取照片的拍摄日期和其他相关的 EXIF 数据。 以下代码使用依赖项(包-版本)exif-reader-^1.0.3,sharp-^0.30.7:
这里概述的解决方案是异步的; 图像由相机陷阱捕获,然后在稍后上传到 S3 存储桶进行处理。 如果更频繁地上传相机陷阱图像,您可以扩展解决方案以检测监控区域中的人类并向相关活动家发送通知,以指示这些濒临灭绝的动物附近可能存在偷猎。 这是通过调用 Amazon Rekognition API 的 Lambda 函数来实现的,以检测是否存在人的标签。 如果检测到人,则会将一条错误消息记录到 CloudWatch Logs。 错误日志中的过滤指标会触发 CloudWatch 警报,该警报会向保护活动家发送电子邮件,然后他们可以采取进一步行动。
- 使用以下代码展开解决方案:
- 如果检测到任何濒危物种,Lambda 函数会使用从图像 EXIF 标签中获取的计数、日期和其他可选元数据更新 DynamoDB:
查询和可视化数据
您现在可以使用 Athena 和 QuickSight 来可视化数据。
- 添加数据源详细信息。
下一个重要步骤是定义连接到数据源的 Lambda 函数。
- 选择 创建 Lambda 函数.
- 输入名称 雅典娜目录名称 和 溢出桶; 其余的可以是默认设置。
- 部署连接器功能。
处理完所有图像后,您可以使用 QuickSight 可视化来自 Athena 的人口随时间变化的数据。
- 在 Athena 控制台上,选择一个数据源并输入详细信息。
- 创建 Lambda 函数 为 DynamoDB 提供连接器。
- 在 QuickSight 仪表板上,选择 新分析 和 新数据集.
- 选择 Athena 作为数据源。
- 输入要连接的目录、数据库和表并选择 选择.
- 完成数据集创建。
下图显示了某一天捕获的濒危物种数量。
GPS 数据作为捕获图像的 EXIF 标签的一部分呈现。 由于这些濒危动物位置的敏感性,我们的数据集没有 GPS 位置。 但是,我们使用模拟数据创建了一个地理空间图表,以显示在 GPS 数据可用时如何可视化位置。
清理
为避免产生意外成本,请务必关闭您在此演示中使用的 AWS 服务 - S3 存储桶、DynamoDB 表、QuickSight、Athena 和经过训练的 Rekognition 自定义标签模型。 如果不再需要这些资源,则应直接通过它们各自的服务控制台删除它们。 参考 删除 Amazon Rekognition 自定义标签模型 有关删除模型的更多信息。
结论
在这篇文章中,我们展示了一个自动化系统,可以识别濒危物种,记录它们的种群数量,并提供关于种群随时间变化的见解。 您还可以扩展解决方案,以便在人类(可能的偷猎者)在这些濒危物种附近时向当局发出警报。 借助 Amazon Rekognition 的 AI/ML 功能,我们可以支持保护组织保护濒危物种及其生态系统的努力。
有关 Rekognition 自定义标签的更多信息,请参阅 Amazon Rekognition 自定义标签入门 和 审核内容. 如果您是 Rekognition 自定义标签的新手,您可以使用我们的免费套餐,该套餐为期 3 个月,包括每月 10 个免费培训小时和每月 4 个免费推理小时。 Amazon Rekognition 免费套餐包括在 5,000 个月内每月处理 12 张图像。
作者简介
乔蒂·古达尔 是 AWS 的合作伙伴解决方案架构师经理。 她与全球系统集成商合作伙伴密切合作,以支持和支持客户将其工作负载迁移到 AWS。
周杰伦 是 AWS 的首席解决方案架构师。 他喜欢为客户提供技术和战略指导,并帮助他们在 AWS 上设计和实施解决方案。