オープンソースAIモデルの「SHARP」で生成AIで作成した画像を3D Gaussian Splatting してみた

オープンソースAIモデルの「SHARP」で生成AIで作成した画像を3D Gaussian Splatting してみた

デジタルツイン関連で最近よく目にするガウシアン。最近Appleが公開したオープンソースAIモデルの「SHARP」もなにやらガウシアン関係らしいので、さっそくさわってみました。
2025.12.19

こんにちは、製造ビジネステクノロジー部の熊膳です。当エントリは クラスメソッド発 製造業 Advent Calendar 2025の19日目のエントリです。

昨年 デジタルツインを理解するために4つの要素で整理してみました というエントリを書きましたが、それから1年、デジタルツインの活用事例を多く見かけるようになってきました。
その中でとくに目にする頻度が高まったのが、LiDAR やフォトグラメトリなどから得られる「点群データ」です。私自身も案件にたずさわったり、展示会で実際に動くものにふれる機会が増えました。
そして最近、その点群データを扱うシーンのなかで、よく見かけるようになったのが「ガウシアン(Gaussian)」という表現です。

本記事では、このガウシアン表現を用いた Apple の手法「SHARP」を実際に試し、「画像から 3D Gaussians を生成する」ところまでのプロセスをまとめていきます。

【補足】 点群データとガウシアンについて

点群データとガウシアンについて補足しておきます。

点群データとは、簡単に説明すると3D空間に無数の点をばらまいて、物体や空間の形を表現したデータです。位置を示す座標値 (x, y, z)、色情報 (RGB)、反射強度などから構成されます。この点の塊で形を表現します。

ガウシアンとは、正規分布のグラフのように真ん中が濃く、周りにいくほどなめらかに薄くなっていく釣鐘型の山のような形のことをさします。

この点群とガウシアンで何が表現できるかというと、点群データの各点に対して、広がりを持ったガウシアンとして表現し重ね合わせることで、少ない数でも非常に滑らかでリアルな3D表現が可能になるということです。これを 3D Gaussian Splatting といいます。

NanoBanana Proによる説明画像を貼っておきます

blog-gaussians-infographics

オープンソースAIモデル「SHARP」

2025年12月11日にAppleが公開したオープンソースAIモデルの「SHARP」をご存知でしょうか?

https://arxiv.org/abs/2512.10685

論文の説明によると

単一画像からフォトリアリスティックなビュー合成を実現する手法、SHARPを紹介します。単一写真が与えられた場合、SHARPは描写されたシーンの3Dガウス分布表現のパラメータを回帰します。これは、ニューラルネットワークを介した単一のフィードフォワードパスにより、標準的なGPUで1秒未満で実行されます。SHARPによって生成された3Dガウス分布表現はリアルタイムでレンダリングされ、近傍ビューの高解像度フォトリアリスティック画像を生成します。この表現は絶対スケールを持つメトリックであり、メトリックカメラの動きをサポートします。実験結果は、SHARPがデータセット全体にわたって堅牢なゼロショット汎化を実現することを実証しています。SHARPは複数のデータセットにおいて新たな最先端技術を確立し、最良の事前モデルと比較してLPIPSを25~34%、DISTSを21~43%削減し、合成時間を3桁短縮します。(Google翻訳)

説明読んでも(私には)さっぱりわかりませんが、タイトルからすると「1秒未満で鮮明な単眼ビューを合成」するもののようです。

やってみる

では、実際に触ってみます。

https://github.com/apple/ml-sharp

説明によると CUDA 前提のようです。私の環境では全部を実施することが出来ませんが、できるところまでやってみることにします。

環境は以下です。

  • Apple M2 MacBook Pro
  • macOS Tahoe 26.2
  • メモリ 16 GB
  • Python 3.13.3
  • 非エンジニア(私)

環境構築

GitHubの説明では conda を使うことになってますが、入ってなかったので標準方式でやっていきます。

python3 -m venv .venv
source .venv/bin/activate

SHARP のリポジトリを clone します

git clone https://github.com/apple/ml-sharp.git
cd ml-sharp

依存パッケージのインストール

pip install -r requirements.txt

インストール確認

sharp --help
Matplotlib is building the font cache; this may take a moment.
Usage: sharp [OPTIONS] COMMAND [ARGS]...

  Run inference for SHARP model.

Options:
  --help  Show this message and exit.

Commands:
  predict  Predict Gaussians from input images.
  render   Predict Gaussians from input images.

インストールされたようです。

ガウシアンを生成する

入力画像を用意して、実際にガウシアンを生成してみます。写真を撮ってもよいのですが、生成AIでつくりました。

blog-gaussians-clanyan-with-shadow-model

入力画像用のフォルダを作成し、画像を配置しておきます。sample.pngとしておきます。

mkdir -p inputs

ガウシアンを生成します。

sharp predict -i inputs/sample.png -o outputs/sample

2025-12-19 19:14:25,397 | INFO | Processing 1 valid image files.
2025-12-19 19:14:25,455 | INFO | Using device mps
2025-12-19 19:14:25,455 | INFO | No checkpoint provided. Downloading default model from https://ml-site.cdn-apple.com/models/sharp/sharp_2572gikvuh.pt
Downloading: "https://ml-site.cdn-apple.com/models/sharp/sharp_2572gikvuh.pt" to /Users/xxx/.cache/torch/hub/checkpoints/sharp_2572gikvuh.pt
100%|██████████████████████████████████| 2.62G/2.62G [01:45<00:00, 26.7MB/s]
2025-12-19 19:16:13,168 | INFO | Using preset ViT dinov2l16_384.
2025-12-19 19:16:18,517 | INFO | Using preset ViT dinov2l16_384.
2025-12-19 19:16:26,744 | INFO | Processing inputs/sample.png
2025-12-19 19:16:26,788 | WARNING | Did not find focallength in exif data of inputs/sample.png - Setting to 30mm.
2025-12-19 19:16:26,806 | INFO | Running preprocessing.
2025-12-19 19:16:26,923 | INFO | Running inference.
2025-12-19 19:17:23,976 | INFO | Running postprocessing.
2025-12-19 19:17:30,356 | INFO | Saving 3DGS to outputs/sample

3分ぐらいで完了しました。出力されたログをみると、SHARPの2.62Gのモデルが自動ダウンロードされて処理が行われたようです。outputs/sampleフォルダに sample.ply というファイルが作成されていました。

元ファイルは、1.4MBのpngファイルだったのですが、66.1MBのPLY(Polygon File Format)が作成されたようです。
出来たファイルの情報を見たところ、プレビューで見ることができました。macOSって、PLYァイル形式をサポートしてるですね。すごい!
ただちょっと荒いですね。元の画像がよくないのかも。

blog-gaussians-mac-preview

PLYファイル

PLYファイルは、3D形状や点群データを保存するためのファイル形式とのことです。

wikipediaによると

PLYはPolygon File FormatもしくはStanford Triangle Formatとして知られているコンピュータファイル形式である。これは原則として3Dスキャナからの3次元データを格納するために設計された。データ格納形式は、名目上平面ポリゴンのリストとして、単独オブジェクトの比較的簡単な記述をサポートしている。以下を含めた様々なプロパティが格納され得る: 色および透明性、サーフィス法線、テクスチャ座標およびデータ信頼値。また、この形式はポリゴンの表と裏に異なったプロパティを持たせることができる。このファイル形式には、ASCIIとバイナリの二つのバージョンが存在する。

ちなみに、今回出力されたファイルは、バイナリ形式でしたので、中を見てもよくわかりませんでした。

結果を見てみる

sample.py を3Dビューアで見てみます。今回はBlenderで表示しています。

Blenderは、ガウシアンをそのままでは表現できないため 3DGS Renderアドオンを導入します。このとき、ページにも記載されてますが、Code → Download ZIP をしないで、右側の Releases からファイルをダウンロードしてください。私は「3dgs_render_by_kiri_engine_4.1.4.zip」をダウンロードしました。

GitHubのページから 3dgs-render-blender-addon-main.zip フィアルをダウンロード後、Blenderの編集 → プレファレンス → アドオン → 右上のアイコンからディスクからインストール選択し、zipファイルをインストールします。
インストール後、3DGS Render by KIRI Engineにチェックを入れるのをお忘れなく。

blog-blender-addon

では、表示してみます。

  1. Blender画面で N キー入力でアドオンのメニューを表示する
  2. Active Mode で、インポートを選択する
  3. PLYをインポートをクリックし、PLYファイルを読み込む
  4. Disable Camera Uodates を Point Radius に変更する

ゴツゴツしたものが表示されました。これが点群?ポリゴン?ちょっとよくわかりません。
blog-blender-clanyan-1-polygon

  1. レンダーメニュー選択

くらにゃんきたー!!!ドット感がなくガウシアンっぽいです(個人の感想です)。

blog-blender-clanyan-2-render

Blenderはじめてさわるので、何がなんだかわからない状態でしたが、なんとか表示することが出来ました。それにしても、1秒未満でっていうのは、どの部分のことだったのだろう?

おわりに

2025年12月11日にAppleが公開したオープンソースAIモデルの「SHARP」を用いて、生成AIで作成した画像から3Dガウシアンを作成し表示することが出来ました。理論は追いついていませんが、はじめの一歩は出来たかなと思います。

冒頭でも書きましたが、ここ最近デジタルで再現させた3D空間上に、アプリケーションを構築するという事例をよく見かけるようになりました。
スマートフォンやドローンなどで撮影 → 点群データ という工程が比較的簡単にできるようになったからなのかと思ってます。
昨年の今頃は、リアルをバーチャルに移して何をするのかなぁと思っていましたが、いろいろ面白いことが出来そうということがわかってきました。
特に可能性があるなぁって思うのは、生成AIとの連携です。
現実世界をコンテキストとしてLLMにわたすのはけっこう大変ですが、デジタルになっているので空間自体をコンテキストとしてLLMにわたすことが出来ます。これは夢広がりますね。

ということで、来年もこのジャンル追いかけていこうかなと思います。

参考資料

この記事をシェアする

FacebookHatena blogX

関連記事