4D Gaussian Splatting for Real-Time Dynamic Scene Rendering的复现相关问题

github:hustvl/4DGaussians: [CVPR 2024] 用于实时动态场景渲染的 4D 高斯展开 --- hustvl/4DGaussians: [CVPR 2024] 4D Gaussian Splatting for Real-Time Dynamic Scene Rendering (github.com)

是不是有人在这个pip install -e submodules/depth-diff-gaussian-rasterization和pip install -e submodules/simple-knn这里疯狂报错?

我这里有两个报错的解决方案:

第一种是running cuda的,然后后面是cuda_home=...,这个问题很好解决,意思是你的pytorch版本是cpu版本,这时候可以选择登入Previous PyTorch Versions | PyTorch去选择你需要安装的对应版本,比如根据文章需求的

conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia

在安装之前最好是pip uninstall把这三个加上torch都给卸了再安装,不然可能会出问题。

cuda安装地址:CUDA Toolkit Archive | NVIDIA Developer

第二个问题是最坑爹的,正当你解决了第一个问题的时候,这时候一片红就出现了,因为没有截图,大概就是几百行的报错,然后里面出现没有指定的类xx的,好,这去看报错人都看晕,而且他妈的没有用!!!为什么,因为该篇作者可能是基于linux的环境写的代码,但本人没用过其他操作系统也不知道会不会有这种问题,反正在window上是不能用的!我是根据后面train的时候需要使用bash来建造colmap,这个bash一直报错自己去搜发现是linux的命令才发觉这个问题的。所以怎么解决呢?很简单,装成cu117版本就行了

conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia

这时候你就可以pip成功了,浪费了两天时间(哭唧唧)

10.19更新

colmap.sh报错的话就是因为你没有吧他放入环境变量中,你应该这样放入环境变量-系统变量-path

### 2D Gaussian Splatting 实现详解 #### 背景介绍 2D Gaussian Splatting 是一种利用二维高斯分布来表示图像或场景的技术。它能够高效地处理大规模数据集并提供高质量的重建效果。这种方法的核心在于使用高斯面元(Gaussian surfels),它们可以存储位置、尺度、旋转、颜色、不透明度以及语义信息。 --- #### 数据准备与环境配置 在开始复现之前,需确保开发环境已正确设置。推荐使用的框架包括 PyTorch 或 TensorFlow,并安装必要的依赖库。以下是基本的 Python 环境配置命令: ```bash pip install torch torchvision numpy matplotlib opencv-python scikit-image ``` 如果需要 GPU 加速支持,则还需确认 CUDA 和 cuDNN 驱动版本兼容性[^4]。 --- #### 核心算法流程解析 ##### 1. 初始化阶段 对于每个高斯面元,其初始参数可以通过输入轨迹或其他先验条件设定。具体而言: - **位置**:通常由点云坐标决定; - **尺度**:定义为标准差 σ 的大小; - **旋转角度**:用于调整椭圆方向; - **颜色/不透明度**:从 RGB 值映射而来; 上述过程可通过如下伪代码描述: ```python import numpy as np def initialize_gaussians(trajectory_points, sigma=0.1): """ Initialize a set of 2D Gaussians from trajectory points. Args: trajectory_points (np.ndarray): Array of shape (N, 2), representing the xy coordinates. sigma (float): Standard deviation for all gaussians. Returns: dict: Dictionary containing initialized parameters. """ N = len(trajectory_points) params = { "position": trajectory_points, "scale": np.full((N,), sigma), "rotation": np.zeros(N), "color": np.random.rand(N, 3) # Random colors for visualization purposes } return params ``` ##### 2. 渲染模块设计 渲染目标是将所有高斯面元投影到屏幕空间上形成最终图像。此操作涉及积分计算以模拟光照效应。假设像素值 P(x,y) 受多个重叠的高斯影响,则有公式表达式[^3]: \[ P(x, y) = \sum_{i} w_i G(x - μ_x^{(i)}, y - μ_y^{(i)}; Σ^{(i)}) \] 其中 \(μ\) 表示均值向量而Σ代表协方差矩阵形式化写法。 实际编码时建议调用现有工具包简化复杂运算逻辑比如 `diff-gaussian-rasterization` 提供的功能接口[^1]: ```python from diff_gaussian_rasterization import rasterize_gaussians # Example usage with dummy data positions = np.array([[0., 0.], [1., 1.]]) scales = np.array([[[0.1, 0.], [0., 0.1]], [[0.1, 0.], [0., 0.1]]]) # Covariance matrices rotations = np.radians(np.array([0., 45.])) colors = np.ones((2, 3)) image_size = (256, 256) rendered_image = rasterize_gaussians( positions.astype('f'), scales.astype('f'), rotations.astype('f'), colors.astype('f'), image_size=image_size ).cpu().numpy() ``` ##### 3. 参数优化策略 采用梯度下降方法更新模型权重直至收敛为止。损失函数 L 定义取决于应用场景可能包含但不限于以下几种成分: - 图像相似性误差 MSE(L2 norm); - 边缘锐利程度约束 TV(total variation regularization); - 如果存在额外传感器读数则加入相应项如 LiDAR height supervision; 完整训练脚本片段展示如下所示: ```python import torch.optim as optim class LossFunction(torch.nn.Module): def __init__(self): super().__init__() def forward(self, rendered_img, target_img): l_mse = ((rendered_img - target_img)**2).mean() # Mean Squared Error grad_x = rendered_img[:, :, :-1] - rendered_img[:, :, 1:] grad_y = rendered_img[:, :-1, :] - rendered_img[:, 1:, :] tv_loss = torch.abs(grad_x).mean() + torch.abs(grad_y).mean() total_loss = l_mse + 0.01 * tv_loss return total_loss optimizer = optim.Adam(gaussian_params.values(), lr=0.01) loss_fn = LossFunction() for epoch in range(num_epochs): optimizer.zero_grad() output = render_function(**gaussian_params) loss_value = loss_fn(output, ground_truth) loss_value.backward() optimizer.step() ``` --- #### 注意事项 - 显存管理至关重要尤其是在大批量实例情况下考虑分批加载减少内存占用情况发生; - 初始猜测质量直接影响后续迭代速度因此尽可能依据领域知识选取合理默认值; - 不同硬件平台间性能差异较大测试期间注意监控资源利用率防止过载崩溃现象产生. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值