↗️

時間情報の物体検出精度への影響度 (LiDAR Sweep)

2025/02/23に公開

概要

本記事では3D物体検出モデルで学習/推論する際に入力する時間情報が与える出力への影響度を調査したものである. ここで扱う時間情報とは LiDAR Sweep に付与される timestamp である. 自動運転領域では連続的に収集される複数の点群データをマージして1つの密な入力データとして取り扱うことがある. このとき基準となる点群データの timestamp と マージされる他の点群データの timestamp の差を特徴量としてモデルに入力する. この値を0に置換した場合とそのまま利用した場合にモデルの出力にどのような変化が起きるか調査した内容をここに記す.

LiDAR Sweep とは

LiDAR センサが周期的に周囲の環境を情報を収集する動作, またこれらで取得される点群データを示す. LiDARから照射したレーザーが物体に反射して戻ってくるまでの時間や強度を計測することで物体までの距離や形状情報を取得することができる. 以下にLiDAR Sweep の動作イメージを示す.


LiDAR Sweep の動作イメージ (参照元: https://www.kudan.io/blog/3d-lidar-slam-the-basics/)

このよう周囲の情報を取得することができるため, 自動運転技術においては高精度3次元地図の作成や周囲の環境変化を知覚するための技術に LiDAR Sweep が利用される. 自動運転技術における LiDAR や点群の役割については以下の論文を読むと理解が進む.

LiDAR Sweep を使用した3D物体検出

前述したとおり, LiDAR Sweep を利用することで周囲の物体の形状や物体までの距離を知覚できため, LiDAR Sweep を使用した3D物体検出の研究が進められている. これらの研究では2D (画像) の物体検出技術から派生した畳み込みやトランスフォーマーによる特徴量抽出が使用される. しかしながら, 画像と LiDAR Sweep のデータには規則性と密度に大きな違いがあるため, データの処理を工夫する必要がある.

画像に関しては画素が行と列で規則正しく並べれら, 一定間隔に情報が集約される. 一方で LiDAR Sweep に関しては, 素の各点が画像のように規則正しくならべられず, 3D空間から得られた情報を不規則に持つ. また, 画像については各ピクセルになにかしらの情報を持つ密なデータであるが, LiDAR Sweep に関しては LiDAR からのレーザーが反射する箇所が情報として表現されるため, 3D空間の大部分のに関しては情報がない疎なデータとなる.

このように画像と LiDAR Sweep では情報の性質が異なるため, Voxelization や BEV (Bird's-eye view) を利用することでLiDAR Sweepの情報を規則正しく, より密にすることで物体検出の精度を上げている.

以下のリポジトリでは3D物体検出モデルがまとめらているため, 手始めに利用すると LiDAR Sweep による3D物体検出の感覚を掴める.

また自動運転に限らず3Dセグメンテーション関連の技術がまとめられたリポジトリに関しては以下がある.

前述したとおり LiDAR Sweep は疎なデータである. このため3D物体検出では周期的に取得される複数の LiDAR Sweep をマージすることでより密なデータにすることがある. 以下に1シーケンス分および5シーケンス分の LiDAR Sweep を示す (緑: sequence1, 青: sequence2, 黄色: sequence3, 赤: BBox).

1 sequences
1シーケンス分の LiDAR Sweep

3 sequences
3シーケンス分の LiDAR Sweep

上記の画像で示したとおりシーケンス数を増やすことでより密なデータになる.

サブタスク (Velocity) の学習/推論

物体検出では特定の物体の位置情報をBBoxで示すが, このメインタスクの他に該当物体の velocity をサブタスクとして学習/推論することがある. 検出した物体の velocity を利用することで, 該当物体の次フレームの凡その位置を特定することができ, 連続したフレーム間における推論された velocity と物体検出された位置の関係から物体を追跡することができる.

学習時の velocity は推論対象となるフレームの前後フレームの物体中心と時差より算出でき, nuscenes-dvekit の box_velocisty が参考になる.

velocity の算出には物体の位置と時差が必要なるため, velocity を学習/推論するためにも時間情報が大きく寄与すると考えられる. 実施に OpenPCDet の nuscenes_dataset では time_lag (LiDAR Sweep のシーケンス間の時差) をモデルのへの入力値として学習及び推論をしている. 今回はこの値を変化させることで velocisty の学習にどのような影響がでるか実験した. 以降にその概要を示す.

物体検出モデルの学習

本学習/評価には nuScenes データセットを使用した. ベースとなるソース/アーキテクチャには OpenPCDetCenterPoint を使用した. 主なソースコードの修正箇所は特徴量の1つである time_lag の算出部分になる. 以下に修正内容を示す.

パラメータについては, epoch: 10に設定し, その他については基本的に変更していない.

評価

定量評価 (評価値の確認)

velocity の評価指標については正解のBBoxと一定の基準でマッチした予測BBoxの velocity に関して l2 norm で評価した. 本実験では nuscenes_dataset を使用しているため, ここのソースを追うと理解が進む.

以下に time_lag を0にしたケースと素の time_lag を使用したケースに関して, NMS thresholdを0.1に固定し, score threshold を {0.3, 0.5, 0.7} の3つで評価した結果 (vel_error以外も含む) を示す.

[score threshold: 0.3, NMS threshold: 0.1]

評価指標 time_lag=0 time_lag=original
vel_err 0.3288 0.3133
trans_err 0.3052 0.3051
scale_err 0.2507 0.2582
orient_err 0.4951 0.4761
attr_err 0.2118 0.2028

[score threshold: 0.5, NMS threshold: 0.1]

評価指標 time_lag=0 time_lag=original
vel_err 0.2962 0.2983
trans_err 0.2854 0.2768
scale_err 0.2460 0.2527
orient_err 0.4698 0.4408
attr_err 0.2205 0.2145

[score threshold: 0.7, NMS threshold: 0.1]

評価指標 time_lag=0 time_lag=original
vel_err 0.2544 0.5359
trans_err 0.2537 0.5295
scale_err 0.2368 0.5395
orient_err 0.4390 0.6661
attr_err 0.2403 0.5385

また, クラスごとの推論数とGT数を以下に示す.

[各学習モデルの予測数]

time_lag score car truck bus trailer construction_vehicle pedestrian motorcycle bicycl traffic_cone barrier total pred
0 0.3 57742 11137 2226 3182 2998 33884 5019 7788 18868 20452 163296
0 0.5 40433 5909 1631 1687 950 22578 1421 1515 8849 14200 99173
0 0.7 22455 1815 1060 762 246 8967 577 402 3724 6672 46680
original 0.3 53627 12923 2777 5569 4929 28433 4211 6323 19290 17143 155225
original 0.5 37800 4554 1475 1528 620 17235 901 984 6776 6995 78868
original 0.7 20737 651 599 398 20 6879 262 148 1924 754 32372

[Ground Truth数 (シーン数: 150)]

car truck bus trailer vechile pedestrian motorcycle bicycl traffic_cone barrier total GT
53043 9260 2062 2331 1513 23500 1855 1824 10570 15903 121861
  • score thrshold 0.3~0.5で両モデルを比較すると大差はないが, score thrshold 0.7で比較するとtime_lag=0の方が各指標で性能が良い. (time_lag=original の性能が急激に低下)
    • time_lag=original のモデルに関して, score thrshold 0.7 にした場合に推論された物体数が最も少なくなるため, 推論された1つ1つの結果が評価指標に大きく影響していると考えられる
  • クラスごとの評価結果については, 後日記載

定性評価 (可視化)

これら実験で推論された velocity (score threshold=0.5) を可視化したものを以下に示す(赤色: 正解, 緑: 予測).

case1 に関して, 画像右下の car の velocisty が time_lag=0 はGTよりも小さく推論されているが, time_lag=original はGTよりも大きく推論されている.

time_lag=0 case1
time_lag=0 case1

time_lag=original case1
time_lag=original case1

case2 に関して, 画像左の car の velocisty が time_lag=0 はGTと同等の大きさで推論されているが, time_lag=original はGTよりも大きく推論されている.

time_lag=0 case2
time_lag=0 case2

time_lag=original case2
time_lag=original case2

全体的に結果を眺めていないため, なんとも言い難いが, 現状 time_lag=0 にした場合においてネガティブな影響はほとんど確認できていない.

Discussion