画像セグメンテーションは、画像内の対象オブジェクトを正確に識別して描写する上で重要な役割を果たします。自動運転では、コンピューター ビジョン アルゴリズムを適用して、路面セグメンテーションのタスクを解決します。このタスクは、1 種類の画像だけに頼ることはできないため困難です。カメラと LiDAR にはそれぞれ長所と短所があります。たとえば、LiDAR は正確な深度情報を提供しますが、通常はまばらなポイント クラウドを生成するため、シーン内のオブジェクトを正確にセグメント化することはできません。また、透明または反射面に面すると、歪んだクラウドが生成される場合があります。カメラは深度をキャプチャしませんが、オブジェクトの形状、テクスチャ、色に関する完全な情報を提供します。このことから、2D 道路セグメンテーションのトレーニングでポイント クラウドと画像を効果的に融合することで、各データ ドメインの利点を活用できるという単純なアイデアが生まれます。問題は、このような融合には両方のデータセットの手間のかかる注釈付けが必要になることです。では、道路セグメンテーション用のマルチセンサー セットアップの利点を享受するために、データ注釈付けをより効率的にすることはできるでしょうか。
私は現在、
この記事では、私たちのアプローチを段階的に説明し、いくつかのテスト結果を紹介します。私たちの仕事、他の方法の研究、テスト結果についてさらに詳しく知りたい場合は、私たちの記事を参照してください。
私たちのアプローチの全体的なパイプラインは、ポイント クラウド道路注釈、データ準備、マスク損失、およびセグメンテーション モデル自体という 4 つの主要部分で構成されています。
まず、ポイント クラウド ドメインで道路注釈付きのデータを取得します。その後、同次変換とカメラ パラメーターを使用してポイントを投影します。次に、投影されたポイントを使用して、ランダム ノイズを追加した損失計算用の道路グラウンド トゥルース マスクを取得します。カメラからの画像は、セグメンテーション モデルによって処理されます。前の手順からの予測とマスクは、スパース グラウンド トゥルース データを使用してモデルをトレーニングできるマスク損失によって利用されます。最後に、モデル トレーニング後に、セグメント化された道路の画像を取得します。トレーニング手順とマスク損失により、投影されたグラウンド トゥルースと従来の 2D マスクを混在させることができるため、データの点でアプローチが柔軟になります。
それでは、それぞれの部分を詳しく見てみましょう。
1 点群データの注釈
トレーニング中にLIDARデータを使用するには、ポイントクラウドのセマンティックセグメンテーション注釈が必要です。これは、次のようなオープンソースのポイントクラウド注釈ツールを使用して手動で行うことができます。
2 データの準備
取得したポイント クラウドは、同次変換を使用して画像平面に投影され、必要なクラス ラベル (この場合は道路) を持つ画像セグメンテーション マスクを取得します。このような投影には、カメラ パラメータと、LIDAR からカメラ フレームへの変換行列を伴う、同期されたカメラと LIDAR フレームを使用します。LIDAR フレーム座標の同次ポイントx = (x, y, z, 1)ᵀ
画像平面上のポイントy = (u, v, 1)ᵀ
に投影するには、次の式を使用します。
変換後、道路クラスとライダースキャンからの他のすべてのポイントの両方について、画像上のポイントをピクセルのマスクとして取得します。ライダーポイントは主に画像の下部にあり、画像の上部にはポイントがまったくないため、そのエリアの予測が不正確になる可能性があるため、他のライダースキャンポイントが必要です。この影響を排除するために、マスクの上半分 (負のクラス) にランダムなポイントを追加して、損失を計算するポイントの分布のバランスを取ります。
3 隠された損失
私たちの方法の重要な要素は、モデル トレーニング中にマスク損失関数を適用することです。このアプローチにより、ライダーから得られるグラウンド トゥルース マスクに固有のスパース性が排除されます。画像マスク全体を考慮してエラーを計算する従来の損失関数とは異なり、マスク損失はライダー ポイントが存在する領域のみに焦点を当てます。このターゲット損失計算により、モデルの学習が関連領域に集中し、ライダーによって提供される情報を活用して道路セグメンテーションの精度が向上します。言い換えると、ポイントのグリッド上で予測のエラーを測定することで、モデルに道路セグメンテーションを学習させます。これは、シャッター グラス (シャッター シェード) を使用して画像を見ることに例えることができます。
各画像のマスクされた損失は次のように定式化できます。
マスク損失は、トレーニング画像にバイナリ マスクを適用することで実行されます。このマスクは、LIDAR ポイントが配置され、画像平面に投影される領域の輪郭を描きます。トレーニング フェーズでは、マスクの下にあるピクセルに対してのみ損失が計算され、画像の注釈のない大きな部分は実質的に無視されます。この方法は、トレーニング プロセスの効率を向上させるだけでなく、LIDAR データのスパースな性質によって生じる問題も軽減します。
4 モデルのトレーニング
最後のステップでは、作成されたデータセットでセグメンテーション モデルをトレーニングします。トレーニング プロセスはどのセグメンテーション モデルにも適しており、私たちの研究では PSPNet を使用しました。この段階では、すべてはデータの品質、量、および利用可能なコンピューティング能力に依存します。
私たちは、Perception Waymo Open Dataset や KITTI-360 データセットなどのオープンソースのデータセットを含むさまざまなデータセットでアプローチをテストしました。毎回、2D 道路の地上データのみ、投影されたポイントのみの地上データ、およびこれらのタイプの地上データを混合したデータの 3 つの実験を実施しました。道路セグメンテーション (IoU の %) の結果は有望です。
実験 | KITTI-360データセットでトレーニング済み | Waymoデータセットでトレーニング済み |
---|---|---|
2Dのみ(ベースライン) | 92.3 | 96.1 |
投影された3Dのみ | 89.6 | 94.7 |
2Dと投影された3Dをミックス | 92.7 | 96.3 |
これらの数字は、LIDAR セグメンテーションのみを使用していて、2D イメージ注釈に追加のリソースを費やしたくない場合は、問題ないことを意味します。2D イメージ マスクのみでトレーニングする場合と比較した品質の低下は、重要ではない可能性があります。両方のセンサーからのデータに注釈を付けるリソースがある場合は、トレーニング プロセス中にこれら 2 種類の注釈を組み合わせるだけで、メトリックが向上します。
調査中に観察されたこのアプローチの全体的な利点は次のとおりです。