《Splatter Image:超快速單視圖 3D 重建》正式實施(CVPR 2024)
[2024 年 4 月 16 日] 自首次發布以來該專案進行了多項重大更新:
查看線上演示。在本地運行演示通常會更快,並且您將能夠看到使用高斯潑濺渲染的循環(而不是提取的 .ply 對象,它可以顯示偽影)。要在本地運行演示,只需按照以下安裝說明進行操作,然後呼叫:
python gradio_app.py
conda create --name splatter-image
conda activate splatter-image
按照官方說明安裝 Pytorch。經證實可以工作的 Pytorch / Python / Pytorch3D 組合是:
安裝其他要求:
pip install -r requirements.txt
安裝Gaussian Splatting渲染器,即用於將高斯點雲渲染到影像的庫。為此,請拉取 Gaussian Splatting 儲存庫,並在啟動 conda 環境的情況下執行pip install submodules/diff-gaussian-rasterization
。您需要滿足硬體和軟體要求。我們在 NVIDIA A6000 GPU 上進行了所有實驗,並在 NVIDIA V100 GPU 上進行了速度測量。
如果您想使用 CO3D 資料進行訓練,則需要安裝 Pytorch3D 0.7.2。請參閱此處的說明。建議使用 pip 從預先建置的二進位進行安裝。在這裡找到相容的二進位並使用pip
安裝它。例如,對於 Python 3.8、Pytorch 1.13.0、CUDA 11.6,執行pip install --no-index --no-cache-dir pytorch3d -f https://anaconda.org/pytorch3d/pytorch3d/0.7.2/download/linux-64/pytorch3d-0.7.2-py38_cu116_pyt1130.tar.bz2
。
若要對 ShapeNet-SRN 類別(汽車、椅子)進行訓練/評估,請從 PixelNeRF 資料夾下載 srn_*.zip(* = 汽車或椅子)。解壓縮資料文件,並將datasets/srn.py
中的SHAPENET_DATASET_ROOT
變更為解壓縮資料夾的父資料夾。例如,如果您的資料夾結構為: /home/user/SRN/srn_cars/cars_train
,請在datasets/srn.py
中設定SHAPENET_DATASET_ROOT="/home/user/SRN"
。不需要額外的預處理。
要進行 CO3D 培訓/評估,請從 CO3D 版本下載消防栓和泰迪熊類。為此,請執行以下命令:
git clone https://github.com/facebookresearch/co3d.git
cd co3d
mkdir DOWNLOAD_FOLDER
python ./co3d/download_dataset.py --download_folder DOWNLOAD_FOLDER --download_categories hydrant,teddybear
接下來,將CO3D_RAW_ROOT
設定為data_preprocessing/preoprocess_co3d.py
中的DOWNLOAD_FOLDER
。將CO3D_OUT_ROOT
設定為要儲存預處理資料的位置。跑步
python -m data_preprocessing.preprocess_co3d
並設定CO3D_DATASET_ROOT:=CO3D_OUT_ROOT
。
對於多類別 ShapeNet,我們使用 DVR 作者託管的 NMR 的 ShapeNet 64x64 資料集,可以在此處下載。解壓縮該資料夾並將NMR_DATASET_ROOT
設定為解壓縮後保存子類別資料夾的目錄。換句話說, NMR_DATASET_ROOT
目錄應包含資料夾02691156
、 02828884
、 02933112
等。
為了在 Objaverse 上進行訓練,我們使用了 Zero-1-to-3 的渲染圖,可以使用以下命令下載:
wget https://tri-ml-public.s3.amazonaws.com/datasets/views_release.tar.gz
免責聲明:請注意,渲染圖是使用 Objaverse 產生的。整個效果圖是在 ODC-By 1.0 許可下發布的。單一物件的渲染授權是在與 Objaverse 中相同的創意共享授權下發布的。
此外,請從模型儲存庫下載lvis-annotations-filtered.json
。此 json 包含 LVIS 子集中的物件 ID 清單。這些資產品質較高。
將datasets/objaverse.py
中的OBJAVERSE_ROOT
設定為解壓縮後的效果圖資料夾目錄,將相同檔案中的OBJAVERSE_LVIS_ANNOTATION_PATH
設定為下載的.json
檔案所在目錄。
請注意,Objaverse 資料集僅用於訓練和驗證。它沒有測試子集。
為了評估在 Objaverse 上訓練的模型,我們使用 Google Scanned Objects 資料集來確保與訓練集不重疊。下載Free3D提供的效果圖。解壓縮下載的資料夾,並將datasets/gso.py
中的GSO_ROOT
設定為解壓縮資料夾的目錄。
請注意,Google 掃描物件資料集不適用於訓練。它用於測試在 Objaverse 上訓練的模型。
現在可透過 Huggingface Models 取得所有資料集的預訓練模型。如果您只想執行定性/定量評估,則不需要手動下載它們,如果您執行評估腳本(請參閱下文),它們將自動使用。
如果您願意,也可以手動下載它們,方法是手動點擊 Huggingface 模型檔案頁面上的下載按鈕。下載設定檔並查看eval.py
了解模型的載入方式。
下載相關資料集後,可以使用以下命令執行評估
python eval.py $dataset_name
$dataset_name
是資料集的名稱。我們支持:
gso
(Google掃描對象),objaverse
(Objaverse-LVIS),nmr
(多類別ShapeNet),hydrants
(CO3D 消防栓),teddybears
(CO3D 泰迪熊),cars
(ShapeNet 汽車),chairs
(ShapeNet 椅)。該程式碼將自動下載所請求資料集的相關模型。您還可以訓練自己的模型並使用以下方法對其進行評估
python eval.py $dataset_name --experiment_path $experiment_path
$experiment_path
應該包含一個model_latest.pth
檔案和一個.hydra
資料夾,其中包含config.yaml
。
若要評估驗證拆分,請使用選項--split val
進行呼叫。
若要在相機循環移動時儲存物件的渲染,請使用選項--split vis
進行呼叫。使用此選項時,不會傳回定量分數,因為地面實況影像並非在所有資料集中都可用。
您可以使用選項--save_vis
設定要儲存渲染的物件數量。您可以使用選項--out_folder
設定儲存渲染的位置。
單視圖模型分兩個階段進行訓練,首先不使用 LPIPS(大部分訓練),然後使用 LPIPS 進行微調。
python train_network.py +dataset=$dataset_name
opt.pretrained_ckpt
中的 configs/experiment/lpips_$experiment_name.yaml 中(預設為 null)。 python train_network.py +dataset=$dataset_name +experiment=$lpips_experiment_name
$lpips_experiment_name
取決於資料集。如果 $dataset_name 位於 [cars,消防栓,teddybears] 中,請使用 lpips_100k.yaml。如果 $dataset_name 是 chairs,請使用 lpips_200k.yaml。如果 $dataset_name 是 nmr,請使用 lpips_nmr.yaml。如果 $dataset_name 是 objaverse,請使用 lpips_objaverse.yaml。請記住,在啟動第二階段之前,將第一階段的模型目錄放入對應的 .yaml 檔案中。要訓練 2 視圖模型運行:
python train_network.py +dataset=cars cam_embd=pose_pos data.input_images=2 opt.imgs_per_obj=5
訓練循環在train_network.py
中實現,評估程式碼在eval.py
中。資料集在datasets/srn.py
和datasets/co3d.py
中實作。模型在scene/gaussian_predictor.py
中實作。對渲染器的呼叫可以在gaussian_renderer/__init__.py
中找到。
高斯光柵化器假定剛體變換矩陣的行主序,即位置向量是行向量。它還需要符合 COLMAP/OpenCV 約定的相機,即 x 指向右側,y 指向下方,z 遠離相機(向前)。
@inproceedings{szymanowicz24splatter,
title={Splatter Image: Ultra-Fast Single-View 3D Reconstruction},
author={Stanislaw Szymanowicz and Christian Rupprecht and Andrea Vedaldi},
year={2024},
booktitle={The IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
}
S. Szymanowicz 得到 EPSRC 博士培訓合作夥伴獎學金 (DTP) EP/R513295/1 和牛津-阿什頓獎學金的支持。 A. Vedaldi 由 ERC-CoG UNION 101001212 支持。