点群分類モデルのトレーニングを実行 (Train Point Cloud Classification Model) (3D Analyst)

サマリー

PointCNN アーキテクチャを使用して、点群分類用のディープ ラーニング モデルのトレーニングを行います。

使用法

  • このツールでは、ディープ ラーニング フレームワークを用いる PointCNN 実装を使用します。

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

  • CUDA 対応の NVIDIA グラフィックス カードか CPU を使って、ポイント分類モデルのトレーニングを実行できます。 このツールでは、コンピューター上で最も高速な CUDA 対応グラフィックス カードの選択を試みます。 コンピューター上に複数の GPU が存在し、ツールで最速のカードを使用しない場合は、対象の GPU を GPU ID 環境設定で指定できます。 選択した GPU を表示にも使用している場合、表示を行っているオペレーティング システムや他のアプリケーションによって、GPU で利用可能なメモリ量が少なくなります。 トレーニングで GPU メモリを最大限利用するには、コンピューターの表示を行うのにトレーニングで使用されないグラフィックス カードの使用を検討してください。

    通常は CPU よりも GPU を使った方が処理がはるかに早くなります。 使用できる GPU がない場合のみ CPU を使用してください。 トレーニングに CPU を使用する場合、トレーニング操作前のデータ処理にかかる時間を見積もるために、トレーニング サンプルをできるだけ小さくしてください。

    点群分類モデルのトレーニングの詳細

  • 事前トレーニング済みモデルが指定されると、事前トレーニング済みモデルの重み付けがトレーニング対象モデルに適用され、その重み付けが微調整されて事前トレーニング済みモデルの同じオブジェクトが分類されます。 そのため、事前トレーニング済みモデルとトレーニング データで属性とクラス コードを一致させる必要があります。 同じオブジェクトを表すのに事前トレーニング済みモデルとは異なるクラス コードをトレーニング データで使用している場合は、トレーニング データのクラス コードを適切に再分類してください。

  • エポックごとに作成されるモデルであるチェックポイント モデルを格納するフォルダーが作成されます。 [出力モデルの場所] パラメーターで指定した値の後に .checkpoints を付けたものがこのフォルダーの名前になり、このパラメーターで指定したのと同じ場所に作成されます。 トレーニングが完了すると、[出力モデル名] パラメーターで指定した値の後に _stats.csv を付けた名前で CSV テーブルが作成され、チェックポイント フォルダーに追加されます。 このテーブルには、各クラス コードとエポックで取得された結果に関連する以下のフィールドがあります。

    • Epoch—行の結果に関連付けられたエポック数。 この値は、チェックポイント モデル ディレクトリで作成されたモデルに対応します。 整合チェック データのエポックでトレーニングされたモデルを適用することで結果が取得されます。
    • Class_Code—結果報告対象のクラス コード。
    • Precision分類されたすべてのポイント (真陽性と偽陽性) のなかで、適切に分類された (真陽性) ポイントの比率。
    • Recallこの値で分類される必要があったすべてのポイント (真陽性と偽陽性) のなかで、適切に分類されたポイント (真陽性) の比率。
    • F1_Score—精度と再現値の調和平均。
  • トレーニング中、PointCNN はトレーニング データからパターンを学習し、エントロピー損失関数を最小化します。 ツール実行時には、各エポックでアーカイブされたトレーニング結果の以下の統計サマリーが進捗メッセージによって返されます。

    • エポック—結果が関連付けられたエポックの数。
    • トレーニング損失—トレーニング データで平均化されたエントロピー損失関数の結果。
    • 整合チェック損失—整合チェック データのエポックでトレーニングされたモデルを適用する際に決定されたエントロピー損失関数の結果。
    • 正確度—整合チェック データのすべてのポイントのなかで、エポックでトレーニングされたモデルによって適切に分類された (真陽性) 整合チェック データのポイントの比率。
    • 精度—すべてのクラス コードの精度のマクロ平均。
    • 再現率—すべてのクラス コードの再現率のマクロ平均。
    • F1 スコア—すべてのクラス コードの精度と再現率の値のマクロ平均の調和平均。

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

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

  • ディープ ラーニング フレームワークに割り当てられたメモリと、指定したエポックの各反復バッチで処理されるデータ サイズを合計したものがトレーニング中に使用される専用メモリになります。 [属性選択] パラメーターで指定した追加のポイント属性数、指定したブロックのポイント合計数、および [バッチ サイズ] パラメーターで指定した、各バッチで処理されるブロック数によって各バッチのデータ サイズは異なります。 ブロックごとの最大ポイント数はトレーニング データのエクスポート時に決定されます。トレーニング処理時の利用可能メモリ占有領域を見積もる際にこの値が想定されます。

パラメーター

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

分類モデルのトレーニングに使用される点群トレーニング データ (*.pctd)。

File
出力モデルの場所

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

Folder
出力モデル名

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

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

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

File
属性選択
(オプション)

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

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

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

Long
クラスの再マッピング
(オプション)

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

Value Table
対象クラス コード
(オプション)

トレーニング データのブロックをフィルタリングするのに使用されるクラス コード。 対象クラス コードを指定すると、他のすべてのクラス コードがバックグラウンド クラス コードに再分類されます。

Long
バックグラウンド クラス コード
(オプション)

対象クラス コードが指定されている際に、他のすべてのクラス コードに使用されるクラス コード値。

Long
クラスの説明
(オプション)

トレーニング データの各クラス コードが何を表しているかに関する説明。

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

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

  • 整合チェック ロスエントロピー損失関数が整合チェック データに適用された時に最低の結果を出すモデルが選択されます。
  • 再現率すべてのクラス コードの再現率の最高マクロ平均を出すモデルが選択されます。 この値で分類される必要があったすべてのポイント (期待陽性) のなかで、適切に分類されたポイント (真陽性) の比率によって各クラス コードの再現率値が決定されます。 これがデフォルトです。
  • F1 スコアすべてのクラス コードの精度のマクロ平均と再現率値の間で調和平均が最も高いモデルが選択されます。 これにより精度と再現率のバランスが保たれ、全体のパフォーマンスが向上します。
  • 精度すべてのクラス コードの精度の最高マクロ平均を出すモデルが選択されます。 分類されたすべてのポイント (真陽性と偽陽性) のなかで、適切に分類された (真陽性) ポイントの比率によって各クラス コードの精度が決定されます。
  • 正確度整合チェック データのすべてのポイントのなかで、適切に分類されたポイントの比率が最も高いモデルが選択されます。
String
エポックの最大数
(オプション)

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

Long
エポック当たりの反復 (%)
(オプション)

各トレーニング エポックで処理されるデータのパーセンテージ。 デフォルトは 100 です。

Double
学習率
(オプション)

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

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

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

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

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

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

派生した出力

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

このツールによって最終的に生成されるモデル。

File
出力モデルの統計

*.csv ファイルには、それぞれのクラス コードとエポックの精度、再現率、F1 の各スコアが含まれています。

Text File

arcpy.ddd.TrainPointCloudClassificationModel(in_training_data, out_model_location, out_model_name, {pretrained_model}, {attributes}, {min_points}, {class_remap}, {target_classes}, {background_class}, {class_descriptions}, {model_selection_criteria}, {max_epochs}, {epoch_iterations}, {learning_rate}, {batch_size}, {early_stop})
名前説明データ タイプ
in_training_data

分類モデルのトレーニングに使用される点群トレーニング データ (*.pctd)。

File
out_model_location

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

Folder
out_model_name

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

String
pretrained_model
(オプション)

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

File
attributes
[attributes,...]
(オプション)

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

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

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

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

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

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

トレーニング データのブロックをフィルタリングするのに使用されるクラス コード。 対象クラス コードを指定すると、他のすべてのクラス コードがバックグラウンド クラス コードに再分類されます。

Long
background_class
(オプション)

対象クラス コードが指定されている際に、他のすべてのクラス コードに使用されるクラス コード値。

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

トレーニング データの各クラス コードが何を表しているかに関する説明。

Value Table
model_selection_criteria
(オプション)

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

  • VALIDATION_LOSSエントロピー損失関数が整合チェック データに適用された時に最低の結果を出すモデルが選択されます。
  • RECALLすべてのクラス コードの再現率の最高マクロ平均を出すモデルが選択されます。 この値で分類される必要があったすべてのポイント (期待陽性) のなかで、適切に分類されたポイント (真陽性) の比率によって各クラス コードの再現率値が決定されます。 これがデフォルトです。
  • F1_SCOREすべてのクラス コードの精度のマクロ平均と再現率値の間で調和平均が最も高いモデルが選択されます。 これにより精度と再現率のバランスが保たれ、全体のパフォーマンスが向上します。
  • PRECISIONすべてのクラス コードの精度の最高マクロ平均を出すモデルが選択されます。 分類されたすべてのポイント (真陽性と偽陽性) のなかで、適切に分類された (真陽性) ポイントの比率によって各クラス コードの精度が決定されます。
  • ACCURACY整合チェック データのすべてのポイントのなかで、適切に分類されたポイントの比率が最も高いモデルが選択されます。
String
max_epochs
(オプション)

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

Long
epoch_iterations
(オプション)

各トレーニング エポックで処理されるデータのパーセンテージ。 デフォルトは 100 です。

Double
learning_rate
(オプション)

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

Double
batch_size
(オプション)

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

Long
early_stop
(オプション)

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

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

派生した出力

名前説明データ タイプ
out_model

このツールによって最終的に生成されるモデル。

File
out_model_stats

*.csv ファイルには、それぞれのクラス コードとエポックの精度、再現率、F1 の各スコアが含まれています。

Text File

コードのサンプル

TrainPointCloudClassificationModel のサンプル (スタンドアロン スクリプト)

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

import arcpy (st
arcpy.env.workspace = "D:/Deep_Learning_Workspace"
arcpy.ddd.TrainPointCloudClassificationModel("Powerline_Training.pctd", "D:/DL_Models", "Powerline", 
                                             attributes=['INTENSITY', 'RETURN_NUMBER', 'NUMBER_OF_RETURNS'],
                                             target_classes=[14, 15], background_class = 1,
                                             class_descriptions=[[1,"Background"],[14, "Wire Conductor"], [15, "Transmission Tower"]],
                                             model_selection_criteria="F1_SCORE", max_epochs=10)

環境

特殊なケース

ライセンス情報

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

関連トピック