【論文メモ】SWFormer: Sparse Window Transformer for 3D Object Detection
タイトル | SWFormer: Sparse Window Transformer for 3D Object Detection in Point Clouds |
---|---|
リンク | https://arxiv.org/abs/2210.07372 |
著者 | Pei Sun, Mingxing Tan, Weiyue Wang, Chenxi Liu, Fei Xia, Zhaoqi Leng, Dragomir Anguelov |
投稿日付 | 2022/10/13 |
1. どんな論文か?
3D点群表現の学習は自動運転、特に3D物体検出などのコアタスクで重要。3D点群データから学習する際に直面する難しい課題としては、以下が挙げられる。
- LiDARセンサーの特性上、データがスパースに分布していること。
- LiDARセンサーの進歩に伴って、点群フレーム内のポイント数と点群センシング領域の両方が増加していること(最新の商用LiDARは車両周囲の全方向で最大250-300mをセンシングできる。)。
この論文では、3D表現学習用のhierarchical Sparse Window Transformer (SWFormer)を提案。
また、バックボーンだけでなく、スパースな特徴からの3D物体検出におけるアンカー配置の固有課題に対処するために、voxel拡散モジュールも提案。
これらの手法をWaymo Open Datasetで検証したところ、SOTAであった。
2. 先行研究と比べてどこがすごいか?
初期の研究(PointNetやPointNet++)では、個々の点データにMLPを直接適用しているが、それではスケーリングが困難なため、現在主流の3D物体検出器の多くは、点群をbird eye view(BEV, 鳥瞰図)の3D voxelもしくは2D voxel(Pillarsとも呼ばれる)に変換している。各voxelは含まれる点の情報を集約しており、それらに2D or 3DのCNNを適用することで処理ができる。
2D voxelでは2ステージやアンカーベースなど過去の2D物体検出の豊富な資産を再利用できるものの、voxel化の粒度や検出範囲に応じてvoxelの擬似画像が2, 3次と大きくなっていくのが欠点となっている(voxelの多くが実際は空なのに)。
これに対する別のアプローチが、voxel化なしで3D物体検出を実行すること(Lasernet, Starnet)だが検出精度はvoxelアプローチには及ばない。
最近では、距離画像ビューとvoxelビューのマルチビューアプローチが探求され始めているが、RSN(range sparse net)で使われているような、スパース3D畳み込みはGPU, TPUなどで効率的に処理できるように最適化されていないといった課題がある。
本論文では、畳み込みを使用せずにスパースな点群(BEVを指している)から3D表現を学習するTransformerベースのアプローチを提案。類似した先行研究として、Voxel TransformerやSST(single-stride transformer)があるが、前者は計算効率や精度が良くない、後者は受容野が限られているため、大きな物体を検出できない欠点があるとしている。
3. 技術や手法の要旨
本論文で提案されているSWFormerは2D画像で成功しているSwin Transformerから着想を得ているが、3D点群データ固有の問題に対処するため、いくつかの変更を行っている。
まず、入力として与えられるデータは3Dの点群であるため、dynamic voxelizationとPointNetベースのVoxel特徴埋込ネットワークでスパースなVoxel特徴へ変換した上でSWFormerへの入力としている。
SWFormerの全体像
変更点1: バケットベースのWindow Partitionを追加
点がBEVの2D Voxelグリッドに変換された後にVoxelグリッドはSwin Transformerと同様に、固定サイズ(H×W)の重複しないウィンドウリストにさらに分割される。しかし、点はスパースであるため、多くのVoxel内には有効な点がない(空でないVoxelの数は0からH×Wまで変化する可能性がある)。同じウィンドウ内の空でないVoxelは、単一の可変長シーケンスにフラット化され、Transformerレイヤーに入力されるが、可変長のままではミニバッチ学習での効率が悪いので、NLPでも使われているアイデアを借り、シーケンスの長さに基づいてウィンドウをk個のバケットに分けて、パディングの無駄を抑えている。
変更点2: ウィンドウシフトを制限
Swin Transformerでは、Transformerレイヤーごとに1回ウィンドウシフトを使用してウィンドウ間の特徴を接続して受容野を増加させているが、このシフト操作はすべてのスパースな特徴を集約操作で並べ替える必要があり、計算コストが高い。
SWFormerでは、FPN(feature pyramid network)から着想を得たTransformerベースのマルチスケールのアーキテクチャを採用してエンコーダーのすべての特徴を結合している。これによってシフト操作はブロック毎に1つとなっている。
Voxel Diffusion
スパースなvoxel特徴から3D物体を検出する際の固有の課題は、オブジェクトの中心の近くに有効ばvoxel特徴がない可能性があることである。
先行研究では、2ステージのボックス改良、オブジェクトの中心に近い空のvoxelに特徴を拡張できるスパース畳み込みまたは座標の改良、スパースなvoxel特徴を密になるよう配置し、畳み込みを適用などを行ってきたが、この論文では新たにVoxel diffusionモジュールを提案。
Voxel diffusionモジュールは、前景と背景のセグメンテーションを実行(物体検出の学習と一緒に行う)することで、背景Voxelの大部分を除外する。次にBEVグリッド上で単純なk×k max pooling操作(kは検出用ヘッド固有の拡散係数)を実行して、前景Voxelを拡張する。
そこからSWFormerブロックを通して、最後はRSNを踏襲した改良されたCenterNetのヘッドへと入力される。
4. どのように検証したか
データセット
Waymo Open Dataset(1150シーン, Train: 798, Validation: 202, Test: 150)で検証。各シーンは約200フレームあり、自車の周囲360度全体を捉えている。データセットには範囲が75mに制限された1つの長距離LiDARと、4つの近距離LiDAR がある。この実験で5つのLiDARをすべて使用。
実装
- tanh関数で点群を正規化
- dynamic voxelizationではx, yに0.32mのvoxelサイズ、zは無限サイズ
- 学習中、内部に5点未満の全てのGround Truthボックスを無視する
- Voxel特徴埋込ネットワークはチャネルサイズ128の2層のMLP
- すべてのTransformerレイヤーはチャネルサイズ128、ヘッド数8、内部のMLP ratioは2
- stochastic depth = 0.6
- segmentation cutoff γ = 0.05
- heatmap threshold δ1(車両ヘッド), δ2(歩行者ヘッド)はそれぞれ0.2, 0.1
- 学習の効率のため、各フレームの回帰のターゲット数を車両の場合は1024, 歩行者の場合は800に制限
- データ拡張は反転、ランダムスケーリング、ランダムポイントドロップ
- OptimizerはAdam
- 32個のTPUv3コア
- 初期学習率は1e-3
- 合計128エポック
- 初期ウォームアップ学習率を5e-4、コサイン学習率と8エポックのウォームアップ
検証結果
検証データセットで比較をすると車両検出ではSOTAとなった。
検証データセットで高IoU、大型車両での検出結果でも他のモデルに比べて優れた結果となった。
テストデータセットでの比較結果。SOTAである。
Ablation Study
Voxel Diffusionの拡散係数kを1(無効)から大きくしていった。係数を大きくするほど検出精度は改善している。
マルチスケールについては、スケール数が大きくなるほど精度が改善していく傾向にあるが、1-2の寄与が大きく、3でサチり始めているようにも見え、実際は精度とレイテンシのトレードオフを行える(一方でタスクによっては大きな受容野が必要なものもある)。
また、それぞれの実験でウィンドウシフトを取り除いて実験を行ったところ精度が低下した。ブロック毎に1つあるウィンドウシフトも機能していることが確認できた。
5. 感想
事前訓練なし?(少なくとも言及されていない)でもこれだけ機能していることに驚いた。2D画像であれば、膨大なデータでの事前訓練がないとキツそうだが、今回の手法ではいらないのだろうか?
6. 次に読むべき論文は?
- dynamic voxelization論文
Discussion