该模型当前使用的是默认介绍模版,处于“预发布”阶段,页面仅限所有者可见。
请根据模型贡献文档说明,及时完善模型卡片内容。ModelScope平台将在模型卡片完善后展示。谢谢您的理解。
Clone with HTTP
git clone https://www.modelscope.cn/sundaymm/Gaussian-Splatting.git
-->
Clone with HTTP
git clone https://www.modelscope.cn/Damo_XR_Lab/cv_gaussian-splatting-recon_damo.git
基于三维高斯溅射的快速辐射场渲染
任务
Gaussian-Splatting通过对空间显式建模为3D Guassian Splats,根据多视角图像进行辐射场重建和实时推理。在多个开源数据集上,本算法可以获得SOTA的渲染效果以及效率。
模型描述
针对NeRF训练时间长以及推理速度慢的问题,本算法提出一种快速可微3D Gaussian Splatting光栅化技术,极大加速了训练时间,并且结合多阶球谐函数和3D Gaussian的各向异性表达能力,获得最优的渲染质量,另外在推理阶段可实现1080P的高质量实时渲染(FPS>30)。
效果展示
以下是在Mip-Nerf360数据上的本方法和其他方法的渲染效果对比
期望模型使用方式以及适用范围
本方法可以从SFM生成的稀疏点云和随机生成的点云进行初始化,目前兼容2种数据组织格式:
- 实拍真实场景,例如Mip-NeRF360,包含colmap SFM计算结果
- synthetic bounded场景,例如NeRF-synthetic
目标场景
- 需要对单一静态物体或静态场景进行三维重建的场景
- 对实时新视角合成有需求的场景
运行环境
- 模型只支持GPU上运行,GPU显存要求大于等于24G,图像分辨率越大,显存要求越高
- 已在RTX4090及以上显卡上测试通过,具体效率与GPU性能相关,可能存在一些差异
模型局限性以及可能的偏差
- 暂不支持unbounded scene的训练,可参照Mip-NeRF360的数据处理方式
- 在城市规模场景数据上渲染质量有损失,需要针对性进行算法优化
- 在用户自定义数据集的训练依赖colmap的相机视角估计,可能影响重建渲染结果
如何使用
数据采集及预处理
若使用自摄数据,不限拍摄设备,采集过程需要对重建物体或场景进行多视角的拍摄,尽量覆盖多样视角,并保证提取的图像帧>=100。并需要先利用colmap或类似工具对相机进行内外参求解以及稀疏点云恢复。详细数据处理请参考Data Processing
新视角渲染
在ModelScope框架上,训练好一个Gaussian-Splatting模型后即可以通过简单的Pipeline调用来使用。(仅支持GPU运行)
推理代码范例
已有一个预训练的模型,按照下列代码可以进行推理
import os
from modelscope.msdatasets import MsDataset
from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from modelscope.utils.test_utils import test_level
model_id = 'Damo_XR_Lab/cv_gaussian-splatting-recon_damo'
## adjust data_dir and ckpt_path to your custom path
data_dir = '/nfs/mipnerf360/bicycle'
ckpt_path = '/nfs/pretrained_models/bicycle'
data_type = 'colmap'
pretrained_scene = 'bicycle'
render_dir = os.path.join('./exp', pretrained_scene)
gaussian_splatting_recon = pipeline(Tasks.gaussian_splatting_recon,
model=model_id,
data_type=data_type,
data_dir=data_dir,
ckpt_path=ckpt_path
)
gaussian_splatting_recon(dict(test_mode='evaluation', render_dir=render_dir))
也可以通过下列参数代码运行样例模型(nerf_synthetic/chair)
data_dir = ''
ckpt_path = ''
data_type = 'blender'
pretrained_scene = 'chair'
训练代码范例
请参考训练过程
相关论文以及引用信息
@Article{kerbl3Dgaussians,
author = {Kerbl, Bernhard and Kopanas, Georgios and Leimk{\"u}hler, Thomas and Drettakis, George},
title = {3D Gaussian Splatting for Real-Time Radiance Field Rendering},
journal = {ACM Transactions on Graphics},
number = {4},
volume = {42},
month = {July},
year = {2023},
url = {https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/}
}
评论