ソフトウェア技術部のM.S.です。当社では、「Data for AI」の取り組みのもと、AIモデル開発やシミュレーションに活用できる「AIネイティブデータ」の研究開発を進めています。その中で注力している技術の一つが、複数の画像からフォトリアルな3次元空間を生成できる「3D Gaussian Splatting(3DGS)」です。
前回のテックブログでは、当社が保有する実データアセットを用いた3DGSの初期プロトタイプ検証について紹介しました。今回はその制作過程の裏側として、道路空間の3DGS構築で課題となった「移動体除去」について紹介します。
なぜ道路空間の3DGSでは移動体除去が重要なのか
3DGSは、複数視点の画像データを使用し、高精細な3次元表現を効率的に生成できる技術です。建物の外観や室内空間など、比較的静的な対象であれば、入力画像の見た目をもとにフォトリアリスティックな空間表現を構築できます。
一方、道路空間はそう単純ではありません。道路上には、走行車両、自転車、歩行者など、さまざまな「移動体」が常に存在します。
これらが写った画像をそのまま3DGS生成に利用すると、視点によって車両が見えたり消えたりする、あるいは空中に不自然なノイズ(アーティファクト)が残る、といった問題が発生します。
そのため、道路環境の3DGSモデルを生成するうえでは、移動体を丁寧に除去する必要があります。これは単なる前処理ではなく、生成される3D空間の再現品質を左右する重要な工程です。

上の画像でも一目瞭然ですが、移動体除去なしは車両の残像が環境の一部として残ってしまい、シミュレーション等で扱いづらいものになってしまいました。
AIは車両を見つけられても、「残す・消す」は判断できなかった
当初は、AIによる物体検出で車両や歩行者を検出し、その領域をマスクすれば移動体除去は実現できると考えていました。実際、画像中の車両や人物の領域はかなり高い精度で抽出できました。
しかし、道路環境ではすぐに別の問題に直面しました。車両として検出されたものが、必ずしも「消すべきもの」とは限らないのです。
たとえば、計測車両とすれ違った車両や並走していた車両は移動体として扱うべき対象です。一方で、路上駐車の車両は、計測時点では道路空間の一部として存在している静止物体です。
当初、検出された車両を一律にマスクしたところ、路上駐車があった場所に大きな穴が開いたような生成結果になってしまいました。重要なのは「車両かどうか」ではなく、「3DGSで再現したい静的な道路空間に含めるべきかどうか」でした。この判断には、画像1枚だけでなく、前後フレームや道路上の文脈を確認する必要がありました。

もう一つの壁:画像と点群データの両方で整合を取る
今回の3DGS生成では、カメラ画像だけでなく、LiDARで取得した点群データも利用しています。そのため画像で移動体にマスクをかけても、点群データ側に同じ物体が残っていると、3DGS上には車両が再現されてしまいます。
つまり、消すべき移動体は画像と点群データの両方から取り除き、残すべき静止物体は両方に残す必要があります。画像マスクと点群フィルタリングを別々に行うのではなく、同じ判断を両方のデータへ反映することが重要でした。
これが道路空間向け3DGSにおける移動体除去の難しいところでした。画像では車両として認識できても、点群データ側では物体の形がうまく分離できていない場合があります。逆に、点群データでは物体の存在が確認できても、画像では遮蔽や影の影響で判断しづらい場合もあります。
そこで、点群データと画像を同時に確認しながら、移動体として除去するか、静止物体として残すかを判断できる仕組みが必要になりました。


画像での移動体除去は、上の写真の赤い領域のようにマスクをかけて行います。3DGS生成の際には、この領域を除外することで、車両や歩行者などの移動体が3DGSモデルに含まれなくなります。
半自動化のためのアノテーションツール開発
前述の課題に対応するため、AI検出結果を人が効率よく確認・修正できるアノテーションツールを開発しました。目的は、点群データと画像を別々に処理することではなく、両者を照らし合わせながら「除去する物体」と「残す物体」を判断できるようにすることです。
このツールでは、点群データを物体ごとに分ける処理や種類を判定する処理、カメラ画像との対応付け、画像上での物体検出や追跡などを組み合わせ、道路上の物体をアノテーションできるようにしました。点群データ上で確認した物体を画像に投影し、前後の画像フレームでその物体がどのように振る舞っているのかを確認しながら、移動体として除去するか、静止物体として残すかを判断します。
また、キーボード操作、Bird’s-eye View(鳥瞰視点)表示、マルチスレッド並列化なども取り入れ、作業効率の向上を図りました。
開発には生成AIも活用しました。5年前であれば開発に半年以上はかかっていたと思われますが、最初のバージョンは約1週間で構築することができました。

左:カメラ画像上で物体を確認 中央:点群データの鳥瞰視点 右:同じ場所の複数時刻の画像
意外な難敵は「影」だった
移動体除去で対象になるのは、車両や人だけではありません。3DGS生成では、空、自車両、移動体の影なども結果に影響します。特に影は見落としやすく、車両本体を除去しても影を残してしまうと、3DGS上に影が再現されてしまうことがあります。
この問題に対しては、物体の輪郭だけを細かく切り取るのではなく、必要に応じて物体検出の矩形領域を使って、影を含めて広めにマスクする方が有効な場合がありました。道路面を残したい一方で、移動体の痕跡も残したくない。このバランス調整も、道路空間ならではの難しい点でした。
移動体除去の到達点
今回の取り組みにより、道路上の移動体を画像と点群データの双方から除去し、3DGS生成用データとして扱える形に整えるワークフローを構築できました。また、車両や構造物に隠れて取得できていなかった点群データについても、複数回走行して取得したデータを組み合わせることで補完しています。
とはいえ、まだ課題は残っています。道路環境は交通量、遮蔽、光条件、カメラ配置、点群密度によって大きく変化します。どのケースでも完全に自動で高品質な結果が得られる段階ではありません。それでも、当初は手探りだった移動体除去が、検出、確認、画像マスク生成、点群除去、再生成という一連の工程として回るようになったことは大きな前進でした。
実際、道路上の移動物体は点群データと画像の双方から概ね除去できるようになり、3DGSで表現した静的な道路空間は納得いくレベルに到達することができました。これは、3DGSの見た目を改善するだけでなく、将来的に自動運転、ロボティクス、フィジカルAI、各種シミュレーションなどで活用できるAIネイティブデータの重要な土台になると考えています。
【生成した3DGSのサンプル動画】
交差点シーンを対象にした3DGSの生成例を以下の動画で公開しています。
おわりに:3DGSの前に、データと向き合う
今回の取り組みを通じて改めて感じたのは、3DGSの品質は生成技術だけで決まるものではないということです。特に道路空間のように動的な要素が多い環境では、生成前のデータ整備が結果を大きく左右します。
「移動体を消す」と一言で言っても、実際には、残すべき静止物体と消すべき移動物体を見分け、画像と点群データの両方で整合を取り、マスクの品質を確認し、再生成して結果を見る、という地道な工程の積み重ねです。うまくいかないことも多く、何度もやり直しました。しかし、その試行錯誤の中で、道路空間向け3DGSに必要な前処理の勘所が少しずつ見えてきました。
今後は、より多様な道路環境での検証、品質評価指標の整理、高精度3次元地図データやセマンティック情報との連携を進めながら、AIネイティブデータとして価値のある3DGSデータの実現を目指していきます。
【Appendix】
アノテーションツールを構成する主な技術
| カテゴリ | 技術 | 主な処理 | 狙い |
| 点群データ | 地表面分類 | 点群データを地表面と非地表面に分類 | 後処理のクラスタリングを安定させる |
| 点群データ | クラスタリング | 非地表点群を物体単位の候補に分割 | 車両や人などの候補を扱いやすくする |
| 点群データ | クラス分類 | 形状や大きさなどに基づくルールベースの分類 | 移動体候補と道路構造物を分ける |
| 点群データ・画像 | 点群重畳表示 | 世界座標系・カメラ座標系・画像座標系間の座標変換 | 点群クラスタを画像上で確認する |
| 画像 | 物体検出 | 画像物体検出により車両・歩行者などを検出 | 移動体候補を自動抽出する |
| 画像 | 物体追跡 | 同一物体を複数フレームで追跡 | 同じ物体をまとめて判断しやすくする |
