https://github.com/graphdeco-inria/gaussian-splatting
- 支持nerfstudio的transform.json格式数据
- 支持来自polycam的transform_polycam.json格式数据
- 支持来自大疆制图的transform.json格式数据和对应的点云init
- 提供来自slam的数据转换脚本
- 支持渲染深度图
- 支持来自单目深度估计的深度监督
- 基于taichi的全新可视化界面,支持场景编辑,场景导入等功能
- 支持分割结果交互可视化
- 支持结合分割的删除复制等场景编辑
- 分割图的实时查看以及渲染结果导出
参考原repo:https://github.com/graphdeco-inria/gaussian-splatting
|- dataset
|- |- images
|- |- images_2
|- |- images_4
|- |- images_8
|- |- transforms.json
|- |- points3d.ply (可选,从slam生成或者从sfm生成)
python train.py -s --eval # Train with train/test split
|- slam dataset
|- |- images
|- |- images_2
|- |- images_4
|- |- images_8
|- |- Keyframes.txt(comap格式)
|- |- points3d.ply (可选,slam生成)
- 首先需要进行数据转换
python process_data/slam2nerf.py #将路径改为slam得到的数据集路径
此脚本还支持对数据集的一些规则划分方法,如序列划分以及localrf中提到的划分方法
-
得到nerfstudio格式的数据
|- dataset |- |- images |- |- images_2 |- |- images_4 |- |- images_8 |- |- transforms.json |- |- points3d.ply (可选,从slam生成或者从sfm生成)
根据PR:https://github.com/graphdeco-inria/gaussian-splatting/pull/30,实现了对深度图的渲染
python render.py -m # Generate renderings
在深度渲染的基础上,参考Towards Robust Monocular Depth Estimation: Mixing Datasets for Zero-shot Cross-dataset Transfer 实现了深度监督损失
1.运行单目深度估计DPT算法估计数据集的深度图
python DPT/run_monodepth.py #修改数据集路径
- 算法将会自行检测数据集路径下是否存在命名为depth的文件夹,如果存在,将会读取图像并进行深度监督
python train.py -s --using_depth(可选) --eval # Train with train/test split --depth_loss_choice in ["localrf", "rank_loss", "continue_loss, "hybrid_loss", "l1_loss"]
python train.py -s --able_appearance_embedding(可选,是否学习外观潜入来应对光照变化剧烈的场景) --eval # Train with train/test split
git checkout add_segment_feature_with_3d_mean
vi submodules/diff-gaussian-rasterization/cuda_rasterizer/config.h cd submodules/diff-gaussian-rasterization $$ pip install -v -e .
python train_segment.py -s --using_seg --eval -r 4
- 背景裁剪
- 场景融合(融合多个子场景联合渲染)
- 场景编辑(放大,缩小,移动,旋转等)
- 子场景编号投影(可以更好的选择子场景)
- 深度渲染
- 协方差缩放渲染
-
旋转平移
q(上移) w(前) e(下移) | u i(上旋) o a(左) s(后) d(右) | j(左旋) k(下旋) l(右旋)
-
z 协方差尺度控制[1.0, 0.25, 0.1, 0.01, 0.001]
-
c clip模式切换[True, False]
-
v 保存当前裁剪场景
-
b 子场景复制,直接复制crop到的区域为子场景表示
-
n 主场景移除,删除crop的区域从而达到物体移除的效果
-
g 子场景编号投影
-
p 投影模式切换[xyz, bbox, none](在crop 模式下执行)
-
r 渲染训练路径图像
-
1~9 场景选择按钮,选择对应的子场景
-
, 添加关键帧
-
. 删除关键帧
-
SPACE(空格) 关键帧插值渲染
- x 依次分割标注的物体
- m 添加分割图渲染模式[segment(全景分割图), hybrid(与rgb结果叠加)]
python visualizer.py -m model_path --fast_gui(是否使用图像cache来加速,开启无法启用cilp功能) --low_memory(是否只load pose,从而减少内存消耗) -r(render 分辨率)
Q1:分割光栅器从哪里下载? A1: 光栅器独立于该算法库存在,需要从 https://codeup.aliyun.com/62bad13611fc0f0c9e2adf9d/library-robot/diff-gaussian-rasterization.git clone