Ledge Tech Blog

We're the data scientists and AI engineers behind Ledge.

自動運転やロボットで使われる点群データとは?そして自動運転は何が難しいのか?

こんにちは。レッジのエンジニアの山岡です。 レッジではエンジニアではありつつも、クライアントとの商談に出させてもらう機会が増えてきて、コードを書くよりも提案や提案に向けた調査をすることが多いです。

業務の流れとしては、クライアントからの相談を受け、クライアントの抱えている課題を整理した上でどんなアプローチで解決すべきかなどを提案する、というのをやってます。

なぜ点群データに対する理解が必要なのか?

こういう業務をしている中で、最近点群データを扱った手法に関する相談を受けることが多いです。「3Dスキャナーで撮影したデータを使って何か出来ないか?」、「最新のiPadでLiDARが搭載されたらしいけど、あれを使えないか?」などなど。 こういうケースでは、課題ありきではなくアイデアを求められたり、そのアイデアの実現可能性を正しく判断する必要があるので焦ってしまうことが多かったです。

そこで、このリモートの期間で一気に情報収集して理解したいなと思い、最近Twitterで見つけた論文「Deep Learning for LiDAR Point Clouds in Autonomous Driving: A Review」を読んでまとめてみました。 (理解が甘い部分もあるかと思いますが、こういった形でアウトプット出来る環境はどんどん使って行きたいのでチャレンジしてます)

LiDARは自動運転の文脈で語られることも多いですが、自動運転だけでなく建築やロボットでも使われる技術です。自動運転におけるタスクと技術的な課題を理解しておくことで、建築やロボットの分野ではどのようなタスクと課題があるのかも見えてくるかと思います。 そのため自動運転で使われる技術的タスクと点群データを扱う上での課題について書いていきたいと思います。

いやいや、そもそも点群データとは?

まずは基本的な情報として、そもそも点群データとは何か?について理解をしておく必要があります。

画像データであればRGB3チャネルの二次元上のピクセルで構成されるデータとなりますが、点群データは三次元上の点で構成される物体のデータとなります。 イメージを掴んでいただくためにも以下の図を見ていただければと思います。

画像と点群データの特徴的な違いは、各構成要素間の関係性に意味があるかどうか、だと思います。 画像であれば隣接するピクセルに特徴などが見られ、その特徴を畳み込みなどで抽出するのが画像処理・CNNの処理になります。一方、点群データでは隣接する点が必ずしも意味を持つわけではありません。

より詳しい内容については、こちらの参考資料にお任せしたいと思いますが大枠理解していただけたかと思います。 2つの資料はスライド形式で大変分かりやすくおすすめです。

[参考資料]

自動運転におけるタスク

さてやっと本題に入りますが、自動運転における技術的なタスクは3つに分解できます。 下図を見ていただければどんなことをしているのか感覚的に分かりますね。

出所: Deep Learning for LiDAR Point Clouds in Autonomous Driving: A Review
  1. 3次元点群セグメンテーション(Point Cloud Segmentation)
  2. 3次元物体検出(3D Object Detection)
  3. 3次元物体認識/分類(3D Object Classification)

一つ目の3次元点群セグメンテーションは、点群の点一つ一つがどのオブジェクトに属しているのかを分類するタスクになります。 例えば車載映像で言うと、道路を構成している点は青色、車は黄色、といった形で点群そのものにラベル付けしてあげることになるのでかなりアノテーションが大変な処理ですね。

二つ目の3次元物体検出は、物体を検出してその物体をバウンディングボックスと呼ばれる矩形で囲ってあげるタスクになります。 2次元の画像における物体検出は見たことあると思いますのでわかっていただけるかと思います。 2次元物体検出の場合はバウンディングボックスの中心座標と矩形の幅と高さを与えますが、3次元物体検出になると物体の中心座標と矩形の幅、高さ、奥行きだけじゃなく角度情報も与える必要があります。

三つ目の3次元物体認識/分類は、与えられた点群データがどのカテゴリに分類されるのかを処理するタスクになります。

以上のタスクを元に歩行者、車、標識、道路の車線など様々な外部の情報を認識していきます。 その中でもやはり点群データを使えば全てうまくいく、と言うわけでもなく課題もあります。

自動運転における課題

課題を大きく分けると二つあり、一つ目が点群データに関する課題と二つ目が深層学習モデルに関する課題です。

データに関してはLiDARでのデータ取得に紐付く4つの課題が挙げられており、それぞれについて説明していきます。

  • 多様な点群データ密度と反射強度: LiDARセンサーとの距離やセンサーそのものの特性により、同じオブジェクトに対しても取得出来るデータが異なる
  • ノイズ: センサーを使用しているとノイズがどうしても生じてしまい、外れ値や摂動が起こってしまう
  • 不完全性: リアルタイムで動く物体を撮影するために、データが欠損したり、サンプリングできるデータ数が減ってしまう
  • カテゴリの紛らわしさ: 例えば街中にある屋外広告を誤って道路標識と認識してしまうなど、異なる物体であっても形状や反射率が似ていることで分類や検出が上手くいかなくなってしまう

上記の課題についてはLiDARの性能も影響してきます。 もう一つの深層学習モデルに関しても点群データのデータ構造に紐付く5つの課題が挙げられているので、同様にそれぞれについて説明していきます。

  • 順列と配向の不変性: 2次元画像と比較して、点群データは不規則な順序で特定の向きが決まっている訳ではないのでどのように特徴量を獲得するか
  • 剛体変換: 点群データで構成される物体は剛体と呼ばれるその形状の状態での回転や移動が必要なため、これらの変換でどのように特徴を表現するか
  • ビッグデータ: LiDARは大量の点群を取得するのでどのようにデータを保持するのか
  • 正確さ: 自動運転ではもちろん正確に道路上の物体を検出しなければならないので、データに欠損があったり、同じ物体で異なる形状や素材であった場合でも正確に認識できるか
  • 効率性: 2次元画像と比較して、大量の点群データを処理しなければならないので如何に効率的なモデルを作れるか

このように、点群データを扱うことによってこれまでの画像に対する深層学習の手法では対応できないことがあるため、これらの課題に対する解決方法が必要となります。 この論文ではその具体的な手法について画像認識の手法と組み合わせていく手法などについても語られていますが、長くなってしまったので以降の話については次回の記事で書いていきたいと思います。

最後に

最近は機械学習フレームワークでもPytorch3DTensorFlow Graphicsなどが出てきており、点群データに対する機械学習の環境も整ってきているので、是非ともこういった分野に対しても取り組んでいきたいと思います。

今回は導入部分に関しての説明になりますが、今後手法の詳細なところへの理解も含めて案件の隙間で勉強していきたいと思います。 こういった技術的なキャッチアップについては業務時間内でも時間をとって出来ますし、このような形でアウトプットしていけるので、知的好奇心のある方々にとってはとても働きやすい環境だと思います。

レッジはAIやデータ分析のコンサルティングと開発・運用までやっております。 とりあえずAI使っとけば良い、みたいな提案はせずに本質的な課題解決方法を提示するよう心掛けているので、クライアントと並走する形でプロジェクトを推進しております。もし興味ある方は是非ご連絡いただければと思います。