ディープ ラーニングを使用したピクセルの分類 (Classify Pixels Using Deep Learning) (Image Analyst)

Image Analyst ライセンスで利用できます。

サマリー

入力ラスターにトレーニング済みディープ ラーニング モデルを実行して、有効な各ピクセルにクラス ラベルを割り当てた分類済みラスターを作成します。

このツールは、トレーニング済みのモデル情報を含んでいるモデル定義ファイルを必要とします。 モデルは、[ディープ ラーニング モデルのトレーニング (Train Deep Learning Model)] ツールを使用するか、TensorFlow、PyTorch、または Keras などのサードパーティのトレーニング ソフトウェアによって、トレーニングできます。 モデル定義ファイルには、Esri モデル定義 JSON ファイル (.emd) またはディープ ラーニング モデル パッケージを使用できます。モデル定義ファイルは、各オブジェクトを処理するために呼び出される Python ラスター関数のパス、およびトレーニング済みのバイナリ ディープ ラーニング モデル ファイルのパスを含む必要があります。

使用法

  • AllSource Python 環境に適切なディープ ラーニング フレームワークの Python API (TensorFlow や PyTorch など) をインストールする必要があります。インストールしない場合、Esri モデル定義ファイルをツールに追加するとエラーが発生します。 Esri モデル定義ファイルの作成者から適切なフレームワーク情報を入手します。

    AllSource のディープ ラーニング フレームワークを使用するようにコンピューターを設定するには、「ArcGIS 用のディープ ラーニング フレームワークのインストール」をご参照ください。

  • このツールは、サードパーティのディープ ラーニング Python API (TensorFlow、PyTorch、Keras など) を呼び出し、指定された Python ラスター関数を使用して、各オブジェクトを処理します。

  • Esri Python ラスター関数の GitHub ページに、このツールの使用例が記載されています。 また、GitHub リポジトリの例と手順に従って、カスタム Python モジュールを記述することもできます。

  • [モデル定義] パラメーター値には、Esri モデル定義の JSON ファイル (.emd)、JSON 文字列、またはディープ ラーニング モデル パッケージ (.dlpk) を指定することができます。 JSON 文字列は、このツールがサーバーで使用されている場合に便利で、.emd ファイルをアップロードする代わりに JSON 文字列を貼り付けることができます。 .dlpk ファイルはローカルに格納する必要があります。

  • ディープ ラーニングの詳細については、「AllSource のディープ ラーニング」をご参照ください。

  • 次のサンプル コードは、Esri モデル定義ファイル (.emd) を使用します。

    {
        "Framework":"TensorFlow",
        "ModelConfiguration":"deeplab",
    
        "ModelFile":"\\Data\\ImgClassification\\TF\\froz_inf_graph.pb",
        "ModelType":"ImageClassification",
        "ExtractBands":[0,1,2],
        "ImageHeight":513,
        "ImageWidth":513,
    
        "Classes" : [
            {
                "Value":0,
                "Name":"Evergreen Forest",
                "Color":[0, 51, 0]
             },
             {
                "Value":1,
                "Name":"Grassland/Herbaceous",
                "Color":[241, 185, 137]
             },
             {
                "Value":2,
                "Name":"Bare Land",
                "Color":[236, 236, 0]
             },
             {
                "Value":3,
                "Name":"Open Water",
                "Color":[0, 0, 117]
             },
             {
                "Value":4,
                "Name":"Scrub/Shrub",
                "Color":[102, 102, 0]
             },
             {
                "Value":5,
                "Name":"Impervious Surface",
                "Color":[236, 236, 236]
             }
        ]
    }
  • 入力ラスターには、画像が添付された単一のラスター、複数のラスター、またはフィーチャクラスを使用できます。 添付ファイルの詳細については、「アタッチメントの追加または削除」をご参照ください。

  • バッチ サイズを増やすと、ツールのパフォーマンスが向上します。ただし、バッチ サイズの増加に伴って、使用されるメモリ量も多くなります。 メモリ不足エラーが発生した場合は、より小さいバッチ サイズを使用します。 batch_size の値は [引数] パラメーターを使用して調整できます。

  • バッチ サイズは、1、4、9、16、25、64 などの平方数です。 入力値が完全な平方数でない場合は、最も大きな平方数が使用されます。 たとえば、値に 6 が指定された場合、バッチ サイズは 4 に設定されます。

  • このツールの実行要件および発生する可能性のある問題の詳細については、「ディープ ラーニングに関するよくあるご質問 (FAQ)」をご参照ください。

パラメーター

ラベル説明データ タイプ
入力ラスター

分類される入力ラスター データセット。

この入力には、モザイク データセット、イメージ サービス、画像のフォルダー、または画像の添付ファイルを含むフィーチャクラス内の単一のラスターまたは複数のラスターを指定することができます。

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class
モデル定義

[モデル定義] パラメーター値には、Esri モデル定義の JSON ファイル (.emd)、JSON 文字列、またはディープ ラーニング モデル パッケージ (.dlpk) を指定することができます。 JSON 文字列は、このツールがサーバーで使用されている場合に便利で、.emd ファイルをアップロードする代わりに JSON 文字列を貼り付けることができます。 .dlpk ファイルはローカルに格納する必要があります。

これには、ディープ ラーニング バイナリ モデル ファイルへのパス、使用される Python ラスター関数へのパス、および他のパラメーター (望ましいタイル サイズやゼロ詰めなど) が含まれます。

File; String
引数
(オプション)

Python ラスター関数クラスに定義される関数の引数。 ここでは、実験や調整のための追加のディープ ラーニング パラメーターおよび引数 (感度を調整するための信頼性の閾値など) をリストします。 引数の名前は、Python モジュールを読み取ることによって入力されます。

Value Table
処理モード

モザイク データセットまたはイメージ サービス内のすべてのラスター アイテムを処理する方法を指定します。 入力ラスターがモザイク データセットまたはイメージ サービスである場合、このパラメーターが適用されます。

  • モザイク画像として処理モザイク データセットまたはイメージ サービス内のすべてのラスター アイテムがモザイク化され、処理されます。 これがデフォルトです。
  • すべてのラスター アイテムを個別に処理モザイク データセットまたはイメージ サービス内のすべてのラスター アイテムが、個別の画像として処理されます。
String
出力フォルダー
(オプション)

出力分類ラスターが格納されるフォルダー。 モザイク データセットは、このフォルダー内の分類されたラスターを使用して生成されます。

このパラメーターは、入力ラスターが画像のフォルダー、またはすべてのアイテムが個別に処理されるモザイク データセットである場合に必須です。 デフォルトは、プロジェクト フォルダー内のフォルダーです。

Folder
出力フィーチャ
(オプション)

出力分類ラスターが格納されるフィーチャクラス。

このパラメーターは、入力ラスターが画像のフィーチャクラスの場合は必須です。

Feature Class

戻り値

ラベル説明データ タイプ
出力ラスター データセット

結果を含むラスターまたはモザイク データセットの名前。

Raster Dataset

ClassifyPixelsUsingDeepLearning(in_raster, in_model_definition, {arguments}, processing_mode, {out_classified_folder}, {out_featureclass})
名前説明データ タイプ
in_raster

分類される入力ラスター データセット。

この入力には、モザイク データセット、イメージ サービス、画像のフォルダー、または画像の添付ファイルを含むフィーチャクラス内の単一のラスターまたは複数のラスターを指定することができます。

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class
in_model_definition

in_model_definition パラメーター値には、Esri モデル定義の JSON ファイル (.emd)、JSON 文字列、またはディープ ラーニング モデル パッケージ (.dlpk) を指定することができます。 JSON 文字列は、このツールがサーバーで使用されている場合に便利で、.emd ファイルをアップロードする代わりに JSON 文字列を貼り付けることができます。 .dlpk ファイルはローカルに格納する必要があります。

これには、ディープ ラーニング バイナリ モデル ファイルへのパス、使用される Python ラスター関数へのパス、および他のパラメーター (望ましいタイル サイズやゼロ詰めなど) が含まれます。

File; String
arguments
[arguments,...]
(オプション)

Python ラスター関数クラスに定義される関数の引数。 ここでは、実験や調整のための追加のディープ ラーニング パラメーターおよび引数 (感度を調整するための信頼性の閾値など) をリストします。 引数の名前は、Python モジュールを読み取ることによって入力されます。

Value Table
processing_mode

モザイク データセットまたはイメージ サービス内のすべてのラスター アイテムを処理する方法を指定します。 入力ラスターがモザイク データセットまたはイメージ サービスである場合、このパラメーターが適用されます。

  • PROCESS_AS_MOSAICKED_IMAGEモザイク データセットまたはイメージ サービス内のすべてのラスター アイテムがモザイク化され、処理されます。 これがデフォルトです。
  • PROCESS_ITEMS_SEPARATELYモザイク データセットまたはイメージ サービス内のすべてのラスター アイテムが、個別の画像として処理されます。
String
out_classified_folder
(オプション)

出力分類ラスターが格納されるフォルダー。 モザイク データセットは、このフォルダー内の分類されたラスターを使用して生成されます。

このパラメーターは、入力ラスターが画像のフォルダー、またはすべてのアイテムが個別に処理されるモザイク データセットである場合に必須です。 デフォルトは、プロジェクト フォルダー内のフォルダーです。

Folder
out_featureclass
(オプション)

出力分類ラスターが格納されるフィーチャクラス。

このパラメーターは、入力ラスターが画像のフィーチャクラスの場合は必須です。

Feature Class

戻り値

名前説明データ タイプ
out_classified_raster

結果を含むラスターまたはモザイク データセットの名前。

Raster Dataset

コードのサンプル

ClassifyPixelsUsingDeepLearning の例 1 (Python ウィンドウ)

次の例では、ClassifyPixelsUsingDeepLearning 関数を使用して、カスタム ピクセル分類に基づいてラスターを分類しています。

# Import system modules
import arcpy
from arcpy.ia import *

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

ClassifyPixelsUsingDeepLearning("c:/classifydata/moncton_seg.tif",
     "c:/classifydata/moncton.tif", "c:/classifydata/moncton_sig.emd")
ClassifyPixelsUsingDeepLearning の例 2 (スタンドアロン スクリプト)

次の例では、ClassifyPixelsUsingDeepLearning 関数を使用して、カスタム ピクセル分類に基づいてラスターを分類しています。

# Import system modules
import arcpy
from arcpy.ia import *


# Set local variables
in_raster = "c:\\classifydata\\moncton_seg.tif"
in_model_definition = "c:\\classifydata\\moncton_sig.emd"
model_arguments = "padding 0; batch_size 16"
processing_mode = "PROCESS_AS_MOSAICKED_IMAGE"

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

# Execute 
Out_classified_raster = ClassifyPixelsUsingDeepLearning(in_raster, 
                   in_model_definition, model_arguments, processing_mode)
Out_classified_raster.save("c:\\classifydata\\classified_moncton.tif")