xarvio Digital Farming Solutions が Amazon SageMaker 地理空間機能を使用して開発を加速する方法

ソースノード: 1766079

これは、xarvio Digital Farming Solutions のデータ サイエンティストである Julian Blau が共同執筆したゲスト投稿です。 BASF Digital Farming GmbH、AWS の AI/ML スペシャリスト ソリューション アーキテクト、Antonio Rodriguez

ザルヴィオ Digital Farming Solutions は、BASF Agricultural Solutions 部門の一部である BASF Digital Farming GmbH のブランドです。 xarvio Digital Farming Solutions は、農家が作物生産を最適化するのに役立つ精密なデジタル農業製品を提供しています。 世界中で利用可能な xarvio 製品は、機械学習 (ML)、画像認識技術、および高度な作物と病気のモデルを衛星や気象観測装置からのデータと組み合わせて使用​​し、個々の畑のニーズを管理するための正確かつタイムリーな農業上の推奨事項を提供します。 xarvio 製品は、地域の農業条件に合わせて調整されており、成長段階を監視し、病気や害虫を認識することができます。 効率を高め、時間を節約し、リスクを軽減し、計画と意思決定の信頼性を高めます。これらはすべて、持続可能な農業に貢献します。

一部のユースケースでは、ユーザーのフィールドがある地域の衛星画像など、さまざまな地理空間データを使用しています。 そのため、毎日何百もの大きな画像ファイルを使用して処理しています。 最初は、サードパーティ ツール、オープンソース ライブラリ、または汎用クラウド サービスを使用して、このデータを取り込み、処理し、分析するために、多くの手作業と労力を費やす必要がありました。 場合によっては、特定のプロジェクトごとにパイプラインを構築するのに最大 2 か月かかることがあります。 現在、 アマゾンセージメーカー、この時間をわずか 1 ~ 2 週間に短縮しました。

この時間の節約は、地理空間データ パイプラインを自動化してユース ケースをより効率的に提供した結果です。組み込みの再利用可能なコンポーネントを使用して、他の地理的領域での同様のプロジェクトをスピードアップおよび改善し、同じ実証済みの手順を他の用途に適用した結果です。同様のデータに基づくケース。

この投稿では、ユースケースの例を通して、私たちが一般的に使用するいくつかの手法について説明し、SageMaker の地理空間機能を他の SageMaker 機能と組み合わせて使用​​してこれらを実装することで、測定可能なメリットがどのようにもたらされるかを示します。 また、コード例も含まれているため、これらを独自の特定のユース ケースに適応させることができます。

ソリューションの概要

新しいソリューションを開発するための典型的なリモート センシング プロジェクトでは、次のような光学衛星によって撮影された画像を段階的に分析する必要があります。 センチネル or ランドサット、天気予報や特定のフィールド プロパティなど、他のデータと組み合わせて使用​​できます。 衛星画像は、デジタル農業ソリューションで使用される貴重な情報を提供し、ユーザーがさまざまなタスクを達成するのに役立ちます。

  • 病気の早期発見
  • 適用する適切な栄養と治療の計画
  • 灌漑を計画するための天候と水に関する洞察の取得
  • 収穫量の予測
  • その他の作物管理タスクの実行

これらの目標を達成するために、私たちの分析では通常、地理空間ドメインで一般的なさまざまな手法を使用して衛星画像を前処理する必要があります。

SageMaker 地理空間の機能を実証するために、ML セグメンテーション モデルを使用して農地を特定する実験を行いました。 さらに、既存の SageMaker 地理空間モデルと、土地利用や土地被覆の分類、または作物の分類などの地理空間タスクに関する独自のモデル (BYOM) 機能を調査しました。これには、プロセスの追加ステップとして、パノプティックまたはセマンティック セグメンテーション技術が必要になることがよくあります。

以下のセクションでは、SageMaker 地理空間機能を使用してこれらのステップを実行する方法の例をいくつか見ていきます。 以下で利用可能なエンド ツー エンドのサンプル ノートブックでこれらに従うこともできます。 GitHubリポジトリ.

前述のように、土地被覆分類のユース ケースを選択しました。これは、植生、水、雪などの一連のクラスで編成された、地球表面の特定の地理的領域にある物理的な被覆のタイプを特定することで構成されます。 この高解像度の分類により、畑の位置とその周辺の詳細を高精度で検出できます。これは、後で作物分類の変化検出などの他の分析と連鎖させることができます。

クライアントのセットアップ

まず、地理空間座標のポリゴン内で特定できる特定の地理的領域で作物を栽培しているユーザーがいるとします。 この投稿では、ドイツの例のエリアを定義します。 2022 年の最初の月など、特定の時間範囲を定義することもできます。次のコードを参照してください。

### Coordinates for the polygon of your area of interest...
coordinates = [
    [9.181602157004177, 53.14038825707946],
    [9.181602157004177, 52.30629767547948],
    [10.587520893823973, 52.30629767547948],
    [10.587520893823973, 53.14038825707946],
    [9.181602157004177, 53.14038825707946],
]
### Time-range of interest...
time_start = "2022-01-01T12:00:00Z"
time_end = "2022-05-01T12:00:00Z"

この例では、プロセスで必要なさまざまなステップで自動化できるコード パイプラインの構築に関心があるため、プログラムまたはコードの対話を通じて SageMaker 地理空間 SDK を使用します。 SageMaker geospatial で提供されるグラフィカル拡張機能を介して UI を操作することもできることに注意してください。 Amazon SageMakerスタジオ 次のスクリーンショットに示すように、このアプローチを好む場合。 Geospatial Studio UI にアクセスするには、SageMaker Studio ランチャーを開き、 地理空間リソースの管理. ドキュメントで詳細を確認できます。 Amazon SageMaker 地理空間機能の使用を開始する.

地理空間 UI メイン

ジョブの地理空間 UI リスト

ここでは、SageMaker 地理空間機能で実行する地球観測ジョブ (EOJ) の結果をグラフィカルに作成、監視、視覚化できます。

例に戻ると、SageMaker geospatial SDK を操作するための最初のステップは、クライアントをセットアップすることです。 とのセッションを確立することでこれを行うことができます botocore としょうかん:

import boto3
gsClient = boto3.client('sagemaker-geospatial')

この時点から、対象の EOJ を実行するためにクライアントを使用できます。

データの取得

このユースケースでは、特定の地理的領域の衛星画像を収集することから始めます。 関心のある場所に応じて、利用可能な衛星によるカバレッジの頻度が多かれ少なかれある場合があります。 ラスター コレクション.

SageMaker の地理空間機能を使用すると、地理空間データを直接取得するための高品質のデータ ソースに直接アクセスできます。 AWSデータ交換AWSでのオープンデータのレジストリ、とりわけ。 次のコマンドを実行して、SageMaker によってすでに提供されているラスター コレクションを一覧表示できます。

list_raster_data_collections_resp = gsClient.list_raster_data_collections()

これは、Landsat C2L2 Surface Reflectance (SR)、Landsat C2L2 Surface Temperature (ST)、Sentinel 2A & 2B など、利用可能なさまざまなラスター コレクションの詳細を返します。 便利なことに、レベル 2A の画像は既に Cloud-Optimized GeoTIFF (COG) に最適化されています。 次のコードを参照してください。

…
{'Name': 'Sentinel 2 L2A COGs',
  'Arn': 'arn:aws:sagemaker-geospatial:us-west-2:378778860802:raster-data-collection/public/nmqj48dcu3g7ayw8',
  'Type': 'PUBLIC',
  'Description': 'Sentinel-2a and Sentinel-2b imagery, processed to Level 2A (Surface Reflectance) and converted to Cloud-Optimized GeoTIFFs'
…

この最後の例を例に取りましょう。 data_collection_arn パラメータを Sentinel 2 L2A COG のコレクション ARN に追加します。

対象地域 (AOI) として定義したポリゴンの座標を渡すことで、特定の地理的位置の利用可能な画像を検索することもできます。 これにより、指定した AOI に対して送信したポリゴンをカバーする利用可能な画像タイルを視覚化できます。 Amazon シンプル ストレージ サービス (Amazon S3) これらのイメージの URI。 衛星画像は通常、別の形式で提供されることに注意してください。 バンド 観察の波長による。 これについては、この記事の後半で詳しく説明します。

response = gsClient.search_raster_data_collection(**eoj_input_config, Arn=data_collection_arn)

上記のコードは、利用可能なさまざまな画像タイルの S3 URI を返します。これは、次のような GeoTIFF と互換性のある任意のライブラリで直接視覚化できます。 ラスターリオ. たとえば、XNUMX つの True Color Image (TCI) タイルを視覚化してみましょう。

…
'visual': {'Href': 'https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/32/U/NC/2022/3/S2A_32UNC_20220325_0_L2A/TCI.tif'},
…

トゥルーカラー画像 1トゥルーカラー画像 2

加工技術

私たちが適用する最も一般的な前処理手法には、雲の除去、ジオ モザイク、時間統計、バンド計算、スタッキングなどがあります。 これらのプロセスはすべて、SageMaker で EOJ を使用して直接実行できるようになりました。手動でコーディングしたり、複雑で高価なサードパーティ ツールを使用したりする必要はありません。 これにより、データ処理パイプラインの構築が 50% 速くなります。 SageMaker の地理空間機能を使用すると、これらのプロセスをさまざまな入力タイプで実行できます。 例えば:

  • サービスに含まれる任意のラスター コレクションに対して、クエリを直接実行します。 RasterDataCollectionQuery パラメーター
  • Amazon S3 に保存されている画像を、 DataSourceConfig パラメーター
  • 以前の EOJ の結果を PreviousEarthObservationJobArn パラメーター

この柔軟性により、必要なあらゆる種類の処理パイプラインを構築できます。

次の図は、この例で取り上げるプロセスを示しています。

地理空間処理タスク

この例では、ラスター データ コレクション クエリを入力として使用します。これには、AOI の座標と関心のある時間範囲を渡します。 また、地理的領域の明確でノイズのない観測が必要なため、最大雲範囲のパーセンテージを 2% に指定します。 次のコードを参照してください。

eoj_input_config = {
    "RasterDataCollectionQuery": {
        "RasterDataCollectionArn": data_collection_arn,
        "AreaOfInterest": {
            "AreaOfInterestGeometry": {"PolygonGeometry": {"Coordinates": [coordinates]}}
        },
        "TimeRangeFilter": {"StartTime": time_start, "EndTime": time_end},
        "PropertyFilters": {
            "Properties": [
                {"Property": {"EoCloudCover": {"LowerBound": 0, "UpperBound": 2}}}
            ]
        },
    }
}

サポートされているクエリ構文の詳細については、次を参照してください。 地球観測ジョブの作成.

雲の隙間の除去

雲が多いため、衛星観測はあまり役に立たないことがよくあります。 クラウドギャップフィリングまたはクラウド除去は、画像から曇ったピクセルを置き換えるプロセスであり、さまざまな方法で実行して、さらなる処理ステップのためにデータを準備できます。

SageMaker の地理空間機能を使用すると、 CloudRemovalConfig ジョブの構成のパラメーター。

eoj_config =  {
    'CloudRemovalConfig': {
        'AlgorithmName': 'INTERPOLATION',
        'InterpolationValue': '-9999'
    }
}

この例では固定値の補間アルゴリズムを使用していますが、他の構成もサポートされていることに注意してください。 地球観測ジョブの作成 ドキュメンテーション。 補間により、周囲のピクセルを考慮して、曇ったピクセルを置き換えるための値を推定できます。

これで、入力とジョブの構成を使用して EOJ を実行できます。

response = gsClient.start_earth_observation_job(
    Name =  'cloudremovaljob',
    ExecutionRoleArn = role,
    InputConfig = eoj_input_config,
    JobConfig = eoj_config,
)

このジョブは、入力領域と処理パラメーターに応じて、完了するまでに数分かかります。

完了すると、EOJ の結果はサービス所有の場所に保存され、そこから結果を Amazon S3 にエクスポートするか、これらを別の EOJ の入力として連鎖させることができます。 この例では、次のコードを実行して結果を Amazon S3 にエクスポートします。

response = gsClient.export_earth_observation_job(
    Arn = cr_eoj_arn,
    ExecutionRoleArn = role,
    OutputConfig = {
        'S3Data': {
            'S3Uri': f's3://{bucket}/{prefix}/cloud_removal/',
            'KmsKeyId': ''
        }
    }
)

これで、個々のスペクトル バンドについて、指定した Amazon S3 の場所に保存された結果の画像を視覚化できるようになりました。 たとえば、返された XNUMX つの青いバンド イメージを調べてみましょう。

または、次のスクリーンショットに示すように、Studio で利用可能な地理空間拡張機能を使用して、EOJ の結果をグラフィカルに確認することもできます。

雲除去 UI 1   雲除去 UI 2

時間統計

衛星は地球の周りを絶えず周回しているため、対象の特定の地理的領域の画像は、衛星に応じて、毎日、5 日ごと、または 2 週間ごとなど、特定の時間間隔で特定の時間枠で撮影されます。 時間統計プロセスにより、さまざまな時間に取得されたさまざまな観測を組み合わせて、特定の地域の年間平均や特定の時間範囲内のすべての観測の平均などの集計ビューを生成できます。

SageMaker の地理空間機能を使用すると、これを行うことができます。 TemporalStatisticsConfig パラメータ。 この例では、近赤外線 (NIR) バンドの年間平均集計を取得します。これは、このバンドが林冠の上部より下の植生密度の違いを明らかにできるためです。

eoj_config =  {
    'TemporalStatisticsConfig': {
        'GroupBy': 'YEARLY',
        'Statistics': ['MEAN'],
        'TargetBands': ['nir']
    }
}

この構成で EOJ を数分間実行した後、結果を Amazon S3 にエクスポートして、次の例のような画像を取得できます。この例では、さまざまな色強度で表されるさまざまな植生密度を観察できます。 EOJ は、指定された時間範囲と座標で利用可能な衛星データに応じて、複数の画像をタイルとして生成できることに注意してください。

時間統計 1時間統計 2

バンド演算

地球観測衛星はさまざまな波長の光を検出するように設計されており、その中には人間の目には見えないものもあります。 各範囲には、さまざまな波長の光スペクトルの特定の帯域が含まれており、演算と組み合わせることで、植生の健康状態、温度、雲の存在など、フィールドの特性に関する豊富な情報を含む画像を生成できます。 これは、一般にバンド演算またはバンド演算と呼ばれるプロセスで実行されます。

SageMaker の地理空間機能を使用すると、これを実行できます。 BandMathConfig パラメータ。 たとえば、次のコードを実行して水分指数の画像を取得してみましょう。

eoj_config =  {
    'BandMathConfig': {
        'CustomIndices': {
            'Operations': [
                {
                    'Name': 'moisture',
                    'Equation': '(nir08 - swir16) / (nir08 + swir16)'
                }
            ]
        }
    }
}

この構成で EOJ を数分実行すると、結果をエクスポートして、次の XNUMX つの例のような画像を取得できます。

水分指数 1水分指数 2水分指数の凡例

積み重ね

バンド演算と同様に、バンドを組み合わせて元のバンドから合成画像を生成するプロセスは、スタッキングと呼ばれます。 たとえば、衛星画像の赤、青、緑の光バンドを積み重ねて、AOI のトゥルー カラー画像を生成できます。

SageMaker の地理空間機能を使用すると、これを行うことができます。 StackConfig パラメータ。 次のコマンドを使用して、前の例に従って RGB バンドをスタックしてみましょう。

eoj_config =  {
    'StackConfig': {
        'OutputResolution': {
            'Predefined': 'HIGHEST'
        },
        'TargetBands': ['red', 'green', 'blue']
    }
}

この構成で EOJ を実行して数分後、結果をエクスポートして画像を取得できます。

スタッキングTCI 1スタッキングTCI 2

セマンティック セグメンテーション モデル

私たちの仕事の一環として、私たちは一般的に ML モデルを使用して、前処理された画像に対して推論を実行します。たとえば、曇った領域を検出したり、画像の各領域の土地の種類を分類したりします。

SageMaker の地理空間機能を使用すると、組み込みのセグメンテーション モデルを利用してこれを行うことができます。

この例では、土地被覆セグメンテーション モデルを使用して、 LandCoverSegmentationConfig パラメータ。 これにより、SageMaker でインフラストラクチャをトレーニングまたはホストする必要なく、組み込みモデルを使用して入力に対して推論が実行されます。

response = gsClient.start_earth_observation_job(
    Name =  'landcovermodeljob',
    ExecutionRoleArn = role,
    InputConfig = eoj_input_config,
    JobConfig = {
        'LandCoverSegmentationConfig': {},
    },
)

この構成でジョブを数分実行した後、結果をエクスポートして画像を取得できます。

土地被覆 1土地被覆 2土地被覆 3土地被覆 4

前の例では、次の凡例に示すように、画像内の各ピクセルが土地タイプ クラスに対応しています。

土地被覆の凡例

これにより、植生や水域など、シーン内の特定のタイプのエリアを直接識別することができ、追加の分析のための貴重な洞察が得られます。

SageMaker を使用して独自のモデルを導入する

SageMaker で提供される最先端の地理空間モデルがユースケースに十分でない場合は、これまでに示した前処理ステップの結果を、推論のために SageMaker にオンボードされた任意のカスタム モデルと連鎖させることもできます。この中で SageMaker スクリプトモード 例。 これは、リアルタイム SageMaker エンドポイントとの同期、SageMaker 非同期エンドポイントとの非同期、SageMaker バッチ変換によるバッチまたはオフライン、SageMaker サーバーレス推論によるサーバーレスなど、SageMaker でサポートされている推論モードのいずれかで実行できます。 これらのモードの詳細については、 推論のためのモデルのデプロイ ドキュメンテーション。 次の図は、ワークフローの概要を示しています。

推論フローのオプション

この例では、土地被覆の分類と作物の種類の分類を実行するための XNUMX つのモデルをオンボードしたとします。

次のコードのように、トレーニング済みのモデル アーティファクト (この例では PyTorch モデル) を指すだけです。

from sagemaker.pytorch import PyTorchModel
import datetime

model = PyTorchModel(
    name=model_name, ### Set a model name
    model_data=MODEL_S3_PATH, ### Location of the custom model in S3
    role=role,
    entry_point='inference.py', ### Your inference entry-point script
    source_dir='code', ### Folder with any dependencies
    image_uri=image_uri, ### URI for your AWS DLC or custom container
    env={
        'TS_MAX_REQUEST_SIZE': '100000000',
        'TS_MAX_RESPONSE_SIZE': '100000000',
        'TS_DEFAULT_RESPONSE_TIMEOUT': '1000',
    }, ### Optional – Set environment variables for max size and timeout
)

predictor = model.deploy(
    initial_instance_count = 1, ### Your number of instances
    instance_type = 'ml.g4dn.8xlarge', ### Your instance type
    async_inference_config=sagemaker.async_inference.AsyncInferenceConfig(
        output_path=f"s3://{bucket}/{prefix}/output",
        max_concurrent_invocations_per_instance=2,
    ), ### Optional – Async config if using SageMaker Async Endpoints
)

predictor.predict(data) ### Your images for inference

これにより、使用しているモデルに応じて、推論後に結果の画像を取得できます。

この例では、カスタムの土地被覆セグメンテーションを実行すると、モデルは次のような画像を生成します。ここでは、入力画像と予測画像を対応する凡例と比較します。

土地被覆セグメンテーション 1  土地被覆セグメンテーション 2. 土地被覆セグメンテーションの凡例

以下は、作物分類モデルの別の例です。ここでは、元の結果と結果のパノプティックおよびセマンティック セグメンテーションの結果を、対応する凡例とともに比較しています。

作物分類

地理空間パイプラインの自動化

最後に、地理空間データ処理と推論パイプラインを構築することで、前の手順を自動化することもできます。 AmazonSageMakerパイプライン. を使用して必要な各前処理ステップをチェーンするだけです。 ラムダステップ および コールバック手順 パイプラインで。 たとえば、SageMaker 地理空間機能に組み込まれているセマンティック セグメンテーション モデルの XNUMX つを使用して EOJ を実行するために、変換ステップを使用するか、Lambda ステップとコールバック ステップの別の組み合わせを直接介して最終推論ステップを追加することもできます。

EOJ は非同期であるため、パイプラインで Lambda ステップとコールバック ステップを使用していることに注意してください。 Amazon シンプル キュー サービス (Amazon SQS)キュー。

地理空間パイプライン

でノートブックを確認できます。 GitHubリポジトリ このコードの詳細な例については。

次のスクリーンショットに示すように、Studio を使用して地理空間パイプラインの図を視覚化し、パイプラインで実行を監視できるようになりました。

地理空間パイプライン UI

まとめ

この投稿では、xarvio Digital Farming Solutions の高度な製品の地理空間データ パイプラインを構築するために、SageMaker 地理空間機能を使用して実装したプロセスの概要を紹介しました。 SageMaker geospatial を使用すると、ML の前処理とモデリングのステップを加速および簡素化する事前構築済み API を使用することで、地理空間作業の効率が 50% 以上向上しました。

次のステップとして、ソリューション パイプラインの自動化を継続するために、カタログから SageMaker にさらに多くのモデルをオンボードし、サービスの進化に合わせて SageMaker のより多くの地理空間機能を引き続き利用します。

この投稿で提供されているエンドツーエンドのサンプル ノートブックを適応させて、SageMaker の地理空間機能を試してみることをお勧めします。 Amazon SageMaker 地理空間機能とは?.


著者について

ジュリアン・ブラウジュリアン・ブラウ は、ドイツのケルンにある BASF Digital Farming GmbH のデータ サイエンティストです。 農業向けのデジタル ソリューションを開発し、地理空間データと機械学習を使用して BASF のグローバルな顧客ベースのニーズに対応しています。 仕事以外では、友人や家族と旅行やアウトドアを楽しんでいます。

アントニオ·ロドリゲスアントニオ·ロドリゲス は、スペインを拠点とするアマゾン ウェブ サービスの人工知能および機械学習のスペシャリスト ソリューション アーキテクトです。 彼は、あらゆる規模の企業がイノベーションを通じて課題を解決するのを支援し、AWS クラウドと AI/ML サービスで新しいビジネスチャンスを生み出しています。 仕事とは別に、彼は家族と時間を過ごしたり、友達とスポーツをしたりするのが大好きです。

タイムスタンプ:

より多くの AWS機械学習