ラベル | 説明 | データ タイプ |
入力点群データ | トレーニング データの作成に使用される点群。検証点群が指定されない場合は、検証データの作成にも使用されます。 この場合、トレーニング境界と検証境界の両方を定義する必要があります。 | LAS Dataset Layer; File |
ブロック サイズ | 入力点群から作成されるトレーニング データの各ブロックの直径。 原則的に、ブロック サイズは対象オブジェクトとその周辺のコンテキストを捕捉するための十分な大きさが必要です。 | Linear Unit |
出力トレーニング データ | 出力トレーニング データ (*.pctd ファイル) の場所と名前。 | File |
トレーニング境界フィーチャ (オプション) | 入力点群でモデルのトレーニングに使用されるポイントのサブセットを定義するポリゴン フィーチャ。 このパラメーターは、[検証点群] パラメーター値が指定されていない場合には必須です。 | Feature Layer |
検証点群 (オプション) | トレーニング プロセスの際に、ディープ ラーニング モデルの検証に使用される点群。 このデータセットは、トレーニング済みモデルの品質を担保するため、入力点群とは異なるポイント セットを参照する必要があります。 検証点群を指定しない場合、[トレーニング境界フィーチャ] と [検証境界フィーチャ] パラメーターにポリゴン フィーチャクラスを指定することで、入力点群を使用してトレーニングおよび検証データセットを定義できます。 | LAS Dataset Layer; File |
検証境界フィーチャ (オプション) | トレーニング プロセス中に、モデルの検証に使用されるポイントのサブセットを定義するポリゴン フィーチャ。 検証点群を指定しない場合、ポイントは入力点群から取得され、[トレーニング境界フィーチャ] パラメーターにポリゴンが必要となります。 | Feature Layer |
クラス コードによるブロックのフィルタリング (オプション) | エクスポートしたトレーニング データ ブロックを制限するために使用されるクラス コード。 このパラメーターにリストされる値を少なくとも 1 つ含むブロック内のすべてのポイントがエクスポートされます。ただし、[除外されるクラス コード] パラメーターで指定されたクラスか、Withheld としてフラグが立てられたポイントは除きます。 0 ~ 255 の範囲内の任意の値を指定できます。 | Value Table |
ブロック ポイント制限 (オプション) | トレーニング データの各ブロックで許可されている最大ポイント数。 ブロックに含まれるポイント数がこの値を超過する場合は、トレーニング時にすべてのポイントが使用されるよう、同じ位置に対して複数のブロックが作成されます。 デフォルトは 8,192 です。 | Long |
参照サーフェス (オプション) | 点群データの各ポイントの相対高度値を指定するために使用されるラスター サーフェス。 ラスターとオーバーラップしないポイントは、解析から除外されます。 | Raster Layer |
除外されるクラス コード (オプション) | トレーニング データから除外されるクラス コード。 0 ~ 255 の範囲内の任意の値を指定できます。 | Long |
サマリー
点群分類モデルをトレーニングし、検証するためのデータを生成します。
使用法
対象オブジェクトに対してポイントが適切に分類されているかどうか、入力点群を確認します。 分類モデルの品質は、トレーニングと検証に使用されるデータの品質に依存します。 点群の分類を改善する必要がある場合は、ポイント分類を対話形式で編集することを検討してください。
点群トレーニング データは、.pctd 拡張子が付いたディレクトリによって定義されます。このディレクトリには 2 つのサブディレクトリがあり、1 つは分類モデルのトレーニングに使用されるデータが格納されており、もう 1 つはトレーニング済みモデルの検証に使用されるデータが格納されています。 入力点群はトレーニングに使用されるデータのソースを示すため、常に指定する必要があります。 トレーニング用にエクスポートするポイントを制限するためにトレーニング境界が定義できます。 検証データも必須で、以下のいずれかの手順を実行することで指定できます。
- 検証点群を指定します。 このデータセットは、入力点群とは異なるポイント セットを参照する必要があります。
- 検証境界を使用して検証点群を指定します。 これにより、検証境界と重複する検証点群の部分から、検証データが作成されます。
- 検証点群を使用せずにトレーニング境界と検証境界を指定します。 これにより、トレーニング境界と交差する入力点群の部分からトレーニング データが作成されます。検証点群は、検証境界と交差する入力点群の部分から作成されます。 境界フィーチャは互いに重複してはいけません。
入力点群の点密度がほぼ一貫している必要があります。 点群を評価して、オーバーラップするフライト ラインによる測量やアイドリング地上スキャナーによって収集されたエリアなど、点密度が高い場所が含まれているかどうかを調べます。 航空機 LIDAR でフライト ラインがオーバーラップしている場合、[LAS オーバーラップの分類 (Classify LAS Overlap)] ツールを使用してオーバーラップしているポイントにフラグを設定し、ポイントの分布をさらに一貫したものにすることができます。 ホットスポットがオーバーサンプリングされたその他のタイプの点群は、[LAS の間引き (Thin LAS)] ツールを使用して規則的な分布に間引くことができます。
点群のポイントをそのクラス コードによってトレーニング データから除外することで、処理対象のポイントの量が減るため、モデルのトレーニングのパフォーマンスを向上させることができます。 除外するポイントは、容易に分類可能なクラスに属している必要があり、モデルのトレーニングの対象となるオブジェクトの十分なコンテキストを必ずしも提供しません。 オーバーラップまたはノイズとして分類されるポイントはフィルターによって除外することを検討してください。 トレーニング データの生成中に地表からの高度が計算される場合、地表分類ポイントもフィルターによって除外することができます。
参照高さの情報をトレーニング データに組み込むと、トレーニング プロセスに追加属性を提供できます。 これは、[参照サーフェス] パラメーターでラスターを指定することで行われます。 このラスターは、重複する各ポイントの相対高度属性を取得するために使用されます。 属性は、各ポイントの Z 値を取り、共一次内挿法によってラスターから取得した高さを差し引くことで算出されます。 この情報を含めることで、ラスター サーフェスからの相対高度の範囲が明確なオブジェクトを区別することができます。 また、ニューラル ネットワークが方向リレーションシップを推論するための根拠にもなります。 たとえば、電線のトレーニングを行っており、参照サーフェスとして地表面の標高ラスターを使用している場合、電線ポイントは地面から特定の相対高度の範囲内に収まる可能性が高くなります。 さらに、参照高さが地表面の標高に基づく場合、地表ポイントの存在が対象オブジェクトを特定するうえで有用なコンテキストを提供しない場合に、トレーニング データから地表ポイントを除外する理由になります。 ニューラル ネットワークは、トレーニング中に与えられたすべてのデータの分類を学習しようとします。 高品質な地表分類は [LAS の地表分類 (Classify LAS Ground)] ツールによって行えるため、地表ポイントを他のクラスと区別するためにニューラル ネットワークをトレーニングする必要はありません。 通常はクラス 2、場合によってはクラス 8 およびクラス 20 として表される地表ポイントは、[除外されるクラス コード] パラメーターにリストすることで除外できます。 一般的に、地表ポイントは LIDAR 調査で捕捉したポイント総数のおよそ半分を占めるため、ニューラル ネットワークはトレーニング データをよりすばやく処理できるようになります。
[参照サーフェス] パラメーターへの入力として使用されるラスター サーフェスは、地表の分類済みポイントなど LAS ポイントのサブセットから生成できます。この場合は、LAS データセットをフィルタリングし、[LAS データセット → ラスター (LAS Dataset To Raster)] ツールを使用します。 分類コード、戻り値、分類フラグの任意の組み合わせを使用して、LAS データセットからのポイントの任意のサブセットをフィルター処理することができます。 ポイント フィルターは、LAS データセット レイヤーのプロパティ ダイアログまたは [LAS データセット レイヤーの作成 (Make LAS Dataset Layer)] ツールを使用して適用できます。 ラスター サーフェスは、[点群 → ラスター (Point Cloud To Raster)] ツールを使用して点群シーン レイヤーから生成することもできます。
[除外されるクラス コード] パラメーターを使用すると、対象のオブジェクトを特定する方法を推論するうえで役立つコンテキストを提供しないクラス コードに関連付けられたポイントを省略できます。 これらを省略することで、評価されるポイント数が減るため、トレーニング プロセスの速度が向上します。 たとえば、建物の分類済みポイントは、信号機、電線、その他のアセットなどのオブジェクトの分類モデルのトレーニングには重要ではないことが一般的です。 建物のポイントは、[LAS の建物分類 (Classify LAS Building)] ツールを使用して確実に分類することもできます。 建物を表すクラス 6 を除外クラスとして指定すると、建物ポイントがトレーニング データから除外されます。 除外されたクラスでトレーニングしたモデルを使用する点群では、モデルを適用する前に、これらのクラスを分類しておく必要があります。 これらのクラスは、[トレーニング済みモデルを使用して点群を分類 (Classify Point Cloud Using Trained Model)] および [点群トレーニング データの評価 (Evaluate Point Cloud Training Data)] ツールの [除外されるクラス コード] パラメーターにもリストする必要があります。そうすることで、モデルのトレーニングに使用したデータの特性に一致する点群を使用し、モデルが分類を推論できるようになります。
ブロック ポイント制限には、データのブロック サイズと平均ポイント間隔が反映されていなければなりません。 [LAS ポイント統計をラスターに出力 (LAS Point Statistics As Raster)] ツールで [方法] パラメーターを [ポイント数] オプションに設定し、出力ラスターのセル サイズとして任意のブロック サイズを指定して、特定のブロックのポイント数を概算できます。 このラスターの画像ヒストグラムは、データセット全体におけるブロックごとのポイントの分布を表すことができます。 ヒストグラムで多数のブロックが広く分散している場合、ポイントが密に収集されたホット スポットがある、不規則にサンプリングされたデータが存在する可能性があります。 ブロックに含まれているポイント数がブロック ポイント制限よりも多い場合は、そのすべてのポイントがトレーニング データで表されるようにするため、そのブロックが複数回作成されます。 たとえば、ポイント制限が 10,000 であり、あるブロックに 22,000 個のポイントが含まれている場合は、ブロックごとのサンプリングが均一になるよう 10,000 個のポイントを含むブロックが 3 つ作成されます。 また、ブロック ポイント制限が大部分のブロックの名目上のポイント数をはるかに上回ることがないようにします。 一部のアーキテクチャでは、ポイント制限を満たすようにデータがアップサンプリングされます。 こうした理由から、トレーニング データ内の大部分のブロックをカバーすると考えられる点の数に近いブロック サイズとブロック ポイント制限を使用します。 トレーニング データが作成されると、ツールのメッセージ ウィンドウにヒストグラムが表示され、トレーニング データと検証データが格納されているフォルダーにその画像が格納されます。 このヒストグラムから、ブロック サイズとポイント制限が適切な組み合わせで指定されているかどうか確認できます。 ポイント制限が最適ではないことを値が示している場合、[ブロック ポイント制限] パラメーターにさらに適切な値を指定してツールを再度実行します。
-
トレーニング データに対応するため、十分なディスク容量がある場所に出力が書き込まれるようにしてください。 このツールは、部分的にオーバーラップする非圧縮の HDF5 ファイルのブロックを作成します。このファイルによって各ポイントが 4 つのブロックに複製されます。 ポイント上限を超過したブロックでは、一部のポイントが 4 回以上重複することがあります。 結果的に生成されるトレーニング データは、ソース点群データの 3 倍以上のディスク容量を占めることがあります。
パラメーター
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 | 入力点群から作成されるトレーニング データの各ブロックの直径。 原則的に、ブロック サイズは対象オブジェクトとその周辺のコンテキストを捕捉するための十分な大きさが必要です。 | Linear Unit |
out_training_data | 出力トレーニング データ (*.pctd ファイル) の場所と名前。 | File |
training_boundary (オプション) | 入力点群でモデルのトレーニングに使用されるポイントのサブセットを定義するポリゴン フィーチャ。 このパラメーターは、validation_point_cloud パラメーター値が指定されていない場合には必須です。 | Feature Layer |
validation_point_cloud (オプション) | ディープ ラーニング モデルの検証に使用される点群のソース。 このデータセットは、トレーニング済みモデルの品質を担保するため、入力点群とは異なるポイント セットを参照する必要があります。 検証点群を指定しない場合、training_boundary と validation_boundary パラメーターにポリゴン フィーチャクラスを指定することで、入力点群を使用してトレーニングおよび検証データセットを定義できます。 | LAS Dataset Layer; File |
validation_boundary (オプション) | トレーニング プロセス中に、モデルの検証に使用されるポイントのサブセットを定義するポリゴン フィーチャ。 検証点群を指定しない場合、ポイントは入力点群から取得され、training_boundary パラメーターにポリゴンが必要となります。 | Feature Layer |
class_codes_of_interest [class_codes_of_interest,...] (オプション) | エクスポートしたトレーニング データ ブロックを制限するために使用されるクラス コード。 このパラメーターにリストされる値を少なくとも 1 つ含むブロック内のすべてのポイントがエクスポートされます。ただし、excluded_class_codes パラメーターで指定されたクラスか、Withheld としてフラグが立てられたポイントは除きます。 0 ~ 255 の範囲内の任意の値を指定できます。 | Value Table |
block_point_limit (オプション) | トレーニング データの各ブロックで許可されている最大ポイント数。 ブロックに含まれるポイント数がこの値を超過する場合は、トレーニング時にすべてのポイントが使用されるよう、同じ位置に対して複数のブロックが作成されます。 デフォルトは 8,192 です。 | Long |
reference_height (オプション) | 点群データの各ポイントの相対高度値を指定するために使用されるラスター サーフェス。 ラスターとオーバーラップしないポイントは、解析から除外されます。 | Raster Layer |
excluded_class_codes [excluded_class_codes,...] (オプション) | トレーニング データから除外されるクラス コード。 0 ~ 255 の範囲内の任意の値を指定できます。 | Long |
コードのサンプル
次のサンプルは、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])