点群トレーニング データの準備 (Prepare Point Cloud Training Data) (3D Analyst)

サマリー

点群を分類するための PointCNN モデルをトレーニングし、検証するためのデータを生成します。

使用法

  • 対象オブジェクトに対してポイントが適切に分類されているかどうか、入力点群を確認します。 分類モデルの品質は、トレーニングと検証に使用されるデータの品質に依存します。 点群の分類を改善する必要がある場合は、ポイント分類を対話形式で編集することを検討してください。

    対話的な LAS 分類編集の詳細

  • 点群トレーニング データは、*.pctd 拡張子が付いたディレクトリによって定義されます。このディレクトリには 2 つのサブディレクトリがあり、1 つは分類モデルのトレーニングに使用されるデータが格納されており、もう 1 つはトレーニング済みモデルの検証に使用されるデータが格納されています。 入力点群はトレーニングに使用されるデータのソースを示すため、常に指定する必要があります。 トレーニング用にエクスポートするポイントを制限するため、トレーニング境界を任意で定義できます。 検証データも必須で、以下のいずれかの手順を実行することで指定できます。

    • 検証点群を指定する。 このデータセットは、入力点群とは異なるポイント セットを参照する必要があります。
    • 検証境界を使用して検証点群を指定する。 これにより、検証境界と重複する検証点群の部分から、検証データが作成されます。
    • 検証点群を使用せずにトレーニング境界と検証境界を指定する。 これにより、トレーニング境界と交差する入力点群の部分からトレーニング データが作成されます。検証点群は、検証境界と交差する入力点群の部分から作成されます。 境界フィーチャは互いに重複してはいけません。
  • 点群分類モデルをトレーニングする場合、分類の対象となるオブジェクトとその周辺のコンテキストを把握するうえで関連性のあるデータを十分に捕捉できるブロック サイズを使用して、トレーニング データを作成します。 分類戦略を十分に推論するうえで十分な周辺データがあれば、ブロック サイズはオブジェクト全体を捕捉する必要はありません。 ブロックに含まれているポイント数が、ブロック ポイント制限よりも多い場合は、同じ位置に対して複数のブロックが作成されます。 たとえば、[ブロック ポイント制限] パラメーター値が 10,000 であり、あるブロックに 22,000 個のポイントが含まれている場合は、ブロックごとのサンプリングが均一になるよう 10,000 個のポイントを含むブロックが 3 つ作成されます。 一部のポイントは 2 つのブロックで繰り返されますが、すべてのポイントは少なくとも 1 つのブロックに格納されます。

  • ポイント制限を超過するブロックが多数作成されないよう、大きいブロック サイズとブロック ポイント制限は指定しないでください。 特定のブロック サイズのポイント数は、[LAS ポイント統計をラスターに出力 (LAS Point Statistics As Raster)] ツールを使用して、[方法] パラメーターに [ポイント数] オプションを使用する出力ラスターを生成することで、概算できます。 ラスターのセル サイズは、目的のブロック サイズと一致する必要があります。 このラスターの画像ヒストグラムを検証すると、特定のブロック サイズに収まるブロック数の目安を把握し、それに応じてポイント制限を調整できます。

  • [ブロック ポイント制限] パラメーター値は、ディープ ラーニング モデルのトレーニングに使用される、コンピューターの専用 GPU メモリ容量も考慮する必要があります。ディープラーニングモデルの学習に使用するコンピュータの専用 GPU メモリ容量も考慮する必要があります。 トレーニング時のメモリ割り当ては、使用される属性数、ブロックあたりのポイント数、反復バッチで処理されるブロックの総数によって異なります。 モデルを効果的にトレーニングするために、大きいブロック サイズとポイント制限が必要である場合は、トレーニング ステップでバッチ サイズを小さくすることで、より多くのポイントを処理できるようになります。

  • トレーニング データに対応するため、十分なディスク容量がある場所に出力が書き込まれるようにしてください。 このツールは、部分的に重複する非圧縮の HDF5 ファイルのブロックを作成します。このファイルによって各ポイントが 4 つのブロックに複製されます。 ポイント上限を超過したブロックでは、一部のポイントが 4 回以上重複することがあります。 結果的に生成されるトレーニング データは、ソース点群データの 3 倍以上のディスク容量を占めることがあります。

  • 参照高さの情報をトレーニング データに組み込むと、トレーニング プロセスに追加属性を提供できます。 これは、[参照サーフェス] パラメーターでラスターを指定することで行われます。 このラスターは、重複する各ポイントの相対高度属性を取得するために使用されます。 属性は、各ポイントの Z 値を取り、共一次内挿法によってラスターから取得した高さを差し引くことで算出されます。 この情報を含めることで、ラスター サーフェスからの相対高度の範囲が明確なオブジェクトを区別することができます。 また、ニューラル ネットワークが方向リレーションシップを推論するための根拠にもなります。 たとえば、電線のトレーニングを行っており、参照サーフェスとして地表面の標高ラスターを使用している場合、電線ポイントは地面から特定の相対高度の範囲内に収まる可能性が高くなります。 さらに、参照高さが地表面の標高に基づく場合、地表ポイントの存在が対象オブジェクトを特定するうえで有用なコンテキストを提供しない場合に、トレーニング データから地表ポイントを除外する理由になります。 ニューラル ネットワークは、トレーニング中に与えられたすべてのデータの分類を学習しようとします。 高品質な地表分類は [LAS の地表分類 (Classify LAS Ground)] ツールによって行えるため、地表ポイントを他のクラスと区別するためにニューラル ネットワークをトレーニングする必要はありません。 通常はクラス 2、場合によってはクラス 8 およびクラス 20 として表される地表ポイントは、[除外されるクラス コード] パラメーターにリストすることで除外できます。 一般的に、地表ポイントは LIDAR 調査で捕捉したポイント総数のおよそ半分を占めるため、ニューラル ネットワークはトレーニング データをよりすばやく処理できるようになります。

  • [参照サーフェス] パラメーターへの入力として使用されるラスター サーフェスは、地表の分類済みポイントなど LAS ポイントのサブセットから生成できます。この場合は、レイヤー プロパティから LAS データセットをフィルタリングし、[LAS データセット → ラスター (LAS Dataset To Raster)] ツールを使用します。 ツールを Python で使用する場合は、[LAS データセット レイヤーの作成 (Make LAS Dataset Layer)] ツールを使用し、ラスターを作成する前に目的のポイントをフィルタリングできます。 地表サーフェスは、[点群 → ラスター (Point Cloud To Raster)] ツールを使用して点群シーン レイヤーから生成することもできます。 入力点群から生成されないラスター サーフェスも使用できますが、ラスターの Z 値が点群の Z 値と適切に対応していることを確認する必要があります。

  • [除外されるクラス コード] パラメーターを使用すると、対象のオブジェクトを特定する方法を推論するうえで役立つコンテキストを提供しないクラス コードに関連付けられたポイントを省略できます。 そうすることで、評価されるポイント数が減るため、トレーニング プロセスの速度が向上します。 たとえば、建物の分類済みポイントは、信号機、電線、各種の鉄道アセットなどのオブジェクトの分類モデルのトレーニングには重要ではないことが一般的です。 建物のポイントは、[LAS の建物分類 (Classify LAS Building)] ツールを使用して分類することもできます。 建物を表すクラス 6 を除外クラスとして指定すると、建物ポイントがトレーニング データから除外されます。 除外されたクラスでトレーニングしたモデルを使用する点群では、モデルを適用する前に、これらのクラスを分類しておく必要があります。 これらのクラスは、[トレーニング済みモデルを使用して点群を分類 (Classify Point Cloud Using Trained Model)] および [点群トレーニング データの評価 (Evaluate Point Cloud Training Data)] ツールの [除外されるクラス コード] パラメーターにもリストする必要があります。そうすることで、モデルのトレーニングに使用したデータの特性に一致する点群を使用し、モデルが分類を推論できるようになります。

  • 入力点群の空間参照が投影座標系を使用していない場合は、出力座標系の環境を使用して、ポイントの分類で使用される投影座標系を定義することができます。

パラメーター

ラベル説明データ タイプ
入力点群データ

トレーニング データの作成に使用される点群。検証点群が指定されない場合は、検証データを作成することもあります。 この場合、トレーニング境界と検証境界の両方を定義する必要があります。

LAS Dataset Layer; File
ブロック サイズ

入力点群から作成された、円形の各 HDF5 タイルの直径サイズ。 原則的に、ブロック サイズは対象オブジェクトとその周辺のコンテキストを捕捉するための十分な大きさが必要です。

Linear Unit
出力トレーニング データ

出力トレーニング データの場所と名前 (*.pctd)。

File
トレーニング境界フィーチャ
(オプション)

入力点群からポイントのサブセットを定義する境界ポリゴンで、ディープ ラーニング モデルのトレーニングに使用されます。

Feature Layer
検証点群
(オプション)

トレーニング プロセスの際に、ディープ ラーニング モデルの検証に使用される点群。 このデータセットは、トレーニング済みモデルの品質を担保するため、入力点群とは異なるポイント セットを参照する必要があります。 検証点群を指定しない場合、[トレーニング境界フィーチャ][検証境界フィーチャ] パラメーターにポリゴン フィーチャクラスを指定することで、入力点群を使用してトレーニングおよび検証データセットを定義できます。

LAS Dataset Layer; File
検証境界フィーチャ
(オプション)

トレーニング プロセス中に、モデルの評価に使用されるポイントのサブセットを定義するポリゴン フィーチャ。 検証点群を指定しない場合、ポイントは入力点群から取得されます。

Feature Layer
クラス コードによるブロックのフィルタリング
(オプション)

エクスポートしたトレーニング データ ブロックを制限するために使用されるクラス コード。 このパラメーターにリストされる値を少なくとも 1 つ含むブロック内のすべてのポイントがエクスポートされます。ただし、[除外されるクラス コード] パラメーターで指定されたクラスか、Withheld としてフラグが立てられたポイントは除きます。 0 ~ 255 の範囲内の任意の値を指定できます。

Value Table
ブロック ポイント制限
(オプション)

トレーニング データの各ブロックで許可されている最大ポイント数。 ブロックに含まれるポイント数がこの値を超過する場合は、トレーニング時にすべてのポイントが使用されるよう、同じ位置に対して複数のブロックが作成されます。

Long
参照サーフェス
(オプション)

点群データの各ポイントの相対高度値を指定するために使用されるラスター サーフェス。 ラスターと重複しないポイントは、解析から除外されます。

Raster Layer
除外されるクラス コード
(オプション)

トレーニング データから除外されるクラス コード。 0 ~ 255 の範囲内の任意の値を指定できます。

Long

arcpy.ddd.PreparePointCloudTrainingData(in_point_cloud, block_size, out_training_data, {training_boundary}, {validation_point_cloud}, {validation_boundary}, {class_codes_of_interest}, {block_point_limit}, {reference_height}, {excluded_class_codes})
名前説明データ タイプ
in_point_cloud

トレーニング データの作成に使用される点群。検証点群が指定されない場合は、検証データを作成することもあります。 この場合、トレーニング境界と検証境界の両方を定義する必要があります。

LAS Dataset Layer; File
block_size

入力点群から作成された、円形の各 HDF5 タイルの直径サイズ。 原則的に、ブロック サイズは対象オブジェクトとその周辺のコンテキストを捕捉するための十分な大きさが必要です。

Linear Unit
out_training_data

出力トレーニング データの場所と名前 (*.pctd)。

File
training_boundary
(オプション)

入力点群からポイントのサブセットを定義する境界ポリゴンで、ディープ ラーニング モデルのトレーニングに使用されます。

Feature Layer
validation_point_cloud
(オプション)

ディープ ラーニング モデルの検証に使用される点群のソース。 このデータセットは、トレーニング済みモデルの品質を担保するため、入力点群とは異なるポイント セットを参照する必要があります。 検証点群を指定しない場合、training_boundaryvalidation_boundary パラメーターにポリゴン フィーチャクラスを指定することで、入力点群を使用してトレーニングおよび検証データセットを定義できます。

LAS Dataset Layer; File
validation_boundary
(オプション)

トレーニング プロセス中に、モデルの評価に使用されるポイントのサブセットを定義するポリゴン フィーチャ。 検証点群を指定しない場合、ポイントは入力点群から取得されます。

Feature Layer
class_codes_of_interest
[class_codes_of_interest,...]
(オプション)

エクスポートしたトレーニング データ ブロックを制限するために使用されるクラス コード。 このパラメーターにリストされる値を少なくとも 1 つ含むブロック内のすべてのポイントがエクスポートされます。ただし、excluded_class_codes パラメーターで指定されたクラスか、Withheld としてフラグが立てられたポイントは除きます。 0 ~ 255 の範囲内の任意の値を指定できます。

Value Table
block_point_limit
(オプション)

トレーニング データの各ブロックで許可されている最大ポイント数。 ブロックに含まれるポイント数がこの値を超過する場合は、トレーニング時にすべてのポイントが使用されるよう、同じ位置に対して複数のブロックが作成されます。

Long
reference_height
(オプション)

点群データの各ポイントの相対高度値を指定するために使用されるラスター サーフェス。 ラスターと重複しないポイントは、解析から除外されます。

Raster Layer
excluded_class_codes
[excluded_class_codes,...]
(オプション)

トレーニング データから除外されるクラス コード。 0 ~ 255 の範囲内の任意の値を指定できます。

Long

コードのサンプル

PreparePointCloudTrainingData の例 (Python ウィンドウ)

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

import arcpy
arcpy.env.workspace = 'C:/data'
arcpy.ddd.PreparePointCloudTrainingData('training_source.lasd', '35 Meters', 'vegetation_training.pctd', 
                                        validation_point_cloud='validation_source.lasd', 
                                        class_codes_of_interest=[14, 15], block_point_limit=12000,
                                        reference_height='Ground_Elevation.tif', 
                                        excluded_class_codes=[2, 6, 8, 9, 20])

ライセンス情報

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

関連トピック