LoginSignup
15
15

More than 3 years have passed since last update.

複数センサを一気に学習!Uber Multi-Task Multi-Sensor Fusion 自動運転3D物体検出!

Last updated at Posted at 2019-11-24

今回は、自動運転の3D物体検出のアルゴリズムを紹介するぞ。

自動運転の認識では一般的に複数のセンサが用いられるんだってさ。
そりゃ単眼カメラだけだったら距離情報わからないし、
LIDARだけだったら点だけ出てきて、高解像度な物の見た目や色がわからないよね。
じゃ、カメラやLIDAR,レーダー、複数タイプのセンサの結果を合体させてよりよい認識結果を得よう、
というのがセンサフュージョンの考え方。

今までは人間が、このタスクにはこのセンサを使おう、と決めていたわけだが、
そこに一石を投じる論文を見つけてしまったので、今回はそれを見ていくぞ!

紹介するMulti-Task Multi-Sensor Fusion for 3D Object Detectionは、複数のセンサを複数タスクのために、一気にまとめて学習させる、というもの。

”複数センサ&複数タスクを一気にまとめて学習させる”ことがどれだけ有効なのか、知りたくってさ!

Screenshot from 2019-11-24 10-54-32.png

この記事ですること

  • Multi-Task Multi-Sensor Fusion for 3D Object Detectionの解説(CVPR2019)
    • Introduction
    • Related Works
    • Multi-Task Multi-Sensor Detector
      • Fully Fused Multi-Sensor Detector
      • Multi-Task Learning for 3D Detection
      • Joint Training
    • まとめ

※論文に沿って原理、仕組みを解説していきます
※紹介する手法は”MMF"と略します
※本論文には付随するコードがないため、実装や再現は試みません、多分

Introduction

この論文では、複数のタスクを複数のセンサで一気に学習することで、1タスク1センサよりもより良い特徴量と良い検出結果につながることを提案する。

マルチセンサ

  • カメラ
  • LIDAR

マルチタスク

  • マッピング:地面推定
  • 3D検出:物体を3D矩形で囲む
  • 2D検出:物体を2D矩形で囲む
  • 距離補完:カメラ画像上のピクセルに対して距離を推定する、本来の点群で得られたものよりもより濃い点群へ補完

Screenshot from 2019-11-24 10-00-32.png

上記のタスクをマルチセンサからの入力に対して、End-to-Endで認識する。
マルチタスクは2種類で表現される。

  • Point-wise: 興味のある点をLIDAR点群から選択する
  • ROI-wise: センサ情報上に矩形を指定する

マッピングのタスクでは、地面推定を行う。
地面推定の情報は、交通参加者の動く範囲を指定するので3D物体検出の助けになる。
また、距離補完では異なるセンサの情報で点をより濃く補完するタスクを行う。

我々の提案するMMFはKITTIやTOR4Dのベンチマーク上で他のSOTA手法に対してより良い結果とリアルタイム性を持つ。(10Hz)

TOR4D...どうやらUber社内専用のデータセットらしい

Related Works

3D detection from single modality 単体センサを使った3D検出

カメラから距離推定する研究は試みられたが、距離推定の精度が悪く3Dローカリゼーションには使えなかった。
また、PixorやVoxelNetなどの3D点群から物体検出をするアルゴリズムは観測点が非常に疎で見た目の情報が使えず、物体のクラス分類が非常に難しかった。

Multisensor fusion for 3D detection マルチセンサを使った3D検出

F-PointNetがカメラとLIDARを使うセンサフュージョンの手法として挙げられる。
はじめに2D画像上で物体検出が行われ、PointNetが検出された2D空間上の3D点から物体検出を行う。
このフレームワークでは、全体のパフォーマンスは個々のセンサで段階的に制限されてしまう。
またこのフレームワークでは、遠方にある物体から得られる点が非常に少なく遠方の物体や遮蔽された物体に弱い。

その他の、MV3D, AVODなどその他の手法もあるが、どれも点群が疎になると性能が非常に悪くなる。
そのためMMFでは、点の補完もタスクとして行う。

3D detection from multi-task learning マルチタスク学習からの3D検出

HDNETやSBNetでは地面推定を行うことで、3D検出の速度が2倍以上になることがわかっている。
これら前例と異なるのは、地面推定と3D検出のタスクを分けて学習するのではなく、全て一気に学習すること。
そのためend-to-endで訓練可能なネットワークができあがる。

Multi-Task Multi-Sensor Detector

Screenshot from 2019-11-24 10-50-37.png

MMFは3つの特徴を持っている

  • point-wiseとROI-wiseのマルチセンサアーキテクチャ
  • 地面推定がアーキテクチャの中に入っている
  • 距離補完を行うので、より密な情報に対して検出できる

細かい話に入る前に上記画像から解説する
点線が、データ投影を意味し、実線がデータフローを意味する

入力LIDAR点群は、地面推定ネットワークに入力され、地面推定結果を出力する。
地面推定結果と入力点群はLIDARネットワークに入力され、クラス分類と物体検出のタスクを行う。
またLIDAR点群は距離画像へ変換され、カメラ画像と合体し、画像ネットワークに入力される。
画像ネットワークは同時に、距離画像を出力し、距離画像から擬似補完点群を出力する。

画像中央のDenseFusionでは、3D物体検出の精度を向上させるために

  • 地面推定結果
  • 画像ネットワークの中間結果
  • 疑似点群の補完結果
  • 画像上での物体検出結果

がLIDARネットワークの中間層に入力される。

LIDARネットワーク、画像ネットワークの結果から3D検出結果を出力し、
双方のネットワークのROI情報からボックスを生成するネットワークを介して、最終結果である
2D検出結果+3D検出結果が出力される。

...超絶複雑なネットワークだぞ、これは。
KITTI結果では80msecで動作するとのこと。使用しているGPU @2.5GHzというのが気になる。
GPUは何を積んでいるのか、CPUは何コアなのか...
演算量がかなり気になるが、複数タスクをやってのけているのも考慮しなくてはならない。

確かに、画像のみ、LIDARのみ、という考え方はなく
お互い同時に保管しあったネットワークを二重で持っていて、その出力を統合する仕組みになっている。
カメラネットワークには点群情報が入るし
LIDARネットワークには、地面推定、疑似点群、カメラの中間層の結果が入っている。
ネットワークの比重としてはLIDAR寄りになっているように見える。

しっかしこれ考えた人はすごいな...
この全てが一つのネットワークになっていて、end-to-endで訓練ができる
これは強いぜ。

気を取り直して解説に戻ろう

Fully Fused Multi-Sensor Detector

multi-sensor detectorでは、LIDA点群とRGB画像を入力としている。
バックボーンネットワークは2つある

  • 画像からfeature mapを抽出する画像ネットワーク
  • LIDAR BEV feature mapを抽出するLIDARネットワーク

Screenshot from 2019-11-24 13-16-30.png

LIDARネットワークの出力は2D畳み込みから、3D検出結果のボクセルを推定する。
LIDARネットワークではボクセル検出が行われており、BEV視点での検出のみを行う。
下記の手法を使用

Ming Liang, Bin Yang, Shenlong Wang, and Raquel Urtasun.Deep continuous fusion for multi-sensor 3d object detection.InECCV, 2018

画像ネットワークの2D検出結果と合わせ、3Dと2D検出結果のrefinementを行う。
画像ネットワークでは、ResNet-18が第4ブロックまで使用されている。(上記画像では5ブロック確認できる)
一つのブロックはresidual layerを2つ備えており、feature mapのサイズは64から512へ線形的に増える

LIDARネットワークでは画像ネットと比べて細く、深いネットワークを採用した。
ResNet-18のマイナーチェンジ版を採用しており、
第4ブロックまでは、2,4,6,6のresidual layerを備えており
feature mapのサイズは64,128,192,256となっている。

両方のネットワークの最後にはFPN(feature pyramid network)が採用されている。

2つのネットワークの出力は、最終的にrefinement networkに入力され正確な2D,3D検出を行う。

上記画像のように、画像ネットワークからLIDARネットワークへ向かってfusionが行われている。
これを、Point-wise feature fusionと呼ぶ。
画像のfeature map情報をBEVネットワークに追加することができる。

どのように特徴を追加するかというと、
点群の点と、画像ピクセルをマッチングさせており、LIDARネットワークで使用されている点に対して対応するピクセルに所属している特徴マップの特徴を画像ネットワークに食わせる。
この場合、点群は疎になってしまうため、後述の距離補完ネットワークが疎な点群を擬似点によって保管して、より多くの画像特徴をLIDAR点にエンコードすることが出来ている。

2つのネットワークの出力は、2D,3D物体それぞれのROIを出力する。
これを統合する処理をROI-wise feature fusionと呼ぶ。

Screenshot from 2019-11-24 13-37-40.png

2つのネットワークで出力した矩形の、向きを推定してrefineを行う。

Ground Estimation

Screenshot from 2019-11-24 14-18-38.png

リアルタイムで路面を空いているするネットワークがサブタスクとして含まれている
BEV点群をボクセルで区切り、ボクセルごとの高さを推定する
RANSACを用いた平面推定を選択しなかったのは、カーブ道路や遠方までの道路を一つの平面で表現できないケースが多かった。

U-Netを使って推論を行う(8msec/frame)
推論を行ったあとは、点群の座標変換を行う
具体的には、Z値を地面からのオフセット値に変更することで、後段の物体検出の精度を上げることが出来た。

Depth Completion

LIDAR点群は正確に3次元情報を出力するが、情報の密度が低い。
LIDAR点群をより濃くするための手法を提案する。

まずは、LIDAR点群を3チャネル画像(X,Y,Z)に変換しカメラ画像上に投影する
距離情報をピクセル上に投影する。
点が存在しないピクセルには0をいれておく。

RGB画像と、距離画像を上述の画像ネットワークへ入力し
出力としてRGB画像の全てに距離情報を埋め込んだ疑似点群画像を生成したものを
LIDARネットワークへと入力する

Joint Training

マルチタスクの結果に対するマルチロスを計算する
出力として下記がある

  • 3D物体検出
  • 2D物体検出
  • マッピング
  • 距離補完

用意するラベルは、3D検出結果と、距離のラベル
(距離ラベルはどうやって出したんだろうか...)
地面推定に関しては、3D検出結果に結果が含まれている。
(3D検出結果は地面に対する座標で行われているため、ここのZ値のロスが地面推定にフィードバックされる)

Screenshot from 2019-11-24 14-51-30.png

左から
* classification loss: cross entropy
* 3D box estimation loss
* 2D box refinement loss: l1 loss, (x,y,z, log(w), log(l), log(h), theta)^2
* 3D box refinement loss: l1 loss, (x,y,log(w), log(h))
* depth prediction loss: l1 loss for all pixels

訓練時にはSGDとadam optimizerを使用

まとめ

以上がMMF論文の解説でした。
評価結果の中では、dense fusionや、距離補完を行った場合のほうが3D検出結果の精度が上がる、とのこと。
特にLIDAR点群とカメラの解像度が大きく違う場合に特に距離補完の寄与度が高いらしい。

簡単にまとめると

  • カメラとLIDARを入力として、3D検出、2D検出、地面推定、点群補完の4つのタスクを同時に行うネットワーク
  • メインはLIDARとカメラそれぞれのネットワークでの物体検出
  • 地面推定は、交通参加者のいる領域を限定できるのと、地面高さ推定により3D検出への寄与度が高い
  • 点群補完は、遠方で疎になりがちな点群情報を画像を使って補完し、LIDARネットワークに食わせる
  • カメラ、LIDARネットワークそれぞれで物体検出結果のROIを出力し後段のrefinementネットワークで向き推定とより正確な位置を推定する

まとめて学習させる、というコンセプトはWaymo ChauffeurNetでも提案されていましたね。こちらの論文は自動運転のプランニングをすべて2D画像ベースで学習し推定をするというものですが、学習のネットワークの中には、プランニングとセンシング両方をすべて同時にend-to-endで学習させるアーキテクチャを提案していました。

Screenshot from 2019-11-24 15-16-22.png

従来のセンサフュージョンはどちらかというと人間がセンサにタスクを割り振っていた。
例えば、mercedes-benzと組んでいるUdacityでは下記のようなfusionシステムが使われている。

Screenshot from 2019-11-24 15-19-43.png

カメラ画像上で2D検出&検出結果の特徴トラッキングを行う。
さらにLIDARで3D物体検出を行い2D結果と3D結果をマッチングさせ、特徴トラッキングで物体IDを追跡する。
こうしたカメラを起点としたフュージョンは、MMF論文の中では、スケーリングの問題がありMMFを使った統合的な検出のほうがよい、と提案している。

MMFもChaufeurNetも、論文発表から時間が立っているが、
複数センサを統合的にend-to-endで訓練する、というのが次代のスタンダードかもしれない。
(Waymoはそのアーキテクチャにプランニングも含めてしまっている)

...にしてもWaymoにしろUberにしろ
データセットの取得から複数タスクの統合訓練とネットワークアーキテクチャ策定までを企画して実行に移す部隊がいるのはかなりパワフル。この論文を読んで、ひたすら感じたのは

”これ考えたやつすげえな!!!”

この記事を気に入ってくれたらlike, ストックお願いいたします。
コメントあればぜひ!

それでは〜

15
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15