Amazon Web Services ブログ
プレビュー:Amazon SageMaker を使用して地理空間データを利用したML モデルを構築、トレーニング、デプロイする
マップアプリを毎日使用して、お気に入りのレストランを見つけたり、地理空間データを使用して最速のルートを移動したりします。地理空間データには、建物の位置 (ポイント)、道路 (ライン)、土地の境界 (ポリゴン) などの 2 次元ジオメトリを使用するベクターデータと、衛星画像や航空画像などのラスターデータの 2 種類があります。
昨年、開発者がアプリケーションに位置情報機能を簡単に追加できる Amazon Location Service を導入しました。Amazon Location Service を使用すると、地図の視覚化、目的の地点の検索、配送ルートの最適化、アセットの追跡、ジオフェンシングを使用して、定義した地理的境界内での出入りイベントの検出を行うことができます。
ただし、機械学習 (ML) を使用して地理空間データから予測を行うには、多くの課題があります。大学院で地理情報システム(GIS)を勉強していたとき、私は狭い範囲しかカバーしない小さなデータセットに限られ、限られたストレージと当時のラップトップの計算能力だけに対処する必要がありました。
これらの課題には、1)高品質の地理空間 データセットの取得とアクセスは複数のデータソースやベンダーと協力する必要があるため複雑である、2)トレーニングや推論のために大量の地理空間データを準備するのは時間と費用がかかる、3)地理空間データを視覚化し、機械学習運用インフラストラクチャと統合するための専用ツールが必要であることが挙げられます
11 月 30 日、地理空間データを使用して ML モデルを簡単に構築、トレーニング、デプロイできる Amazon SageMaker の新しい地理空間機能のプレビューリリースを発表できたことを嬉しく思います。この一連の機能には、事前トレーニング済みのディープニューラルネットワーク (DNN) モデルと地理空間演算子が用意されており、大規模な地理空間データセットに簡単にアクセスして準備できます。生成されたすべての予測は、マップ上で視覚化および調査できます。
また、新しい地理空間画像を使用すると、 NumPy、 GDAL、 GeoPandas、 Rasterioなどのオープンソースライブラリや、SageMaker固有のライブラリを使用して、地理空間ノートブック内のデータを変換および視覚化できます。
機械学習用の完全に統合開発環境 (IDE) である SageMaker Studio コンソールを数回クリックするだけで、土地被覆のセグメンテーションやノートブックの起動などの地球観測ジョブを実行できます。Amazon S3の Planet Labs 衛星データや、Amazon Location Service のオープンデータ。から取得した米国地質調査所 LANDSAT および Sentinel-2 の画像など、さまざまな地理空間データを取り込むことができます。また、GPS デバイス、接続された車両、モノのインターネット (IoT) センサーから生成された位置データ、小売店の人の往来状況、ジオマーケティング、国勢調査データなどの独自のデータを持ち込むこともできます。
Amazon SageMaker の地理空間機能は、あらゆる業界のユースケースをサポートします。たとえば、保険会社は衛星画像を使用して自然災害が地域経済に与える被害の影響を分析したり、農業会社は作物の健康状態を追跡したり、収穫量を予測したり、地域の農産物需要を予測したりできます。小売業者は、位置データと地図データを競合情報と組み合わせて、世界中の新しい店舗の所在地を最適化できます。これらはユースケースのほんの一例です。自分のアイデアを現実に変えることができます!
Amazon SageMaker の地理空間機能の紹介
プレビューでは、米国西部 (オレゴン) リージョンで初期化された SageMaker Studio を使用できます。Studio で新しいユーザーを作成するときは、必ずデフォルトの Jupyter Lab 3 をバージョンとして設定してください。SageMaker Studio の設定の詳細については、AWS ドキュメントのクイックセットアップを使用した Amazon SageMaker ドメインへのオンボーディングを参照してください。
これで、ホームページに移動し、SageMaker Studio の新しいランチャータブを下にスクロールすると、地理空間セクションを見つけることができます。
Amazon SageMaker の 3 つの主要な地理空間機能の概要は次のとおりです:
- 地球観測の仕事 — 衛星画像データを収集、変換、視覚化して予測を行い、有用な洞察を得ます。
- ベクターエンリッチメントジョブ — 地理座標を CSV ファイルから読み取り可能な住所に変換するなどの操作でデータを強化します。
- 地図の視覚化 — CSV、JSON、または GeoJSON ファイルからアップロードされた衛星画像または地図データを視覚化します。
各リリースについて詳しく見ていきましょう!
地球観測の仕事を始めよう
地球観測ジョブを開始するには、フロントページで [地球観測ジョブを作成] を選択してください。
ユースケースに基づいて、地理空間操作または機械学習モデルのいずれかを選択できます。
- スペクトルインデックス — 対象となる特徴が豊富にあることを示すスペクトルバンドの組み合わせを取得します。
- クラウドマスキング — 雲や雲のないピクセルを特定して、鮮明で正確な衛星画像を取得します。
- 土地被覆セグメンテーション — 衛星画像内の植生や水などの土地被覆タイプを特定します。
SageMaker には、データ変換のための組み込み操作と事前トレーニング済みの ML モデルを含む地理空間機能の組み合わせが用意されています。これらのモデルを使用して、環境の変化や人間活動の経時的な影響を把握し、クラウドピクセルとクラウドフリーピクセルを特定し、セマンティックセグメンテーションを実行できます。
ジョブ名を定義し、使用するモデルを選択し、右下の [次へ] ボタンをクリックして 2 番目の構成ステップに進みます。
次に、対象地域 (AOI)、使用する衛星画像データセット、およびジョブ用のフィルターを定義できます。左側の画面には、選択した地球観測ジョブを視覚化する対象地域マップが表示され、右側の画面には AOI の衛星画像とフィルターオプションが表示されます。
フィルターセクションでは、衛星画像コレクション(USGS LANDSAT または Sentinel-2 画像)、地球観測ジョブの日付範囲、および画像のプロパティに関するフィルターを選択できます。
自分の AOI を韓国の済州島にある漢拏山地域と定義するために GeoJSON 形式をアップロードしました。すべてのジョブのプロパティとオプションを選択し、作成を選択します。
地球観測ジョブが正常に作成されると、フラッシュバーが表示され、[ジョブの詳細を表示] ボタンを押すとジョブの詳細を確認できます。
ジョブが終了すると、ジョブの出力を視覚化できます。
この画像は、入力された衛星画像から土地利用状況を検出するレンダリング処理でのジョブ出力です。左側のペインには、入力画像、出力画像、またはデータレイヤーからの AOI が表示されます。
天然資源管理のための土地被覆の自動マッピング結果を表示します。たとえば、黄色の領域は海、緑は雲、濃いオレンジは森、オレンジは陸地です。
地理空間イメージと地理空間 SDK を使用して SageMaker ノートブックでも同じジョブを実行できます。
ファイルと新規からノートブックを選択し、セットアップノートブック環境のイメージドロップダウンメニューを選択して、Geospatial 1.0を選択します。他の設定はデフォルト値に設定しておきます。
それではPythonのサンプルコードを見てみましょう! まず、SageMaker 地理空間ライブラリを設定します。
import boto3
botocore をインポート
sagemaker をインポート
Sagemaker_geospatial_map をインポート
リージョン = boto3.Session().region_name
セッション = botocore.session.get_session ()
実行ロール = sagemaker.get_execution_role()
sgクライアント= session.create_client (
サービス名='AGEMAKER-Geospatial',
リージョン名=region
)
地球観測ジョブを開始して、済州島周辺の土地被覆タイプを特定しましょう。
# Sentinel データセットから返された画像に対して土地被覆セグメンテーションを実行します。
eoj_input_config = {
"ラスターデータ収集クエリ": {
"ラスターデータコレクション ARN": <ARN データコレクション、
"関心領域": {
"対象地域のジオメトリ": {
"ポリゴンジオメトリ": {
"座標": [
[126.647226、33.47014]、[126.406116、33.47014]、[126.406116、33.307529]、[126.647226、33.307529]、[126.647226、33.47014]]
]
}
}
},
"時間範囲フィルター": {
"開始時間":"2022-11-01T 00:00:00 Z",
"終了時間":"2022-11-22T 23:59:59 Z"
},
"プロパティフィルター": {
"プロパティ": [
{
"プロパティ": {
"エコクラウド": {
"下限": 0、
"上限": 20
}
}
}
],
"論理演算子":"AND"
}
}
}
eoj設定 = {"土地被覆セグメンテーション設定": {}}
レスポンス = sg_client.start_earth_observation_job (
名前 ="済州島-ランドカバー",
入力設定= eoj_input_config、
ジョブ設定 = eoj_config、
実行ロールArn = execution_role
)
# EOJ ステータスの監視
sg_client.get_earth_observation_job (Arn = レスポンス ['Arn'])
EOJ が作成されると、 Arn
はユーザーに返却されます。Arn を使用してジョブを識別し、さらに操作を実行します。作業が完了したら、視覚化ツールで地球観測の入力と出力を視覚化します。
# マップのインスタンスを作成して、EOJ 入力/出力レイヤーを追加します
マップ = sagemaker_geospatial_map.create_map ({
'is_raster': はい
})
map.set_sagemaker_geospatial_client (sg_client)
# マップをレンダリングする
マップ. レンダー ()
# 入力を視覚化すると、EOJが完了していないことがわかります。
時間範囲フィルター= {
"開始日":"2022-11-01T 00:00:00 Z",
"終了日":"2022-11-22T 23:59:59 Z"
}
arn_to_visualize = レスポンス ['Arn']
設定 = {
'ラベル': '済州島'
}
input_layer=map.visualize_eoj_input (ARN=ARN_TO_Visualize、config=config、time_range_filter=time_range_filter)
# 出力を視覚化する。EOJ は完了ステータスにする必要があります
時間範囲フィルター= {
"開始日":"2022-11-01T 00:00:00 Z",
"snd_date":"2022-11-22T 23:59:59 Z"
}
設定 = {
'プリセット': 'シングルバンド'、
'バンド名': 'マスク'
}
output_layer = map.visualize_eoj_output (arn=ARN_TO_Visualize、config=config、time_range_filter=time_range_filter)
AWS コマンドラインインターフェイス (AWS CLI) を使用して StartEarthObservationJob
API を実行することもできます。
ノートブックで地球観測ジョブを作成すると、その他の地理空間機能を使用できます。Amazon SageMaker でサポートされているその他の地理空間操作のリストは次のとおりです:
- バンドスタッキング — 複数のスペクトル特性を組み合わせて 1 つの画像を作成します。
- 雲の除去 — 雲の一部を含むピクセルを衛星画像から削除します。
- ジオモザイク — 複数の画像を組み合わせて忠実度を高めます。
- リサンプリング — 画像をさまざまな解像度に拡大縮小します。
- 時系列統計 — 同じ地域の複数の GeoTIFF の統計を時系列で計算します。
- ゾーン統計 — ユーザー定義地域の統計を計算します。
詳細については、AWS ドキュメントのAmazon SageMaker 地理空間ノートブック SDKとAmazon SageMaker 地理空間機能サービス API、および GitHub リポジトリの地理空間サンプルコードを参照してください。
ベクターエンリッチメントジョブとマップビジュアライゼーションの実行
ベクターエンリッチメントジョブ (VEJ) は、リバースジオコーディングやマップマッチングなどのベクターデータに対する操作を実行します。
- リバースジオコーディング — 地図座標を Amazon Location Serviceによって読み取れる住所に変換します。
- マップマッチング — GPS 座標を道路セグメントと照合します。
VEJ を実行するには Amazon SageMaker Studio ノートブックを使用する必要がありますが、作成したすべてのジョブを表示できます。
StartVectorEnrichmentJob
API を使用すると、提供されている 2 つのジョブタイプの VEJ を作成できます。
{
"Name":"vej-reverse",
"InputConfig":{
"DocumentType":"csv", //
"DataSourceConfig":{
S3Data":{
"S3Uri":"s3://channy-geospatial/sample/vej.csv",
}
}
},
"JobConfig": {
"MapMatchingConfig": {
"YAttributeName":"string", // Latitude
"XAttributeName":"string", // Longitude
"TimestampAttributeName":"string",
"IdAttributeName":"string"
}
},
"ExecutionRoleArn":"string"
}
VEJ の出力をノートブックで視覚化するか、VEJ ジョブの出力を S3 バケットにエクスポートした後にマップ可視化機能を使用できます。マップビジュアライゼーション機能を使用すると、地理空間データをマップ上に簡単に表示できます。
このサンプルビジュアライゼーションには、シアトル市議会の地区と公立学校の場所が GeoJSON 形式で含まれています。[データを追加] を選択してデータファイルをアップロードするか、S3 バケットを選択します。
{
"type":"フィーチャコレクション",
"crs": {"タイプ":"名前","プロパティ": {
"名前":"urn: OGC: DEF: crs: OGC: 1.3: crs84"},
"フィーチャ": [
{"タイプ":"フィーチャ","ID": 1,"プロパティ": {"プロパティ_L":"ジェーン・アダムス","ステータス":"MS"},"ジオメトリ": {"タイプ":"ポイント","座標": [-122.293009024934037, 47.709944862769468]},
{"タイプ":"フィーチャ","ID": 2,"プロパティ": {"プロパティ_L":"レーニアビュー","ステータス":"ELEM"},"ジオメトリ": {"タイプ":"ポイント","座標": [-122.263172064204767, 47.498863322205558]},
{"タイプ":"フィーチャ","ID": 3,"プロパティ": {"プロパティ_L":"Emerson","ステータス":"ELEM"},"ジオメトリ": {"タイプ":"ポイント","座標": [-122.258636146463658, 47.514820466363943]}}
]
}
これで完了です! 各コンポーネントの詳細については、 Amazon SageMaker 地理空間開発者ガイドを参照してください。
プレビューに参加しましょう
Amazon SageMaker 地理空間機能のプレビューリリースが米国西部 (オレゴン) リージョンで利用可能になりました。
プレビュー中に、さらに多くのフィードバックをお聞かせください。ぜひお試しいただいて、Amazon SageMakerのAWS re:Post for Amazon RDSまたは通常の AWS サポートの連絡先を通してフィードバックをお寄せください。
– Channy
原文はこちらです。