Amazon Web Services ブログ

Amazon SageMaker 地理空間機能とカスタム SageMaker モデルを使用した被害評価

この記事は Damage assessment using Amazon SageMaker geospatial capabilities and custom SageMaker models を翻訳したものです。


この投稿では、地理空間機能を備えた Amazon SageMaker を使用して自然災害による被害をトレーニング、デプロイ、推論する方法を示します。新しい SageMaker の地理空間機能を使用して、モデルをテストするための新しい推論データを生成します。多くの政府機関や人道支援団体は、災害発生時に迅速かつ正確な状況把握を必要としています。被害の重大度、原因、場所を知ることは、応急対応者の対応戦略と意思決定に役立ちます。正確でタイムリーな情報が不足していると、救援活動が不完全になったり、誤った方向に進んだりする可能性があります。

自然災害の頻度と深刻さが増すにつれて、意思決定者と救急隊員に迅速かつ正確な被害評価を提供することが重要です。
この例では、地理空間画像を使用して自然災害による被害を推論します。地理空間データは、自然災害直後の建物や道路、その他の重要インフラの被害を迅速に特定するために使用できます。この投稿では、災害被害の分類に使用する地理空間セグメンテーションモデルをトレーニングして導入する方法を紹介します。アプリケーションを、モデルのトレーニング、デプロイ、推論の 3 トピックに分けます。

モデルのトレーニング

このユースケースでは、Amazon SageMaker を使用して建物被害の画像セグメンテーション用にカスタム PyTorch モデルを構築しました。SageMaker の地理空間機能には、ユーザーが利用できるトレーニング済みのモデルが含まれています。これらの組み込みモデルには、雲のセグメンテーションと除去、および土地被覆のセグメンテーションが含まれます。この投稿では、ビル被害の程度をセグメンテーションするのカスタムモデルをトレーニングします。まず、xView2 コンペティションのデータで SegFormer モデルをトレーニングしました。SegFormer は、2021年の論文 SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers で紹介されたTransformer ベースのアーキテクチャです。自然言語処理ワークロードでよく使われるTransformer アーキテクチャをベースにしていますが、SegFormer アーキテクチャはセマンティックセグメンテーション用に構築されています。Transformer ベースのエンコーダーと軽量デコーダーの両方を組み合わせています。これにより、従来法よりもパフォーマンスが向上し、モデルサイズも大幅に小さくなります。人気の Hugging Face Transformer ライブラリから、トレーニング済みのものとトレーニングされていないものの両方の SegFormer モデルを入手できます。このユースケースでは、事前にトレーニングされた SegFormer アーキテクチャをダウンロードし、新しいデータセットでトレーニングします。

この例で使用されているデータセットは、xView2 data science competition から取得したものです。このコンペティションでは、xBD dataset が公開されています。これは、自然災害の前後の建物の位置と被害スコア(分類)で注釈を付けた高解像度の衛星画像の最大かつ最高品質のデータセットの 1 つです。このデータセットには、15 か国、6 種類の災害(地震/津波、洪水、火山噴火、山火事、暴風)に対し、45,362 平方キロメートルの画像にわたる 850,736 件の建物被害の注釈が付与された地理空間データが含まれています。次の画像はデータセットの例です。この画像は建物被害セグメンテーションマスクを重ねた災害後の画像です。各画像には、災害前の衛星画像、災害前の建物のセグメンテーションマスク、災害後の衛星画像、および被害分類を含む災害後の建物セグメンテーションマスクが含まれます。

post-disaster image with the building damage segmentation mask overlayed

この例では、災害前後の画像のみを使用して災害後の被害分類(セグメンテーションマスク)を推論します。災害前の建物のセグメンテーションマスクは使用していません。このアプローチは単純化のために選択しました。このデータセットにアプローチする方法は他にもあります。xView2 コンテストで受賞したアプローチの多くは、2 段階のソリューションを使用していました。まず、災害前の建物の輪郭セグメンテーションマスクを推論します。次に、建物の輪郭と災害後の画像を使用して、被害分類を推論します。推論のパフォーマンスを向上させる他のモデリング手法の検討は読者に委ねたいと思います。

事前トレーニング済みの SegFormer アーキテクチャは、単一の 3 色チャンネル画像を入力し、セグメンテーションマスクを出力するように構築されています。災害前後の衛星画像両方を入力できるようモデルを変更する方法はいくつかありますが、両方の画像を6色のチャンネル画像として単純にスタッキングします。災害後のセグメンテーションマスクを推論するために、xView2 トレーニングデータセットに標準的なデータオーグメンテーションを使用してモデルをトレーニングします。すべての入力画像のサイズを 1024 ピクセルから 512 ピクセルに変更したことに注意してください。これは、トレーニングデータの空間解像度をさらに下げるためです。GPU インスタンスである p3.2xlarge 1 つを使用して SageMaker でモデルをトレーニングしました。トレーニング済みモデルの出力例を次の図に示します。以下の 2 枚の画像は、検証用の災害前 (Pre Disaster) と災害後 (Post Disaster) の画像です。

pre- and post-damage images from the validation set

次の図は、推論 (Prediction) した被害マスクと 正解 (Ground Truth) の被害マスクを示しています。

The following figures show the predicted damage mask and ground truth damage mask.

Prediction と Ground Truth を比較すると、このモデルは上手く機能していないように見えます 。建物の多くは誤って分類されています。軽微な被害と被害がないものとが混同され、1 つの建物の輪郭に対して複数の分類が出力されています。一方で、このモデルが建物の被害分類をローカライズする方法を学習したことは興味深い発見です。各建物は、no damageminor damagemajor damage、または destroyed に分類されます。Prediction の被害マスクの中央下部の大きな建物に注目してください。このモデルは建物のほとんどを no damage に分類していますが、右上隅は destroyed に分類しています。この建物の部分的な被害位置特定により、建物ごとの局所的な被害状況を表示することで、対応者をさらに支援します。

モデルのデプロイ

次に、トレーニングされたモデルを非同期の SageMaker 推論エンドポイントにデプロイします。なお、非同期エンドポイントを選択したのは、推論時間を長くし、ペイロードの入力サイズを大きくし、使用していないときにエンドポイントをゼロインスタンス(無料)に下げるためです。次の図は、非同期エンドポイントデプロイのハイレベルなコードを示しています。まず、保存した PyTorch state dictionary を圧縮し、圧縮されたモデルアーティファクトを Amazon Simple Storage Service (Amazon S3) にアップロードします。推論コードとモデルアーティファクトを指す SageMaker PyTorch モデルを作成します。推論コードは、モデルをロードして提供するために必要です。SageMaker PyTorch モデルに必要なカスタム推論コードの詳細については、 Use PyTorch with the SageMaker Python SDK を参照してください。

high-level code for asynchronous endpoint deployment

次の図は、非同期推論エンドポイントの Auto Scaling ポリシーのコードを示しています。

The following figure shows the code for the auto scaling policy for the asynchronous inference endpoint.

リアルタイム、バッチ、サーバーレスなど、アプリケーションに使用できるエンドポイントオプションは他にもあることに注意してください。ユースケースに最も適したオプションを選択してください。Amazon SageMaker Inference Recommender が機械学習 (ML) エンドポイント設定の推奨に役立ちます。

モデルの推論

トレーニング済みのモデルがデプロイされたので、SageMaker の地理空間機能を使用してテスト用のデータを収集していきます。SageMaker の地理空間機能では、すぐに使用できる組み込みモデルがいくつか用意されています。この例では、バンドスタッキング操作を使用して、地球観測ジョブの赤、緑、青のカラーチャンネルを積み重ねています。このジョブは Sentinel-2 データセットからデータを収集します。地球観測ジョブを設定するには、目的の位置の座標、観測の時間範囲が必要です。これで、スタッキング機能を使って地球観測ジョブを送信できるようになりました。ここでは、赤、緑、青のバンドを重ねてカラー画像を作成します。次の図は、2022 年 10 月中旬にオーストラリアのロチェスターで発生した洪水のデータを生成するために使用されたジョブ構成を示しています。トレーニング済みの機械学習モデルへの入力として、災害前後の画像を利用しています。

ジョブ構成を定義後にジョブを送信できます。ジョブが完了すると、結果を Amazon S3 にエクスポートします。結果をエクスポートできるのはジョブの完了後だけであることに注意してください。エクスポートジョブ設定でユーザーが指定した Amazon S3 にジョブの結果がエクスポートされます。Amazon S3 の新しいデータにより、デプロイされたモデルを使用して被害を推論できるようになりました。まずデータをメモリに読み込み、災害前後の画像をスタッキングします。

We first read the data into memory and stack the pre- and post-disaster imagery together.

ロチェスター洪水のセグメンテーションマスクの結果を次の図に示します。このモデルでは、浸水地域内の被災地が特定されていることがわかります。また、推論画像の空間分解能はトレーニングデータとは異なることにも注意してください。空間解像度を上げるとモデルのパフォーマンスが向上する可能性がありますが、SegFormer モデルはマルチスケールモデルアーキテクチャのため、他のモデルほど問題になりません。

pre-post flood
results of the segmentation mask for the Rochester floods

被害を推定した結果

まとめ

この投稿では、SageMaker の地理空間機能を使用して自然災害による被害を推論するモデルのトレーニング、デプロイ、推論する方法を紹介しました。新しい SageMaker の地理空間機能を使用して、モデルをテストするための新しい推論データを生成しました。こちらのコードは公開準備中であり、トレーニング、デプロイ、推論の完全なコードへのリンクを添えて更新する予定です。このアプリケーションは、SageMaker を含めた最新の ML ツールで可能なことのほんの一例に過ぎませんが、緊急対応要員、政府、人道支援団体は対応を最適化し、自然災害の直後から危機的な状況を認識できるようになります。

独自のモデルを使って、SageMaker の地理空間機能を今すぐお試しください。読者の皆様がこの投稿を参考に新しいアプリケーションを構築いただければ嬉しいです。


記事の翻訳は Solutions Architect 中島 佑樹が担当しました。

About the author

Aaron Sengstacken is a machine learning specialist solutions architect at Amazon Web Services. Aaron works closely with public sector customers of all sizes to develop and deploy production machine learning applications. He is interested in all things machine learning, technology, and space exploration.