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?

点群セグメンテーション用AIモデル入門 — PointNetから最新のPoint Transformer V3まで

0
Posted at

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

前記事「画像認識の知識から始める点群データ入門」では、点群データとは何か・前処理の基本・古典的なアルゴリズム・点群で扱う主なタスクの概要までを紹介しました。本記事はその続編として、セグメンテーション(各点にクラスラベルを付与するタスク)に特化した深層学習モデルを取り上げます。

対象読者は「これからセグメンテーションモデルを構築・選定しなければならないが、どのモデルをどう選べばよいかわからない」という方です。各モデルのアーキテクチャのエッセンス・ベンチマーク比較・評価指標・選定の考え方まで、一通り整理します。


目次

  1. 従来の画像認識モデル(CNN)との違い
  2. アプローチの分類:点ベース・ボクセルベース・投影ベース
  3. 代表的なモデルの解説
  4. ベンチマーク比較
  5. 評価指標
  6. モデル選定の考え方
  7. 補足特徴量(XYZ 以外の情報)の入力方法
  8. 主要ライブラリ
  9. まとめ

1. 従来の画像認識モデル(CNN)との違い

2D画像のセグメンテーションでは、U-Net や DeepLab のような CNN ベースのモデルが広く使われており、高精度なセグメンテーションを実現してきました。CNN が強力な理由のひとつは、画像が持つ規則的なグリッド構造にあります。画像は (H × W × チャンネル数) のテンソルで表現され、ピクセルが等間隔に並んでいるため、「隣のピクセル」を固定インデックスで参照できます。このおかげで、畳み込み演算(Conv)をそのまま効率的に適用できます。

一方、点群データは「規則的なグリッド」という前提を持ちません。このような性質が、点群処理と画像処理の大きな違いを生み出しています。

1-1. 順不同性(Order Invariance)

点群は点の集合であり、並び順に意味がありません。同じ形状の物体を表す点群でも、点を [p1, p2, p3, ...] の順で与えても [p3, p1, p2, ...] の順で与えても、幾何学的には同一です。

一方、CNN では入力テンソルのインデックス(ピクセルの位置)が空間的な意味を持ちます。同じ点群を並び替えて CNN に入力すると、全く異なる特徴が抽出されてしまいます。

1-2. 不規則性(Irregularity)

点群の各点は等間隔のグリッド上にありません。LiDAR スキャンでは、センサに近い部分は点が密集し、遠い部分は疎になります。画像の「隣のピクセル」のように固定されたインデックスで隣接関係を定義できないため、近傍点を探す際は KNN(K近傍法)や Ball Query などで都度計算が必要です。

1-3. 2D セグメンテーションとの対比

観点 2D セグメンテーション(U-Net 等) 点群セグメンテーション
入力形式 H × W × C のテンソル(規則的) N点 × 属性数 の集合(不規則)
近傍の定義 固定(上下左右の4近傍・8近傍) KNN / Ball Query で都度計算
畳み込み グリッド上で直接適用 点上の畳み込みを別途定義する必要がある
プーリング Max Pooling / Average Pooling(2D) 点集合全体の集約(対称関数を使用)
スキップ接続 解像度を落としながら復元(エンコーダ・デコーダ) 点数を段階的に削減・復元(SA / FP 層)

この2つの課題(順不同性・不規則性)に対して、研究者たちは「点群をそのまま処理する(点ベース)」か「一度規則的なグリッドに変換する(ボクセルベース)」という2つの方向性でアプローチしてきました。


2. アプローチの分類:点ベース・ボクセルベース・投影ベース

点ベース(Point-based)

点群の各点をそのままモデルへ入力し、点単位で特徴量を学習します。

  • 情報損失: なし(元の点の座標を保持)
  • 課題: 近傍探索(KNN・FPS など)が計算コストの律速になりやすい。数十万点以上の大規模点群の一括処理は工夫が必要
  • 代表モデル: PointNet、PointNet++、RandLA-Net、KPConv

ボクセルベース(Voxel-based)

3D 空間を均一な立方体(ボクセル)に分割し、各ボクセル内の点を集約した特徴量に変換してから処理します。ほとんどのボクセルは空であるため、実用上は Sparse Convolution(疎な畳み込み) で空ボクセルをスキップして計算効率を高めます。

  • 情報損失: ボクセル内の点をまとめることによる微小な損失あり
  • メリット: 規則的な構造になるため GPU 並列化が効率的。大規模点群でも対応しやすい
  • 代表モデル: Point Transformer V3(SpConv ベース)、Mink-UNet(MinkowskiEngine)

投影・ビューベース(Projection / View-based)

点群を一度 2D の構造化された形式に変換してから、2D CNN や標準的な画像処理手法を適用するアプローチです。2D 変換の方法によっていくつかの種類があります。

  • Range Image(レンジ画像)方式: 回転式 LiDAR のスキャンを球面投影して2D画像(高さ × 水平角度)に変換し、CNN を適用します。SqueezeSegRangeNet++CENet などが代表です。屋外 LiDAR(自動運転)に特化しており、処理速度が速いのが強みです
  • Multi-view(多視点)方式: 複数の視点から点群を2D画像として描画し、各ビューの CNN 特徴を集約します。MVCNNTangentConv などが代表です
  • BEV(Bird's Eye View)方式: 3D 空間を上空から見た俯瞰2D表現に変換します。自動運転の BEVFusion 等が代表で、LiDAR とカメラのマルチモーダル統合に強みがあります

2D CNN の豊富な資産を活かせる反面、投影によって幾何情報の一部が失われるデメリットがあります。2026年時点では点ベース・ボクセルベースに比べてセマンティックセグメンテーションのベンチマーク精度は低い傾向がありますが、LiDAR リアルタイム処理(自動運転など速度優先の場面)では有力な選択肢です。

  • 情報損失: 投影による損失あり(幾何情報の一部が失われる)
  • メリット: 2D CNN がそのまま使えるため GPU 効率が高く、実装が比較的容易
  • 代表モデル: SqueezeSeg・RangeNet++・CENet(Range Image)、MVCNN(Multi-view)、BEVFusion(BEV)

アプローチ比較表

観点 点ベース ボクセルベース 投影・ビューベース
情報損失 なし ボクセル集約による微小な損失あり 投影による損失あり(幾何情報の一部が消える)
大規模点群への対応 モデルによる(RandLA-Net は ○) Sparse Conv により概ね ○ Range Image 方式は ○(LiDAR 専用)
GPU 並列効率 不規則構造のため工夫が必要 グリッド構造で高効率 2D CNN がそのまま使えるため高効率
入力チャンネルの追加 柔軟 ボクセル集約の設計次第 投影チャンネルとして追加可
環境構築 比較的容易 SpConv 等の依存あり(やや複雑) 2D CNN ライブラリで対応可能
現時点の最高精度 RandLA-Net、KPConv PTv3(SOTA 水準) 点ベース・ボクセルベースより低い傾向

3. 代表的なモデルの解説

まず下表で各モデルの全体像をつかんでから、詳細を読みたいモデルの節に進んでください。ベンチマーク数値は「4. ベンチマーク比較」にまとめています。

モデル 発表年・学会 アプローチ キーアイデア 主な特徴・位置付け
PointNet 2017 / CVPR 点ベース Shared MLP + Max Pooling 先駆けのモデル。順不同性への対応を初めて実現したが、局所特徴は学習できない(→ 3-1)
PointNet++ 2017 / NeurIPS 点ベース 階層的 SA 層(FPS + Ball Query + PointNet) PointNet を階層化して局所特徴を学習。FPS が大規模点群では速度律速(→ 3-2)
KPConv 2019 / ICCV 点ベース 3D 空間上の畳み込みカーネル 幾何的特徴の把握に強い。精度と実装シンプルさのバランスが良い(→ 3-3)
RandLA-Net 2020 / CVPR Oral 点ベース ランダムサンプリング + LFA モジュール 1M 点超を一括処理できる軽量モデル。産業実務での採用実績が多い(→ 3-4)
PTv3 2024 / CVPR Oral ボクセルベース Sparse Conv + Serialization + Transformer 2026 年時点の SOTA 水準。精度は最高だが環境構築ハードルあり(→ 3-5)
Sonata 2025 / CVPR Highlight ボクセルベース PTv3 バックボーン + 自己蒸留事前学習 ラベルが少ない状況で威力発揮。非商用のみ(CC BY-NC 4.0)(→ 3-6)
PointNeXt 2022 / NeurIPS 点ベース InvResMLP ブロック + Residual + 学習戦略改善 PointNet++ を現代的に再設計。実装容易で精度大幅改善(→ 3-7)
OctFormer 2023 / SIGGRAPH ボクセルベース(八分木) OctAttention(線形複雑度) 大規模点群に効率的な Attention。ScanNet200 SOTA 水準(→ 3-8)
VLM 系(PointCLIP 等) 2022〜 / CVPR・ICCV 等 投影・VLM 融合 CLIP / LLM 空間への点群埋め込み ゼロショット・オープン語彙の3D理解を実現(→ 3-9)

3-1. PointNet(2017 / CVPR・Stanford)

点群を直接 DNN で処理した先駆けのモデルです。「順不同性」への対応として、各点を独立に処理したうえで最後に対称関数(Max Pooling)で集約するというシンプルなアイデアを採用しています。

アーキテクチャの流れ(セグメンテーション)

入力: N点 × 3 (XYZ座標)
 ↓
T-Net(Input Transform): 入力点群に対する3×3の変換行列を学習し、回転等の変動に対してロバストにする
 ↓
Shared MLP(64次元): 各点を独立に処理(N点 × 64)
 ↓
T-Net(Feature Transform): 64次元特徴空間での64×64変換行列を学習
 ↓
Shared MLP(64 → 128 → 1024次元): 局所特徴を高次元に変換
 ↓
Max Pooling: N点の特徴を1つの「グローバル特徴ベクトル」(1024次元)に集約
 ↓
(セグメンテーションの場合)局所特徴(64次元)とグローバル特徴(1024次元)を各点に連結
 → 1088次元のベクトルを各点が保持
 ↓
Shared MLP(512 → 256 → 128 → クラス数): 各点のラベルを出力

T-Net は「ミニ PointNet」とも呼ばれる小さなネットワークで、入力点群の姿勢・方向に対してロバストな変換行列を学習します。これにより、点群の向きが変わっても安定した特徴が得られます。

PointNet の限界

最大のアーキテクチャ上の制約は、各点を独立に処理する設計にあります。点同士の局所的な近傍関係(「この点の周囲にはどんな点が集まっているか」)を学習できないため、細かい局所的な形状の違いを捉えにくい傾向があります。

指標 数値
S3DIS Area5 mIoU 約 41%
パラメータ数 約 3.5M
ライセンス MIT

3-2. PointNet++(2017 / NeurIPS・Stanford)

PointNet の弱点(局所特徴の欠如)を克服するため、PointNet を階層的に積み重ねたモデルです。画像の CNN が畳み込みを繰り返してローカルパターンを段階的に統合していくのと同様に、点群でも「小さな近傍 → 広い近傍」という階層的な特徴学習を実現しています。

Set Abstraction(SA)層

PointNet++ の核となる処理単位が Set Abstraction 層で、3 つの処理で構成されます。

  1. Sampling(サンプリング): FPS(Farthest Point Sampling・最遠点サンプリング)で代表点を選択する。空間的に均一な分布の代表点群が得られる
  2. Grouping(グルーピング): 各代表点の周囲に Ball Query(半径 r 以内)で近傍点を集める
  3. PointNet: 集めた局所点群に PointNet を適用して局所特徴を抽出する

これを階層的に繰り返すことで、徐々に広い受容野の特徴を学習します。セグメンテーション時は Feature Propagation(FP)層でダウンサンプリングを逆順に辿りながら、各点への特徴を補間・復元します。

Multi-Scale Grouping(MSG)

密度が不均一な点群への対応として、異なる半径 r で複数の Ball Query を同時に適用し、各スケールの特徴を連結する MSG が採用されています。ただし計算コストは PointNet の単純適用に比べて大きくなります。

指標 数値
S3DIS Area5 mIoU 約 54%
ボトルネック FPS 処理が計算コスト高(数百万点の一括処理は困難)
ライセンス MIT

3-3. KPConv(2019 / ICCV・INRIA)

KPConv(Kernel Point Convolution)は、2D CNN の畳み込みカーネルを点群上で直接定義するアプローチです。2D CNN では格子上の固定位置にカーネルの重みを置きますが、KPConv では空間上の任意の点(カーネル点)にカーネルの重みを置き、近傍点との距離に応じた重み付きで畳み込みを行います。

これにより、「空間的な近傍構造」を学習できる点が PointNet 系との大きな違いです。

  • Rigid KPConv: カーネル点の位置が固定(2D CNN の通常の畳み込みに近い)
  • Deformable KPConv: カーネル点の位置が局所形状に応じて動的に変形する。複雑な形状の認識に強い
指標 数値
S3DIS Area5 mIoU 67.1%(rigid)/ 67.0%(deformable)
SemanticKITTI val mIoU 約 62%
ライセンス MIT

注意: KPConv の Python 実装として torch-points3d が以前は利用されていましたが、2021年4月以降メンテナンスが停止しています(PyPI の最終リリースは v1.3.0)。新規採用の場合は Open3D-ML 経由での利用を推奨します。


3-4. RandLA-Net(2020 / CVPR Oral・Oxford)

大規模点群処理に特化して設計された軽量モデルで、PointNet++ など既存手法と比べて最大200倍高速とされています(論文比較)。1M(100万)点以上を一括処理できる点ベースモデルとして、現在でも実用性の高いモデルです。

ランダムサンプリング + 局所特徴集約

PointNet++ では FPS で代表点を選択していましたが、FPS は計算コストが O(N²) 程度と高くなります。RandLA-Net はここをシンプルなランダムサンプリングに置き換え、速度の大幅改善を実現しました。

ただし、ランダムサンプリングでは重要な点が除外されるリスクがあります。この問題への対応として、独自の Local Feature Aggregation(LFA)モジュールを提案しています。

LFA モジュールの構成

  1. LocSE(Local Spatial Encoding): 各点と近傍点との相対座標・ユークリッド距離をエンコードし、近傍の空間的配置情報を特徴量に明示的に組み込む
  2. Attentive Pooling: MLP + Softmax で各近傍点に注意スコアを付与し、重要な特徴を優先的に集約する(機械的な Max Pooling より文脈をとらえやすい)
  3. Dilated Residual Block: LocSE + Attentive Pooling を複数段積み重ね、受容野を段階的に広げる

この設計により、ランダムサンプリングの情報損失をカバーしながら大規模点群を高速処理できます。

指標 数値
S3DIS Area5 mIoU 約 70%
SemanticKITTI val mIoU 約 54%
Semantic3D mIoU 約 77%(大規模屋外点群ベンチマーク)
大規模点群対応 ○(1M点以上を1パスで処理可能)
VRAM 目安(~1M点) 約 3〜5 GB
ライセンス MIT
Open3D-ML での利用 ○(ネイティブ実装あり)

産業応用での採用実績

RandLA-Net は研究にとどまらず、実務環境での採用実績が積み上がっています。電力インフラ(送電鉄塔の自動認識・分類)、建築測量(ドローン写真測量データからの BIM 作成)、都市・GIS 分野(都市スキャンの点群分類)などで使われている事例が報告されています(MDPI Sensors 2025 等)。

Open3D-ML 経由で利用でき、学習済み重みも公開されているため、「とにかく早く動かしたい」「既存の Open3D パイプラインに組み込みたい」という実務ニーズに応えやすいことが選ばれ続ける理由の一つです。


3-5. Point Transformer V3(2024 / CVPR Oral・CUHK / HKU)

2026年時点での 3D セマンティックセグメンテーション SOTA 水準のモデルです。CVPR 2024 で Oral(採択率 3.3% の上位 0.78%)に選ばれています。MIT ライセンスで商用利用可能です。

前バージョン(Point Transformer V2)は、各点に対して KNN で近傍を探索し Transformer の Attention を適用する設計でしたが、大規模点群では計算コストが高くなる課題がありました。PTv3 ではこの設計を根本から見直しています。

PTv3 の核心:Sparse Convolution ベースへの転換

PTv3 の最大の革新は、精緻な近傍探索を捨て、Sparse Convolution(疎な畳み込み)ベースの構造に切り替えた点にあります。

点群をボクセルグリッドに投影し、**Serialization(空間充填曲線によるシリアライズ)**で点を並べ直すことで、Transformer の Attention 計算を直列化して効率化しています。これにより、以下の改善を達成しています。

  • PTv2 比で 推論速度 3.3 倍高速化
  • PTv2 比で メモリ消費 10 倍削減
  • 精度は逆に向上(S3DIS、ScanNet、SemanticKITTI で SOTA)

また、位置エンコーディングに xCPE(Enhanced Conditional Positional Encoding) を採用し、Sparse Conv 層を Attention 層の前に挿入するシンプルな設計でパラメータ効率よく位置情報を学習します。

設計思想: PTv2 のように「精密な近傍探索による精緻な設計」より、「シンプルな設計でスケールさせること」の方が精度向上に効くという観点から、複雑さを意図的に削ぎ落としています。

指標 数値
S3DIS Area5 mIoU 73.6%(単独)/ 75.4%(+PPT 事前学習)
SemanticKITTI val mIoU 75.5%
VRAM 目安(~1M点) 約 10〜24 GB
ライセンス MIT(商用利用可)
実装フレームワーク Pointcept(公式)

コンペ・ベンチマークでの実績

PTv3 は研究コミュニティでの評価が非常に高く、2024 Waymo Open Dataset Challenge(自動運転の LiDAR 認識コンペ)で PTv3 をベースにした解法が1位を獲得しています(arXiv 2407.15282)。自動運転・ロボティクスなど最新の産業応用研究ではデファクトに近い存在になっています。

環境構築の注意点

一方で、PTv3 を実際に動かすには以下の依存関係を揃える必要があり、RandLA-Net に比べて環境構築のハードルが高めです。

  • SpConv: CUDA バージョンに合わせたビルド済みホイールが必要(例:spconv-cu118
  • FlashAttention: CUDA 11.6 以上が必須。Linux 向け開発が優先されており、Windows 環境での動作は公式にサポートされていない
  • フォールバック設定: FlashAttention を無効化(enable_flash=false)するとある程度の精度低下を許容して動かすことは可能だが、本来の性能は発揮できない

PoC フェーズや Windows ローカル環境での初期検証には向かないケースが多く、Linux + CUDA 環境が整った段階で本格投入するモデルと考えると現実的です。


3-6. Sonata(2025 / CVPR Highlight・The University of Hong Kong / Meta Reality Labs Research)

Point Transformer V3 をバックボーンとした自己教師あり事前学習モデルで、CVPR 2025 で Highlight(上位約 13%)に選ばれています。

2D 画像の世界では ImageNet で事前学習したモデルを様々なタスクにファインチューニングする手法が広く使われていますが、点群データにはそれに相当する汎用的な事前学習モデルがありませんでした。Sonata はこのギャップを埋めることを目指した研究です。

自己教師あり事前学習の仕組み

Sonata は Self-Distillation(自己蒸留) というアプローチを採用しています。

従来の 3D 自己教師あり学習の課題は、モデルが「局所的な幾何情報(空間座標)のショートカット」に頼ることで、表現が低レベルな空間特徴に崩壊してしまう問題でした。

Sonata では空間情報を意図的に隠蔽し、モデルが入力特徴(色・強度等)から意味的な表現を学ぶよう設計されています。

  • 学生モデル: ランダムなマスキング・変換を施した「難しいビュー」を処理する
  • 教師モデル: 学生モデルパラメータの指数移動平均(EMA)で管理され、「正解の表現」を提供する
  • 140,000 点群(ShapeNet55 + ScanNet + Structured3D など)を使った大規模事前学習

事前学習済み重みを Backbone として使い、その上にセグメンテーション用の Head を追加してファインチューニングすることで、少量のラベルデータでも高精度が得られます。

指標 数値
S3DIS Area5 mIoU SOTA
ScanNet 線形プローブ mIoU 72.5%(従来手法 21.8% から大幅改善)
ライセンス コード: Apache 2.0 / 事前学習済み重み: CC BY-NC 4.0(非商用のみ)
実装 facebookresearch/sonata / Pointcept

注意: Sonata のライセンスは CC BY-NC 4.0 のため、商用プロジェクトへの適用には注意が必要です。採用前にライセンスの確認が必須です。


3-7. PointNeXt(2022 / NeurIPS・KAUST 等)

PointNet++ を現代的な学習・スケーリング戦略で再設計したモデルです。新しいアーキテクチャを一から提案するのではなく、「PointNet++ のアーキテクチャはそのままに、学習設計・正規化・ネットワーク拡張方法を改善するだけで大幅な精度向上が得られる」という洞察を実証した研究です。

主な改善点

  1. InvResMLP ブロック: Inverted Residual(逆残差)構造と Separable MLP を組み合わせたブロック。これ単体で PointNet++ に比べて S3DIS で約 +3.9% mIoU・推論速度3倍向上を達成
  2. Residual 接続の追加: PointNet++ には残差接続がなく、省略すると最大 6.5% mIoU の性能低下が生じることを実験で示した
  3. 学習戦略の改善: データ拡張(スケール・色ジッタ等)・正規化手法の最適化。アーキテクチャ変更なしでも数% 改善できることを確認

これらを組み合わせることで、PointNet++(S3DIS 6-fold ~54%)から 74.9%(PointNeXt-XL) まで mIoU が大幅に改善しました。

指標 数値
S3DIS 6-fold mIoU 74.9%(PointNeXt-XL)
SemanticKITTI val mIoU 約 67%(PointNeXt-S)
ライセンス MIT
実装 guochengqian/PointNeXt(GitHub)

PointNeXt は「学習設計そのものが精度の鍵」という視点を強調しており、PointNet++ ベースで構築した際に精度が伸び悩んでいる場合は、アーキテクチャ変更より先にデータ拡張・正規化・スケジューラの見直しから入るのが効果的です。


3-8. OctFormer(2023 / SIGGRAPH・北京大学)

八分木(Octree)構造を活かした線形複雑度の Transformer モデルです。Octree は 3D 空間を再帰的に 8 つの子ノードに分割する木構造で、疎なデータ(点群)の圧縮表現に適しています。OctFormer はこの構造上で Attention 計算を行うことで、大規模点群でも高速処理を実現しています。

OctAttention の仕組み

OctFormer の核となる OctAttention は、Octree ノード(ボクセル)をソートされたキーで並べ替え、固定サイズのローカルウィンドウに分割して Attention を計算します。

  • ウィンドウ内の点数を固定することで、計算量が点数 N に対して線形になる(標準 Transformer は O(N²))
  • 200,000 点以上の場合、既存の点群 Attention 手法と比べて最大17倍高速
  • わずか 10 行のコードで実装できるシンプルな設計

ベンチマーク

指標 数値
ScanNet200 mIoU Sparse-voxel CNN を +7.3 mIoU 上回る水準
S3DIS / ScanNet 点群 Transformer・Sparse-voxel CNN の双方を上回る精度
ライセンス MIT
実装 octree-nn/octformer(GitHub)

OctFormer は特に ScanNet200(200 クラスの細粒度屋内セグメンテーション)で強みを発揮します。Octree の階層構造が細かい物体形状の表現に有利に働くためです。PTv3 が全般的な SOTA を押さえているのに対し、OctFormer は細粒度分類・屋内シーンでの競合モデルとして位置付けられます。


3-9. 点群 × VLM(Vision-Language Model):ゼロショット・オープン語彙への拡張

ここまで紹介したモデルは、いずれも「決められたクラスセット」で事前学習・ファインチューニングして使う教師あり学習ベースのアプローチです。

一方、近年は VLM(Vision-Language Model) と点群を組み合わせることで、「ゼロショット分類(学習時に見ていないクラスの識別)」や「オープン語彙セグメンテーション(テキストで自由にクラスを指定)」を実現する研究が急速に進んでいます。

なぜ VLM と点群を組み合わせるのか

CLIP(Contrastive Language-Image Pre-training)に代表される VLM は、画像とテキストを同じ埋め込み空間に圧縮する大規模事前学習モデルです。これを点群に応用することで、「ラベルなし・または少数ラベルで 3D 理解を行う」ことが可能になります。

教師あり点群セグメンテーションの課題として、高品質な 3D ラベリングは 2D に比べて非常にコストが高い(点群 1 シーンのアノテーションに数時間〜数十時間かかることも)という現実があります。VLM 活用はこのボトルネックを回避する有望なアプローチです。

代表的なモデル

PointCLIP(CVPR 2022)

最初の CLIP × 点群の研究です。点群を複数視点からの深度マップ(2D画像)に投影し、各ビューを CLIP の画像エンコーダで処理、CLIP のテキストエンコーダで生成した 3D カテゴリ記述との類似度でゼロショット分類を行います。

  • 1-shot 学習で PointNet を +25% 以上上回る精度(ModelNet40)
  • 追加の 3D 学習なしに CLIP の事前知識を活用できる
  • 制約: 深度マップへの投影により、幾何情報の一部が失われる

PointCLIP V2(ICCV 2023)

PointCLIP の2つの課題(投影品質・テキストプロンプトの汎用性)を改善しています。

  • リアルな投影モジュール: ボクセル変換 + ガウシアンフィルタで深度マップをより自然な画像に変換。Phong シェーディングと比べ 67 倍高速
  • GPT-3 によるプロンプト生成: 手作りテキストの代わりに GPT-3 が 3D 意味論に特化した記述を自動生成
  • PointCLIP 比でゼロショット精度 +28〜+43%(3データセットで検証)

OpenScene(CVPR 2023)

明示的な 3D アノテーションなしでオープン語彙の 3D 理解を実現するアプローチです。

  • 多視点画像の各ピクセルに対して CLIP 特徴量を割り当て、それを 3D 点群に逆投影して蒸留する
  • Sparse 3D Conv ネットワークで点群の幾何特徴も学習し、2D 特徴と組み合わせる
  • 応用: セマンティックセグメンテーション・アフォーダンス推定・テキストによる 3D オブジェクト検索

PointLLM(ECCV 2024)

点群を LLM(大規模言語モデル)で直接理解させるモデルです。

  • 色情報付き点群を入力として、オブジェクトの種類・幾何構造・外観を自然言語で記述・質問応答できる
  • 2D 画像の深度・遮蔽・視点依存性の問題を排除
  • 点群に関するオープンエンドな質問応答・キャプション生成が可能

教師ありモデルとの使い分け

場面 推奨アプローチ
固定クラスで大量ラベルあり RandLA-Net / PTv3(教師あり)
固定クラスだがラベルが少ない Sonata 事前学習 + ファインチューニング
クラスを柔軟に変更・追加したい OpenScene / PointCLIP V2(VLM ベース)
ゼロショットでまず試したい PointCLIP V2
3D QA・テキスト記述が必要 PointLLM / 3D-LLM 系

VLM 系モデルは精度で教師ありモデルを上回ることは現時点では稀ですが、「ラベリングコストの削減」「未知クラスへの対応」「テキストによる柔軟な指示」という観点では独自の強みがあります。用途に応じて教師あり手法との組み合わせも有効です。


4. ベンチマーク比較

代表的なモデルの精度をまとめます。

ベンチマークについて

  • S3DIS Area5 mIoU: 屋内シーン(オフィス・廊下等)の点群セグメンテーション精度。Area5 を評価データとして使用
  • SemanticKITTI val mIoU: 屋外大規模 LiDAR(自動運転想定)の点群セグメンテーション精度
モデル 発表年 タイプ S3DIS Area5 mIoU SemanticKITTI val mIoU 大規模点群対応 ライセンス
PointNet 2017 点ベース ~41% MIT
PointNet++ 2017 点ベース ~54% △(FPS 律速) MIT
KPConv 2019 点ベース ~67% ~62% MIT
RandLA-Net 2020 点ベース ~70% ~54% MIT
PTv2 2022 ボクセルベース ~72% ~67% MIT
PointNeXt 2022 点ベース 74.9%(6-fold) ~67% MIT
OctFormer 2023 ボクセルベース(八分木) MIT
PTv3 2024 ボクセルベース 73.6%(単独)/ 75.4%(+PPT) 75.5% MIT
Sonata+PTv3 2025 ボクセルベース SOTA SOTA CC BY-NC 4.0

数値は各論文・公式リポジトリに基づきますが、評価設定(入力特徴量・分割方法)によって差異が生じる場合があります。OctFormer は ScanNet200 での精度が強みで S3DIS / SemanticKITTI での公開数値が少ないため「—」としています。最新値は Papers With Code(S3DIS Area5) や各論文で確認してください。


5. 評価指標

点群セグメンテーションの評価では、画像認識でよく使われる OA(Overall Accuracy:全体精度) を主指標にすることは推奨されません。

5-1. なぜ OA が主指標に向かないのか

点群データでは、クラス間の点数が大きく偏ることが一般的です。例えば、LiDAR で屋外をスキャンすると「地面」の点が大半を占め、「歩行者」や「自転車」の点は全体のごく一部に過ぎません。

このようなクラス不均衡がある場合、モデルがすべての点を「地面」と予測するだけで OA が非常に高くなり、本当に検出したいクラス(歩行者など)を1点も検出できていない状態でもスコアが高く見えてしまいます。

5-2. 主指標:mIoU

mIoU(mean Intersection over Union) は、各クラスの IoU を単純平均した指標です。

クラス c の IoU = TP_c / (TP_c + FP_c + FN_c)

TP_c: クラス c と予測、かつ正解もクラス c の点数
FP_c: クラス c と予測したが、正解が別クラスの点数(誤検出)
FN_c: 正解はクラス c だが、別クラスと予測した点数(見逃し)

mIoU = 全クラスの IoU の平均

点数が少ないクラスも等価に評価されるため、クラス不均衡に対してロバストです。点群セグメンテーションの論文・ベンチマークでは標準的に mIoU が使用されます。

5-3. 補完指標

mIoU と合わせて確認しておきたい指標を整理します。

指標 内容 主な活用
class-wise IoU 各クラス個別の IoU どのクラスが識別できていないかを直接把握する
Recall(クラス別) TP / (TP + FN):正解クラスのうち正しく予測できた割合 「見逃し」が許容できないクラスを監視する(例:除去したいノイズクラスの Recall)
Precision(クラス別) TP / (TP + FP):予測クラスのうち正解の割合 誤検出(別クラスをそのクラスと判定してしまう)を監視する
F1(クラス別) Precision と Recall の調和平均 偽陽性・偽陰性を両方バランスよく評価したい場合
OA 全点の正解率 参考値のみ(主指標として不適)

実際のプロジェクトでは「どのクラスの検出漏れが問題か」「どのクラスの誤検出が致命的か」を整理し、mIoU に加えて必要なクラスの Recall・Precision を監視する設計が重要です。


6. モデル選定の考え方

6-1. 主な判断軸

モデルを選定する際は、以下の要素を確認してください。

判断軸 確認事項
データ規模 点群は1シーン何点か。1M点以上かどうかが目安
GPU 環境 VRAM 容量、CUDA 対応可否(AMD GPU は ROCm が必要で iGPU は非対応の場合あり)
ラベルデータの量 十分なラベルデータがあるか。少ない場合は事前学習済み重みの活用を検討
ライセンス 商用利用する場合、CC BY-NC(Sonata 等)は使用不可
実装ライブラリとの相性 既存スタックに Open3D がある場合 Open3D-ML が自然、SOTA 精度を優先するなら Pointcept

6-2. 選定フローの目安

① データ規模を確認
  ├─ 1M点以下(室内シーン等)
  │    → PointNet++、KPConv、PTv3 いずれも選択肢
  └─ 1M点超(屋外 LiDAR 等)
       → RandLA-Net または PTv3(チャンク処理あり)が現実的

② GPU 環境を確認
  ├─ VRAM 8 GB(NVIDIA)
  │    → RandLA-Net(VRAM ~3〜5 GB)が第1候補
  │    → PTv3 は VRAM 不足になる可能性(要確認)
  └─ VRAM 16 GB 以上(または A4000 等)
       → PTv3(Pointcept)が最高精度を狙える

③ ラベルデータの量を確認
  ├─ 十分なラベルデータあり
  │    → PTv3(SemanticKITTI / ScanNet 学習済み重みからファインチューニング)
  └─ ラベルデータが少ない
       → Sonata 事前学習重み + PTv3(※CC BY-NC 4.0 ライセンス要確認)

④ 商用利用の確認
  └─ Sonata は CC BY-NC 4.0 のため商用不可。商用なら PTv3(MIT)を選択

6-3. RandLA-Net vs PTv3:実際の使い分け

「PTv3 の方が精度が高いなら PTv3 一択では?」という疑問はもっともです。ただし、GitHub スター数は RandLA-Net 約1,500★・PTv3 約1,300★ とほぼ同等であり、どちらも現役で使われているモデルです。両者の役割は性能の優劣ではなく、用途・環境による分化と捉えるのが実態に近いです。

観点 RandLA-Net PTv3
精度 mIoU ~70%(S3DIS)/ ~54%(KITTI) mIoU 78%+(S3DIS)/ 75.5%(KITTI)
環境構築の難易度 容易(pip install 数本、Open3D-ML 統合) 高め(SpConv・FlashAttention・CUDA 必須)
Windows 対応 △(FlashAttention は Linux 優先)
VRAM 目安 3〜5 GB 10〜24 GB
主な採用場面 産業実務・PoC・リソース制約あり環境 研究・コンペ・本番 SOTA が必要な場合
実績 電力インフラ・BIM・GIS 等の実務事例あり Waymo 2024 LiDAR チャレンジ1位など

RandLA-Net を選ぶべき場面

  • VRAM 8 GB 以下の GPU 環境
  • Windows ローカルや Linux 環境が整っていない PoC フェーズ
  • Open3D パイプラインにそのまま統合したい
  • 実装の安定性・シンプルさを優先したい

PTv3 を選ぶべき場面

  • Linux + CUDA 環境が整っており、VRAM 16 GB 以上が確保できる
  • ベンチマーク最高精度を目標にしている(研究・コンペ)
  • 自動運転・ロボティクスなど最先端の産業研究に取り組んでいる

6-4. 実用的なスタート地点

初めて点群セグメンテーションモデルを構築する場合、RandLA-Net + Open3D-ML から始めるのが現実的です。

  • Open3D-ML に公式実装とモデル Zoo(SemanticKITTI / Semantic3D の学習済み重み)が用意されており、ゼロから環境構築する手間が少ない
  • 大規模点群の処理を念頭に置いた設計で、VRAM 消費も比較的抑えられる
  • 精度・速度要件を実測した結果として不十分と判明した場合に、PTv3(Pointcept)への移行を検討する。その際は Linux + 十分な VRAM の確保を前提にする

7. 補足特徴量(XYZ 以外の情報)の入力方法

実際のプロジェクトでは、XYZ 座標だけでなく反射強度(Intensity)・RGB カラー・法線ベクトルなどの補足情報を特徴量として使いたい場面があります。本節では、センサーごとの代表的な補足特徴量、各アーキテクチャでの入力方法、正規化のベストプラクティスを整理します。

7-1. センサーごとの代表的な補足特徴量

特徴量 センサー 説明 値の目安
反射強度(Intensity / Reflectance) LiDAR レーザー返射パルスの強度。路面・金属・植生などで差が出る センサー依存(8bit なら 0〜255)
リング ID(Ring / Beam ID) LiDAR 何番目のレーザービームによる点かを示す整数 0〜(ビーム数−1)。Velodyne 64 線なら 0〜63
タイムスタンプ差分(Δt) LiDAR 1 スキャン内での相対時刻。動的物体の歪み補正に有用 通常 0〜1 に正規化
RGB 色情報 RGB-D / カラー LiDAR 各点に紐付けられた色。カメラ融合またはカラー LiDAR から取得 各チャネル 0〜255
法線ベクトル(Normals) 任意(後処理で算出) 表面法線方向の単位ベクトル。PCL / Open3D の PCA ベース推定で計算可能 各成分 −1〜1(L2 正規化済み)

注意: 反射強度の値はセンサーモデルに依存しており、異なるメーカー・型番のセンサー間で直接比較できません。例えば、nuScenes のデフォルト設定では強度は使用されず [x, y, z, Δt] の 4 次元が標準で、これは複数センサーを想定した仕様です。

7-2. 入力方法:アーキテクチャ別の処理

共通パターン:早期融合(Early Fusion)

ほぼすべてのアーキテクチャで採用されているのが早期融合です。入力層で XYZ 座標に補足特徴量を連結し、N 点 × (3 + D) の形式にします(D = 補足特徴量の次元数)。

# 例:XYZ + 反射強度(1次元) + RGB(3次元) → 7次元の入力
入力テンソル: N点 × 7
  [x, y, z, intensity, r, g, b]

点ベース(PointNet / PointNet++ / PointNeXt)

XYZ 座標と補足特徴量を連結した N × (3 + D) テンソルをそのまま入力します。PointNet の原論文でも D > 0 の入力は設計上サポートされており、法線・RGB 等を付加した実験も行われています。PointNet++ では Set Abstraction (SA) 層が各点の座標と特徴量を受け取り、Ball Query による近傍点とともに PointNet で処理します。Feature Propagation (FP) 層でもアップサンプリング時に特徴量が補間・伝播されます。

点ベース(RandLA-Net)

Local Feature Aggregation (LFA) の最初の処理である LocSE(Local Spatial Encoding)は、各点と近傍点の相対座標・ユークリッド距離をエンコードして幾何情報を明示化します。このエンコードされた幾何情報に補足特徴量(強度・RGB 等)が連結されてから Attentive Pooling に渡されます。

重要な制約: 訓練時と推論時で特徴量の種類と次元を完全に一致させる必要があります。訓練時に D=1(強度のみ)で学習したモデルに、推論時に D=4(強度+RGB)を渡すと次元が合わず動作しません。

ボクセルベース(PTv3 / Pointcept)

ボクセル化の際、同一ボクセルに落ちた複数点の特徴量を平均プーリングで1つに集約してからネットワークに渡します。Pointcept フレームワークでは入力辞書の "feat" キーに特徴量テンソルを格納します。

# Pointcept への入力例
input_dict = {
    "coord": coord,      # N × 3  (XYZ 座標)
    "feat": feat,        # N × D  (補足特徴量。強度・RGB 等)
    "grid_size": 0.04,   # ボクセルサイズ(メートル)
    "offset": offset,    # バッチ境界インデックス
}

色・法線が利用できない場合はゼロベクトルで埋めて処理を継続することも可能です。ただし、事前学習済み重みと入力次元を一致させる必要があります(詳細は 7-4 節)。

投影ベース(Range Image / BEV)

Range Image 方式では、反射強度やリング ID を追加チャネルとして積み重ねます。SqueezeSeg / RangeNet++ はこの多チャネル入力形式をネイティブにサポートしています。

Range Image チャネル例(5 チャネル):
  ch0: 距離(depth)
  ch1: x  /  ch2: y  /  ch3: z
  ch4: 反射強度(intensity)

BEV 方式でも同様に高さ情報・強度・密度などを追加チャネルとして積み重ねる設計が一般的です。

7-3. 正規化のベストプラクティス

特徴量の種類によって適切なスケーリング方法が異なります。学習の安定性と精度のために、必ず正規化を施してください。

特徴量 正規化方法 具体例
XYZ 座標 重心を引いてゼロ平均化 → 最大距離でスケール(単位球に収める) (xyz − mean) / max_dist
反射強度 センサーの値域で 0〜1 に正規化 intensity / 255.0(8bit センサーの場合)
RGB 各チャネルを 0〜1 に正規化 rgb / 255.0
法線ベクトル L2 正規化(単位ベクトル化) normal / ‖normal‖₂
Δt(タイムスタンプ) 1 スキャン内の相対時刻として 0〜1 に正規化 (t − t_min) / (t_max − t_min)
リング ID ビーム数で 0〜1 に正規化 ring_id / (num_beams − 1)

異なるセンサーのデータを混在させる場合は、強度をセンサーごとにパーセンタイル正規化(1〜99 パーセンタイルで 0〜1 にクリップ)するのが安全です。

7-4. 事前学習済み重みを使う場合の次元ミスマッチへの対応

PTv3 などの公開されている事前学習済み重みは特定の特徴量次元を前提にしています(例:SemanticKITTI 学習済み重みは D=4:強度1次元 + 付加情報)。手元のデータの次元が異なる場合の対処法を示します。

状況 対応策 特徴
手元データの次元が少ない ゼロパディング:足りないチャネルをゼロで埋める 手軽。精度への影響は用途次第で小さい場合が多い
手元データの次元が多い / 異なる 入力 Linear 層のみ再初期化してファインチューニング バックボーン残りの重みは保持できる
少量ラベルで効率よく適応したい 軽量アダプター(PEFT)を入力層に追加 Point-PEFT 等の手法。追加パラメータを最小限に抑えつつ高精度

どの方法を採用するにしても、ファインチューニング後の訓練・推論間で特徴量セットと正規化方法を完全に揃えることが精度維持の前提条件です。


8. 主要ライブラリ

ライブラリ 概要 主な用途
Open3D 点群の読み書き・可視化・前処理(ダウンサンプリング・ICP等)の汎用ライブラリ 可視化・前処理の基盤。初学者におすすめ
Open3D-ML Open3D に ML モデルを統合した拡張。RandLA-Net・KPConv・PointNet++ が使える Open3D スタックのまま深層学習モデルを適用したい場合
Pointcept PTv3・Sonata・PTv2 などトップモデルの公式実装フレームワーク SOTA 精度が必要な場合の主要選択肢
PyTorch Geometric(PyG) PointNet・PointNet++ の実装があるグラフ・点ベースモデル向け深層学習ライブラリ PointNet 系モデルやグラフニューラルネットワーク
PCL(Point Cloud Library) C++ ベースの老舗点群処理ライブラリ(Python binding あり) 産業応用・ROS 環境・古典的アルゴリズム

torch-points3d は KPConv や RandLA-Net 等の実装を含むライブラリですが、2021 年 4 月以降メンテナンスが停止しています。新規プロジェクトでは使用しないことを推奨します(Open3D-ML または各モデルの公式リポジトリを使用する)。


9. まとめ

本記事では、点群セグメンテーション用の深層学習モデルについて、アーキテクチャの仕組みからモデル選定の考え方まで整理しました。

なぜ CNN が直接使えないか

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

代表的なモデルの位置付け

  • PointNet: 先駆けのモデル。シンプルだが局所特徴を学習できない
  • PointNet++: 局所特徴を階層的に学習。大規模点群には FPS が律速になりやすい
  • KPConv: 空間上で畳み込みカーネルを定義。幾何学的特徴の把握に強い
  • RandLA-Net: 大規模点群に特化した軽量モデル。1M 点以上の処理に実用的
  • PTv3: Sparse Conv + Transformer で 2026 年時点の SOTA 水準。MIT ライセンスで商用利用可
  • Sonata: PTv3 バックボーンの自己教師あり事前学習モデル。ラベルが少ない状況に強い(非商用のみ)
  • PointNeXt: PointNet++ を現代的学習戦略で再設計。実装が容易で精度が大幅改善
  • OctFormer: 八分木構造 + 線形複雑度 Attention。大規模・細粒度分類に強い
  • VLM 系(PointCLIP・OpenScene 等): CLIP / LLM との統合でゼロショット・オープン語彙の 3D 理解を実現。ラベルコスト削減に有効

評価指標

  • OA(全体精度)ではなく mIoU を主指標とする。クラス不均衡に対してロバストで、論文・ベンチマークの標準
  • 用途に応じて class-wise IoU・Recall・Precision を補完指標として監視する

補足特徴量の入力方法

  • 早期融合が基本: 反射強度・RGB・法線などを入力層で XYZ と連結する N × (3 + D) 形式はアーキテクチャを問わず使える
  • 反射強度はセンサー依存の値のため、異なるセンサーのデータを混在させる場合はパーセンタイル正規化が安全
  • 事前学習済み重みと入力次元が異なる場合は、ゼロパディング・入力層のみ再初期化・PEFT アダプターのいずれかで対処する
  • 訓練時と推論時の特徴量セット・正規化方法は完全に揃えること

RandLA-Net vs PTv3 の使い分け

  • 両モデルの GitHub スターは同程度(各 ~1,300〜1,500★)で、どちらも現役。「PTv3 が最適解」とは一概に言えない
  • RandLA-Net:環境構築が容易・VRAM 消費が小さい・Windows 対応・産業実務への採用実績あり。PoC や制約あり環境の第1候補
  • PTv3:精度は SOTA 水準だが SpConv + FlashAttention + Linux + VRAM 16 GB 以上が実質必要。研究・コンペ・本番最高精度を狙う場面向け
  • まず RandLA-Net + Open3D-ML から始め、精度・速度の実測結果を見て PTv3 への移行を判断するのが現実的な進め方
  • ラベルデータが少なければ Sonata 事前学習重みを活用(CC BY-NC 4.0 ライセンス確認必須)

参考

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?