周辺認識とBEV — 世界を「上から」把握する
カメラは世界を透視投影で歪めて見ます。しかし「あの車まで何m? 割り込まれる?」という判断は、真上から見た地図=鳥瞰図(BEV: Bird's-Eye View)の上でやるのが自然です。点群のクラスタリングから3Dボックス、静と動の2層表現、そしてマルチカメラBEVまで — 自動運転の「認識」の出力形式を動かして理解します。
1. カメラの見る世界と、計画が欲しい世界
同じ交差点シーンを、カメラ視点とBEVで並べて見てみましょう。カメラ画像では遠くの車ほど小さく、距離は「見た目のサイズ」から推測するしかありません。物体同士も重なり合います。一方 BEV では、距離も進行方向も重なりも、そのままの幾何で読み取れます。
2. 点群から物体へ — クラスタリングとボックスフィット
LiDAR は「物体の表面で反射した点の集まり」をくれるだけで、どの点とどの点が同じ物体かは教えてくれません。古典的な第一歩がユークリッドクラスタリング:近い点同士を鎖のように繋いでグループ化する方法です。
下のデモでしきい値を動かしてみてください。小さすぎると1台の車が複数クラスタに割れ(過分割)、大きすぎると隣り合う物体がくっつきます(併合)。
| 古典:クラスタリング系 | 現代:深層学習系 | |
|---|---|---|
| 物体の定義 | 「点が密な塊」(幾何のみ) | 「学習データで車・人とラベル付けされたパターン」 |
| 出力 | クラスタ+フィットしたボックス | クラス・信頼度つき3Dボックス |
| 長所 | 学習不要・軽量・未知物体も塊として拾える | 密着物体の分離、クラス識別、遠方の疎な点にも強い |
| 短所 | しきい値依存、クラス不明、密着・分裂に弱い | 学習データに無い物体が苦手、計算コスト |
| 代表例 | Euclidean Cluster Extraction(PCL) | PointPillars、CenterPoint、BEVFormer など |
名前だけ紹介すると、PointPillars は点群をBEVの柱(ピラー)状セルに束ねて2D CNNで検出する高速手法、CenterPoint は物体を「BEV上の中心点」として当てる手法。いずれも処理の舞台はBEV平面である点が共通です。
3. 静的な世界と動く物体 — 2層で持つ
検出した物体をどう保持するか。ここで前回(SLAM)の占有グリッドが再登場しますが、ひとつ罠があります。動く物体を地図に書き込むと、通過跡が壁のような「幽霊」として残るのです。
そこで実システムは世界を2層に分けます:動かないもの(壁・駐車車両)は静的な占有グリッドへ、動くもの(車・歩行者)は速度ベクトル付きの動的物体リストへ。
4. カメラだけで BEV を作る — マルチカメラBEV
LiDAR の点群は最初から3D座標を持つのでBEV化は簡単ですが、カメラ画像からBEVを作るのは一仕事です。古典的な方法は「路面は平ら」と仮定して画素を地面に逆投影する逆透視投影(IPM):
現代的な手法は、この変換自体をニューラルネットに任せます。車の周囲に付けた6個前後のカメラの特徴マップを、1枚のBEV特徴マップへ投影・統合するのです(Lift-Splat-Shoot は深度分布を推定して特徴を持ち上げ、BEVFormer は BEV 側のクエリが Attention で各カメラから情報を集めます)。概念図を眺めてみましょう。
5. まとめ
- 認識の出力はBEV(鳥瞰図)に集約するのが自然。距離・方向・重なりが素直で、予測・計画とそのまま接続できる。
- 点群からの物体検出は、クラスタリング+ボックスフィット(幾何ベース)から、PointPillars / CenterPoint などの学習ベースへ進化した。
- 世界は静的占有グリッド+動的物体リストの2層で持つ。動くものを地図に書くと幽霊が残る。
- カメラのみの構成でも、マルチカメラBEV(LSS・BEVFormer 系)で1枚のBEV特徴マップを合成できる。