※当サイトはPRを含みます

【入門】点群データ(Point Cloud)とは?3Dセンサの仕組みからディープラーニングによる処理手法まで徹底解説

2022年6月8日

はじめに

近年、自動運転やメタバースの発展に伴い、現実世界をデジタル化する「3Dデータ」の重要性が増しています。
本記事では、3Dセンサの仕組みから3Dデータの代表的な表現方法、そしてディープラーニング(深層学習)を用いた点群データ(Point Cloud)の処理手法について、基礎からわかりやすくまとめました。

なお、本記事は主に以下のサーベイ論文を参考に構成しています。
参考:Deep Learning for 3D Point Clouds: A Survey

3Dセンサの仕組みと応用分野

ハードウェア技術の発展により、高精度な3D情報を手軽に取得できるようになりました。ここでは代表的な3Dセンサである「TrueDepthカメラ」と「LiDAR」を紹介します。

TrueDepth Camera(顔認証やARに活躍)

身近な例として、iPhoneに搭載されている「Apple TrueDepth Camera」があります。

このセンサには、顔とカメラの距離を正確に測る近接センサや、顔の立体形状を計測するドットプロジェクタが搭載されています。3万以上の赤外線ドットを顔に投射して深度マップ(Depth Map)を作成することで、微細な表情の変化までトラッキング可能です。

取得した緻密な3D顔データを機械学習モデルに学習させることで、写真やマスクでは突破できない、極めて安全性の高い「Face ID(顔認証)」を実現しています。

TrueDepth Cameraのイメージ図

TrueDepth Cameraのドット投影
画像引用:KDDI トビラ

LiDAR(自動運転や広範囲の測量に必須)

自動運転分野や高度な測量で主流となっているのが「LiDAR(Light Detection and Ranging)」です。

LiDARは、レーザー光(近赤外光など)を対象物に照射し、その反射光がセンサに戻ってくるまでの「時間」を計測することで距離を測定します。対象物までの距離だけでなく、周囲の空間の位置や形状をリアルタイムかつ高精度に3D点群(Point Cloud)として取得できます。

近年では自動運転車だけでなく、iPad ProやiPhone Proシリーズにも搭載され、AR(拡張現実)や空間スキャンなど応用範囲が急速に広がっています。

LiDARの原理図

自動運転におけるLiDAR活用例

3Dデータの代表的な4つの表現方法

取得した3Dデータをコンピュータ上で扱うためには、適切な形式に変換する必要があります。代表的な4つの表現方法(Depth、Voxel、Point、Mesh)を紹介します。

3Dデータの表現方法

① 深度マップ(Depth Map)

カメラから対象物までの「距離(奥行き)」をピクセル値として表現した2D画像です(上図b)。通常のRGB(カラー)画像と深度マップを組み合わせることで、空間の構造を効率的に把握でき、シーンの3D再構成などに用いられます。

② ボクセル(Voxel)

2D画像の「ピクセル」を3次元の「立方体(ブロック)」に拡張した表現です(上図c)。空間を格子状に分割して表現するため、従来の2D画像向けCNN(畳み込みニューラルネットワーク)を3Dに拡張して適用しやすいというメリットがあります。しかし、何もない空間(空データ)も保持するため、解像度を上げるとメモリ消費量が爆発的に増えるという課題があります。

③ 点群(Point Cloud)

3次元空間上の無数の「点」の集合データです。各点は座標(x, y, z)を持ち、センサ(LiDARなど)から取得した生のデータをそのまま表現できます(上図d)。データ量が軽く扱いやすいのが特徴ですが、「点が順序付けられていない(順番を入れ替えても同じ形状になる)」という特性があり、ディープラーニングで扱うには特別な工夫(PointNetなど)が必要です。

④ メッシュ(Mesh)

頂点、辺、面(主にポリゴン)を繋ぎ合わせて3Dモデルの表面を構成する表現です(上図e)。物体の表面を滑らかに表現できるため、ゲームエンジンやCG、CADなどの分野で標準的に使われています。

DeepLearningを用いた点群データ処理手法

ここからは、近年AI分野で主流となっている「点群データ(Point Cloud)」をディープラーニングで処理するタスクについて解説します。

点群データ処理のタスク分類

① クラス分類(3D Shape Classification)

点群データをモデルに入力し、それが何の物体(車、椅子、飛行機など)であるかを推論・分類するタスクです。

Projection-based(投影ベース)の手法

構造化されていない点群データを、一度「多視点の2D画像」や「3Dボクセル」などの中間表現に変換(Project)してから、既存のCNNなどで計算する手法です。計算コストの最適化が課題となります。

Point-based(点群ベース)の手法:PointNetの登場

点群データを他の形式に変換せず、生の座標データのまま直接計算する手法です。
この手法のブレイクスルーとなったのが「PointNet」です。点群の「入力順序に依存しない」という問題を解決するため、Max Pooling(最大値プーリング)という対称関数を用いて全体の特徴を抽出することに成功しました。現在発表されている多くの研究が、このPointNetの構造をベースにしています。

PointNetのアーキテクチャ

クラス分類の代表的なデータセット

  • ModelNet40: 人間、飛行機、花瓶など40カテゴリに分類された9,843個の3Dモデル。
  • ModelNet10: 机、ベッド、椅子など10カテゴリに分類された3,991個の3Dモデル。
ModelNetデータセットの例

② 3D物体検出・トラッキング・シーンフロー

物体検出 (3D Object Detection)

シーン全体の点群データの中から、複数の物体(車や歩行者など)の位置を検出し、3Dのバウンディングボックス(囲み枠)を生成します。

3D物体検出のイメージ

手法は主に以下の2つに大別されます。

  • 領域提案ベース(Region Proposal-based): MV3D、PointRCNN、F-PointNetsなど。候補領域を絞ってから詳細に判別するため精度が高い。
  • シングルショット方式(Single Shot-based): PIXOR、VoxelNet、3DSSDなど。一度の処理で検出を行うため高速処理に向いている。

トラッキング (3D Object Tracking)

連続するフレーム間で、特定オブジェクトの動きや状態を追跡(トラッキング)します。3D点群は距離や奥行きの情報を持つため、2D画像でのトラッキングで課題となる「物体の重なり(オクルージョン)」や「スケール変動」に強いのが特徴です。3D Siamese networkを用いた手法などが研究されています。

シーンフロー推定 (Scene Flow Estimation)

時系列の点群データから、フレーム間の「3次元的な動きのベクトル(Scene Flow)」を推定します。FlowNet3DやHPLFlowNetなどが代表的です。

シーンフローのイメージ

③ セマンティック・セグメンテーション (Segmentation)

入力された点群の「一つ一つの点(Point)」に対して、それが何のクラス(道路、建物、車など)に属しているかをピクセル単位ならぬポイント単位で分類し、意味的に分割(セグメンテーション)するタスクです。

こちらもクラス分類と同様に、生の点群をそのまま入力できる「PointNet」の構造をベースにしたアプローチが盛んに研究されています。

セグメンテーションの処理フロー

セグメンテーションの代表的なデータセット

【室外向け】Semantic3D
15クラス、約40億(4000M)のポイントで構成される大規模データセット。道路、建物、植生などに分類されており、自動運転や屋外マッピングのベンチマークとして使用されます。

Semantic3Dの例

【室内向け】S3DIS(Stanford Large-Scale 3D Indoor Spaces Dataset)
13クラス、約2.7億(273M)のポイントで構成されるデータセット。天井、床、椅子、机などに分類されており、ロボットの室内ナビゲーションなどのベンチマークに使用されます。

S3DISの例

まとめ

本記事の重要なポイントをまとめます。

  • 3Dセンサの普及: TrueDepthやLiDARにより、高精度な3Dデータが身近になった。
  • 3Dデータの表現: Depth、Voxel、Point Cloud、Meshがあり、用途によって使い分ける。ディープラーニングでは軽量な「Point Cloud」が注目されている。
  • 点群処理のブレイクスルー: 不規則な点群をそのまま処理できる「PointNet」の登場により、クラス分類、物体検出、セグメンテーションの精度が飛躍的に向上した。

おわりに

今回は、3Dデータの種類、表現方法から、ディープラーニングを用いた点群処理の全体像についてサーベイ形式でまとめました。

今後は「PointNet」のより詳細なネットワーク構造や、実際にPythonを用いた点群データのクラス分類・セグメンテーションの実装手順についても記事にまとめてみたいと思います。

参考文献

Deep Learning for 3D Point Clouds: A Survey
PointNet
A Survey on Deep Learning for Localization and Mapping : Towards the Age of Spatial Machine Intelligence
GSIP
Geometric Back-projection Network for Point Cloud Classification
Survey論文の確認①(Abstractと概要)|3D Point CloudsとDeepLearning #1

おすすめ参考書

“`

リライト内容について、さらに強調したい専門用語や削りたい部分などはありますか? もし特定の読者層(より初心者向け、またはより専門家向けなど)に寄せたいご希望があれば、それに合わせて再度調整することも可能です!