点群オブジェクト検出モデルのトレーニングを実行 (Train Point Cloud Object Detection Model) (3D Analyst)

サマリー

ディープ ラーニングを使用して点群のオブジェクト検出モデルをトレーニングします。

使用法

  • このツールには、Deep Learning Essentials のインストールが必要です。これは、点群を分類するためのニューラル アーキテクチャを含む複数のニューラル ネットワーク ソリューションを提供します。

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

  • データ、時間、計算リソースに制限がある場合は特に、トレーニング プロセスで事前トレーニング済みモデルを使用すると便利です。 事前トレーニング済みモデルを使用することで、広範囲でのトレーニングの必要性が減り、信頼性の高い出発点をもとにして、役立つモデルを速やかに作成することができます。 事前トレーニング済みモデルを使用するには、新しいトレーニング データと事前トレーニング済みモデルの間に互換性がなければなりません。 つまり、新しいトレーニング データの属性とオブジェクト コードが、事前トレーニング済みモデルの作成に使用されたトレーニング データと同じでなければなりません。 トレーニング データのオブジェクト コードが事前トレーニング済みモデルのコードと一致しない場合、トレーニング データのオブジェクト コードをこれに合わせて再マッピングする必要があります。

  • 点群オブジェクト検出モデルのトレーニングには CUDA 対応の NVIDIA グラフィックス カードのみを使用できます。 プロセッサ タイプ環境が CUDA 対応のグラフィックス カードを搭載したコンピューターに設定されていない場合、最適なハードウェアのカードがトレーニングに使用されます。 それ以外の場合、GPU ID 環境設定で特定のグラフィックス カードを指定することができます。

  • トレーニング プロセス中に次の指標が報告されます。

    • エポック - 結果が関連付けられたエポックの数。
    • トレーニング損失 - トレーニング データで平均化されたエントロピー損失関数の結果。
    • 検証損失 - 検証データのエポックでトレーニングされたモデルを適用する際に決定されたエントロピー損失関数の結果。
    • 平均精度 - 検証データのすべてのポイントのなかで、エポックでトレーニングされたモデルによって適切に分類された (真陽性) 検証データのポイントの比率。

    トレーニング損失が低いものの、検証損失が高いモデルはトレーニング データと過剰に適合すると見なされます。この場合、検証データで適切に機能しないモデルが生成されるトレーニング データのアーティファクトからパターンが検出されます。 トレーニング損失と検証損失が高いモデルはトレーニング データとの適合性が不足していると見なされます。この場合、使用可能なモデルを生成するのに十分なパターンが効率的に学習されません。

    点群トレーニング結果の評価の詳細

  • エポックの終了時に作成されるモデルであるチェックポイント モデルを格納するフォルダーが作成されます。 チェックポイント フォルダー名は、モデルと同じ名前で始まり .checkpoints で終わります。 これは [出力モデルの場所] パラメーター値で指定されている場所に保存されます。

パラメーター

ラベル説明データ タイプ
入力トレーニング データ

モデルのトレーニングに使用される点群オブジェクト検出トレーニング データ (*.pcotd ファイル)。

File
出力モデルの場所

ディープ ラーニング モデルを含む新しいディレクトリを保存する既存のフォルダー。

Folder
出力モデル名

出力 Esri モデル定義ファイル (*.emd)、ディープ ラーニング パッケージ (*.dlpk)、およびこれらを格納するために作成されるディレクトリの名前。

String
事前トレーニング済みモデル定義ファイル
(オプション)

微調整される事前トレーニング済みオブジェクト検出モデル。 事前トレーニング済みモデルを指定する場合、そのモデルを生成したトレーニング データで使用したのと同じ属性と最大ポイント数を入力トレーニング データで指定する必要があります。

File
アーキテクチャ
(オプション)

モデルのトレーニングに使用するアーキテクチャを指定します。

  • Sparsely Embedded Convolutional DetectionSECOND (Sparsely Embedded CONvolutional Detection) アーキテクチャが使用されます。 これがデフォルトです。
String
属性選択
(オプション)

モデルのトレーニング時に分類コードとともに使用されるポイント属性を指定します。 使用できるのは、点群トレーニング データにある属性だけです。 デフォルトでは他の属性は含まれていません。

  • 強度LIDAR パルス リターンの強度測定単位が使用されます。
  • リターン値指定した LIDAR パルスから取得したポイントの順序位置が使用されます。
  • リターン数指定したポイントに関連付けられたパルスでポイントとして特定された LIDAR リターンの合計数が使用されます。
  • 赤色バンド色情報がある点群の赤バンドの値が使用されます。
  • 緑色バンド色情報がある点群の緑バンドの値が使用されます。
  • 青色バンド色情報がある点群の青バンドの値が使用されます。
  • 短波赤外バンド短波赤外情報がある点群の短波赤外バンドの値が使用されます。
  • 相対高度参照サーフェスに対する各ポイントの相対高度。通常は地表の DEM が使用されます。
String
ブロックごとの最小ポイント数
(オプション)

モデルのトレーニング時に、指定したブロックに存在して使用される必要がある最小ポイント数。 デフォルトは 0 です。

Long
オブジェクト コードの再マッピング
(オプション)

ディープ ラーニング モデルのトレーニング前にオブジェクト コードを新しい値にマッピングし直す方法を定義します。

  • [現在のコード] - トレーニング データのオブジェクト コード値
  • [再マッピング後のコード] - 既存のコードから変更されるオブジェクト コード値

Value Table
対象オブジェクト コード
(オプション)

トレーニング データ内のオブジェクトをフィルターするために使用されるオブジェクト コード。 オブジェクト コードを指定した場合、含まれていないオブジェクトは無視されます。

Long
オブジェクトが含まれているブロックのみをトレーニング
(オプション)

モデルのトレーニングに、オブジェクトが含まれているブロックのみを使用するか、オブジェクトが含まれてないブロックを含む、すべてのブロックを使用するかを指定します。

  • オン - オブジェクトが含まれているブロックのみを使用してモデルをトレーニングします。 検証に使用されるデータは変更されません。
  • オフ - オブジェクトが含まれていないブロックを含む、すべてのブロックを使用してモデルをトレーニングします。 これがデフォルトです。
Boolean
オブジェクトの説明
(オプション)

トレーニング データの各オブジェクト コードの説明。

  • [オブジェクト コード] - モデルが学習したオブジェクト コード値
  • [説明] - クラス コードによって説明されるオブジェクト

Value Table
モデル選択基準
(オプション)

最終モデルの決定に使用される統計的基礎を指定します。

  • 検証損失エントロピー損失関数が検証データに適用された時に最低の結果を出すモデルが使用されます。
  • 平均精度検証データのすべてのポイントのなかで、エポックでトレーニングされたモデルによって適切に分類された (真陽性) 検証データのポイントの比率が最も高いモデルが使用されます。 これがデフォルトです。
String
エポックの最大数
(オプション)

ニューラル ネットワークを通って各データ ブロックが前後に渡される回数。 デフォルトは 25 です。

Long
学習率方法
(オプション)

トレーニング中に学習率を変更する方法を指定します。

  • 1 サイクル学習率ニューラル ネットワークをトレーニングするための 1 サイクル手法の Fast.ai の実装を使用して、学習率を各エポック全体で繰り返し、畳み込みニューラル ネットワークのトレーニングを改善できます。 これがデフォルトです。
  • 固定学習率トレーニング プロセスで同じ学習率が使用されます。
String
学習率
(オプション)

既存の情報を新しい情報で上書きする割合。 値を指定しないと、トレーニング プロセス中に最適な学習率が学習曲線から抽出されます。 これがデフォルトです。

Double
バッチ サイズ
(オプション)

指定した時間に処理されるトレーニング データ ブロックの数。 デフォルトは 2 です。

Long
モデルの改善がなくなった時点でトレーニングを停止
(オプション)

[モデル選択基準] パラメーターに指定したメトリックが、5 回のエポックで連続して改善されない場合にモデルのトレーニングを停止するかどうかを指定します。

  • オン - モデルの改善がなくなった時点でモデルのトレーニングを停止します。
  • オフ - 最大エポック数に到達するまでモデルのトレーニングを続行します。 これがデフォルトです。
Boolean
アーキテクチャ設定
(オプション)

トレーニング結果を改良するために変更可能なアーキテクチャ設定。

  • [オプション] - アーキテクチャ固有の変更可能なオプション。
    • [ボクセル幅] - トレーニング中に使用されるボクセルの x および y ディメンション。 対応する値の距離単位はメートルであり、倍精度値として表すことができます。
    • [ボクセル高さ] - トレーニング中に使用されるボクセルの z ディメンション。 対応する値の距離単位はメートルであり、倍精度値として表すことができます。
    • [ボクセル ポイント制限] - そのボクセルのポイント数。 対応する値は正の整数でなければなりません。 値が指定されていない場合、トレーニング プロセス中にトレーニング データのブロック サイズとブロック ポイント制限に基づいてこの制限が計算されます。
    • [トレーニング ボクセル最大数] - トレーニング データで使用可能なボクセルの最大数。 対応する値は正の整数でなければなりません。 値が指定されていない場合、トレーニング中にこの制限が計算されます。
    • [検証ボクセル最大数] - 検証データで使用可能なボクセルの最大数。 対応する値は正の整数でなければなりません。 値が指定されていない場合、トレーニング中にこの制限が計算されます。
  • [値] - 変更するオプションに対応する値。

Value Table

派生した出力

ラベル説明データ タイプ
出力モデル

生成される出力オブジェクト検出モデル。

File
出力エポックの統計

トレーニング プロセス中に取得されたエポック統計情報が含まれている出力 ASCII テーブル。

Text File

arcpy.ddd.TrainPointCloudObjectDetectionModel(in_training_data, out_model_location, out_model_name, {pretrained_model}, {architecture}, {attributes}, {min_points}, {remap_objects}, {target_objects}, {train_blocks}, {object_descriptions}, {model_selection_criteria}, {max_epochs}, {learning_rate_strategy}, {learning_rate}, {batch_size}, {early_stop}, {architecture_settings})
名前説明データ タイプ
in_training_data

モデルのトレーニングに使用される点群オブジェクト検出トレーニング データ (*.pcotd ファイル)。

File
out_model_location

ディープ ラーニング モデルを含む新しいディレクトリを保存する既存のフォルダー。

Folder
out_model_name

出力 Esri モデル定義ファイル (*.emd)、ディープ ラーニング パッケージ (*.dlpk)、およびこれらを格納するために作成されるディレクトリの名前。

String
pretrained_model
(オプション)

微調整される事前トレーニング済みオブジェクト検出モデル。 事前トレーニング済みモデルを指定する場合、そのモデルを生成したトレーニング データで使用したのと同じ属性と最大ポイント数を入力トレーニング データで指定する必要があります。

File
architecture
(オプション)

モデルのトレーニングに使用するアーキテクチャを指定します。

  • SECDSECOND (Sparsely Embedded CONvolutional Detection) アーキテクチャが使用されます。 これがデフォルトです。
String
attributes
[attributes,...]
(オプション)

モデルのトレーニング時に分類コードとともに使用されるポイント属性を指定します。 使用できるのは、点群トレーニング データにある属性だけです。 デフォルトでは他の属性は含まれていません。

  • INTENSITYLIDAR パルス リターンの強度測定単位が使用されます。
  • RETURN_NUMBER指定した LIDAR パルスから取得したポイントの順序位置が使用されます。
  • NUMBER_OF_RETURNS指定したポイントに関連付けられたパルスでポイントとして特定された LIDAR リターンの合計数が使用されます。
  • RED色情報がある点群の赤バンドの値が使用されます。
  • GREEN色情報がある点群の緑バンドの値が使用されます。
  • BLUE色情報がある点群の青バンドの値が使用されます。
  • NEAR_INFRARED短波赤外情報がある点群の短波赤外バンドの値が使用されます。
  • RELATIVE_HEIGHT参照サーフェスに対する各ポイントの相対高度。通常は地表の DEM が使用されます。
String
min_points
(オプション)

モデルのトレーニング時に、指定したブロックに存在して使用される必要がある最小ポイント数。 デフォルトは 0 です。

Long
remap_objects
[remap_objects,...]
(オプション)

ディープ ラーニング モデルのトレーニング前にオブジェクト コードを新しい値にマッピングし直す方法を定義します。

  • 現在のコード - トレーニング データのオブジェクト コード値
  • 再マッピング後のコード - 既存のコードから変更されるオブジェクト コード値

Value Table
target_objects
[target_objects,...]
(オプション)

トレーニング データ内のオブジェクトをフィルターするために使用されるオブジェクト コード。 オブジェクト コードを指定した場合、含まれていないオブジェクトは無視されます。

Long
train_blocks
(オプション)

モデルのトレーニングに、オブジェクトが含まれているブロックのみを使用するか、オブジェクトが含まれてないブロックを含む、すべてのブロックを使用するかを指定します。

  • OBJECT_BLOCKSオブジェクトが含まれているブロックのみを使用してモデルをトレーニングします。 検証に使用されるデータは変更されません。
  • ALL_BLOCKSオブジェクトが含まれていないブロックを含む、すべてのブロックを使用してモデルをトレーニングします。 これがデフォルトです。
Boolean
object_descriptions
[object_descriptions,...]
(オプション)

トレーニング データの各オブジェクト コードの説明。

  • オブジェクト コード - モデルが学習したオブジェクト コード値
  • 説明 - クラス コードによって説明されるオブジェクト

Value Table
model_selection_criteria
(オプション)

最終モデルの決定に使用される統計的基礎を指定します。

  • VALIDATION_LOSSエントロピー損失関数が検証データに適用された時に最低の結果を出すモデルが使用されます。
  • AVERAGE_PRECISION検証データのすべてのポイントのなかで、エポックでトレーニングされたモデルによって適切に分類された (真陽性) 検証データのポイントの比率が最も高いモデルが使用されます。 これがデフォルトです。
String
max_epochs
(オプション)

ニューラル ネットワークを通って各データ ブロックが前後に渡される回数。 デフォルトは 25 です。

Long
learning_rate_strategy
(オプション)

トレーニング中に学習率を変更する方法を指定します。

  • ONE_CYCLEニューラル ネットワークをトレーニングするための 1 サイクル手法の Fast.ai の実装を使用して、学習率を各エポック全体で繰り返し、畳み込みニューラル ネットワークのトレーニングを改善できます。 これがデフォルトです。
  • FIXEDトレーニング プロセスで同じ学習率が使用されます。
String
learning_rate
(オプション)

既存の情報を新しい情報で上書きする割合。 値を指定しないと、トレーニング プロセス中に最適な学習率が学習曲線から抽出されます。 これがデフォルトです。

Double
batch_size
(オプション)

指定した時間に処理されるトレーニング データ ブロックの数。 デフォルトは 2 です。

Long
early_stop
(オプション)

model_selection_criteria パラメーターに指定したメトリックが、5 回のエポックで連続して改善されない場合にモデルのトレーニングを停止するかどうかを指定します。

  • EARLY_STOPモデルの改善がなくなった時点でモデルのトレーニングを停止します。
  • NO_EARLY_STOP最大エポック数に到達するまでモデルのトレーニングを続行します。 これがデフォルトです。
Boolean
architecture_settings
[architecture_settings,...]
(オプション)

トレーニング結果を改良するために変更可能なアーキテクチャ設定。

  • オプション - アーキテクチャ固有の変更可能なオプション。
    • VOXEL_WIDTH - トレーニング中に使用されるボクセルの x および y ディメンション。 対応する値の距離単位はメートルであり、倍精度値として表すことができます。
    • VOXEL_HEIGHT - トレーニング中に使用されるボクセルの z ディメンション。 対応する値の距離単位はメートルであり、倍精度値として表すことができます。
    • VOXEL_POINT_LIMIT - そのボクセルのポイント数。 対応する値は正の整数でなければなりません。 値が指定されていない場合、トレーニング プロセス中にトレーニング データのブロック サイズとブロック ポイント制限に基づいてこの制限が計算されます。
    • MAX_TRAINING_VOXELS - トレーニング データで使用可能なボクセルの最大数。 対応する値は正の整数でなければなりません。 値が指定されていない場合、トレーニング中にこの制限が計算されます。
    • MAX_VALIDATION_VOXELS - 検証データで使用可能なボクセルの最大数。 対応する値は正の整数でなければなりません。 値が指定されていない場合、トレーニング中にこの制限が計算されます。
  • 値 - 変更するオプションに対応する値。

Value Table

派生した出力

名前説明データ タイプ
out_model

生成される出力オブジェクト検出モデル。

File
out_epoch_stats

トレーニング プロセス中に取得されたエポック統計情報が含まれている出力 ASCII テーブル。

Text File

コードのサンプル

TrainPointCloudObjectDetectionModel の例 (スタンドアロン スクリプト)

次のサンプルは、Python ウィンドウでこのツールを使用する方法を示しています。

import arcpy

arcpy.env.workspace = "D:/Deep_Learning_Workspace"
arcpy.ddd.TrainPointCloudObjectDetectionModel("Cars.pcotd", "D:/DL_Models", "Cars", 
    attributes=["INTENSITY", "RETURN_NUMBER", "NUMBER_OF_RETURNS", "RELATIVE_HEIGHT"],
    object_descriptions=[[31, "Cars"]], train_blocks="OBJECT_BLOCKS",
    model_selection_criteria="AVERAGE_PRECISION", max_epochs=10)