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

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

サマリー

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

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

使用法

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

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

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

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

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

  • ディープ ラーニングの詳細については、「ArcGIS 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 に設定されます。

  • このツールは、複数の GPU をサポートおよび使用します (使用可能な場合)。 特定の GPU を使用するには、[GPU ID] 環境を指定します。 GPU ID が設定されていない場合、ツールは使用可能なすべての GPU を使用します。 これがデフォルトです。

  • このツールの実行要件および発生する可能性のある問題の詳細については、「ディープ ラーニングに関するよくあるご質問 (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
引数
(オプション)

[モデル定義] パラメーターの情報は、このパラメーターに値を取り込むために使用されます。 これらの引数は、モデル アークテクチャによって変わります。 ArcGIS でトレーニングされるモデルのサポート対象モデル引数は次のとおりです。 ArcGIS の事前トレーニング済みモデルとカスタム ディープ ラーニング モデルは、別途ツールがサポートする引数を持つ場合があります。

  • batch_size - モデル推論の各ステップで処理された画像タイルの数。 これは、お使いのグラフィックス カードのメモリに応じて異なります。 この引数はすべてのモデル アーキテクチャで使用できます。
  • direction - 画像が 2 つのドメイン間で変換されます。 オプションは AtoBBtoA です。 この引数は CycleGAN アーキテクチャでのみ使用できます。 この引数の詳細については、「CycleGAN の機能」をご参照ください。
  • merge_policy - 拡張された予測のマージに関するポリシー。 使用可能なオプションは meanmax、および min です。 これは、テスト時間の延長が使用される場合に限り適用できます。 この引数は MultiTaskRoadExtractor および ConnectNet アーキテクチャで使用できます。 モデルの .emd ファイルで IsEdgeDetection が存在する場合は、BDCNEdgeDetector、HEDEdgeDetector、および MMSegmentation アーキテクチャも利用できます。
  • n_timestep - 使用される時間ステップ数。 デフォルトは 200 です。 生成データの質に応じて増減することができます。 この引数は、Super Resolution with SR3 backbone モデルでのみサポートされます。
  • padding - 隣接するタイルの予測がブレンドされる画像タイルの境界のピクセル数。 出力を滑らかにすると同時にアーティファクトを減らすには、この値を大きくします。 パディングの最大値には、タイル サイズの値の半分を設定できます。 この引数はすべてのモデル アーキテクチャで使用できます。
  • predict_background - 背景クラスを分類するかどうかを指定します。 true の場合、背景クラスも分類されます。 この引数は UNET、PSPNET、DeepLab、MMSegmentation、SAMLoRA で使用できます。
  • return_probability_raster - 出力が確率ラスターであるかどうかを指定します。 true の場合、出力は確率ラスターになります。 false の場合、出力はバイナリ分類ラスターになります。 デフォルトは false です。 モデルの .emd ファイルで ArcGISLearnVersion が 1.8.4 以上の場合、MultiTaskRoadExtractor および ConnectNet アーキテクチャを利用できます。 モデルの .emd ファイルで ArcGISLearnVersion が 1.8.4 以上であり、IsEdgeDetection が存在する場合は、BDCNEdgeDetector、HEDEdgeDetector、および MMSegmentation アーキテクチャも利用できます。
  • sampling_type - 使用されるサンプリングのタイプ。 ddimddpm の 2 つのサンプリング タイプを使用できます。 デフォルトは ddim で、ddpm に比べて少ない時間ステップで結果が生成されます。 この引数は、Super Resolution with SR3 backbone モデルでのみサポートされます。
  • schedule - スケジュールのタイプを設定するオプションの文字列。 デフォルトのスケジュールは、トレーニングされたモデルと同じです。 この引数は、Super Resolution with SR3 backbone モデルでのみサポートされます。
  • test_time_augmentation - 予測中にテスト時間の延長を実行します。 true の場合、入力画像の反転および回転バリアントの予測は、最終出力にマージされます。 この引数は UNET、PSPNET、DeepLab、HEDEdgeDetector、BDCNEdgeDetector、ConnectNet、MMSegmentation、Multi-Task Road Extractor、SAMLoRA で使用できます。
  • tile_size - 予測のために画像が分割される画像タイルの幅と高さ。 この引数は CycleGAN アーキテクチャでのみ使用できます。
  • thinning - 予測されたエッジを細線化またはスケルトン化するかどうかを指定します。 オプションは TrueFalse です。 モデルの .emd ファイルで IsEdgeDetection が存在する場合は、BDCNEdgeDetector、HEDEdgeDetector、および MMSegmentation アーキテクチャを利用できます。
  • threshold - この閾値よりも信頼度スコアが高い予測が、結果に追加されます。 可能な値の範囲は 0 ~ 1.0 です。 モデルの .emd ファイルで ArcGISLearnVersion が 1.8.4 以上の場合、MultiTaskRoadExtractor および ConnectNet アーキテクチャを利用できます。 モデルの .emd ファイルで ArcGISLearnVersion が 1.8.4 以上であり、IsEdgeDetection が存在する場合は、BDCNEdgeDetector、HEDEdgeDetector、および MMSegmentation アーキテクチャも利用できます。

Value Table
処理モード

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

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

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

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

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

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

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

Feature Class
添付ファイルの上書き
(オプション)

既存の画像添付ファイルを上書きするかどうかを指定します。

  • オフ - 既存の画像添付ファイルは上書きされず、新しい画像添付ファイルが新しいフィーチャクラスに保存されます。 このパラメーターがオフの場合、[出力フィーチャ] パラメーターが利用可能になります。 これがデフォルトです。
  • オン - 既存のフィーチャクラスが、更新された新しい添付ファイルで上書きされます。

このパラメーターは、[入力ラスター] パラメーターの値が画像添付ファイルを含むフィーチャクラスの場合にのみ使用できます。

Boolean
ピクセル空間を使用
(オプション)

マップ空間の画像に対して推論を実行するかどうかを指定します。

  • オフ - マップ空間で推論を実行します。 これがデフォルトです。
  • オン - 画像空間で推論を実行し、出力をマップ空間に変換します。 このオプションは、マップ空間を使用するとフィーチャが歪む可能性がある斜め撮影画像やストリート ビュー画像を使用する場合に便利です。

Boolean

戻り値

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

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

Raster Dataset

ClassifyPixelsUsingDeepLearning(in_raster, in_model_definition, {arguments}, processing_mode, {out_classified_folder}, {out_featureclass}, {overwrite_attachments}, {use_pixelspace})
名前説明データ タイプ
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,...]
(オプション)

in_model_definition パラメーターの情報は、このパラメーターのデフォルト値を設定するために使用されます。 これらの引数は、モデル アークテクチャによって変わります。 ArcGIS でトレーニングされるモデルのサポート対象モデル引数は次のとおりです。 ArcGIS の事前トレーニング済みモデルとカスタム ディープ ラーニング モデルは、別途ツールがサポートする引数を持つ場合があります。

  • batch_size - モデル推論の各ステップで処理された画像タイルの数。 これは、お使いのグラフィックス カードのメモリに応じて異なります。 この引数はすべてのモデル アーキテクチャで使用できます。
  • direction - 画像が 2 つのドメイン間で変換されます。 オプションは AtoBBtoA です。 この引数は CycleGAN アーキテクチャでのみ使用できます。 この引数の詳細については、「CycleGAN の機能」をご参照ください。
  • merge_policy - 拡張された予測のマージに関するポリシー。 使用可能なオプションは meanmax、および min です。 これは、テスト時間の延長が使用される場合に限り適用できます。 この引数は MultiTaskRoadExtractor および ConnectNet アーキテクチャで使用できます。 モデルの .emd ファイルで IsEdgeDetection が存在する場合は、BDCNEdgeDetector、HEDEdgeDetector、および MMSegmentation アーキテクチャも利用できます。
  • n_timestep - 使用される時間ステップ数。 デフォルトは 200 です。 生成データの質に応じて増減することができます。 この引数は、Super Resolution with SR3 backbone モデルでのみサポートされます。
  • padding - 隣接するタイルの予測がブレンドされる画像タイルの境界のピクセル数。 出力を滑らかにすると同時にアーティファクトを減らすには、この値を大きくします。 パディングの最大値には、タイル サイズの値の半分を設定できます。 この引数はすべてのモデル アーキテクチャで使用できます。
  • predict_background - 背景クラスを分類するかどうかを指定します。 true の場合、背景クラスも分類されます。 この引数は UNET、PSPNET、DeepLab、MMSegmentation、SAMLoRA で使用できます。
  • return_probability_raster - 出力が確率ラスターであるかどうかを指定します。 true の場合、出力は確率ラスターになります。 false の場合、出力はバイナリ分類ラスターになります。 デフォルトは false です。 モデルの .emd ファイルで ArcGISLearnVersion が 1.8.4 以上の場合、MultiTaskRoadExtractor および ConnectNet アーキテクチャを利用できます。 モデルの .emd ファイルで ArcGISLearnVersion が 1.8.4 以上であり、IsEdgeDetection が存在する場合は、BDCNEdgeDetector、HEDEdgeDetector、および MMSegmentation アーキテクチャも利用できます。
  • sampling_type - 使用されるサンプリングのタイプ。 ddimddpm の 2 つのサンプリング タイプを使用できます。 デフォルトは ddim で、ddpm に比べて少ない時間ステップで結果が生成されます。 この引数は、Super Resolution with SR3 backbone モデルでのみサポートされます。
  • schedule - スケジュールのタイプを設定するオプションの文字列。 デフォルトのスケジュールは、トレーニングされたモデルと同じです。 この引数は、Super Resolution with SR3 backbone モデルでのみサポートされます。
  • test_time_augmentation - 予測中にテスト時間の延長を実行します。 true の場合、入力画像の反転および回転バリアントの予測は、最終出力にマージされます。 この引数は UNET、PSPNET、DeepLab、HEDEdgeDetector、BDCNEdgeDetector、ConnectNet、MMSegmentation、Multi-Task Road Extractor、SAMLoRA で使用できます。
  • tile_size - 予測のために画像が分割される画像タイルの幅と高さ。 この引数は CycleGAN アーキテクチャでのみ使用できます。
  • thinning - 予測されたエッジを細線化またはスケルトン化するかどうかを指定します。 オプションは TrueFalse です。 モデルの .emd ファイルで IsEdgeDetection が存在する場合は、BDCNEdgeDetector、HEDEdgeDetector、および MMSegmentation アーキテクチャを利用できます。
  • threshold - この閾値よりも信頼度スコアが高い予測が、結果に追加されます。 可能な値の範囲は 0 ~ 1.0 です。 モデルの .emd ファイルで ArcGISLearnVersion が 1.8.4 以上の場合、MultiTaskRoadExtractor および ConnectNet アーキテクチャを利用できます。 モデルの .emd ファイルで ArcGISLearnVersion が 1.8.4 以上であり、IsEdgeDetection が存在する場合は、BDCNEdgeDetector、HEDEdgeDetector、および MMSegmentation アーキテクチャも利用できます。

Value Table
processing_mode

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

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

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

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

Folder
out_featureclass
(オプション)

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

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

Feature Class
overwrite_attachments
(オプション)

既存の画像添付ファイルを上書きするかどうかを指定します。

  • NO_OVERWRITE既存の画像添付ファイルは上書きされず、新しい画像添付ファイルが新しいフィーチャクラスに保存されます。 このオプションを指定する場合、out_featureclass パラメーターを設定する必要があります。 これがデフォルトです。
  • OVERWRITE既存のフィーチャクラスが、更新された新しい添付ファイルで上書きされます。

このパラメーターは、in_raster パラメーターの値が画像添付ファイルを含むフィーチャクラスの場合にのみ有効です。

Boolean
use_pixelspace
(オプション)

マップ空間の画像に対して推論を実行するかどうかを指定します。

  • NO_PIXELSPACEマップ空間で推論を実行します。 これがデフォルトです。
  • PIXELSPACE画像空間で推論を実行し、出力をマップ空間に変換します。 このオプションは、マップ空間を使用するとフィーチャが歪む可能性がある斜め撮影画像やストリート ビュー画像を使用する場合に便利です。
Boolean

戻り値

名前説明データ タイプ
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")

関連トピック