Skip To Content

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

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

概要

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

トレーニング済みディープ ラーニング モデル パッケージは、Esri モデル定義 (*.emd) JSON ファイルで構成されています。このファイルには、各ラスター タイルを処理するために呼び出される Python ラスター関数へのパスと、TensorFlow や CNTK などのサードパーティ製トレーニング ソフトウェアから作成された、トレーニング済みバイナリ ディープ ラーニング モデル ファイルへのパスが含まれています。

使用法

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

  • Python 環境の変更またはクローン化については、Python Package Manager をご参照ください。

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

  • Esri Python ラスター関数の GitHub ページPython ラスター関数の構造に記載されている例と手順に従って、独自のカスタム Python モジュールを記述することもできます。

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

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

    {
        "Framework":"CNTK",
        "ModelConfiguration":"FasterRCNN",
        "InferenceFunction":"C:\\deep-learning\\PyRfx\\ObjectDetector.py",
        "ModelFile":".\\CoconutTreeDetection.model",
        "ExtractBands" : [0,1,2],
        "Classes" : [
        {
            "Value" : 0,
            "Name" : "CoconutTree",
            "Color" : [0, 255, 0]
        }
        ]
    }
  • オブジェクト検出から重複フィーチャを特定して削除するには、[Non Maximum Suppression] パラメーターを使用します。

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

構文

DetectObjectsUsingDeepLearning(in_raster, out_detected_objects, in_model_definition, {arguments}, {run_nms}, {confidence_score_field}, {class_value_field}, {max_overlap_ratio})
パラメーター説明データ タイプ
in_raster

オブジェクトの検出に使用される入力画像。

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; MapServer; Map Server Layer; Internet Tiled Layer
out_detected_objects

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

Feature Class
in_model_definition

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

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

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

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

Value Table
run_nms
(オプション)

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

  • NO_NMS検出されたすべてのオブジェクトが出力フィーチャクラス内に含められます。これがデフォルトです。
  • NMS検出された重複オブジェクトが削除されます。
Boolean
confidence_score_field
(オプション)

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

このパラメーターは、NMS パラメーターに run_nms キーワードを使用した場合に必要です。

Field
class_value_field
(オプション)

入力フィーチャクラス内のクラス値フィールド。指定しない場合、ツールは標準クラス値フィールドの ClassvalueValue を使用します。これらのフィールドが存在しない場合、すべてのフィーチャが同じオブジェクト クラスとして扱われます。

Field
max_overlap_ratio
(オプション)

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

Double

コードのサンプル

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")
DetectObjectsUsingDeepLearning (ディープ ラーニングを使用したオブジェクトの検出) の例 2 (スタンドアロン スクリプト)

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

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

"""
Usage: DetectObjectsUsingDeepLearning( in_raster, out_detected_objects, 
       in_model_definition, {arguments})
"""

# 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"


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

# Execute 
DetectObjectsUsingDeepLearning( in_raster, out_detected_objects, 
in_model_definition, "padding 0;nms_threshold 0.2;conf_threshold 0")

ライセンス情報

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

関連トピック