3次元点群データを用いた物体検出
こんにちは、株式会社調和技研でAI技術開発部第1グループに所属している竹田です。
近年、LiDARをはじめとする計測機器の発展により、3次元データ計測が容易になりました。これに伴い、3次元データを用いたAI技術も非常に進化しています。
そこで今回は、3次元データに関する基礎、および3次元データの一つである点群データを用いた物体検出についてご紹介します。
3次元データの基礎
はじめに、3次元データの基礎としてその種類と取得方法を紹介します。
3次元データの種類
3次元データには様々な形式が存在し、それぞれにメリット、デメリットがあります。主要な形式として、点群データ、ボクセルデータ、メッシュデータの3種類が存在します。これらの形式は用途に応じて選択され、相互に変換可能なものもあります。
点群データ
定義 | XYZ座標に基づく位置情報と色情報を持つ点の集合で表現されるデータ |
特徴 | 少ないデータで3次元形状を表現できる(ボクセルデータに比べて) |
用途 | 地形、建物の形状データなど |
ボクセルデータ
定義 | 3D画像とも呼ばれ、スカラー値やベクトル値を持つ小さな体積の立方体(ボクセル)の集合で表現されるデータ |
特徴 | 他の形式よりも3次元形状を正確に表せるが、効率的に表現するのは難しい(同じ3次元形状でもデータ量が多くなる) |
用途 | 医療系データなど |
メッシュデータ
定義 | 三角形や四角形などの平面の集合で表現されるデータ |
特徴 | 少ないデータ量で3次元形状を表現できるが、細かい形状を表現するのは苦手である |
用途 | 設計用途の3DCADデータなど |
3次元データの取得方法
3次元データを取得するのに、ステレオ方式、ToF方式、構造化照明方式などが知られています。これらの方式を使用したデバイスの一例として、ステレオ方式ではIntel社のintel RealSense(depth camera)、ToF方式ではApple社の12世代以降のiphone(LiDAR)などがあります。
ステレオ方式
複数台のカメラの視差を利用して、カメラから対象物までの距離を求める方法
ToF(Time of Flight)方式
赤外線などの光源から放出される光が対象物に当たって反射し、カメラの受光素子に届くまでの時間を利用して、カメラから対象物までの距離を求める方法
構造化照明方式
等間隔のドットなどをプロジェクターから対象物に投影し、投影したドットなどの歪みを解析してカメラから対象物までの距離を求める方法
点群データの加工(ダウンサンプリング、外れ値除去)
デバイスで取得したデータは主に点群データとして得られることが多いです。これらのデータをそのまま用いるとデータ量が多く、メイン処理や後処理において計算リソース不足で処理が難しくなります。また、デバイスから取得したデータは計測対象と関係がないノイズが含まれており、そのままでは物体の境界部分を正しく認識できない傾向にあります。そこで、データを軽量化するためにダウンサンプリングし、物体の境界を正しく認識するため外れ値を除去する必要があります。以下にダウンサンプリングと外れ値除去の手法について紹介します。
ダウンサンプリングには、以下のような方法が知られています。
①Farthest Point Sampling(FPS)
最初にランダムで1点を選び、次にその点から一番遠い点を選びます。
その後、残りの点について、既に選ばれている点との最小距離を計算し、その中で最も距離が大きい点を選びます。
次に、これまで選ばれた点と新しく選ばれた点に対して、この操作を繰り返すことで任意の個数の点を選択します。
②Poisson Disk Sampling(PDS)
PDSはランダムサンプリングに近い方法で、FPSに比べて計算コストが低く、オンライン処理向きです。
具体的には、ランダムで点を選び、既に選ばれた点に対して一定以上距離が離れていない場合、その点を削除します。
この操作を繰り返すことで任意の個数の点を選択します。
③その他の最新手法
上記①、②の方法以外では、以下の方法もバイアスを抑えながらダウンサンプリングをする方法として活用されています。
- Inverse Density Importance Sub-Sampling(IDISS)
- USIP
- Modeling Point Clouds with Self-Attention and Gumbel Subset Sampling
一方、外れ値除去については、以下のような2つの方法が知られています。
1)統計的外れ値除去
各点に対して、その近傍点との距離の平均値を求めます。その平均値に基づいてしきい値を設定し、しきい値以上に離れている点を外れ値として除去します。
2)半径外れ値除去
各点に対して、指定した半径内に入っている点の個数を数えます。その個数が指定した数以下の場合、その点を外れ値として除去します。
深層学習を用いた物体検出方法
ここまで、点群データの取得方法からデータ加工方法までを紹介しました。ここから、取得した点群データを使用した3次元物体検出手法の一例としてVoteNetを紹介します。VoteNetを理解するために、事前知識として必要である点群データの特徴、点ごとの分類を行うアルゴリズムのPointNet、およびPointNetの改良版であるPointNet++を順番に説明します。その後、それらを踏まえてVoteNetの3次元物体検出アルゴリズムを説明し、最後にその3次元物体検出事例を紹介します。
点群データの特徴
深層学習で扱う上で重要な点群データの3つの特徴を述べます。
1.点の順不同性
点の順番が変わっても同じ物体を表します
(例:[(1,1,1), (2,2,2), (3,3,3)] と [(3,3,3), (2,2,2), (1,1,1)]は同じ物体)
2.点同士の関係性
空間的に近い点同士は関係性が大きく、遠い点同士は関係性が小さいです
3.点の変換不変性
平行移動や回転移動を行った点群データは、どの機械学習モデルに入力しても移動の前後で結果は不変です
PointNet、PointNet++
PointNetは点群データに対応した深層学習モデルとして考案されました。
PointNetは点群データの特徴を考慮されており、以下の3つの特徴を持ち、分類とセグメンテーションのタスクを行うことが可能です。下図はPointNetのモデル構造を表しており、①~③の特徴に対応した部分を示しています。
①MAXpooling層による全体の特徴量抽出
点の順不同性が考慮されており、点の順番によらず同様の特徴量を抽出します
②個別と全体の特徴量を合わせて用いる
点同士の関係性が考慮されており、点同士の距離に応じた関係性の強弱は完全には反映されていないものの、データ全体の特徴量と点個別の特徴量を取り入れた学習によって、分類とセグメンテーションが可能です
③T-Netによる回転不変性への考慮
T-Netでは、入力された各点群の位置や向き、スケールの違いを吸収し、同一の座標系で表現されるように変換し出力します
PointNetは各点の特徴と点群全体の特徴を反映していますが、近い点同士の関係性(local構造)を十分に反映していないことが課題となっています。そこで、この課題を克服するためにPointNet++が提案されました。
PointNet++は、点群データをsampling & groupingすることで、local構造の特徴を抽出して学習することができます。具体的にはMulti-scale gouping(MSG)とMuliti-resolution gouping(MRG)が使用されることで可能になります。
ここまでPointNet、およびPointNetの改良版であるPointNet++を紹介しました。今回紹介した以外にも点群データに対応した深層学習モデルとして、DGCNNやSpiderCNNなど、たくさんの手法が提案されています。
点群データによる物体検出(VoteNet)
ここまでPointNet、および改良したモデルであるPointNet++を紹介してきましたが、これらの手法は点ごとに分類やセグメンテーションをするものです。そのため、これらの手法では点群データから3次元の物体を検出することができません。そこで、最後にPointNet++を利用して点群データから3次元の物体を検出する手法であるVoteNetを紹介します。
VoteNetの特徴は、点群データを各点ごとに分類し同じ分類の点の集合として認識するのではなく、点群データから3次元空間上の物体の中心を推定し3次元物体として認識することです。
下図のモデル構造を基にVoteNetの3次元物体検出手順を示します。インプットは点群データであり、PointNet++を用いて特徴量を抽出します(Seeds)。抽出した特徴量を利用して物体の中心になりうる点を探します(Votes)。得られた中心点と元の点群データの特徴(Vote clusters)から3次元のバンディングボックスと物体のクラスを予測します。このようにして、VoteNetは3次元物体検出を可能にしています。
次に、このモデルを用いて3次元物体検出を行った例を示します。データセットとしてSUN RGB-Dから一部を抽出し、学習データと評価データに分割して使用しました。以下の図は、準備したデータセットに対してVoteNetで学習し、評価した結果です。RBG画像で示す会議室の椅子とテーブルについて、点群データを用いて物体検出を行いました。推論結果と正解ラベルを比較すると、一脚の椅子が誤検出されており、2つのテーブルが合体した1つの物体として検出されている部分はありますが、全体としてはほぼ正しく認識できています。この結果から学習条件を十分に検討すれば3次元の物体検出方法として使用できる可能性があることが分かりました。
まとめ
今回は、3次元データの種類、計測方法、データの加工方法、および3次元データの代表である点群を用いた物体検出まで、一連の流れを広く紹介しました。
調和技研では3次元データを用いたAI開発も行っておりますので、ご興味をお持ちの方はお気軽にご連絡ください。
【参考文献】
[1] PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
[2] PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space
[3] Deep Hough Voting for 3D Object Detection in Point Clouds
画像系AI関連の受託開発、プロダクト開発に従事。2006年京都大学大学院理学研究科化学専攻修士課程修了。その後、製造業メーカーにおいて、材料開発、機械設計、計測技術開発を経験し、AI開発に興味を持ち2021年8月から調和技研にジョイン。今までの経験を活かして、製造業でAI導入を進めていきたいと考えています。