0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

画像認識の知識から始める点群データ入門

0
Posted at

こんにちは、ダックスフントです。

これまで画像データやテキストデータを使った機械学習モデルの構築を経験しましたが、「点群(てんぐん)データ」の機械学習モデル構築にも興味を持ちました。しかし、点群についてゼロから調べ始めたものの、「どこから手を付ければよいのか」「画像データと何が違うのか」がなかなか掴めず、はじめは手掛かりを探すだけで苦労しました。

そんな中でも手がかりになったのが、書籍「詳解 3次元点群処理 Pythonによる基礎アルゴリズムの実装 (KS理工学専門書)」です。この本に沿って一通り学んだところ、ようやく全体の骨格が見えてくるようになりました。身につけた理解を自分の言葉で整理する意味でも、記事にまとめることにしました。

本記事では、そうした学びを踏まえ、画像認識(2Dの画像データ)の基礎知識がある方に向けて、点群データとは何か、どのようなタスクやAIモデルがあるのかを整理します。各モデルの詳細(実装・ベンチマーク比較・選定の考え方など)は別記事で紹介しようと思うので、ここでは点群データの全体像を紹介します。


目次

  1. 点群データとは
  2. 点群データの取得方法
  3. ファイルフォーマット
  4. 画像データと点群データの比較
  5. 前処理:ダウンサンプリングとボクセル化
  6. 古典的アルゴリズムによる物体抽出(AIを使わない方法)
  7. 点群データで扱う主なタスク
  8. 点群データ向けの代表的なAIモデル
  9. まとめ

1. 点群データとは

点群データ(Point Cloud Data)とは、3次元空間上に散らばった無数の点の集合によって、物体や環境の形状を表現するデータです。

各点には最低限 3次元座標(X・Y・Z) が含まれており、さらに用途や取得機器によって以下のような属性情報が付加される場合があります。

属性 内容 補足
XYZ座標 3次元空間上の位置 必須
RGB 色情報 カラーカメラと組み合わせた場合
反射強度(Intensity) レーザー光の反射強度 LiDARで取得した場合
法線ベクトル 点周辺の面の向き 後処理で計算することが多い
時刻情報 取得したタイムスタンプ 移動体センサの場合

点群は画素(ピクセル)のような規則的なグリッド構造を持たず、空間上に不規則に分布しています。この「不規則性」が、画像データと大きく異なる点であり、専用のアルゴリズムや深層学習モデルが必要になります。

1-2. 隣接する概念:メッシュデータ

3Dデータの表現形式として、点群の他に メッシュデータ(Mesh Data) があります。メッシュは、頂点(Vertex)・辺(Edge)・面(Face)の3要素で3D形状を表現するデータで、面は通常、三角形(ポリゴン)で構成されます。

点群データ メッシュデータ
データの実体 点の集合(連結情報なし) 頂点+辺+面(三角形ポリゴン)
表面の表現 点が集まることで形状を近似する 三角形で滑らかな表面を定義する
ファイルサイズ 点数に比例して大きくなりやすい 比較的コンパクトにまとまりやすい
主な用途 センシング・計測、機械学習の入力 3DCG・ゲーム・CAD・可視化
取得方法 LiDAR、深度センサなど 点群からの変換(メッシュ化)、3DCGソフト

実際のワークフローでは、LiDARなどで点群を取得し、その後メッシュ化(点群→メッシュ変換)して3Dモデルとして活用する、という流れがあります。


2. 点群データの取得方法

点群データの取得には主に以下の手段があります。

2-1. LiDAR(Light Detection and Ranging)

レーザー光を照射し、対象物からの反射が戻るまでの時間から距離を計測します。現在、点群データの取得方法として最も広く使われています。

  • 用途: 自動運転(Velodyne HDL-64Eなど)、建物・地形スキャン、工場設備の3D計測、船体スキャン
  • 特徴: 暗所でも動作可能。反射強度の情報も得られる。

2-2. 深度センサ(RGB-Dカメラ)

赤外線パターン投影やTOF(Time of Flight)センサを使い、RGB画像と深度マップを同時に取得します。

  • 代表例: Intel RealSense、Microsoft Kinect(v1・v2は2017年に廃番、Azure Kinectは2023年10月に生産終了)
  • 特徴: 比較的安価。室内の近距離計測に向く。屋外や遠距離計測は苦手。

2-3. フォトグラメトリ(SfM:Structure from Motion)

複数の2D画像から3D点群を再構成する手法です。専用センサが不要で、普通のカメラがあれば点群を生成できます。

  • 代表ソフト: Metashape(旧PhotoScan)、COLMAP(オープンソース)
  • 特徴: 色情報(RGB)を自然に持てる。精度・スキャン速度はLiDARに劣る場合がある。

3. ファイルフォーマット

点群データには複数のファイルフォーマットが存在します。代表的なものを以下にまとめます。

フォーマット 概要 特徴
XYZ 各行にX・Y・Z座標を空白区切りで記述するシンプルなテキスト形式 汎用性が高く、Pythonでの読み込みも容易。ファイルサイズは大きくなりがち
PLY 頂点・面・法線・色などを格納できるフォーマット(ASCII・バイナリ両対応) フォトグラメトリの出力やOpen3Dとの親和性が高い
PCD PCL(Point Cloud Library)向けのフォーマット。強度・RGB・法線なども格納可能 ロボット・ROS環境でよく使われる。バイナリモードで高速I/O
LAS / LAZ 航空測量・LiDARデータの業界標準フォーマット(LAZはLASの圧縮版) 測量・GISツールとの互換性が高い。大規模地形データによく使われる

実務では、取得機器やライブラリによって扱うフォーマットが決まることが多いです。Pythonでの点群処理には Open3D がおすすめで、上記フォーマットのほとんどを読み書きできます。


4. 画像データと点群データの比較

データの特性の違いを表でまとめます。

観点 画像データ(2D) 点群データ(3D)
データ構造 規則的なグリッド(H×W×チャンネル数) 不規則な点の集合(N点×属性数)
隣接関係 ピクセル近傍が明確(上下左右) 近傍点をKNNなどで都度計算する必要がある
データサイズ 数MB〜数十MB程度 数MB〜数GB超(1億点以上も珍しくない)
深度(奥行き)情報 なし(基本的に2D投影) あり(3D座標として直接保持)
物体の遮蔽 遮蔽物の背後は見えない 視点を変えれば遮蔽物の背後も計測可能
明暗・テクスチャ 色・テクスチャ情報が豊富 基本はXYZ座標のみ(色は別途付与)
CNNの直接適用 可能(グリッド構造のため) 困難(不規則構造のため工夫が必要)

この「不規則性」と「順不同性(点の並び順が意味を持たない)」への対応が、点群データ向けのモデル設計における最大の課題です。

なお、点群データ特有の強みとして、

  • 3Dの正確な距離・体積の計測が可能(建物や設備の寸法計測など)
  • 照明環境に左右されにくい(LiDARは自ら光を照射するため暗所でも動作)
  • 複数視点から統合して完全な3Dモデルを構築できる(位置合わせ処理との組み合わせ)

という点が挙げられます。


5. 前処理:ダウンサンプリングとボクセル化

LiDARで建物や地形をスキャンすると1億点を超えることも珍しくなく、点群データはサイズが非常に大きくなりがちです。また、スキャナに近い部分は点が密で遠い部分は疎、という密度の不均一性もあります。そのままモデルに入力すると計算コストが膨大になるため、機械学習モデルへ入力する前にダウンサンプリング(点数削減)を行うのが一般的です。

5-1. ボクセルダウンサンプリング

ダウンサンプリングの代表的な手法がボクセルダウンサンプリング(Voxel Downsampling)です。

ボクセル(Voxel) とは "Volume Pixel" の略で、3D空間における「3次元の画素」に相当する概念です。2D画像において各ピクセルが一定の面積を持つように、ボクセルは一定の体積を持つ立方体単位です。

ボクセルダウンサンプリングでは、点群を3D空間上の均等なボクセルグリッドに当てはめ、各ボクセルの中に入った複数の点を重心(代表点)1つに置き換えます。これにより、点数を大幅に減らしつつ全体の形状をおおよそ保持することができます。

例:Open3D でボクセルサイズ 0.1m のダウンサンプリング

import open3d as o3d

pcd = o3d.io.read_point_cloud("sample.ply")
downsampled = pcd.voxel_down_sample(voxel_size=0.1)

5-2. その他のダウンサンプリング手法

手法 概要 特徴
ボクセルダウンサンプリング ボクセルグリッドに分割し、各ボクセル内の点を代表点1つに集約 ボクセルサイズで解像度を調整できる。Open3Dで手軽に実行可能
ランダムサンプリング 点群からランダムに一定数の点を選択する 実装が最もシンプル。点の偏りが生じる可能性がある
FPS(Farthest Point Sampling、最遠点サンプリング) 現在の選択点群から最も遠い点を順次選択し、空間的に均一な点集合を得る 均一な分布を保てるが計算コストが高い。PointNet++などで使用される

なお、ボクセルという概念はダウンサンプリングだけでなく、後述のボクセルベースモデル(VoxelNet等)でも活用されます。モデル内部でも点群をボクセルグリッドに変換して処理することで、GPUとの親和性が高い規則的なデータ構造を得ることができます。


6. 古典的アルゴリズムによる物体抽出(AIを使わない方法)

実際の点群データには、地面・建物・車・人など、複数の物体が混在しています。AIモデルを使わずとも、古典的なアルゴリズムを組み合わせることで、これらの物体を分離・抽出できます。自動運転・ロボティクス・産業応用における従来型のLiDAR処理パイプラインでは、以下のような流れが一般的です。

6-1. 古典的な物体抽出パイプライン

ステップ 処理内容 代表的な手法
① ダウンサンプリング 点数を削減して計算コストを下げる ボクセルダウンサンプリング(前節参照)
② 地面除去 地面(平面)を検出して除去し、物体点群だけを残す RANSAC
③ クラスタリング 残った点群を物体ごとにグループに分ける Euclidean Cluster Extraction、DBSCAN
④ 特徴量抽出 各クラスターの形状・高さ・密度などから手作り特徴を計算する
⑤ 分類 特徴量から物体カテゴリ(車・人・障害物など)を判定する SVM、Random Forest など

6-2. RANSAC(地面除去)

RANSAC(Random Sample Consensus、ランダムサンプルコンセンサス)は、点群から平面(地面)を検出・除去する際に広く使われる古典的アルゴリズムです。

動作の概要:

  1. 点群からランダムに3点を選び、平面を推定する
  2. 残りの全点のうち、その平面から一定距離以内にある点(inlier)を数える
  3. 上記を繰り返し、最もinlier数が多かった平面を「地面」として確定し、該当点群を除去する
  • 利点: 実装・設定が比較的シンプル。外れ値(ノイズ点)に強い
  • 注意点: 傾斜地や凹凸のある地面では精度が低下しやすい

Open3Dでは segment_plane() メソッドでRANSACベースの平面検出を手軽に実行できます。

6-3. Euclidean Cluster Extraction / DBSCAN(クラスタリング)

地面除去後に残った点群(障害物・物体の点群)を物体ごとに分離するには、クラスタリングアルゴリズムを使います。

Euclidean Cluster Extraction(ユークリッドクラスタリング)

PCL(Point Cloud Library)の定番クラスタリング手法です。

  • 動作: 点と点のユークリッド距離が閾値以下であれば同じクラスターに属するとみなし、KdTreeで隣接点を再帰的に探索してクラスターを形成する
  • 主なパラメータ: クラスタ許容距離(値が大きすぎると複数物体が1つに統合、小さすぎると1物体が複数に分割される)・最小/最大クラスターサイズ
  • 特徴: シンプルで高速。クラスター数を事前に指定する必要がない

DBSCAN(密度ベースクラスタリング)

Density-Based Spatial Clustering of Applications with Noise の略で、密度に基づいてクラスターを形成するアルゴリズムです。

  • 動作: 半径 ε 以内に minPts 個以上の点があれば「密度が高い」とみなし、密度の高い点同士をクラスターとして統合する。密度の低い孤立点はノイズとして自動的に除外される
  • 特徴: 任意の形状のクラスターを検出できる。ノイズ点・外れ値を自動除外できる。Open3DやScikit-learnでも利用可能
手法 主な用途 代表的なライブラリ 特徴
RANSAC 地面(平面)の検出・除去 Open3D、PCL シンプルで平坦地面に有効。傾斜地や凹凸には苦手
Euclidean Cluster Extraction 地面除去後の物体クラスタリング PCL(標準実装) 高速・シンプル。PCLの定番手法
DBSCAN 地面除去後の物体クラスタリング Open3D、Scikit-learn 任意形状対応・ノイズ自動除外。パラメータ調整が重要

6-4. 古典的手法とAIモデルの使い分け

古典的なパイプラインは、学習データが不要・計算コストが低い・動作が確定的(再現性がある)という利点があります。一方で、複雑な形状の物体の分類・密集した環境での検出・高精度な識別が必要な場面では、次節以降で紹介するAIモデルとの組み合わせが有効です。

実際の自動運転システムでも「古典的手法で前処理・地面除去 → AIモデルで物体検出・分類」という組み合わせが多く採用されています。


7. 点群データで扱う主なタスク

画像認識と対比しながら、点群データで扱われる代表的なタスクを紹介します。

7-1. 分類(Classification)

画像では: 入力画像が「猫か犬か」などを分類します(ResNetなど)。

点群では: 入力した点群オブジェクト全体が「椅子か机か車か」などを分類します。ShapeNetModelNet40といったデータセットがベンチマークとしてよく使われます。

「形状だけから物体を識別する」という点が、色情報を使いやすい画像分類との大きな違いです。

7-2. 物体検出(Object Detection)

画像では: 2Dバウンディングボックス(矩形)で物体の位置・クラスを検出します(YOLO、Faster-RCNNなど)。

点群では: 3Dバウンディングボックス(直方体)で物体の位置・向き・大きさを検出します。奥行き情報があるため、複数の物体が重なっていても正確な3D位置を推定しやすいという利点があります。

自動運転(LiDARで周囲の車・歩行者・自転車を検出する)が代表的な応用例で、KITTInuScenesといったデータセットがベンチマークとして広く使われます。

7-3. セマンティックセグメンテーション(Semantic Segmentation)

画像では: 各ピクセルにクラスラベルを付与します(道路・建物・人・空など)。

点群では: 各にクラスラベルを付与します(地面・建物・木・車など)。ピクセルと異なり点は不規則に分布しているため、近傍探索を組み合わせた専用モデルが必要です。

大規模な地形スキャン(都市の3D地図作成)や工場・船舶設備の3Dモデル解析などに応用されます。ベンチマークとしては S3DIS(屋内)や SemanticKITTI(屋外・自動運転)がよく使われます。

7-4. インスタンスセグメンテーション(Instance Segmentation)

画像では: 同じクラスの複数の物体(例:3台の車)をそれぞれ個別に識別します(Mask R-CNNなど)。

点群でも: 同様に個々の物体を点群レベルで識別します。自動運転シーンで複数の車・歩行者を個別に追跡する用途などで使われます。

7-5. 位置合わせ(Registration)

位置合わせは、画像データにはあまり対応するタスクがない、点群特有のタスクの一つです。

複数の視点から取得した点群を同一の座標系に統合する処理で、例えば建物を複数の角度からスキャンして得た点群を合わせることで、完全な3Dモデルを構築できます。地図作成(SLAM)や3Dスキャンの統合にも使われます。

代表的な手法として ICPNDT があります。

手法 概要 特徴
ICP(Iterative Closest Point) 最近傍の点ペアを繰り返し見つけ、誤差を最小化しながら位置合わせを行う反復的手法 シンプルで実装が容易。初期位置が大きくずれていると収束しない場合がある
NDT(Normal Distributions Transform) 点群をボクセルに分割し、各ボクセル内の正規分布を使って整合度を評価する ICPよりノイズに強い傾向がある。自動運転のLiDAR位置合わせで多用

近年では深層学習を活用した位置合わせ(GeoTransformerなど)も研究が進んでおり、ノイズや重複の少ない点群での精度が向上しています。

7-6. アップサンプリング・超解像(Upsampling / Super-Resolution)

画像では: 低解像度の画像を高解像度に変換します(SRCNN、ESRGANなど)。

点群では: スパース(点の密度が低い)な点群を、よりデンス(密度が高い)な点群に変換します。低価格センサや遠距離計測で得られるスパースな点群から、詳細な形状情報を得たい場合に使います。

7-7. ノイズ除去・形状補完(Denoising / Completion)

ノイズ除去: 計測誤差や反射の問題による浮遊点(ノイズ点)を除去します。画像でのノイズ除去に相当しますが、点群は不規則な分布のため専用の手法が必要です。

形状補完: スキャンで欠けた部分(例:物体の裏側や影になった領域)を補完します。3D再構成や工業検査で使われます。


8. 点群データ向けの代表的なAIモデル

8-1. なぜCNNを直接使えないのか

点群は順不同性(点の並び順に意味がない)と不規則性(等間隔グリッドを持たない)という2つの性質を持つため、CNNをそのまま適用できません。この2つの課題への対応として、大きく 点ベースボクセルベース の2つのアプローチが存在します。

8-2. 2つのアプローチ

アプローチ 概要 メリット デメリット
点ベース(Point-based) 点群をそのまま入力し、点単位で特徴を学習 情報損失なし。実装がシンプルなものも多い 大規模点群では近傍探索の計算コストが高くなりやすい
ボクセルベース(Voxel-based) 3D空間をボクセルグリッドに分割し、CNNに近い処理を適用 規則的な構造のためGPU並列化が効率的。大規模点群への対応も比較的容易 ボクセル化による微小な情報損失がある

8-3. 代表的なモデル一覧

以下に代表的なモデルを整理します。各モデルの詳細(実装・ベンチマーク・環境構築・選定基準)については別記事で紹介する予定です。

モデル 発表年 / 学会 主な用途 特徴
PointNet 2017 / CVPR(Stanford) 分類・セグメンテーション 点群をそのまま処理する先駆けのモデル。シンプルで実装が容易だが、局所的な特徴を捉えにくい
PointNet++ 2017 / NeurIPS(Stanford) 分類・セグメンテーション PointNetを階層的に積み重ね、マルチスケールの局所特徴を学習。大規模点群では計算コストが高い
VoxelNet 2018(Apple Research) 3D物体検出 点群をボクセルに変換し3D CNNで物体を検出。自動運転での3D検出の先駆け
PointPillars 2019 / CVPR 3D物体検出 点群を2Dの柱(Pillar)形式で表現し高速処理。自動運転センサのリアルタイム検出に広く使われる
KPConv 2019 / ICCV(MINES ParisTech) セグメンテーション 点上に畳み込みカーネルを定義し、2D CNNに近い概念で幾何学的特徴を学習
RandLA-Net 2020 / CVPR Oral(Oxford) 大規模セグメンテーション 大規模点群(1M点以上)を効率的に処理するために設計された軽量モデル。既存手法比で最大200倍高速とされる
PointNeXt 2022 / NeurIPS(KAUST 他) セグメンテーション PointNet++のアーキテクチャを踏襲しつつ、学習戦略(データ拡張・最適化手法)とモデルスケーリングを見直すことで、PointNet++比で推論10倍高速・精度大幅向上を達成した点ベースモデル
OctFormer 2023 / SIGGRAPH(北京大学 他) セグメンテーション Octree(八分木)構造を活用した線形計算量のTransformer。20万点以上のシーンで従来Transformer比17倍高速化を達成。大規模点群を効率的に処理できるが、主な評価は屋内シーン(ScanNet等)が中心
Point Transformer V3 2024 / CVPR Oral(CUHK/HKU) セグメンテーション(SOTA水準) Sparse Convolutionベースで高速化しつつTransformerアーキテクチャを組み合わせた現行SOTA水準モデル。MIT ライセンスで商用利用可
Sonata 2025 / CVPR Highlight(Meta) 自己教師あり事前学習 + セグメンテーション 140,000点群での大規模自己教師あり事前学習モデル。少量のラベルデータでも高精度を実現。2D画像のImageNet事前学習に相当するコンセプト

8-4. 点群 × 大規模言語モデル(VLM)

近年、テキストと3D点群を組み合わせた VLM(Vision-Language Model) の研究も登場しています。2D画像のCLIPやGPT-4Vのように、「自然言語で点群に関する質問に答える」「テキストで指定した物体を点群から識別する」といった用途を目指したものです。

モデル 発表年 / 学会 概要
OpenShape 2023 / NeurIPS CLIPのような対照学習で点群とテキストを同一空間に埋め込む。1,000クラス以上のゼロショット分類が可能
PointLLM 2024 / ECCV LLM(Large Language Model)と点群エンコーダを組み合わせたモデル。点群オブジェクトについてテキストで説明・質疑応答ができる
GFS-VL 2025 / CVPR VLMを活用した点群セマンティックセグメンテーション。少数サンプル(Few-shot)から新しいクラスを認識する汎化性能を持つ

ただし、2025〜2026年時点では、これらのVLMの多くは単一オブジェクト単位の理解(分類・説明)に主眼が置かれており、大規模なシーン全体を点単位でセグメンテーションするような用途への直接適用はまだ研究段階です。2D画像でのVLM普及と比べると、3D点群のVLMはまだ発展途上にあります。

8-5. 主要ライブラリ

点群処理の実装では、以下のライブラリがよく使われます。

ライブラリ 概要 向いている用途
Open3D 点群の読み書き・可視化・基本処理(ダウンサンプリング、ICPなど)が揃った汎用ライブラリ。初学者におすすめ 可視化・前処理・ICPによる位置合わせ
Open3D-ML Open3DにMLモデルを統合した拡張。RandLA-NetやKPConvを簡単に使える 深層学習モデルの適用
Pointcept Point Transformer V3・Sonataなどのトップモデルが実装されているフレームワーク SOTA精度のセグメンテーション
PyTorch Geometric(PyG) PointNet・PointNet++・GNN系モデルに対応した深層学習ライブラリ グラフ・点ベースモデルの実装
PCL(Point Cloud Library) C++ベースの老舗点群処理ライブラリ(Python bindingあり) 産業応用・組み込み系・ROS環境

9. まとめ

本記事では、画像認識の知識をベースに、点群データの基礎・前処理・古典的アルゴリズム・主なタスク・AIモデルまでを整理しました。

点群データの基礎

  • 点群データはXYZ座標を持つ点の集合で、LiDAR・深度センサ・フォトグラメトリなどで取得できる
  • 3D形状の表現形式として、点群のほかにメッシュデータ(三角形ポリゴン)があり、用途によって使い分けられる
  • ファイルフォーマットはXYZ・PLY・PCD・LAS/LAZなどがあり、利用環境や取得機器によって決まることが多い

画像データとの違い・前処理

  • 点群は規則的なグリッド構造を持たず、順不同かつ不規則なため、CNNをそのまま適用できない
  • データサイズが大きくなりやすいため、モデル入力前にボクセルダウンサンプリングなどで点数を削減するのが一般的

古典的な物体抽出

  • AIを使わない方法として、RANSAC(地面除去)+ Euclidean Cluster Extraction / DBSCAN(クラスタリング)を組み合わせたパイプラインが広く使われている
  • 学習データ不要・低計算コスト・確定的な動作が利点で、AIモデルとの組み合わせも多い

タスクとAIモデル

  • 主なタスクは「分類」「物体検出(3Dバウンディングボックス)」「セグメンテーション(セマンティック・インスタンス)」「位置合わせ」「アップサンプリング」「ノイズ除去・形状補完」
  • AIモデルは点ベース(PointNet系、RandLA-Net、PointNeXtなど)とボクセルベース(VoxelNet、PointPillars、OctFormer、Point Transformer V3など)に大別される
  • テキストと組み合わせたVLM(PointLLM等)も登場しているが、2025〜2026年時点では発展途上

実装の出発点としてはOpen3Dが使いやすく、古典的アルゴリズムから深層学習モデルまで幅広くカバーしています。各モデルの詳細や実装については別記事で取り上げる予定です。


参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?