【3D点群処理】3D点群データと深層学習(Deep Learning for 3D Point Cloud)
はじめに
3Dデータの概要とディープラーニングを用いた点群データの処理についてまとめました。
下記論文を参考にしています。
Deep Learning for 3D Point Clouds: A Survey
3Dセンサと応用分野
3Dセンサ技術の発展によって、様々な3D情報が取得できるようになってきました。
いくつかの3Dセンサと応用分野について紹介します。
True depth Camera
身近なところだとiPhoneに搭載されている "Apple True depth Camera" があります。
顔とカメラの距離を正確に計測する近接センサや顔の形状を計測するためのドットプロジェクタが搭載されています。
また、細かな顔の表情の移り変わりも3 万以上ドットを顔の上に投射して解析し、顔の深度マップを作成してトラッキングすることができます。
取得した顔の情報は機械学習で学ばせることで安全な顔認証を確立させています。
https://time-space.kddi.com/ict-keywords/20180912/2436
LiDAR
自動運転分野で用いられている3Dセンサでは ”LiDAR” があります。
近赤外光や可視光、紫外線を対象物に照射し、その反射光を光センサーでとらえ距離を測定するリモートセンシング方式(離れた位置からセンサーを使って感知)。 対象物までの距離だけでなく、位置や形状まで検知ができます。
最近では自動運転だけでなく、スマートフォンにも搭載されたりと応用範囲が広がっています。
その他にも3Dデータはロボティクスやリモートセンシング、医療の分野にも応用されて研究が進められています。
3Dデータの表現方法
3Dデータにはいくつかの表現方法があります。
ここでは代表的な4つ ①Depth ②Voxel ③Point ④Mesh を紹介します。
①深度マップ(Depth)
深度マップ(上図(b))は、環境の形状や構造を理解する上で極めて重要な役割を果たし、深度マップとRGB画像を融合することで密なシーン再構成が行われてきました。
②ボクセル(Voxel)
ボクセル表現(上図(c))は、3次元形状を表現する一般的な方法です。
ボクセルは、画像におけるピクセルと同じよう表現で、3次元空間を表現しています。
研究では、環境やオブジェクトのボクセル表現を再構築するために、複数の画像入力を使用することが検討されてきました。
③点群(PointCloud)
点表現(上図(d))は、3次元空間の点を座標(x, y, z)で表現しています。
点の表現は、理解しやすく扱いやすいですが、点群は順序付されていない点の集合となり、異なる順序の点群で同じ形状を表現できてしまうため、曖昧さの問題があります。
④メッシュ(Mesh)
メッシュ表現(上図(d))は、辺、頂点、面などの3Dモデルの基本的な構造をコードかすることで表現されています。
この表現は、3次元形状の表面を自然に捉える強力な表現で、ゲームなどの3Dモデルも同様の表現が用いられています。
DeepLearningを用いた点群データ処理
上記で述べた表現方法のうち、点群データ(PointCloud)の処理について説明します。
ディープラーニングを用いた点群データの研究は、クラス分類やセグメンテーションなどがあり、それぞれのタスクに応じて使用されるデータセットも異なります。
①クラス分類(Model Classification)
点群データをモデルに入力し、その点群のクラスを推論するタスクです。
Projection-based
Projection-basedの手法では構造化されていない(unstructured)点群を中間正則表現(intermediate regular representation)に変換(project)し、計算します。
Point-based
Point-basedの手法では、点群データをそのまま用いて計算します。
点群をディープラーニングで扱う上で重要な手法として、PointNetが発表されています。
PointNetは、分類やセグメンテーションなどのタスクにおいて点の特徴を集約するため、max poolingを用いることで順序付されていない点データを処理しています。
後発の研究においてもPointNetをベースに開発されているものが多くあります。
データセット
クラス分類に用いられるデータセットにはModelNet40(ModelNet10)があります。
ModelNet40は、人間、飛行機、花瓶など 40 個のカテゴリに分類された9843 個の3D モデルで構成されています。
ModelNet10は、机、ベッド、椅子など 10個のカテゴリに分類された3991 個の3D モデルから構成されます。
②物体検出(Object Detection, Tracking, Scene Flow Estimation)
物体検出(Object Detection)
物体検出では複数の物体が存在する点群データの中から物体の位置を検出します。
基本的な3D物体検出器は、シーンの点群を入力として受け取り、下記図に示すように、検出された各オブジェクトの3Dバウンディングボックスを生成します。
画像での物体検出と同様に、3D物体検出方法は、領域提案ベースとシングルショット方式の2つのカテゴリに分けられます。
領域提案ベースの例としてはMV3D、PointRCNN、Frustum PointNets(F-PointNets)などが挙げられます。
シングルショット方式の例としては、PIXOR、VoxelNet、3DSSDなどが挙げられます。
トラッキング(Tracking)
オブジェクトトラッキングのタスクは、後続のフレームでのオブジェクトの状態を推定することです。
3Dオブジェクトトラッキングは点群の豊富な幾何学的情報を使用できるため、オクルージョンやスケール変動など、画像ベースのトラッキングでの課題を克服することが期待されています。
研究例としては3D Siamese networkを用いた手法があります。
シーンフロー(Scene Flow Estimation)
点群の系列(sequence of point clouds)から、3D scene flowやspatial-temporary informationなどの有用な情報を学習して、フレーム間のシーンの流れを推定します。
研究例として、FlowNet3DやHPLFlowNetなどがあります。
③セグメンテーション(Segmentation)
2D画像のセグメンテーションと同様にポイントそれぞれにクラスをつけていきます。
タスク概要として点群が入力として与えられた際に、それぞれの点の意味に合わせていくつかの点の集合に分割をします。
手法としては、3D shape classificationで取り扱ったものと同様に、Projection-based methodsとPoint-based methodsの二つに分けることができます。
その中でPoint-based methodsは、不規則な点群をそのまま入力として扱うことができるPointNetの構造をベースに様々な研究がされています。
データセット
セグメンテーションに用いられるデータセットにはSemantic3DやS3DISがあります。
Semantic3D
Semantic3Dは15クラス、4000Mのポイント数で構成されるデータセットになります。
自動車や道路、建物などのクラスに分類されており、室外におけるタスク(自動運転)のベンチマークとして使用されています。
S3DIS
S3DISは13クラス、273Mのポイント数で構成されるデータセットになります。
椅子や机、窓などのクラスに分類されており、室内におけるタスクのベンチマークとして使用されています。
おわりに
3Dデータの種類、表現方法、ディープラーニングを用いた処理についてまとめました。
今後はPointNetなどを使用した点群データのクラス分類やセグメンテーションについてもまとめてみたいと思います。
参考文献
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
ディスカッション
コメント一覧
まだ、コメントがありません