你拍了書桌的正面、左側和右側,想讓朋友打開檔案,就能繞著它看。InfiniSplat v2 教學要解決的正是這件事:把多張重疊照片轉成可瀏覽的 3D Gaussian 場景,再確認它在換視角後仍像原來的空間。
這篇寫給第一次接觸 3D 重建、願意在終端機逐步操作的讀者。先看懂相機模式,再依官方流程安裝、準備自己的照片、匯出 PLY 與 HTML。指令以 2026 年 10 月 19 日查閱的固定版本為基礎;本文整理操作與驗收方法,未在 NVIDIA GPU 執行推論。
先說結論:InfiniSplat v2 教學先記住「照片+相機線索→可瀏覽場景」
照片+相機線索→Gaussian 場景;能打開、看得對、尺寸對,要分開驗收。把它想成把許多張照片拼成一座可以轉頭觀看的舞台。相機線索說明每張照片從哪裡拍、鏡頭怎麼看,會影響這座舞台如何對齊。
- 手上只有照片:先用預設
da3-pose,讓 DA3 估一份相機線索。 - 已有匹配的相機資料:用
provided;要觀察省略相機前置估計的差異,再明確選pose-free。 - 第一次先用少量照片和較低解析度跑通,再增加工作量。漂亮的預覽與可用的場景,各自留下證據。
一、先懂三個零件:照片、相機與 Gaussian
3D Gaussian Splatting(3D 高斯潑濺,常寫成 3DGS)用帶有位置、形狀、顏色與不透明度的許多小橢球呈現場景。你可以把它想成一團有方向、會透光的彩色筆觸。它適合從新視角觀看;交付內容是這些筆觸及其屬性,與拿到可直接編修的三角網格模型是不同成果。
InfiniSplat v2 的「feed-forward」表示模型讀取輸入後直接預測場景。原論文把幾何與外觀屬性分開處理,並用大角度目標視角訓練;公開範例說明此處流程輸出原生 Gaussians,並不進行逐場景最佳化。換句話說,先交出一份重建結果,品質仍要對回你的照片。
Pose(位姿)是相機的位置與朝向;intrinsics(內參)則像鏡頭的視野說明書,包含焦距與主點。DA3 是 Depth Anything 3,這裡負責提供幾何與相機線索。pose-free 指跳過相機前置估計,不代表整個重建過程不需要幾何推理。

想先知道交付物長什麼樣,可開啟官方 Demo,選擇 Bedroom 範例,再按 Explore in 3D。頁面提供預先計算的場景,能先體會拖曳轉視角與滾輪縮放;下方截圖是官方範例介面,沒有提交照片或啟動推論。

二、InfiniSplat v2 教學:五步完成第一個可瀏覽場景
①「先備妥工作桌」:固定版本與獨立環境
下載了程式卻不知能不能跑?先確認 CUDA,再裝相依套件。官方安裝指南要求 Python 3.10–3.12、NVIDIA GPU 與相容的 PyTorch。這份配方以 Linux 終端機為起點;Mac 讀者可以先準備照片與驗收清單,推論部分留到已具備的相容設備。
git clone https://github.com/zju3dv/InfiniSplat.git
cd InfiniSplat
git checkout 8bd68db6b49b2acc3f2f1824e2881f1bd95ceff0
cd InfiniSplat_v2
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
若機器上的 Python 命令名稱不同,先執行 python3 --version,確認落在支援範圍後再用它建立環境。接著到 PyTorch 官方安裝選擇器,依你的系統與驅動取得 CUDA 配方,在剛建立的環境執行;不要把別人的 CUDA 版本直接套進自己的機器。完成後依序安裝:
python -m pip install .
python -m pip install --no-deps 'depth-anything-3 @ git+https://github.com/ByteDance-Seed/Depth-Anything-3.git@41736238f5bced4debf3f2a12375d2466874866d'
python -c "import torch; print(torch.__version__, torch.cuda.is_available())"
infinisplat --help
CUDA 檢查應顯示 True,且說明頁能列出參數。這兩項通過,才進入下載權重。DA3 的固定 revision 要保留,因為此版本使用其內部網路結構。
python scripts/download_weights.py --repo-id Edisoneh/InfiniSplat-v2 --revision 354291629c6b3b8941a761018c3bd52921d3d067 --output weights/da3
權重目錄應有 config.json 與 model.safetensors;下載腳本會核對設定內的 SHA-256,並要求新的輸出目錄。把程式 commit、模型 revision、GPU、驅動和套件版本另存,後面才知道比較的是哪一份配方。
②「先借官方題目」:用範例檢查環境
自己的照片失敗,怎麼分清是安裝還是拍攝問題?先跑官方範例。從同一模型倉庫下載範例壓縮檔,約 90.4 MB;這是範例資料大小,權重另計。以下都在 InfiniSplat_v2/ 執行:
hf download Edisoneh/InfiniSplat-v2 examples-png.zip --revision 354291629c6b3b8941a761018c3bd52921d3d067 --local-dir .
python -m zipfile -e examples-png.zip .
infinisplat --model weights/da3 --images-dir examples/data/dtu_provided/images --cameras examples/data/dtu_provided/cameras.npz --long-side 224 --output result_example_224 --no-html
這條保留官方 DTU 範例的 32 張輸入,只降低長邊。成功後查看輸出檔與紀錄;若顯存不足,先回到自己的 2–4 張重疊照片,用相同低解析度做小檢查,別把「範例太大」誤記成安裝一定壞了。範例影像另有資料集條款,見其 資料說明。
③「拍同一座舞台」:準備自己的靜態照片
轉到側面就破洞?先增加共同看見的內容。第一次建議拍書桌一角:書、盒子與牆面保持不動,沿小弧線移動手機,讓相鄰照片都看得見同一組邊緣和紋理。避免移動人物、嚴重模糊和大幅曝光變化;這些也是 官方相機準備指南列出的檢查項目。
自己練習可先拍 8 張重疊照片作輸入,另拍 1 張略偏側面的照片留在 holdout/,不送進重建或相機估計。8+1 是這篇建議的小練習配置。把輸入依序命名為 001.jpg 到 008.jpg,直接放在 images/,並另存原始檔。拍攝空間先收掉姓名、螢幕內容與私人文件。
CLI 按檔名順序讀取資料夾內圖片。若稍後用 COLMAP,先把照片轉到正確方向並保存成實際像素,再估相機;標定後繼續旋轉或裁切圖片,會讓影像與內參不再對應。第一次跑自有照片可用:
infinisplat --model weights/da3 --images-dir images --pose-mode da3-pose --long-side 224 --output result_own_check --no-html
確認流程完成後,再以預設長邊 518 重建一份新結果。每次換新的輸出目錄,保留失敗日誌;這樣才不會讓後一次結果覆蓋前一次問題。
④「三份配方,共用底片」:公平比較相機模式
想知道哪一種適合自己?先固定輸入,再改相機條件。只有照片時先比較 da3-pose 與 pose-free。要加入第三組 provided,可先安裝 COLMAP 並確認 colmap -h,再估一份相機模型:
python scripts/prepare_colmap.py --images images --output prepared
完成後,使用 prepared/undistorted/images 的已註冊、去畸變圖片,讓三組全部改用這個相同資料夾;不要讓 A、B 用原照片,C 卻用另一批處理後照片。如果有照片未註冊,就把共同輸入縮到同一組成功註冊的檔案,另記實際數量。
infinisplat --model weights/da3 --images-dir prepared/undistorted/images --pose-mode da3-pose --long-side 518 --output compare_da3 --no-html
infinisplat --model weights/da3 --images-dir prepared/undistorted/images --pose-mode pose-free --long-side 518 --output compare_free --no-html
infinisplat --model weights/da3 --images-dir prepared/undistorted/images --colmap prepared/undistorted/sparse_txt --long-side 518 --output compare_provided --no-html
第三條提供相機後,CLI 會選 provided。這裡的「provided」描述輸入來源,不代表 COLMAP 估計就是真值。若重建拆成互不相連的相機群,先照官方指南選一個連貫模型重做準備,別把不同座標系拼成同一組。
已有校正資料的人,也能用 --cameras cameras.npz:c2w 是形狀 [N,4,4] 的 OpenCV camera-to-world;intrinsics 是 [N,3,3] 的原輸入圖片像素內參,兩者都要跟圖片順序一致。先照 相機格式文件核對;不要把另一次輸出的相機檔當成原始內參直接塞回去。

⑤「交付能開啟的檔案」:PLY 與 HTML 分開確認
有 scene.ply,朋友卻不知道怎麼開?加裝官方指定的獨立 viewer 轉換器。先具備 Node.js/npm,再在專案環境執行:
npm install --prefix .tools/splat @playcanvas/splat-transform@2.6.0
export PATH="$PWD/.tools/splat/node_modules/.bin:$PATH"
splat-transform --version
接著可把既有 PLY 轉成 HTML,省去重新推論;以下 Python 指令沿用目前的虛擬環境:
python -c "from infinisplat import export_html; export_html('compare_da3/scene.ply', 'compare_da3/scene.html')"
另外兩組把路徑改為 compare_free 與 compare_provided,各自轉換。未來直接執行 CLI 時,移除 --no-html,就會一併匯出 viewer;Python API 則要明確要求 HTML。
先自己在瀏覽器打開 scene.html,再複製到另一個位置重開。官方說明它是可獨立開啟的 SH0 viewer;轉換器會檢查 PLY 與輸出標記,失敗時保留 PLY、不留下半成品 HTML。若畫面顛倒,先查場景的朝上方向與展示轉換;旋轉展示畫面,也要跟原 PLY 座標分開記。
三、驗收怎麼做?把「漂亮」拆成四張檢查單
先沿著輸入相機附近慢慢移動,再到照片較少涵蓋的側面。每組保存同樣位置的截圖,觀察破洞、漂浮點、重複邊緣與視角跳動。留出的照片可當人工對照,檢查書脊、盒角和前後遮擋。手動移到「差不多角度」適合找問題;要計算影像誤差,還需要精確對齊的測試相機與一致的渲染流程。
- 可開啟:PLY 是否生成、HTML 是否真的能轉動和縮放。
- 畫面一致:三組在相似視角有沒有破洞、漂浮點或幾何變形。
- 資源成本:同一硬體記完整牆鐘時間、顯存觀察值、檔案大小;相機準備與 HTML 轉換分開計時。
- 座標與尺度:記清輸出座標系,再決定是否需要額外尺度校正。
最後一項特別容易漏。匯出程式與官方指南說明,PLY 留在原生 RDNorm 空間,未必是公尺或你預想的世界座標;即使提供 COLMAP 相機,也會做尺度對齊。因此,能看到一張像樣的桌子,並不等於已知道它有幾公分寬。需要尺寸時,以已知長度建立比例、另外檢查幾個量測點,再決定用途。
推論輸出的 result.json 保存輸入/輸出雜湊、模式、前處理和統計資訊;它適合對帳,並非論文評測通過證明。把這份紀錄與截圖一起保存,做法可接到 AI Evals 教學的「先定成功條件,再看結果」。

四、卡住時先退哪一步?模式選擇與常見坑
只有照片,先選 da3-pose;要拆解相機前置估計的影響,再加 pose-free;已有對應校正資料,或願意先做 COLMAP,才加入 provided。這是操作起點,不是本文測出的品質排序。兩組都壞時,先查共同的照片、模型與環境,再把原因推給模式。
- CUDA 顯示 False:回頭核對 PyTorch 與 NVIDIA 驅動,先完成環境檢查。
- 顯存不足:官方建議從 2–4 張、
--long-side 224起步,逐步增加。照片數與解析度每次只改一項。 - 相機對不上:核對檔名、圖片尺寸、旋轉、去畸變版本與相機順序。
- 輸出目錄已存在:換新名稱重跑,保留原有結果。
- HTML 失敗:先看轉換器版本和 PATH,保留 PLY,再獨立處理 viewer。
使用前也要讀 PRL v1.0 授權:純學術研究、教育、評估與個人用途可免費使用且免登記;公司或組織的專案使用,即使是非商業、內部測試,也要求事前登記。完整正確送出登記後自動取得該專案的使用許可,無需等核准或付費。第三方元件與資料集各有條款,不能只讀專案首頁的一句「免費」。
至於論文重現,本篇只設計自己的小場景對照,不宣稱重跑完整 benchmark。研究裡的資料、相機、目標視角與指標是一整套考卷;在你的桌子上比較三組輸出,可以回答自己的作品需求,不能直接換算成論文排名。
InfiniSplat v2 教學 FAQ:八個直接答案
1. 手機能直接完成整套推論嗎?
這份教學走 NVIDIA CUDA 電腦流程。手機負責拍照;把檔案交到已具備相容 GPU 的環境,再照步驟重建。
2. 要先有相機資料才能開始嗎?
不必。沒有相機輸入時預設走 da3-pose;provided 則使用你提供且與照片匹配的相機資料。
3. pose-free 一定比較快、比較差嗎?
要量。它省略相機前置估計,但整體時間與成品品質要在同一組輸入和設備下分開記錄。
4. provided 就代表相機是正確答案嗎?
不代表。COLMAP 的估計也有誤差;輸入格式、照片對應與重建結果仍要各自檢查。
5. 圖片越多越好嗎?
先看重疊與資源。此版 CLI 預設上限 32 張,可用 –max-views 50 放到 50 張;這是介面容量,品質還取決於照片與相機。
6. PLY 能當成公尺尺度模型嗎?
不能直接這樣認定。官方輸出使用原生 RDNorm 空間,要另做尺度與座標驗證。
7. 留一張照片,就算重現論文評測嗎?
不算。它可作人工品質檢查;定量評測還需要精確測試相機、渲染設定與完整協定。
8. 今天沒有 GPU,可以先完成什麼?
先拍一組沒有私人內容的靜態照片,編好順序、留出對照圖,寫下四張驗收單;取得相容環境後再填推論結果。
給新手的三個重點
- 先用官方題目確認環境,再把自己的照片送進去。
- 三模式比較先固定共同照片,別把前處理差異誤算成模式差異。
- 作品能看、視角可信、資源可負擔與尺度正確,各自驗收。
接著閱讀
左右滑動查看更多推薦
下一步:先交出一個能打開、能對照的小場景
今天先選一角靜態書桌,完成「8 張輸入+1 張對照」的練習清單。有相容設備後,從低解析度檢查開始,先交出第一份 PLY,再把它轉成能在瀏覽器打開的 HTML。回到那個把手:照片+相機線索→可瀏覽場景;每多走一步,都留下一份能確認的成果。
想繼續練習影像與 3D 工作流,可從 AlphaLab AI 專區挑下一個作品,或到 AlphaLab 線上課程安排系統學習。先把這一個小場景做完,再增加照片和場景規模。
