ディープラーニング

手順 1

点群データおよび対応するラベルの読み込み

ディープ ニューラル ネットワークを使用すると、点群データのマルチクラス オブジェクト検出を行うことができます。この例では、点群からオブジェクトを検出し、その周辺に指向性のある境界ボックスを当てはめることができる PointPillars ネットワークを使用しています。

  • データ管理用のデータストアを作成します。
  • 関数 pcread を使用して、指定されたパスから PCD ファイルを読み込む fileDatastore を作成します。
  • グラウンド トゥルース ラベル用に関数 boxLabelDatastore を使用して、境界ボックスのラベルを読み込みます。

覚えておくべき重要な点:

  • このデモでは、フルビュー点群ではなく、フロントビュー点群を使用しています。この手法には次の 2 つの利点があります。(1) 学習と実行の高速化、(2) 平均方向類似性および精度に関するネットワーク性能の向上です。

手順 2

データセットの前処理

データセットを分割し、各種の拡張手法を試すことができるようになりました。

  • データセットを学習用とテスト用に分割します。
  • グラウンド トゥルース データ拡張を実行します。これにより、すべての点群に対して、一定数の Car クラスのオブジェクトをランダムに追加します。ここでは、データの 70% が学習用であり、残りがテスト用であることをが示されています。この手法では、学習データセットのサイズを合成によって増やすことで、学習中にネットワークの精度を向上させることができます。
  • 点群の反転、スケーリング、回転、および並行移動などのデータ拡張手法を試します。
  • 出力を表示します。

覚えておくべき重要な点:

  • この例では、フレーム数が非常に少ない小さなデータセットを使用してワークフローを説明しています。より良好な結果を得るには、大きなデータセットでネットワークの学習を行ってください。

手順 3

ネットワークの定義

まず、アンカーボックス、PointPillars ネットワークの柱、および PointPillars ネットワークを定義します。

  • アンカーボックスを定義します
  • PointPillars ネットワークの柱の数を定義します。
  • PointPillar オブジェクト検出関数を使用して、PointPillar オブジェクト検出ネットワークを作成します。

手順 4

ネットワークの学習

ネットワークを定義した後に、学習データセットでモデルの学習を行います。

  • 新しい学習パラメーターを指定します。
  • 関数 trainPointPillarsObjectDetector を使用して PointPillars の学習を行います。
  • モデルの学習をゼロから行わない場合は、事前学習済みのオブジェクト検出器を読み込みます。

覚えておくべき重要な点:

  • 学習は、ディープラーニングのワークフローの中で最も時間のかかる手順です。代わりに、事前学習済みのモデルを使用して、点群内のオブジェクトを検出することもできます。

手順 5

検出の生成

最後の手順では、学習済みネットワークを使用して、テストデータでオブジェクトを検出し、境界ボックスを使用して点群を表示します。

  • テストデータから点群を読み取ります。
  • テスト点群で関数 detect を使用して、予測された境界ボックスと信頼度スコアを取得します。
  • 境界ボックスを使用して検出された出力点群を表示します。緑色の境界ボックスは、出力点群に含まれる自動車を表しています。

LiDAR のガイド付き例のビデオを見ながら作業を進めることもできます。

以下のリンクから、その他の LiDAR タスクや、関連アプリケーションを使用したディープラーニングについて詳しくご覧いただけます。

Johanna Pingel

MathWorks のディープラーニング エキスパート、Johanna とつながる