pointpillars論文
-
Abstract
- 3Dの点群から物体検出を行うというタスク(自動運転などで用いる)
- 最近の文献では2種類のエンコーダが提案されている
- 固定的なエンコーダ
→高速だが、比例して精度が劣る - データから学習するエンコーダ
→精度は高いが、速度が遅い
- 固定的なエンコーダ
- この論文では、pointpillarsという手法を提案
→ PointNetsと呼ばれるネットワーク構造を使用して、点群を縦の柱(pillar)の集合体にみたてる新しいエンコーダの考え方 - 速度と精度ともに従来のエンコーダを大きく上回る
- LIDAR点群のみ使ったアルゴリズムだが、フュージョンアルゴリズムと比べても良い性能が出る
- 加えて動作が早く、KITTIベンチマーク(3D,bird's Eye view)を62Hzと、従来に比べて2~4倍の実行時間向上を実現している
- さらに、高速版は105Hzで最新技術と同等となる
- 点群中のオブジェクト検出に適した手法だといえる
下図は従来手法と比較した図(PPがpointpillars)
- DeepLearningの技術が3D点群を処理する方法は過去に考えられてきた。
- 点群から物体検出する過去の論文に共通する点
- 点群は疎な表現であるのに対し、画像は密な表現であること
- 点群は3次元であるのに対し、画像は2次元であること
- 点群を2Dに見立てる研究は過去にもされており、下記のような種類がある
- 点群を鳥瞰視点に変換して物体検出するもの
- 点群を主観視点に変換して物体検出するもの
- 最近では鳥瞰視点を用いたものが流行っている
- 長所:サイズがはっきりわかる、近傍ではオクルージョンが少ない
- 短所:非常に点がスパースであるため、単純にCNNに入れるのではうまくいかない
- 上記の短所を解決するために、VoxelNetやPointNetという手法があるが、処理速度が非常に遅いのが問題点であった。
- その問題点を解決するために、PointPillarsを提案する。
- pointpillarsの特徴:2D convolution layerを用いたend2end 3D物体検出、2Dベースのため計算が高速。点群を縦柱(pillar)に見立てて3Dで物体の検出をする。pillarで扱うことによりvoxelのように点群の高さを区切るビンの高さ設定が不要になった
-
- 入力:3D点群
- 出力:3Dバウンディングボックス(車、歩行者...)
- Pillar Feature Net: 点群をスパースなpseudo imageに変換
- l:点群の中の点
- x,y,z,r: 点に付随する位置と、反射強度の値
- xy平面上をpillar, Pで分割する。
- pillar内の点は計算により9次元の値を持つ、tensor sizeは、size(D,P,N)となる
- D x P x N = 単点が保有する次元数(9次元) x 点の存在するpillarの数 x pillarに存在する点の数
- (D, P, N) tensorをPointNetにかけて(Linear layer→Batch-Norm→ReLu)、(C, P, N) tensorを取得
- Cを取得した後、(C,H,W)のpseudo-imageに変換する(H,W)は鳥瞰視点でみたサイズ
- (C,H,W)にすることで、通常の色画像と似た扱いが可能になる。
- Backbone (2D CNN): pseudo imageをハイレベル特徴量へ変換(以下の二つのネットワークで構成)
- top-down network: 段階的に次元数を下げていき、各段階で特徴抽出する。
- second network: top-downの各段階の特徴量のupsampling, concatenationを行う
→(C,H,W)のpsuedo画像を、(6C, H/2, W/2)のtensorに変換する
- Detection Head(SSD): 検出と3Dボックスへの回帰を行う
- single shot detectorを使用
- SSDのprior boxと、真値2D BoxのIoUを使用してマッチング
- マッチング結果から、クラス分類、物体の位置と高さを推論