**ガウス・スプラッティング ― 3つのアプローチ**

2025/12/27 4:23

**ガウス・スプラッティング ― 3つのアプローチ**

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

NullSplatsはTkinterベースのデスクトップアプリケーションで、ユーザーがカジュアルな動画や画像コレクションから3Dガウススプラットモデルを訓練・表示できるようにします。ワークフローはビデオまたは画像フォルダーをインポートすることから始まり、アプリは自動でフレームを選択し、COLMAP SfMを実行してカメラ姿勢とスパースポイントを回復させ、その後PyTorchベースのgsplatライブラリでスプラットを訓練(.ply/.splatチェックポイントをエクスポート)します。ユーザーは3つのパイプラインから選択できます―従来型COLMAP+gsplat、Depth Anything 3 (DA3)、またはSHARP単眼ビュー合成―それぞれ速度と精度のトレードオフが異なります。RTX Pro 6000 Blackwellでの訓練時間は、gsplatが約5分、DA3(≈16 GB VRAM)が3〜4分、SHARPが2.5分です。

UIは「Inputs」「COLMAP」「Training」「Exports」の4つのタブに整理されており、シーン作成、フレーム抽出(

backend/video_frames.py
)、SfMパイプライン(
backend/sfm_pipeline.py
)、訓練ループ(
backend/splat_train.py
)のウィザードフローがあります。レンダリングは
ui/gl_canvas.py
を使用し、ライブプレビューにはGaussianSplatViewerをラップし、オフラインレンダーにはSplatRendererを使用します;シェーダーは
ui/shaders/
にあります。

コードベースは標準的なPythonデスクトップレイアウトに従っており、

main.py
(Tk root)とUI・バックエンド・ユーティリティ・ビルドスクリプト(
build.bat
run.bat
)を含む
nullsplats/
パッケージで構成されています。データは
cache/inputs/<scene_id>
にソースファイルとメタデータを、
cache/outputs/<scene_id>
にSfM結果、スプラットチェックポイント、およびレンダリング結果をキャッシュします。

依存関係にはPython 3.10+、PyTorch CUDAビルドが必要なCUDA対応GPU、PATHにあるffmpeg/ffprobe、バンドルされたCOLMAPバイナリ(CUDA推奨)が含まれます。オプションとしてDA3(

pip install git+https://github.com/ByteDance-Seed/Depth-Anything-3
)とSHARP(
pip install -e tools/sharp
)をインストールできます。ポータブルWindowsバンドルは
build.bat
で生成され、
run.bat
を介して起動します。

既知の制限として、現在のビルドはWindows専用であり、実行ファイルサイズが約700 MBと大きいこと、サムネイルの失敗が時折発生すること、小さなレンダリングオフセットが現れること、およびffmpegがバンドルされていない点があります。将来のリリースではプラットフォームサポートを拡張しサイズを削減する可能性があります。

Text to translate

NullSplats is a Tkinter‑based desktop application that lets users train and view 3D Gaussian splat models from casual videos or image collections. The workflow starts by importing a video or folder of images; the app auto‑selects frames, runs COLMAP SfM to recover camera poses and sparse points, then trains splats with the PyTorch‑based gsplat library (exporting .ply/.splat checkpoints). Users can choose one of three pipelines—traditional COLMAP+gsplat, Depth Anything 3 (DA3), or SHARP monocular view synthesis—each offering different speed/accuracy trade‑offs. Training times on an RTX Pro 6000 Blackwell are roughly 5 min for gsplat, 3–4 min for DA3 (≈16 GB VRAM), and 2.5 min for SHARP.

The UI is organized into four tabs (Inputs, COLMAP, Training, Exports) with wizard flows for scene creation, frame extraction (`backend/video_frames.py`), SfM pipeline (`backend/sfm_pipeline.py`), and training loop (`backend/splat_train.py`). Rendering uses `ui/gl_canvas.py`, which wraps GaussianSplatViewer for live preview and SplatRenderer for offline renders; shaders reside in `ui/shaders/`.

The codebase follows a standard Python desktop layout: `main.py` (Tk root) plus the `nullsplats/` package containing UI, backend, utilities, and build scripts (`build.bat`, `run.bat`). Data is cached under `cache/inputs/<scene_id>` for source files and metadata, and `cache/outputs/<scene_id>` for SfM results, splat checkpoints, and renders.

Dependencies include Python 3.10+, a CUDA‑capable GPU with PyTorch CUDA build, ffmpeg/ffprobe on PATH, bundled COLMAP binaries (CUDA preferred), and optional DA3 (`pip install git+https://github.com/ByteDance-Seed/Depth-Anything-3`) and SHARP (`pip install -e tools/sharp`). The portable Windows bundle is produced by `build.bat` and launched via `run.bat`.

Known limitations are that the current build is Windows‑only, the binary is large (~700 MB), occasional thumbnail failures occur, minor rendering offsets may appear, and ffmpeg is not bundled. Future releases may expand platform support and reduce size.

本文

NullSplats – 3‑D ガウススプラットツールキット

Tkinter と OpenGL を組み合わせたデスクトップアプリで、動画や画像コレクションから 3‑D ガウススプラット を学習・閲覧できます。
COLMAP を使ってカメラ姿勢を取得し、PyTorch + gsplat で学習、すべてのデータは再現性のあるキャッシュツリーに保存されるため、あとからシーンを再開できます。


主な機能

アクション結果
動画・画像フォルダを取り込み → フレーム抽出とスコアリング → 自動でサブセット選択
cache/inputs/<scene_id>/frames_selected
COLMAP SfM を実行し、カメラ姿勢と sparse points を生成
cache/outputs/<scene_id>/sfm
GPU で gsplat による Gaussian スプラットを学習し、チェックポイントを
.ply
.splat
としてエクスポート
cache/outputs/<scene_id>/splats
アプリ内の埋め込み OpenGL ビューアでスプラットをライブプレビューLive preview
シーンごとの入力・出力をキャッシュに保持し、再現可能なワークフローを実現

サポートされているスプラット生成手法

  1. 従来型:COLMAP + gsplat 学習
  2. Depth Anything 3 (DA3) 3‑D ガウス推定
  3. SHARP 単眼ビュー合成

サンプルスプラット

ビュー数手法解像度
50gsplat720p (12k イテレーション)
5DA3720p
1SHARP720p

動画例

  • Gsplat 50‑view
    gsplat_50view_720p.mp4
  • Gsplat closeup
    gsplat_closeup.mp4
  • DA3 5‑view
    DA3_5view_720p.mp4
  • DA3 closeup
    DA3_closeup.mp4
  • SHARP 1‑view
    SHARP_1view_720p.mp4
  • SHARP closeup
    SHARP_Closeup.mp4
  • Side‑by‑side comparison
    Comparison_Closeup.mp4

RTX Pro 6000 Blackwell 上での実行時間:
• gsplat (50 views) ≈ 5 分(COLMAP 含む)
• DA3 (5 views) ≈ 3–4 分、約16 GB VRAM
• SHARP (1 view) ≈ 2.5 分


Discord とサポート

開発について議論したりサポートを受けたい場合は

  • GitHub で Issue を作成
  • Discord チャンネルに参加

リポジトリ構成

main.py                      # アプリ起動点(Tk root + タブ)
nullsplats/
│
├── ui/                       # Tk UI、タブ、OpenGL ビューア、シェーダー
│   ├── shaders/              # .vert / .frag ファイル
│   └── …                    # 各種タブモジュール
│
├── backend/                  # フレーム抽出、COLMAP パイプライン、スプラット学習
│   ├── video_frames.py
│   ├── sfm_pipeline.py
│   ├── splat_train.py
│   └── …
│
└── util/                     # ロギング、設定、スレッドヘルパー、ツールパス
  • build.bat
    – ポータブルバンドルビルダー
  • run.bat
    – バンドル内での起動
  • requirements.txt
    – Python 依存関係

コード構成概要

コンポーネント用途
AppState (
nullsplats/app_state.py
)
設定、シーン管理、現在のシーンなどコア状態
SceneManager (
nullsplats/backend/scene_manager.py
)
シーン探索・選択永続化・サムネイルキャッシュ
IO Cache (
nullsplats/backend/io_cache.py
)
メタデータ読み書き、
ScenePaths
の定義
Tabs入力、COLMAP、学習、エクスポート(各
ui/tab_*
Wizard Flowインラインウィザード (
tab_inputs_wizard.py
) またはスタンドアロンウィンドウ (
wizard.py
)

キャッシュレイアウト(シーンごと)

cache/
├─ inputs/<scene_id>/
│   ├─ source/          # 元のソースコピー
│   ├─ frames_all       # すべて抽出したフレーム
│   ├─ frames_selected  # 自動選択サブセット
│   └─ metadata.json
└─ outputs/<scene_id>/
    ├─ sfm              # COLMAP 結果
    ├─ splats           # 学習チェックポイント (.ply/.splat)
    └─ renders          # ターンテーブル/動画レンダリング

バックエンドパイプライン

フレーム抽出 (
backend/video_frames.py
)

  • ffmpeg/ffprobe
    を使用
  • シャープネス/分散スコアリング
  • 最適フレーム自動選択
  • 選択結果をキャッシュ

SfM (COLMAP) (
backend/sfm_pipeline.py
)

COLMAP CLI を実行し、ログは

cache/outputs/<scene_id>/sfm/logs
に保存。

学習 (
backend/splat_train.py
)

  • gsplat 学習ループ
  • DA3 推論(
    depth_anything3_trainer.py
  • エクスポートヘルパー(
    gs_utils.py
    など)

レンダリングとビューア

モジュール役割
ui/gl_canvas.py
OpenGL プレビューサーフェス(SplatRenderer)
ui/gaussian_splat_viewer.py
インスタンス化クワッドレンダラー + シェーダー
ui/shaders/*.vert/.frag
GLSL シェーダー
コントロールパネル (
render_controls.py
,
advanced_render_controls.py
)
基本・高度なレンダリング設定

スレッディングとロギング

  • util/threading.py
    – バックグラウンドタスク、Tk スレッドへのマルシャリング
  • util/logging.py
    – コンソール+ファイルログ(
    logs/app.log
  • util/tooling_paths.py
    – COLMAP と CUDA パス解決

ビルドと実行

前提条件

  • Windows(主)、Linux でも可(対応バイナリ同梱)
  • Python 3.10+ (
    pip
    ,
    venv
    )
  • CUDA ドライバー付き GPU、PyTorch CUDA バージョンインストール済み
  • PATH に
    ffmpeg/ffprobe
    があること
  • COLMAP バイナリ(CUDA 推奨)が
    tools/colmap
    またはユーザー指定パスにあること

オプションバックエンド

バックエンドインストール
Depth Anything 3 (DA3)
pip install git+https://github.com/ByteDance-Seed/Depth-Anything-3.git
SHARP
pip install -e tools/sharp

開発環境セットアップ

python -m venv .venv
.venv\Scripts\activate.bat   # Windows
# または source .venv/bin/activate  # Linux
pip install -r requirements.txt

CUDA 対応 PyTorch / gsplat の bootstrap は

tools\setup_cuda_venv.bat
を実行。

アプリ起動

# venv がアクティブな状態で
python main.py

ログ →

logs/app.log

キャッシュ →
cache/inputs/<scene_id>
cache/outputs/<scene_id>


ポータブルバンドル(Windows)

  1. build.bat
    を実行すると、
    build\NullSplats-portable
    build\NullSplats-portable.zip
    が作成されます。

  2. オプションフラグ:

    • SKIP_CLEAN=1
      – 既存バンドルを再利用
    • 第1引数で CUDA パスを渡して
      CUDA_PATH/CUDA_HOME
      を上書き
    • REQUIRE_CUDA=0
      – CUDA DLL の同梱をスキップ(失敗する場合があります)
    • SKIP_ZIP=1
      – ZIP 作成をスキップ
  3. バンドル内で

    run.bat
    を実行してアプリ起動。


よくある問題

  • Windows + CUDA のみのダウンロード
  • ビルド時に COLMAP がビルドされない
  • ダウンロードサイズが大きい
  • サムネイルが読み込めない場合がある
  • スプラットレンダリングがわずかにズレる
  • カメラコントロールの制限
  • ffmpeg が同梱されておらず PATH に入れておく必要あり
  • CUDA SDK がパス上に必要になることも

パスとデフォルト設定

ツールデフォルト
COLMAP
tools/colmap/COLMAP.bat
(存在しない場合はユーザー指定)
CUDAバンドル内の
cuda/
、それ以外は
CUDA_PATH
,
CUDA_HOME
, さらに
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8
を順に検索
キャッシュ必要時に
cache/inputs
cache/outputs
に作成

同じ日のほかのニュース

一覧に戻る →

2025/12/27 2:13

**原文:** 「How uv got so fast」 **改訂(整理済み):** 「How did UV get so fast?」 **日本語訳:** 「UVはなぜそんなに速くなるのですか?」

## Japanese Translation: ``` ## Summary uv は Rust のみを利用するよりも、モダンな設計選択とパッケージング標準を採用しているため、pip より優れています。不要なオーバーヘッドを伴うレガシー機能(.egg サポート、pip.conf の読み込み、デフォルトのバイトコードコンパイル、system‑Python インストールの許可、厳格な仕様準拠、requires‑python の上限無視、複数インデックスが設定されている場合に最初のインデックスを選択)を削除することで、uv は不要なコードパスを排除します。さらに、HTTP レンジリクエストによる部分的な wheel ダウンロード、並列ダウンロード、ハードリンクまたはコピーオンライト可能なグローバルキャッシュ、ネイティブ TOML パース、および効率的な PubGrub 依存関係解決器を使用してインストール速度を加速させています。Rust は rkyv によるゼロコピー逆シリアライズ、ロックフリーの同時実行データ構造、単一静的バイナリであるためのインタプリタ起動コストゼロ、および高速比較/ハッシュのためのコンパクトな 64‑ビットバージョン表現を提供します。 Python のパッケージングは、setup.py スクリプトがインストール時に実行される必要があったため遅くていました。PEP 518–658 の導入によりメタデータが宣言的フォーマットへ移行し、PyPI 上の Simple API(2023年5月以降利用可能)が有効になりました。uv は 2024 年2月にリリースされ、初日からこれら新しい標準を活用しています。 影響は大きく、開発者は依存関係をより迅速にインストールでき、軽量な環境を構築できます。これは、Python エコシステム全体で最新のパッケージング標準を完全にサポートするツールへの広範な移行を促進する可能性があります。 ```

2025/12/23 23:51

2025年の最高アイテムとおすすめ

## Japanese Translation: ## Summary 2025年、著者はハンス・ボーマーの再帰的実数計算法や日本漫画カフェドキュメンタリー『マンブー』などの注目すべきIT・テック発見で生産性の高い一年を達成しました。彼はClojureのcore.asyncとJDK 21バーチャルスレッド、結合型関数言語Juxt、WordPressからMarkdown/org-mode静的サイトパイプラインへの移行についての技術ブログを複数公開しました。また、ブラジルで開催されたClojure/conjとClojure South Brazilという二つの主要なClojureカンファレンスに参加し、コミュニティの影響力を強調しました。 色分けされた月次マトリクスを備えたスプレッドシートベースのタスクトラッカーが導入され、著者のミニマリストでシステム思考的アプローチを反映し、専用プランナーよりもスプレッドシートを好む姿勢を示しました。プログラミングはClojure(16年にわたるフルタイム作業)に集中しつつ、Joy、Clojerl、Scittle、Javaによるコンパイラ開発も探索しました。 2025年にはゲーム・フィクション・システム思考に関するエッセイなど非技術的なアウトプットが増加し、2026年にはさらに多くのフィクションとカードゲームルールを企画しています。著者の「人生を変えるテクノロジー」主張はZettelkastenメモ取り法の採用に集約され、新しい非技術的投稿が可能になりました。大規模言語モデル(LLM)との広範な実験は限定的な実践的利益しか生まれず、問題設定とソクラテス対話における欠点を批判しています。 また、本年には好きな本(例:『オシリスの目』、『ナルキッサスとゴールドマン』)、音楽、映画、ポッドキャスト、テーブルトップゲームの厳選リストも含まれました。2026年を見据えて、著者は非技術的執筆を増やし、カードゲームルールを発表し、Clojure 1.13を進化させ、物理アーティファクトを作成し、未翻訳の本を読み、Goodnotes、Antinet、Booxなどのツールを使ってテックラダーを洗練する予定です。すべてはミニマリストでシステム志向のワークフローを維持しながら行われます。 この要約は元のリストからすべての主要ポイントを取り込み、推測を避け、明確な主旨を提示し、曖昧または混乱する表現を排除しています。

2025/12/27 8:09

「テキストに常に賭ける」

## Japanese Translation: ## Summary テキストは、これまでに発明された中で最も強力で多用途かつ信頼性の高い通信技術であり、可能な限り常に選択すべきです。約5,000年間安定した媒体として存在し、その長寿を示す耐久的な遺物が残っています。テキストは比類のない柔軟性を提供します:正確な意味を伝えることができる一方で、暗黙の文脈も許容するため、文学・歴史・哲学・数学・論理学・プログラミング・工学・注釈学・ファンフィクションに不可欠です。他のメディアと比べてテキストは格段に効率的であり(例:5 kB のブログ投稿がより大きな画像と同じ情報量を持つ)、電信・電子メール・チャット・ウェブなど後続技術を可能にしました。テキストは一対一、一対多、多対多のあらゆる社会的相互作用をサポートし、検索性・索引化・翻訳・非同期性・アルゴリズム処理(例:差分検出や要約)が可能です。また、多者編集、分岐会話、注釈付け、引用、構造化応答、およびレビューも許容します。著者は、テキストが通信・データ保存・アルゴリズム処理の基盤メディアとして残ると信じており、その幅広さ・深さ・スケーラビリティに匹敵するフォーマットは他に存在しないと述べています

**ガウス・スプラッティング ― 3つのアプローチ** | そっか~ニュース