因为wild-Gaussian依托于nerfbaseline来运行,所以好多命令也是来源于nerfbaseline,所以先上链接:
WildGaussians-github
NerfBaselines
WildGaussians-huggingface
wg已处理数据集
wg原始数据集-undistorted
安装
官方提供了两种安装方法,一种是一步安装的nerfbaseline,另一种是在本地手动安装,这里我推荐手动安装,因为nb安装又慢要装的数据集又多,而且不太方便debug
用 NerfBaselines 安装
conda create -n nb python=3.11
conda activate nb
pip install nerfbaselines>=1.2.0
然后就一直等待就可以了
本地安装
推荐使用 cuda11.8
git clone https://github.com/jkulhanek/wild-gaussians.git
cd wild-gaussians
conda create -y -n wg python=3.11
conda activate wg
conda install -y --override-channels -c nvidia/label/cuda-11.8.0 cuda-toolkit
conda env config vars set NERFBASELINES_BACKEND=python
pip install --upgrade pip
pip install -r requirements.txt
pip install nerfbaselines>=1.2.0
pip install -e ./submodules/diff-gaussian-rasterization ./submodules/simple-knn
pip install -e .
训练
To start the training on the Photo Tourism dataset, run one of following commands:
# Photo Tourism 训练官方数据集
nerfbaselines train --method wild-gaussians --data external://phototourism/trevi-fountain
nerfbaselines train --method wild-gaussians --data external://phototourism/sacre-coeur
nerfbaselines train --method wild-gaussians --data external://phototourism/brandenburg-gate
# NeRF on-the-go 训练自定义数据集
nerfbaselines train --method wild-gaussians --data {
path to data}
通过官方的undistorted链接来观察自定义数据集的结构
wg原始数据集-undistorted
可以发现如图
所以我们需要对自定义数据集进行预处理
准备自己的数据集
可以看到数据集有sparse文件,所以需要使用colmap初始化位姿
Colmap处理
首先选择自己需要的图片并创建images文件夹存到其中
之后在colmap中使用auto-reconstruction重建位姿,然后会在相同目录下输出结构如下sparse
但是wild-Gaussian不需要这个0文件夹,所以要将里面的bin文件复制到上级目录。即从/sparse/0/xxxx.bin ->/sparse/xxxx.bin
创建nb-info文件
nerfbaseline运行的时候需要一个nb-info.json文件告诉数据集类型
所以在数据集目录下创建nb-info.json文件,并在里面填充内容
{
"loader": "colmap", //处理类型
"name": "tum-rgbd-undistorted",//数据集名称
"scene": "rgbd_dataset_freiburg3_walking_static",//数据集场景
"downscale_factor": 1 //图片缩放大小
}
创建训练集和测试集
这里提供两种代码,一种是八二开
import os
import random
# 自动获取脚本所在的目录
script_dir = os.path.dirname(