ディープ ラーニングを使用したオブジェクトの検出 (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 に設定することができます。

  • 方向付き画像レイヤーの場合、処理は必ずピクセル空間で行われます。 ピクセル空間が処理に使用された場合、ピクセル空間検出が出力テーブルの IShape フィールドに保存されます。

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

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

  • オブジェクト検出から重複フィーチャを特定して削除するには、[Non Maximum Suppression] パラメーターを使用します。 このパラメーターの詳細については、[Non Maximum Suppression] ツールの「使用法」セクションをご参照ください。 入力が方向付き画像レイヤーの場合、NULL の地表ジオメトリを持つ重複フィーチャは削除されずに残ります。

  • モザイク データセットで選択された画像のみでオブジェクトを検出するには、[処理モード] パラメーターの [候補アイテムのみを処理] オプションを使用します。 [モザイク候補の計算 (Compute Mosaic Candidates)] ツールを使用すると、モザイク エリアを最適に表現するモザイク データセットとイメージ サービスで画像候補を検索できます。

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

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

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

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

  • ディープ ラーニングの詳細については、「ArcGIS Image Analyst エクステンションを使用したディープ ラーニング」をご参照ください。

パラメーター

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

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

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

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

フィーチャクラスがすでに存在する場合、既存のフィーチャクラスに結果が追加されます。

Feature Class
モデル定義

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

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

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

[モデル定義] パラメーターからの情報が、このパラメーターの設定に使用されます。 これらの引数はモデル アーキテクチャによって異なります。 ArcGIS でトレーニングされたモデルでサポートされているモデル引数を次に示します。 ArcGIS 事前トレーニング済みモデルとカスタム ディープ ラーニング モデルでは、このツールでサポートされている追加の引数を利用できることがあります。

  • padding - 隣接するタイルの予測がブレンドされる画像タイルの境界のピクセル数。 出力を滑らかにすると同時にアーティファクトを減らすには、この値を大きくします。 パディングの最大値には、タイル サイズの値の半分を設定できます。 この引数はすべてのモデル アーキテクチャで使用できます。
  • threshold - この閾値よりも信頼度スコアが高い検出が、結果に追加されます。 可能な値の範囲は 0 ~ 1.0 です。 この引数はすべてのモデル アーキテクチャで使用できます。
  • batch_size - モデル推論の各ステップで処理された画像タイルの数。 これは、お使いのグラフィックス カードのメモリに応じて異なります。 この引数はすべてのモデル アーキテクチャで使用できます。
  • nms_overlap - 2 つの重複したフィーチャの最大オーバーラップ率。結合領域に対する交差領域の比率として定義されます。 デフォルトは 0.1 です。 この引数はすべてのモデル アーキテクチャで使用できます。
  • exclude_pad_detections - true の場合、画像チップのパディングされた領域にあるエッジ付近で切り捨てられる可能性のある検出をフィルターします。 この引数は SSD、RetinaNet、YOLOv3、DETReg、MMDetection、Faster RCNN のみで使用できます。
  • test_time_augmentation - 予測中にテスト時間の延長を実行します。 True の場合、入力画像の反転および回転方向の予測は最終出力にマージされ、それらの信頼値は平均化されます。 これにより、画像の方向が少ししか検出されないオブジェクトの場合、信頼度の値が閾値を下回る可能性があります。 この引数はすべてのモデル アーキテクチャで使用できます。
  • tile_size - 予測のために画像が分割される画像タイルの幅と高さ。 この引数は MaskRCNN でのみ使用できます。
  • merge_policy - 拡張された予測のマージに関するポリシー。 指定できるオプションには、mean、max、min があります。これは、テスト時間の延長が使用される場合に限り適用できます。 この引数は MaskRCNN でのみ使用できます。
  • output_classified_raster 出力ラスターへのパス。 この引数は MaXDeepLab でのみ使用できます。

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

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

  • オフ - Non Maximum Suppression を実行しません。 検出されたすべてのオブジェクトが出力フィーチャクラス内に含められます。 これがデフォルトです。
  • オン - Non Maximum Suppression を実行し、検出された重複オブジェクトが削除されます。 入力が方向付き画像レイヤーの場合、NULL の地表ジオメトリを持つ重複フィーチャは削除されずに残ります。

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

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

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

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

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

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

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

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

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

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

  • モザイク画像として処理モザイク データセットまたはイメージ サービス内のすべてのラスター アイテムがモザイク化され、処理されます。 これがデフォルトです。
  • すべてのラスター アイテムを個別に処理モザイク データセットまたはイメージ サービス内のすべてのラスター アイテムが、個別の画像として処理されます。
  • 候補アイテムのみを処理入力モザイク データセットの属性テーブルの Candidate フィールドで、値が 1 または 2 のラスター アイテムのみが処理されます。
String
ピクセル空間を使用
(オプション)

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

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

Boolean
対象オブジェクト
(オプション)

このツールによって検出するオブジェクトの名前を指定します。 選択可能なオプションは [モデル定義] パラメーターの値によって異なります。

このパラメーターは、そのモデルで複数のタイプのオブジェクトが検出される場合にのみアクティブになります。

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}, {use_pixelspace}, {in_objects_of_interest})
名前説明データ タイプ
in_raster

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

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class; Oriented Imagery Layer
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,...]
(オプション)

in_model_definition パラメーターからの情報が、このパラメーターのデフォルト値の設定に使用されます。 これらの引数はモデル アーキテクチャによって異なります。 ArcGIS でトレーニングされたモデルでサポートされているモデル引数を次に示します。 ArcGIS 事前トレーニング済みモデルとカスタム ディープ ラーニング モデルでは、このツールでサポートされている追加の引数を利用できることがあります。

  • padding - 隣接するタイルの予測がブレンドされる画像タイルの境界のピクセル数。 出力を滑らかにすると同時にアーティファクトを減らすには、この値を大きくします。 パディングの最大値には、タイル サイズの値の半分を設定できます。 この引数はすべてのモデル アーキテクチャで使用できます。
  • threshold - この閾値よりも信頼度スコアが高い検出が、結果に追加されます。 可能な値の範囲は 0 ~ 1.0 です。 この引数はすべてのモデル アーキテクチャで使用できます。
  • batch_size - モデル推論の各ステップで処理された画像タイルの数。 これは、お使いのグラフィックス カードのメモリに応じて異なります。 この引数はすべてのモデル アーキテクチャで使用できます。
  • nms_overlap - 2 つの重複したフィーチャの最大オーバーラップ率。結合領域に対する交差領域の比率として定義されます。 デフォルトは 0.1 です。 この引数はすべてのモデル アーキテクチャで使用できます。
  • exclude_pad_detections - true の場合、画像チップのパディングされた領域にあるエッジ付近で切り捨てられる可能性のある検出をフィルターします。 この引数は SSD、RetinaNet、YOLOv3、DETReg、MMDetection、Faster RCNN のみで使用できます。
  • test_time_augmentation - 予測中にテスト時間の延長を実行します。 True の場合、入力画像の反転および回転方向の予測は最終出力にマージされ、それらの信頼値は平均化されます。 これにより、画像の方向が少ししか検出されないオブジェクトの場合、信頼度の値が閾値を下回る可能性があります。 この引数はすべてのモデル アーキテクチャで使用できます。
  • tile_size - 予測のために画像が分割される画像タイルの幅と高さ。 この引数は MaskRCNN でのみ使用できます。
  • merge_policy - 拡張された予測のマージに関するポリシー。 指定できるオプションには、mean、max、min があります。これは、テスト時間の延長が使用される場合に限り適用できます。 この引数は MaskRCNN でのみ使用できます。
  • output_classified_raster 出力ラスターへのパス。 この引数は MaXDeepLab でのみ使用できます。

Value Table
run_nms
(オプション)

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

  • NO_NMSNon Maximum Suppression を実行しません。 検出されたすべてのオブジェクトが出力フィーチャクラス内に含められます。 これがデフォルトです。
  • NMSNon Maximum Suppression を実行し、検出された重複オブジェクトが削除されます。 入力が方向付き画像レイヤーの場合、NULL の地表ジオメトリを持つ重複フィーチャは削除されずに残ります。
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モザイク データセットまたはイメージ サービス内のすべてのラスター アイテムが、個別の画像として処理されます。
  • PROCESS_CANDIDATE_ITEMS_ONLY入力モザイク データセットの属性テーブルの Candidate フィールドで、値が 1 または 2 のラスター アイテムのみが処理されます。
String
use_pixelspace
(オプション)

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

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

このツールによって検出するオブジェクトを指定します。 選択可能なオプションは、in_model_definition パラメーターの値によって異なります。

このパラメーターは、そのモデルで複数のタイプのオブジェクトが検出される場合にのみアクティブになります。

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

関連トピック