在这篇文章中,我们展示了如何训练、部署和预测自然灾害破坏 具有地理空间功能的 Amazon SageMaker. 我们使用新的 SageMaker 地理空间功能来生成新的推理数据来测试模型。 当灾难发生时,许多政府和人道主义组织需要快速准确的态势感知。 了解损坏的严重程度、原因和位置可以帮助第一响应者制定响应策略和做出决策。 缺乏准确和及时的信息可能导致救援工作不完整或方向错误。
随着自然灾害的频率和严重程度的增加,我们为决策者和急救人员提供快速准确的损失评估非常重要。 在这个例子中,我们使用地理空间图像来预测自然灾害的破坏。 地理空间数据可在自然灾害发生后立即用于快速识别建筑物、道路或其他关键基础设施的损坏情况。 在这篇文章中,我们将向您展示如何训练和部署用于灾害损失分类的地理空间分割模型。 我们将应用程序分为三个主题:模型训练、模型部署和推理。
模型训练
在此用例中,我们使用以下方法构建了自定义 PyTorch 模型 亚马逊SageMaker 用于建筑物损坏的图像分割。 SageMaker 中的地理空间功能包括供您使用的经过训练的模型。 这些内置模型包括云分割和移除,以及土地覆盖分割。 对于这篇文章,我们训练了一个用于损伤分割的自定义模型。 我们首先使用来自 xView2 比赛的数据训练 SegFormer 模型。 SegFormer 是一种基于 transformer 的架构,在 2021 年的论文中被引入 SegFormer:使用 Transformer 进行语义分割的简单高效设计. 它基于在自然语言处理工作负载中非常流行的转换器架构; 然而,SegFormer 架构是为语义分割而构建的。 它结合了基于变压器的编码器和轻量级解码器。 这允许比以前的方法更好的性能,同时提供比以前的方法小得多的模型尺寸。 流行的 Hugging Face 转换器库中提供了预训练和未训练的 SegFormer 模型。 对于此用例,我们下载预训练的 SegFormer 架构并在新数据集上对其进行训练。
本例中使用的数据集来自 xView2 数据科学竞赛. 本次大赛发布了 xBD数据集,这是最大和最高质量的公开可用高分辨率卫星图像数据集之一,在自然灾害前后标注了建筑物位置和损坏分数(类别)。 该数据集包含来自 15 个国家/地区的数据,包括 6 种类型的灾害(地震/海啸、洪水、火山爆发、野火、风),地理空间数据包含跨越 850,736 km^45,362 图像的 2 个建筑物注释。 下图显示了数据集的示例。 该图像显示了覆盖有建筑物损坏分割掩模的灾后图像。 每幅图像包括以下内容:灾前卫星图像、灾前建筑物分割掩码、灾后卫星图像和带有损坏等级的灾后建筑物分割掩码。
在此示例中,我们仅使用灾前和灾后图像来预测灾后损害分类(分割掩码)。 我们不使用灾前建筑分割掩码。 选择这种方法是为了简单。 处理此数据集还有其他选项。 xView2 竞赛的一些获胜方法使用了两步解决方案:首先,预测灾前建筑轮廓分割掩模。 然后将建筑物轮廓和损坏后的图像用作预测损坏分类的输入。 我们将此留给读者探索其他建模方法以提高分类和检测性能。
预训练的 SegFormer 架构被构建为接受单个三色通道图像作为输入并输出分割掩码。 我们可以通过多种方式修改模型以接受卫星前和卫星后图像作为输入,但是,我们使用了一种简单的堆叠技术将两个图像堆叠在一起形成一个六色通道图像。 我们在 xView2 训练数据集上使用标准增强技术训练模型,以预测灾后分割掩码。 请注意,我们确实将所有输入图像的大小从 1024 像素调整为 512 像素。 这是为了进一步降低训练数据的空间分辨率。 该模型使用 SageMaker 使用单个基于 p3.2xlarge GPU 的实例进行训练。 下图显示了经过训练的模型输出示例。 第一组图像是验证集中的损伤前和损伤后图像。
乍一看,与地面实况数据相比,该模型似乎表现不佳。 许多建筑物的分类不正确,将轻微损坏与无损坏混淆,并为单个建筑物轮廓显示多个分类。 然而,在审查模型性能时,一个有趣的发现是它似乎已经学会了对建筑物损坏分类进行本地化。 每个建筑都可以分为 No Damage
, Minor Damage
, Major Damage
或 Destroyed
. 预测的损坏掩码显示该模型已将中间的大型建筑物分类为大部分 No Damage
, 但右上角被分类为 Destroyed
. 这种子建筑物损坏定位可以通过显示每个建筑物的局部损坏来进一步帮助响应者。
模型部署
然后将经过训练的模型部署到异步 SageMaker 推理端点。 请注意,我们选择了一个异步端点以允许更长的推理时间、更大的有效负载输入大小,以及在不使用时将端点缩小到零个实例(不收费)的能力。 下图显示了异步端点部署的高级代码。 我们首先压缩保存的 PyTorch 状态字典并将压缩后的模型工件上传到 亚马逊简单存储服务 (亚马逊 S3)。 我们创建了一个指向我们的推理代码和模型工件的 SageMaker PyTorch 模型。 需要推理代码来加载和服务我们的模型。 有关 SageMaker PyTorch 模型所需的自定义推理代码的更多详细信息,请参阅 将 PyTorch 与 SageMaker Python SDK 结合使用.
请注意,还有其他端点选项,例如实时、批处理和无服务器,可用于您的应用程序。 您需要选择最适合用例的选项并回想一下 Amazon SageMaker 推理推荐器 可用于帮助推荐机器学习 (ML) 端点配置。
模型推断
部署训练好的模型后,我们现在可以使用 SageMaker 地理空间功能 收集数据进行推理。 借助 SageMaker 地理空间功能,可以开箱即用地使用多个内置模型。 在此示例中,我们使用波段堆叠操作来堆叠地球观测作业的红色、绿色和蓝色通道。 该作业从 Sentinel-2 数据集中收集数据。 要配置地球观测作业,我们首先需要感兴趣位置的坐标。 其次,我们需要观察的时间范围。 有了这个,我们现在可以使用堆叠功能提交地球观测作业。 在这里,我们堆叠红色、绿色和蓝色波段以生成彩色图像。 下图显示了用于生成 2022 年 XNUMX 月中旬澳大利亚罗切斯特洪水数据的作业配置。我们利用灾难前后的图像作为我们经过训练的 ML 模型的输入。
定义作业配置后,我们可以提交作业。 作业完成后,我们将结果导出到 Amazon S3。 请注意,我们只能在作业完成后导出结果。 作业的结果可以导出到用户在导出作业配置中指定的 Amazon S3 位置。 现在有了我们在 Amazon S3 中的新数据,我们可以使用部署的模型进行损坏预测。 我们首先将数据读入内存并将灾前和灾后图像堆叠在一起。
罗切斯特洪水的分割掩码结果如下图所示。 在这里,我们可以看到该模型已将洪水区域内的位置识别为可能受损。 另请注意,推理图像的空间分辨率与训练数据不同。 增加空间分辨率可以帮助模型性能; 然而,由于多尺度模型架构,这对于 SegFormer 模型来说不是一个问题,因为它对于其他模型也是如此。
结论
在这篇文章中,我们展示了如何训练、部署和预测自然灾害破坏 具有地理空间功能的 SageMaker. 我们使用新的 SageMaker 地理空间功能生成新的推理数据来测试模型。 这篇文章的代码正在发布过程中,这篇文章将通过指向完整训练、部署和推理代码的链接进行更新。 该应用程序允许急救人员、政府和人道主义组织优化他们的响应,在自然灾害发生后立即提供关键态势感知。 此应用程序只是现代 ML 工具(如 SageMaker)可实现的功能的一个示例。
立即使用您自己的模型试用 SageMaker 地理空间功能; 我们期待看到您接下来构建的内容。
关于作者
亚伦森斯塔肯 是 Amazon Web Services 的机器学习专家解决方案架构师。 Aaron 与各种规模的公共部门客户密切合作,开发和部署生产机器学习应用程序。 他对机器学习、技术和太空探索感兴趣。