点群オブジェクト検出トレーニング データの準備 (Prepare Point Cloud Object Detection Training Data) (3D Analyst)

サマリー

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

点群オブジェクト検出トレーニング データの準備ツールの図

使用法

  • 点群オブジェクト検出トレーニング データは、拡張子 .pcotd が付いたディレクトリによって定義されます。このディレクトリには 2 つのサブディレクトリがあり、1 つはモデルのトレーニングに使用されるデータが格納されており、もう 1 つはトレーニング プロセス全体を通してモデルの検証に使用されるデータが格納されています。 入力点群は必ず、トレーニングと検証に使用するオブジェクトの境界四角形を表す別個のマルチパッチ フィーチャと共に指定する必要があります。 トレーニング用にエクスポートするデータを制限するため、境界ポリゴンを指定できます。 次の方法によって検証データを定義できます。

    • 入力点群に加えて検証点群を指定する。 このデータセットは、入力点群とは異なるポイント セットを参照する必要があります。 検証点群をクリップするための境界を指定することもできます。
    • 入力点群だけを指定し、トレーニング境界と検証境界を指定する。 これにより、トレーニング データと検証データの両方が同じ入力点群から作成されるため、[検証点群] パラメーターにデータセットを指定する必要がありません。 トレーニングと検証に同じ点群データを使用しないようにするため、2 つの境界ポリゴン データセットがオーバーラップしないようにします。
  • 点群に存在する各オブジェクト タイプをマルチパッチ境界四角形で囲みます。 不明なオブジェクトがトレーニング データまたは検証データ内にあると、モデルはオブジェクトの識別方法を効果的に学習できなくなります。 点群に不明なオブジェクトが含まれている場合は、境界フィーチャを使用して、エクスポートされるトレーニング データセットを、オブジェクトを境界四角形で適切に囲んだ場所に制限します。

  • オブジェクトを表すポイントを、オブジェクト検出のトレーニング データセットで使用するために分類する必要はありません。 これにより、オブジェクトのラベリング タスクが簡素化され、境界四角形をマルチパッチ フィーチャとして作成するだけになります。 対話形式によるマルチパッチ フィーチャクラスの 3D 編集によって境界四角形を生成することができます。 ただし、オブジェクトが分類済みの点群によって表されている場合、[点群からオブジェクトを抽出 (Extract Objects From Point Cloud)] ツールを使用してこれらのポイントの境界四角形を作成することができます。

  • 入力点群の点密度がほぼ一貫している必要があります。 点群を評価して、オーバーラップするフライト ラインによる測量やアイドリング地上スキャナーによって収集されたエリアなど、点密度が高い場所が含まれているかどうかを調べます。 航空機 LIDAR でフライト ラインがオーバーラップしている場合、[LAS オーバーラップの分類 (Classify LAS Overlap)] ツールを使用してオーバーラップしているポイントにフラグを設定し、ポイントの分布をさらに一貫したものにすることができます。 ホットスポットがオーバーサンプリングされたその他のタイプの点群は、[LAS の間引き (Thin LAS)] ツールを使用して規則的な分布に間引くことができます。

  • 点群のポイントをそのクラス コードによってトレーニング データから除外することで、処理対象のポイントの量が減るため、モデルのトレーニングのパフォーマンスを向上させることができます。 除外するポイントは、容易に分類可能なクラスに属している必要があり、モデルのトレーニングの対象となるオブジェクトの十分なコンテキストを必ずしも提供しません。 オーバーラップまたはノイズとして分類されるポイントはフィルターによって除外することを検討してください。 トレーニング データの生成中に地表からの高度が計算される場合、地表分類ポイントもフィルターによって除外することができます。

  • 可能な場合、モデルのトレーニングの対象となるオブジェクトを十分に捕捉できるブロック サイズを指定します。 各ブロックには必ずしもオブジェクト全体が含まれているわけではありませんが、トレーニング データに作成されるオーバーラップするブロックは、正常なモデルをトレーニングするために十分な量のオブジェクトをさまざまな表現で捕捉します。

  • ブロック ポイント制限には、データのブロック サイズと平均ポイント間隔が反映されていなければなりません。 [LAS ポイント統計をラスターに出力 (LAS Point Statistics As Raster)] ツールで [方法] パラメーターを [ポイント数] オプションに設定し、出力ラスターのセル サイズとして任意のブロック サイズを指定して、特定のブロックのポイント数を概算できます。 このラスターの画像ヒストグラムは、データセット全体におけるブロックごとのポイントの分布を表すことができます。 ヒストグラムで多数のブロックが広く分散している場合、ポイントが密に収集されたホット スポットがある、不規則にサンプリングされたデータが存在する可能性があります。 ブロックに含まれているポイント数がブロック ポイント制限よりも多い場合は、そのすべてのポイントがトレーニング データで表されるようにするため、そのブロックが複数回作成されます。 たとえば、ポイント制限が 10,000 であり、あるブロックに 22,000 個のポイントが含まれている場合は、ブロックごとのサンプリングが均一になるよう 10,000 個のポイントを含むブロックが 3 つ作成されます。 また、ブロック ポイント制限が大部分のブロックの名目上のポイント数をはるかに上回ることがないようにします。 一部のアーキテクチャでは、ポイント制限を満たすようにデータがアップサンプリングされます。 こうした理由から、トレーニング データ内の大部分のブロックをカバーすると考えられる点の数に近いブロック サイズとブロック ポイント制限を使用します。 トレーニング データが作成されると、ツールのメッセージ ウィンドウにヒストグラムが表示され、トレーニング データと検証データが格納されているフォルダーにその画像が格納されます。 このヒストグラムから、ブロック サイズとポイント制限が適切な組み合わせで指定されているかどうか確認できます。 ポイント制限が最適ではないことを値が示している場合、[ブロック ポイント制限] パラメーターにさらに適切な値を指定してツールを再度実行します。

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

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

  • ツールのメッセージ ウィンドウに、各タイプのオブジェクトの四分位比率が表示されます。 この比率は、第三四分位のオブジェクトのボリュームを第一四分位のオブジェクトのボリュームによって割ることによって計算されます。 この指標はオブジェクト間のサイズのばらつきを示します。 四分位比率が大きいとオブジェクトのボリュームのばらつきが多く、比率が小さいとばらつきが小さくなります。 ボリュームのばらつきがかなり大きい場合、精度の高いモデルを得るには [点群オブジェクト検出モデルのトレーニングを実行 (Train Point Cloud Object Detection Model)] ツールの [アーキテクチャ設定] パラメーターでボクセル パラメーターを調整する必要があります。

パラメーター

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

オブジェクト検出用のトレーニング データの作成に使用される点群。

LAS Dataset Layer; File
入力トレーニング フィーチャ

モデルのトレーニングに使用されるオブジェクトを識別するマルチパッチ フィーチャ。

Feature Layer
入力検証フィーチャ

トレーニング プロセス中にモデルの検証に使用されるオブジェクトを識別するマルチパッチ フィーチャ。

Feature Layer
ブロック サイズ

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

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

出力トレーニング データ (*.pcotd ファイル) の場所と名前。

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

入力点群でモデルのトレーニングに使用されるポイントのサブセットを定義するポリゴン フィーチャ。 このパラメーターは、[検証点群] パラメーター値が指定されていない場合には必須です。

Feature Layer
トレーニング コード フィールド
(オプション)

トレーニング マルチパッチ フィーチャ内のオブジェクトの各タイプの一意の ID を識別するフィールド。 フィールドが定義されていない場合、各オブジェクトに ID 0 が割り当てられます。

Field
検証点群
(オプション)

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

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

トレーニング プロセス中に、モデルの検証に使用されるポイントのサブセットを定義するポリゴン フィーチャ。 検証点群を指定しない場合、ポイントは入力点群から取得され、[トレーニング境界フィーチャ] パラメーターにポリゴンが必要となります。

Feature Layer
検証コード フィールド
(オプション)

検証マルチパッチ フィーチャ内のオブジェクトの各タイプの一意の ID を識別するフィールド。 フィールドが定義されていない場合、各オブジェクトに ID 0 が割り当てられます。

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

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

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

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

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

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

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

トレーニング データに、オブジェクトが含まれているブロックのみを含めるか、オブジェクトが含まれていないブロックも含めるかを指定します。 検証に使用されるデータはこのパラメーターの影響を受けません。

  • オン - オブジェクトが含まれているブロックのみがトレーニング データにエクスポートされます。
  • オフ - オブジェクトが含まれているブロックとオブジェクトが含まれていないブロックの両方がトレーニング データにエクスポートされます。 これがデフォルトです。

Boolean

arcpy.ddd.PreparePointCloudObjectDetectionTrainingData(in_point_cloud, in_training_features, in_validation_features, block_size, out_training_data, {training_boundary}, {training_code_field}, {validation_point_cloud}, {validation_boundary}, {validation_code_field}, {block_point_limit}, {reference_height}, {excluded_class_codes}, {blocks_contain_objects})
名前説明データ タイプ
in_point_cloud

オブジェクト検出用のトレーニング データの作成に使用される点群。

LAS Dataset Layer; File
in_training_features

モデルのトレーニングに使用されるオブジェクトを識別するマルチパッチ フィーチャ。

Feature Layer
in_validation_features

トレーニング プロセス中にモデルの検証に使用されるオブジェクトを識別するマルチパッチ フィーチャ。

Feature Layer
block_size

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

Linear Unit
out_training_data

出力トレーニング データ (*.pcotd ファイル) の場所と名前。

File
training_boundary
(オプション)

入力点群でモデルのトレーニングに使用されるポイントのサブセットを定義するポリゴン フィーチャ。 このパラメーターは、validation_point_cloud パラメーター値が指定されていない場合には必須です。

Feature Layer
training_code_field
(オプション)

トレーニング マルチパッチ フィーチャ内のオブジェクトの各タイプの一意の ID を識別するフィールド。 フィールドが定義されていない場合、各オブジェクトに ID 0 が割り当てられます。

Field
validation_point_cloud
(オプション)

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

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

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

Feature Layer
validation_code_field
(オプション)

検証マルチパッチ フィーチャ内のオブジェクトの各タイプの一意の ID を識別するフィールド。 フィールドが定義されていない場合、各オブジェクトに ID 0 が割り当てられます。

Field
block_point_limit
(オプション)

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

Long
reference_height
(オプション)

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

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

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

Long
blocks_contain_objects
(オプション)

トレーニング データに、オブジェクトが含まれているブロックのみを含めるか、オブジェクトが含まれていないブロックも含めるかを指定します。 検証に使用されるデータはこのパラメーターの影響を受けません。

  • BLOCKS_WITH_OBJECTSオブジェクトが含まれているブロックのみがトレーニング データにエクスポートされます。
  • ALL_BLOCKSオブジェクトが含まれているブロックとオブジェクトが含まれていないブロックの両方がトレーニング データにエクスポートされます。 これがデフォルトです。
Boolean

コードのサンプル

PreparePointCloudObjectDetectionTrainingData の例 (Python ウィンドウ)

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

import arcpy
arpy.env.workspace = r"C:\GIS_Data"
arcpy.ddd.PreparePointCloudObjectDetectionTrainingData("Training.lasd", r"Objects.fgdb\Training_FCs",
                                                       r"Objects.fgdb\Validation_FCs", "12 Meters",
                                                       "Training_Cars.pcotd", training_code_field="Car_Type",
                                                       validation_code_field="Car_Type", reference_surface="DEM.tif",
                                                       excluded_classes=[2, 7, 18])