SegAnyGAussians 项目介绍
项目背景
SegAnyGAussians,简称 SAGA,是一种创新的3D图像分段工具,它的核心思想是实现任意3D高斯图像的分段。项目包括一种官方实现,详细描述和实验结果可以在 arXiv 论文中找到。这个工具旨在通过高效的3D分段来帮助建模和渲染复杂的3D场景。
项目安装
要安装 SAGA,用户可以从 GitHub 仓库克隆项目代码,然后通过 Conda 创建一个新的虚拟环境并激活它:
git clone git@github.com:Jumpat/SegAnyGAussians.git
# 或者使用 HTTPS 克隆
git clone https://github.com/Jumpat/SegAnyGAussians.git
# 然后安装依赖包
conda env create --file environment.yml
conda activate gaussian_splatting
使用 ViT-H 模型需要从网上下载预训练模型,并将其放置到 ./third_party/segment-anything/sam_ckpt
目录下。
准备数据
SAGA支持多种数据集,包括 360_v2、nerf_llff_data 和 LERF 数据集。数据结构展示如下:
./data
/360_v2
/garden
/images
/images_2
/images_4
/images_8
/sparse
/features
/sam_masks
/mask_scales
...
/nerf_llff_data
/fern
/images
/poses_bounds.npy
/sparse
/features
/sam_masks
/mask_scales
...
/lerf_data
...
预训练3D高斯分布
要进行3D高斯训练,需执行以下命令:
python train_scene.py -s <COLMAP或NeRF Synthetic数据集的路径>
数据预处理
为了获得 sam_masks 和对应的 mask scales,用户需运行以下命令:
python extract_segment_everything_masks.py --image_root <场景数据的路径> --sam_checkpoint_path <预训练SAM模型的路径> --downsample <1/2/4/8>
python get_scale.py --image_root <场景数据的路径> --model_path <预训练3DGS模型的路径>
若想尝试开放词汇分割,则需提取 CLIP 特征:
python get_clip_features.py --image_root <场景数据的路径>
训练3D高斯亲和特征
用户可以使用以下命令进行训练:
python train_contrastive_feature.py -m <预训练3DGS模型的路径> --iterations 10000 --num_sampled_rays 1000
3D分割
SAGA 提供了一个交互式GUI和jupyter-notebook 两种方式来进行3D分割。使用GUI的指令如下:
python saga_gui.py --model_path <预训练3DGS模型的路径>
在 jupyter-notebook 中,提到的 open-vocabulary segmentation 仅实现于 prompt_segmenting.ipynb 文件中。
GUI使用指南
该GUI提供了多个交互选项,帮助用户轻松控制视点和执行3D分割。用户可以通过拖动来旋转、平移视图,点击进行3D点提示输入,设置分割参数,并在分割后进行回滚或保存结果。
端到端渲染
在保存分割结果后,用户可以通过以下命令在训练视图上渲染结果:
python render.py -m <预训练3DGS模型的路径> --precomputed_mask <分割结果路径> --target scene --segment
总而言之,SegAnyGAussians 项目是一个功能强大且灵活的3D图像分割工具,为用户提供了简便的使用方式和强大的分割功能。这对于从事计算机视觉和图形处理的研究人员和开发人员来说都是非常有用的。