SegAnyGAussians(SAGA)项目配置和运行

GitHub项目地址:Jumpat/SegAnyGAussians: The official implementation of SAGA (Segment Any 3D GAussians) (github.com)


 一、项目准备

1、下载原项目的zip包解压

2、下载third_party目录下的两个模块,放到对应目录下

3、下载预训练模型和数据集

数据集和预训练模型放到项目目录下,项目结构可以参考下图(之后的参考命令也是以此项目结构为基础):


二、项目配置

1、配置CUDA 11.6环境,使用nvcc -V命令确认

2、配置pytorch环境,使用命令:

pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116

3、配置pytorch3d,使用命令:

conda install https://anaconda.org/pytorch3d/pytorch3d/0.7.1/download/linux-64/pytorch3d-0.7.1-py37_cu116_pyt1121.tar.bz2

4、分别cd到以下几个目录,通过命令安装子模块

在以下目录:
./submodules/diff-gaussian-rasterization
./submodules/diff-gaussian-rasterization_contrastive_f
./submodules/simple-knn
./third_party/kmeans_pytorch
./third_party/segment-anything

分别使用命令:
pip install -e .

5、其他需要的模块使用 pip install即可

pip install plyfile==0.8.1
pip install tqdm
pip install jupyter
pip install opencv-python
pip install matplotlib
pip install numba

6、一些常见的报错
# (1)No such file or directory: ':/usr/local/cuda-11.6/bin/nvcc': ':/usr/local/cuda-11.6/bin/nvcc'
解决:终端执行export CUDA_HOME=/usr/local/cuda
# (2)subprocess.CalledProcessError: Command ‘[‘ninja‘, ‘-v‘]‘ returned non-zero exit status 1
解决:setup.py中的“cmdclass={'build_ext': BuildExtension}”改为“cmdclass={'build_ext': BuildExtension.with_options(use_ninja=False)}”
# (3)Unable to create environments file. Path not writable.
解决:终端执行sudo chown -R 1000:1000 /home/userName/.conda,然后重启电脑。其中,userName就是当前登陆用户的用户名。


三、项目运行

1、extract_features.py的第18行加上parser.add_argument("--downsample", default="4", type=str)

说明:设置一次。以防使用下采样4倍的数据集时报错。

2、特征提取。

python extract_features.py --image_root <path to the scene data> --sam_checkpoint_path <path to the pre-trained SAM model> --downsample <1/2/4/8>

例如:python extract_features.py --image_root data/360_v2/bicycle --sam_checkpoint_path dependencies/sam_ckpt/sam_vit_h.pth --downsample 4

3、mask生成。

python extract_segment_everything_masks.py --image_root <path to the scene data> --sam_checkpoint_path <path to the pre-trained SAM model> --downsample <1/2/4/8>

例如:python extract_segment_everything_masks.py --image_root data/360_v2/bicycle --sam_checkpoint_path dependencies/sam_ckpt/sam_vit_h.pth --downsample 4

4、预训练3DGS模型。

python train_scene.py -s <path to COLMAP or NeRF Synthetic dataset>

例如:python train_scene.py -s data/360_v2/bicycle

5、训练三维特征。

python train_contrastive_feature.py -m <path to the pre-trained 3DGS model>

例如:python train_contrastive_feature.py -m output/1c7b8dc0-0

其中:1c7b8dc0-0是预训练的3DGS模型

6、分割。

执行prompt_segmenting.ipynb,也可以将其另存为prompt_segmenting.py并执行

其中需要设置这些参数:

参数

参数值

DATA_ROOT

data/360_v2/bicycle

MODEL_PATH

./output/1c7b8dc0-0

FEATURE_GAUSSIAN_ITERATION

30000

SAM_CKPT_PATH

./dependencies/sam_ckpt/sam_vit_h.pth

mask_id

0,1,2

input_point

Np.array([[392,500]])

说明:

(1)mask_id根据需要设置为0或1或2。

(2)input_point:提示点。来源于数据集的第一张图片。例如使用下采样4倍后的数据集,那么应该使用images_4的第一张图片来指定提示点。此处使用了一个提示点。实际训练时根据需要可使用多个提示点。

7、在SIBR_Viewers工具中执行:./install/bin/SIBR_gaussianViewer_app -m output/1c7b8dc0-0

说明:

(1)需要把seg_no_mask_point_cloud.ply重命名为point_cloud.ply。

(2)-m后面的是模型的路径。

### 高斯相关概念及其编程实现 #### 什么是高斯分布? 高斯分布(Gaussian Distribution),也被称为正态分布,是一种连续概率分布,在统计学数据科学领域具有重要地位。它由均值 \( \mu \) 标准差 \( \sigma \) 定义,其概率密度函数可以表示为: \[ f(x|\mu,\sigma^2)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}} \] 其中,\( \mu \) 是分布的中心位置,而 \( \sigma \) 则决定了分布的宽度[^4]。 #### 编程中的高斯随机数生成 在许多编程语言中,可以通过内置库轻松生成服从高斯分布的随机数。以下是 Python 中的一个例子,展示如何利用 `numpy` 库生成一组高斯分布的数据样本。 ```python import numpy as np import matplotlib.pyplot as plt # 设置参数 mu=0, sigma=1 mu, sigma = 0, 1 # 使用 NumPy 的 random.normal 函数生成 1000 个样本 samples = np.random.normal(mu, sigma, 1000) # 绘制直方图 plt.hist(samples, bins=30, density=True, alpha=0.6, color=&#39;g&#39;) # 添加理论曲线 xmin, xmax = plt.xlim() x = np.linspace(xmin, xmax, 100) p = (1 / (np.sqrt(2 * np.pi) * sigma)) * np.exp(-((x - mu)**2) / (2 * sigma**2)) plt.plot(x, p, &#39;k&#39;, linewidth=2) plt.title(&#39;Histogram of Gaussian Samples&#39;) plt.show() ``` 此代码片段展示了如何通过指定均值标准差来生成并可视化高斯分布的样本集合[^5]。 #### 高斯过程回归简介 除了简单的随机变量模拟外,高斯过程(Gaussian Process)也是一种强大的机器学习技术,用于解决回归问题。相比传统的监督学习模型,如深度学习提到的学习数据表征而非特定任务算法的方法[^2],高斯过程提供了一种更加灵活的概率建模方式。给定训练集 \( D=\{(x_i,y_i)\}_{i=1}^{n} \),目标是从输入空间到输出空间映射关系进行推断。具体来说,假设观测值 y 被视为潜在函数 f 加上噪声的结果,则整个推理框架基于联合多维正态分布构建而成[^6]。 #### 实现简单的一维高斯过程回归 下面给出一段简化版的一维高斯过程回归Python代码示例: ```python from sklearn.gaussian_process import GaussianProcessRegressor from sklearn.gaussian_process.kernels import RBF, ConstantKernel as C import numpy as np # 创建核函数对象 kernel = C(1.0, (1e-3, 1e3)) * RBF(10, (1e-2, 1e2)) # 初始化GP实例 gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=9) # 训练数据 X_train = np.array([[-1], [0], [1]]) y_train = np.sin(X_train).ravel() # 拟合模型 gp.fit(X_train, y_train) # 测试数据网格化 X_test = np.linspace(-2, 2, 100).reshape(-1, 1) # 进行预测 mean_prediction, std_prediction = gp.predict(X_test, return_std=True) # 可视化结果... ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值