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 モデル定義] パラメーター値には、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] } ] }
オブジェクト検出から重複フィーチャを特定して削除するには、[Non Maximum Suppression] パラメーターを使用します。
このツールは、マップ空間内またはピクセル空間内の入力画像を処理できます。マップ空間内の画像は、マップベースの座標系です。ピクセル空間内の画像は、未処理の画像空間内で、回転も変形もされません。[ディープ ラーニング用のトレーニング データをエクスポート (Export Training Data For Deep Learning)] ツールでトレーニング データを生成するときに、[参照系] パラメーターを使用して参照系を指定できます。モデルがサードパーティのトレーニング ソフトウェアでトレーニングされている場合、ImageSpaceUsed または MAP_SPACE に設定できる PIXEL_SPACE パラメーターを使用して、*.emd ファイルで参照系を指定する必要があります。
入力ラスターには、画像が添付された単一のラスター、複数のラスター、またはフィーチャクラスを使用できます。添付ファイルの詳細については、「アタッチメントの追加または削除」をご参照ください。
このツールの実行要件および発生する可能性のある問題の詳細については、「ディープ ラーニングに関するよくある質問」をご参照ください。
ディープ ラーニングの詳細については、「ArcGIS Pro のディープ ラーニング」をご参照ください。
構文
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; MapServer; 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 を実行するかどうかを指定します。実行すると、重複オブジェクトが識別され、信頼値の低い重複フィーチャが削除されます。
| Boolean |
confidence_score_field (オプション) | オブジェクト検出方法の出力として、信頼度スコアを含むフィーチャクラス内のフィールド名。 このパラメーターは、NMS パラメーターに run_nms キーワードを使用した場合に必要です。 | String |
class_value_field (オプション) | 入力フィーチャクラス内のクラス値フィールドの名前。 フィールド名が指定されていない場合、Classvalue または Value フィールドが使用されます。これらのフィールドが存在しない場合、すべてのレコードが 1 つのクラスに属するものとして識別されます。 | String |
max_overlap_ratio (オプション) | 2 つの重複したフィーチャの最大オーバーラップ率。ユニオン領域に対する交差領域の比率として定義されます。デフォルトは 0 です。 | Double |
processing_mode (オプション) | モザイク データセットまたはイメージ サービス内のすべてのラスター アイテムを処理する方法を指定します。入力ラスターがモザイク データセットまたはイメージ サービスである場合、このパラメーターが適用されます。
| String |
コードのサンプル
次の例では、オブジェクトの検出に基づいてフィーチャクラスを作成しています。
# 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")
次の例では、オブジェクトの検出に基づいてフィーチャクラスを作成しています。
# 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