ディープ ラーニングを使用したオブジェクトの検出 (Detect Objects Using Deep Learning) (Image Analyst)

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

サマリー

入力ラスターにトレーニング済みディープ ラーニング モデルを実行して、検出したオブジェクトを含むフィーチャクラスを作成します。 フィーチャには、検出されたオブジェクトの周囲の境界四角形やポリゴン、またはオブジェクトの中心のポイントを指定できます。

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

使用法

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

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

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

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

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

  • *.emd ファイルについては、次のサンプルをご参照ください。

    {
        "Framework" :"TensorFlow",
        "ModelConfiguration": "ObjectDetectionAPI",
        
        "ModelFile": ".\\CoconutTreeDetection.model",
        "ModelType": "ObjectDetection",
        "ImageHeight": 850,
        "ImageWidth": 850,
        "ExtractBands": [0,1,2],
        "ImageSpaceUsed": "MAP_SPACE"
        "Classes": [
        {
            "Value": 0,
            "Name": "CoconutTree",
            "Color": [0, 255, 0]
        }
        ]
    }
  • このツールは、マップ空間内またはピクセル空間内の入力画像を処理できます。 マップ空間内の画像は、マップベースの座標系です。 ピクセル空間内の画像は、未処理の画像空間内で、回転も変形もされません。 [ディープ ラーニング用のトレーニング データをエクスポート (Export Training Data For Deep Learning)] ツールでトレーニング データを生成するときに、[参照系] パラメーターを使用して参照系を指定できます。 モデルがサードパーティのトレーニング ソフトウェアでトレーニングされている場合、ImageSpaceUsed パラメーターを使用して .emd ファイルで参照系を指定する必要があります。 このパラメーターは、MAP_SPACE または PIXEL_SPACE に設定できます。

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

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

  • オブジェクト検出から重複フィーチャを特定して削除するには、[Non Maximum Suppression] パラメーターを使用します。

  • 入力ラスターには、画像が添付された単一のラスター、複数のラスター、またはフィーチャクラスを使用できます。 添付ファイルの詳細については、「アタッチメントの追加または削除」をご参照ください。

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

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

パラメーター

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

オブジェクトの検出に使用される入力画像。 この入力には、モザイク データセット、イメージ サービス、または画像のフォルダー内の単一のラスターまたは複数のラスターを指定することができます。 画像のアタッチメントを含むフィーチャクラスもサポートされます。

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class
出力検出オブジェクト

入力画像で検出されたオブジェクトを取り巻くジオメトリを含む出力フィーチャクラス。

Feature Class
モデル定義

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

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

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

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

Value Table
Non Maximum Suppression
(オプション)

Non Maximum Suppression を実行するかどうかを指定します。実行すると、重複オブジェクトが識別され、信頼値の低い重複フィーチャが削除されます。

  • オフ - Non Maximum Suppression を実行しません。 検出されたすべてのオブジェクトが出力フィーチャクラス内に含められます。 これがデフォルトです。
  • オン - Non Maximum Suppression を実行し、検出された重複オブジェクトが削除されます。

Boolean
信頼度スコア フィールド
(オプション)

オブジェクト検出方法の出力として、信頼度スコアを含むフィーチャクラス内のフィールド名。

このパラメーターは、[Non Maximum Suppression] パラメーターをオンにした場合に必要です。

String
クラス値フィールド
(オプション)

入力フィーチャクラス内のクラス値フィールドの名前。

フィールド名が指定されていない場合、Classvalue または Value フィールドが使用されます。 これらのフィールドが存在しない場合、すべてのレコードが 1 つのクラスに属するものとして識別されます。

String
最大オーバーラップ率
(オプション)

2 つの重複したフィーチャの最大オーバーラップ率。全領域に対する交差領域の比率として定義されます。 デフォルトは 0 です。

Double
処理モード
(オプション)

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

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

派生した出力

ラベル説明データ タイプ
出力分類ラスター

ピクセルを分類するための出力分類ラスター。 ラスター データセットの名前は、[出力検出オブジェクト] パラメーター値と同じです。

このパラメーターは、モデル タイプがパノプティック セグメンテーションの場合のみ適用できます。

Raster Dataset

DetectObjectsUsingDeepLearning(in_raster, out_detected_objects, in_model_definition, {arguments}, {run_nms}, {confidence_score_field}, {class_value_field}, {max_overlap_ratio}, {processing_mode})
名前説明データ タイプ
in_raster

オブジェクトの検出に使用される入力画像。 この入力には、モザイク データセット、イメージ サービス、または画像のフォルダー内の単一のラスターまたは複数のラスターを指定することができます。 画像のアタッチメントを含むフィーチャクラスもサポートされます。

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

入力画像で検出されたオブジェクトを取り巻くジオメトリを含む出力フィーチャクラス。

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
run_nms
(オプション)

Non Maximum Suppression を実行するかどうかを指定します。実行すると、重複オブジェクトが識別され、信頼値の低い重複フィーチャが削除されます。

  • NO_NMSNon Maximum Suppression を実行しません。 検出されたすべてのオブジェクトが出力フィーチャクラス内に含められます。 これがデフォルトです。
  • NMSNon Maximum Suppression を実行し、検出された重複オブジェクトが削除されます。
Boolean
confidence_score_field
(オプション)

オブジェクト検出方法の出力として、信頼度スコアを含むフィーチャクラス内のフィールド名。

このパラメーターは、run_nms パラメーターが NMS に設定されている場合に必須です。

String
class_value_field
(オプション)

入力フィーチャクラス内のクラス値フィールドの名前。

フィールド名が指定されていない場合、Classvalue または Value フィールドが使用されます。 これらのフィールドが存在しない場合、すべてのレコードが 1 つのクラスに属するものとして識別されます。

String
max_overlap_ratio
(オプション)

2 つの重複したフィーチャの最大オーバーラップ率。全領域に対する交差領域の比率として定義されます。 デフォルトは 0 です。

Double
processing_mode
(オプション)

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

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

派生した出力

名前説明データ タイプ
out_classified_raster

ピクセルを分類するための出力分類ラスター。 ラスター データセットの名前は、out_detected_objects パラメーター値と同じです。

このパラメーターは、モデル タイプがパノプティック セグメンテーションの場合のみ適用できます。

Raster Dataset

コードのサンプル

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

次の例では、オブジェクトの検出に基づいてフィーチャクラスを作成しています。

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

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

DetectObjectsUsingDeepLearning("c:/detectobjects/moncton_seg.tif", 
     "c:/detectobjects/moncton_seg.shp", "c:/detectobjects/moncton.emd", 
     "padding 0; threshold 0.5; batch_size 4", "NO_NMS", "Confidence", 
     "Class", 0, "PROCESS_AS_MOSAICKED_IMAGE")
DetectObjectsUsingDeepLearning の例 2 (スタンドアロン スクリプト)

次の例では、オブジェクトの検出に基づいてフィーチャクラスを作成しています。

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

"""
Usage: DetectObjectsUsingDeepLearning( in_raster, out_detected_objects, 
       in_model_definition, {arguments}, {run_nms}, {confidence_score_field}, 
       {class_value_field}, {max_overlap_ratio}, {processing_mode})
"""

# Set local variables
in_raster = "c:/classifydata/moncton_seg.tif"
out_detected_objects = "c:/detectobjects/moncton.shp"
in_model_definition = "c:/detectobjects/moncton_sig.emd"
model_arguments = "padding 0; threshold 0.5; batch_size 4"
run_nms = "NO_NMS"
confidence_score_field = "Confidence"
class_value_field = "Class"
max_overlap_ratio = 0
processing_mode = "PROCESS_AS_MOSAICKED_IMAGE"
# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

# Execute 
DetectObjectsUsingDeepLearning( in_raster, out_detected_objects, 
   in_model_definition, model_arguments, run_nms, confidence_score_field, 
   class_value_field, max_overlap_ratio, processing_mode)

ライセンス情報

  • Basic: 次のものが必要 Image Analyst
  • Standard: 次のものが必要 Image Analyst
  • Advanced: 次のものが必要 Image Analyst

関連トピック