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

サマリー

点群分類用のディープ ラーニング モデルのトレーニングを行います。

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

使用法

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

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

  • CUDA 対応の NVIDIA グラフィックス カードか CPU を使って、点群分類モデルのトレーニングを実行できます。 通常は CPU よりも GPU を使った方が処理が速くなります。 使用できる GPU がない場合のみ CPU を使用してください。 トレーニングに CPU を使用する場合、最初に RandLA-Net アーキテクチャを使用します。PointCNN よりもメモリの消費が少ないからです。 完全なトレーニング データセットでのトレーニングの前に、データ処理にかかる時間を見積もるために、できるだけ小さいトレーニング サンプルの使用を試すこともできます。

  • GPU を使用して複数のグラフィックス カードがあるコンピューター上で、モデルをトレーニングする場合、ツールはコンピューター上で最も高速なグラフィックス カードを使用します。 GPU ID 環境設定を使用して GPU を指定することもできます。 コンピューター上に複数のグラフィックス カードがある場合、計算リソースが最大のグラフィックス カードをトレーニング専用にし、リソースが少ないグラフィックス カードを表示専用にすると、トレーニングのパフォーマンスを最大限に高めることができます。 選択した GPU を表示にも使用している場合、トレーニング プロセス中に表示を行っているオペレーティング システムやアプリケーションによって、GPU で利用可能なメモリ量が減少します。

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

  • ツール実行時には、各エポックで実行されたトレーニング結果に関する以下の統計情報が進捗メッセージによって報告されます。

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

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

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

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

    • Epoch—行の結果に関連付けられたエポック数。 この値は、チェックポイント モデル ディレクトリで作成されたモデルに対応します。 検証データのエポックでトレーニングされたモデルを適用することで結果が取得されます。
    • Class_Code—結果報告対象のクラス コード。
    • Precision—分類されたすべてのポイント (真陽性と偽陽性) のなかで、適切に分類された (真陽性) ポイントの比率。
    • Recall—この値で分類される必要があったすべてのポイント (真陽性と偽陽性) のなかで、適切に分類されたポイント (真陽性) の比率。
    • F1_Score—精度と再現値の調和平均。
  • ディープ ラーニング フレームワークによって割り当てられたメモリと、指定したエポックの各反復バッチで処理されるデータ サイズを合計したものがトレーニング中に使用される専用メモリになります。 [属性選択] パラメーターで指定した追加のポイント属性数、指定したブロックのポイント合計数、および [バッチ サイズ] パラメーターで指定した、各バッチで処理されるブロック数によって各バッチのデータ サイズは異なります。 ブロックごとの最大ポイント数はトレーニング データのエクスポート時に決定されます。トレーニング処理時の利用可能メモリ占有領域を見積もる際にこの値が想定されます。

  • [属性選択] パラメーターの [相対高度] オプションは、地表標高モデルなどの参照サーフェスからのポイントの高さを識別する属性です。 この属性を使用することで、トレーニング プロセス中の方向リレーションシップを学習するモデルの能力が向上する可能性があります。

パラメーター

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

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

File
出力モデルの場所

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

Folder
出力モデル名

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Double
学習率
(オプション)

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

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

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

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

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

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

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

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

モデルのトレーニングに使用するニューラル ネットワーク アーキテクチャを指定します。 事前トレーニング済みモデルを指定すると、事前トレーニング済みモデルの作成に使用されるアーキテクチャが自動的に設定されます。

  • PointCNNPointCNN アーキテクチャが使用されます。
  • RandLA-NetRandLA-Net アーキテクチャが使用されます。 RandLA-Net はシンプルなランダム サンプリングとローカル フィーチャの集約の原理を基に構築されています。 これがデフォルトです。
  • Semantic Query NetworkSemantic Query Network (SQN) アーキテクチャが使用されます。 SQN は、他のニューラル ネットワーク アーキテクチャが行っているようなトレーニング データの包括的な分類を必要としません。
String

派生した出力

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

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

File
出力モデルの統計

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

Text 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}, {learning_rate_strategy}, {architecture})
名前説明データ タイプ
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短波赤外情報がある点群の短波赤外バンドの値が使用されます。
  • RELATIVE_HEIGHT参照サーフェスに対する各ポイントの相対高度。通常は地表の DEM が使用されます。
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
learning_rate_strategy
(オプション)

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

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

モデルのトレーニングに使用するニューラル ネットワーク アーキテクチャを指定します。 事前トレーニング済みモデルを指定すると、事前トレーニング済みモデルの作成に使用されるアーキテクチャが自動的に設定されます。

  • POINTCNNPointCNN アーキテクチャが使用されます。
  • RANDLANETRandLA-Net アーキテクチャが使用されます。 RandLA-Net はシンプルなランダム サンプリングとローカル フィーチャの集約の原理を基に構築されています。 これがデフォルトです。
  • SQNSemantic Query Network (SQN) アーキテクチャが使用されます。 SQN は、他のニューラル ネットワーク アーキテクチャが行っているようなトレーニング データの包括的な分類を必要としません。
String

派生した出力

名前説明データ タイプ
out_model

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

File
out_model_stats

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

Text File
out_epoch_stats

.csv ファイルには、各エポックで取得されたトレーニング損失、検証損失、精度、再現率、F1 の各スコアが含まれています。

Text File

コードのサンプル

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

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

import arcpy

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)

関連トピック