最新情報|株式会社ティアフォー

AutowareのPerceptionコンポーネントにおけるDetectionの解説

作成者: TIER IV|Apr 13, 2023 1:00:00 AM

はじめに

こんにちは、ティアフォーでオープンソースの自動運転システム「Autoware(オートウェア)」の開発をしているShinです。Sensing & Perceptionチームで、LiDARの点群を用いた認識技術を開発しています。

 

この記事では、Autoware内で動物体検出を担当しているPerceptionコンポーネントのDetectionモジュールについて説明していきます。「自動運転車がどうやって車や歩行者を検出しているのか知りたい」、「点群や画像を用いた物体検出技術に興味がある」、「Autowareについて詳しく知りたい」方は、ぜひ読んでみてください。


また、AutowareにおけるDetectionについても、大まかな役割に分けて説明していきます。OSSであるAutowareの実装は世界各国のユーザによって日々改良されていますので、このTech Blogの記事もいずれはAutowareの実装と乖離していくでしょう。そのため本記事では、2023/4/1時点(commit hash:70cf872)でのAutowareの実装に準拠して説明をします。


自動運転車における認識機能

まず、前回ブログ「AutowareのチュートリアルとComponentのハイレベルな設計」内の図の中で、解説する部分がどこなのかを見ていきましょう。今回お話するのは、Perceptionコンポーネントにおける、Dynamic Objectの中のDetection部分に該当します。



Perceptionコンポーネントでは、Sensingコンポーネントから出力されるデータをもとに周囲の環境を認識しています。まず、Perceptionは以下の4つの機能に分割されています。



Object Recognitionは車や歩行者などの動物体の認識を行います。このモジュールはさらに、Detection、 Tracking、Predictionの3つの機能に分割されています。


Obstacle Segmentationは動物体に加え、静止障害物のような、衝突したくないものを検出します。例えば工事用のコーンはこのモジュールで認識しています。


これらに加え、Occupancy Grid Mapにより死角(情報が得られない、動物体が飛び出してくる可能性のある領域)を検出しています。


Traffic Light Recognitionは、名前の通り信号認識を行います。


今回このTech Blogで解説するのは、Object Recognitionの中のDetection部分になります。


自動運転車におけるセンサシステム

まず、自動運転車に入力されるデータを確認していきましょう。以下に自動運転車のセンサー構成の一例を示します。こうしたセンサーによって、自動運転車は周囲の環境情報を取得しています。



そして、これらのセンサー入力を用いて、自動運転は周囲の状況を認識しています。以下にそれぞれのセンサーから得られるデータ例を示します。


まずカメラは、対象物体の色情報を取得でき、自動運転車が信号や動物体を認識するために重要な役割を果たしています。RGB Image(sensor_msgs/Image)としてSensingコンポーネントから出力されます。



LiDARは周辺の三次元情報を点群として直接取得でき、動物体検出において主要な役割を果たすセンサーです。PointCloud(sensor_msgs/PointCloud2)としてSensingコンポーネントから出力されます。



RADARは物体までの距離を計測しながらドップラー効果により速度を直接計測でき、遠距離や死角においても検出性能の高いセンサーになります。RadarTracks(radar_msgs/RadarTracks)としてSensingコンポーネントから出力されます。



Autowareでは、こうしたセンサーからの入力を受け取って動物体検出を行っています。


Object Recognition

それではいよいよ動物体検出の説明をしていきます!


Object Recognitionは動物体を検出する機能です。動物体の位置や大きさ、向きの検出(Detection)を行い、次フレームの状態推定(Tracking)をし、将来の経路を予測(Prediction)します。今回は、Detectionについて詳しく説明します。


物体検出は、


  • Detector
  • Interpolator

から構成されます。


Detectorは1フレームずつの処理を行う、物体検出のトリガーです。Interpolatorは検出を安定的に維持する役割を担います。Detectorからの出力が突然得られなくなった場合でも、Trackingの出力を用いて、物体を見逃さず検出結果を維持します。


Autowareのノードとの対応については、以下の図を参照ください。こちらは、Autoware documentationにあるNode diagramを基に、本記事のPerceptionコンポーネントの各要素が、現在のAutowareのどのノードに対応しているかを図示しています。



Autowareでは使用するセンサーに応じていくつかのモードがあり、以下の5つのモードをサポートしています(2023/4/1現在)。



このNode diagramでは、perception.launch.xmlのdefaultであるcamera_lidar_fusion modeの場合のアーキテクチャを示しています。このモードにおける構成を基に、Detectionについて説明していきます。


Detector

DetectorはDNN based 3D detectorとSemi-rule based detectorから構成されます。DNN based 3D detectorは高精度である一方、検出できるクラスが限られます。逆にSemi-rule based detectorは、検出できるクラスが限定されない一方、精度はDNN based 3D detectorに劣ります。


DNN based 3D detector: CenterPoint

このモジュールでは、点群を入力として、動物体(自動車、トラック、バス、歩行者、自転車)の検出を行います。現在のAutowareではCenterPointとよばれる手法を用いています。以下の動画のように、点群を入力として、BoundingBox(動画内の青色の直方体)を推定しています。これにより、自動運転車は、周囲のどこにどのような種類の物体があり、それがどのくらいのサイズなのかを知ることができます。

 


ブログ「Autowareにおける3次元物体検出アルゴリズムの再検討 サーベイ編」でモデルの詳細を解説していますが、概要は以下のとおりです。


  • 点群をx-y座標で分割し、Pillarにまとめる
  • x-y平面上の疑似画像に変換する
  • 2D CNNで処理する

このモデルが動物体のBoundingBoxを出力し、動物体のclass、場所、サイズ、向き、速度を推定しています。



Tianwei Yin, Xingyi Zhou, and Philipp Krähenbühl. Center-based 3D Object Detection and Tracking. In CVPR, 2021.より引用


Semi-rule based detector

Semi-rule based detectorでは、以下の動画のように、画像と点群それぞれの情報を用いて物体検出を行います。LiDAR ClusteringとCamera DNN based 2D detectorから構成されます。

 

LiDAR Clustering

点群をクラスタリングして、shape estimationし、ラベルのついていない物体検出を行っています。このDetectorの出力はラベルがついてない一方、DNN basedとは違い、路面や建築物以外の障害物をすべて検出します。この手法で検出された結果は、動物体だけではなく、道に落ちている障害物も含みます。DNN based 3D detectorでは、検出したい物体クラスを事前に想定して検出していますが、LiDAR Clusteringは検出したくないものを除外して検出する手法であるため、未知の物体に対しても対応しやすいのが特徴です。


Camera DNN based 2D detector

Camera DNN based 2D detectorでは、画像を入力として動物体(自動車、歩行者、自転車)の検出を行います。現在のAutowareではYOLOXを用いています。



Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, and JianSun. Yolox: Exceeding yolo series in 2021. arXiv preprintarXiv:2107.08430, 2021.より引用


この結果は2Dで検出されるため、三次元の情報を持っていません。そのため次に、LiDAR Clustering結果にProjectionすることで、三次元物体検出を行います。以下の動画は、TIER IV C1 CameraにLiDAR点群をProjectionした様子です(詳細はTIER IV ADKのページ)をご覧ください)。センサーのキャリブレーションにより、このようなFusionを行うことができます。

 

Merger

Mergerでは、DNN based 3D detectorと、Semi-rule based detectorの結果を統合しています。



  • まず、2つの認識結果をGlobal Nearest Neighborによりassociationします。コストは距離を用いて計算します。両方のDetectorで認識できている物体は、DNN based 3D detectorの結果を優先します(この設定は、priority_modeで切り替え可能です)。
  • 次に、他の認識結果とoverlapしている、ラベルがunknownである認識結果を他の認識結果にmergeします。共通部分が大きい、もしくはgIoUが高いときにoverlapしていると判定します。

ここでmergeした結果が、Detectorの最終出力結果となります。


Interpolator

Detectorの物体検出結果は、1フレームのセンサー入力のみを対象にしています。そのため、他の車両に身体の一部が隠れてしまった歩行者を見落としてしまう、というようなことが起こる可能性があります。Interpolatorは、Tracking結果を用いて長期的な検出結果を維持することで、物体検出結果を安定化します。



例えば、急にDetectorからの検出結果が全く得られなくなるような最悪の事態でも、過去に検出している物体であれば、Interpolatorを用いて検出できる可能性があります。以下の動画内の青色の直方体がInterpolatorの出力です。この出力には、DNNを用いたDetectorの結果は一切使用されていません。Detectorからのトリガーがない場合でも、検出結果を維持できることがわかります。



Interpolatorの結果と、Detectorの結果をmergeしたものを用いて、TrackingおよびPredictionの処理が行われます。これらについては、次回以降のTech Blogで解説したいと思います。


今後の展望

今回のTech Blogでは、現在のAutowareの実装に準拠して、Detectionモジュールについて解説しました。しかし、今回紹介した内容の中にも、新規開発によって大幅な変更が加えられる機能が数多く含まれており、この解説内容もすぐに古くなってしまいます。これからAutowareが多くの人に使われ、多種多様なセンサや環境への適応をしていくためには、まだまだ改良を加える必要があります。現在は、


  • LiDAR/Camera/RADAR のSensor Fusionによる Perception 性能の向上
  • Perception アルゴリズムの計算高速化やアクセラレータへの最適化による低消費電力/低コストなシステムの実現
  • 多種多様なセンサーや環境に適応するためのDomain Adaptation技術、機械学習ワークフローの構築(MLOps)

などの開発項目に取り組んでいます。今後のTech Blogにて、紹介したいと思っています。

オープンソースのソフトウェアを一緒に開発していきませんか?


ティアフォーでは、「自動運転の民主化」というビジョンに共感を持ち、自らそれを実現する意欲に満ち溢れた新しい仲間を募集しています。


キャリアページ


Media Contact
pr@tier4.jp


Share the post
LinkedIn | X | Facebook | Instagram


More
Autoware—Github | The Autoware Foundation