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

概要

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

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

使用法

  • ラスター解析 (RA) サーバーの Python 環境は、適切なディープ ラーニング フレームワークの Python API (Tensorflow や CNTK など) によって構成する必要があります。

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

  • [入力モデル] パラメーターは、ポータルからのディープ ラーニング パッケージ (.dlpk) アイテムのみを使用します。

  • [入力モデル] を選択または指定すると、ツールがラスター解析サーバーからモデル引数情報を取得します。入力モデルが無効であったり、ラスター解析サーバーがディープ ラーニング フレームワークによって適切に構成されていなかったりすると、ツールはこうした情報を取得できません。

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

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

構文

arcpy.ra.DetectObjectsUsingDeepLearning(inputRaster, inputModel, outputName, {modelArguments}, {runNMS}, {confidenceScoreField}, {classValueField}, {maxOverlapRatio}, {processingMode})
パラメーター説明データ タイプ
inputRaster

オブジェクトの検出に使用される入力画像。これには、イメージ サービスの URL、ラスター レイヤー、イメージ サービス、マップ サーバー レイヤー、またはインターネット タイル レイヤーを指定できます。

Raster Layer; Image Service; MapServer; Map Server Layer; Internet Tiled Layer; String
inputModel

入力モデルには、ポータルからのディープ ラーニング パッケージ (.dlpk) アイテムのファイルまたは URL を指定できます。

File
outputName

検出オブジェクトの出力フィーチャ サービスの名前。

String
modelArguments
[modelArguments,...]
(オプション)

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

Value Table
runNMS
(オプション)

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

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

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

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

String
classValueField
(オプション)

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

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

String
maxOverlapRatio
(オプション)

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

Double
processingMode
(オプション)

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

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

派生した出力

名前説明データ タイプ
outObjects

出力フィーチャ サービス。

フィーチャクラス

コードのサンプル

DetectObjectsUsingDeepLearning (ディープ ラーニングを使用したオブジェクトの検出) の例 1 (Python ウィンドウ)

この例では、DetectObjectsUsingDeepLearning ツールを使用して、オブジェクト検出に基づいてポータル内にホスト フィーチャ レイヤーを作成します。

import arcpy
arcpy.DetectObjectsUsingDeepLearning_ra(
        "https://myserver/rest/services/Farm/ImageServer",
        "https://myportal/sharing/rest/content/items/itemId", "detectedTrees",
"score_threshold 0.6;padding 0", "NO_NMS")
DetectObjectsUsingDeepLearning (ディープ ラーニングを使用したオブジェクトの検出) の例 2 (スタンドアロン スクリプト)

この例では、DetectObjectsUsingDeepLearning ツールを使用して、オブジェクト検出に基づいてポータル内にホスト フィーチャ レイヤーを作成します。

#---------------------------------------------------------------------------
# Name: DetectObjectsUsingDeepLearning_example02.py
# Requirements: ArcGIS Image Server
# Import system modules
import arcpy
# Set local variables
inImage = "https://myserver/rest/services/coconutFarmImage/ImageServer"
inModel = "https://myportal/sharing/rest/content/items/itemId"
outName = "detectedTrees"
modelArgs = "score_threshold 0.6;padding 0"
runNMS = "NMS"
confScoreField = "Confidence"
classVField = "Class"
maxOverlapRatio = 0.15 
# Execute Detect Objects Using raster analysis tool
arcpy.DetectObjectsUsingDeepLearning_ra(inImage, inModel, outName, modelArgs,
runNMS, confScoreField, ClassVField, maxOverlapRatio)

ライセンス情報

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

関連トピック