3DGS的训练(conda+docker两种方法)

训练方法

Anaconda训练

先裝好anaconda

创建3DGS的conda环境

conda env create --file environment.yml

在bashrc中加入cuda环境

export PATH=/usr/local/cuda-11.6/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64:$LD_LIBRARY_PATH

下载数据

按需下载 T&T+DB COLMAP (650MB) | Pre-trained Models (14 GB) | Viewers for Windows (60MB) | Evaluation Images (7 GB) 等数据。

T&T+DB COLMAP (650MB) :包含了4个场景的图片,并已经通过convert.py进行colmap转换。可以直接用来做train.py训练测试。

Pre-trained Models (14 GB):论文中提到的各种场景的预训练模型。可以通过viewer查看效果

Viewers for Windows (60MB):作者已经编译好的SIBR点云查看工具,不需要按照教程再编译。

Evaluation Images (7 GB) :这是项目训练过程中,同一批数据在不同的算法之下训练出来的场景数据对比图片。

colmap下载(如需使用自己的图片训练):可以从照片集合中进行三维重建,可以识别运动结构 (Structure-from-Motion, SfM)、也可以进行多视图立体 (Multi-View Stereo, MVS)构建。

ImageMagick下载(如需针对自己的图片进行裁剪)。

开始训练

使用刚才下载的T&T+DB COLMAP (650MB) 进行训练测试,验证环境是否正常。

运行以下代码

# 示例代码
python train.py -s <path to COLMAP or NeRF Synthetic dataset> --iterations #迭代次数
# 实际代码
python train.py -s ./DataSet/tandt_db/db/playroom/ --iterations 6000

注意:如果不指定输出目录,默认存储在项目根的output文件中

利用docker容器训练

dockerhub查看需要的镜像

拉取镜像

docker pull zzhopezhou/3dgs:1.1

创建容器

docker run -it --name 3dgs --gpus all -v /home/leador/Dongliiy:/home/leador/Dongliiy c627639e3920 /bin/bash

开始训练

运行以下代码

# 示例代码
python train.py -s <path to COLMAP or NeRF Synthetic dataset> --iterations #迭代次数
# 实际代码
python train.py -s ./DataSet/tandt_db/db/playroom/ --iterations 6000

查看结果

Cloudcompare查看点云

在线点云查看网站:

https://playcanvas.com/supersplat/editor/

### 关于3DGS在大数据集上的训练 对于3D几何场景(3DGS)的大规模数据集训练而言,当前面临的主要挑战在于获取足够的高质量三维数据以及有效的自动化标注机制[^1]。由于互联网缺乏像二维图像那样丰富的3D资源库,因此构建大型3D数据集通常依赖于专门设备采集的真实环境信息或是通过合成方式生成虚拟物体。 针对这一情况,谷歌发布的13GB容量、涵盖17种类别共1030件家庭用品的高精度3D扫描数据集成为了一个重要突破点[^3]。该数据集不仅提供了大量可用于研究和开发的基础素材,同时也促进了更精确模型的学习过程。为了充分利用此类资源并实现高效训练,在设计算法时需考虑以下几个方面: #### 数据预处理 - **标准化**:确保输入到神经网络中的每一个样本都具有相同的尺寸规格; - **增强变换**:采用旋转、缩放和平移等方式增加多样性,提高泛化能力; ```python import numpy as np from scipy.spatial.transform import Rotation as R def augment_data(points, labels=None): """Apply random transformations to point clouds.""" rotation_angle = np.random.uniform() * 2 * np.pi rot_matrix = R.from_euler('z', rotation_angle).as_matrix() points_rotated = np.dot(points, rot_matrix.T) if scale: scales = np.random.uniform(low=0.9, high=1.1, size=(points.shape[0], 1)) points_scaled = points_rotated * scales return points_scaled if not labels else (points_scaled, labels) ``` #### 模型架构选择 考虑到3D数据的特点,PointNet及其改进版本(PointNet++)被广泛应用于分类任务中。这类结构能够直接操作无序集合形式表示的空间坐标系下的离散采样点云,并从中抽取特征向量用于后续预测分析。 #### 训练技巧 - 使用混合精度加速收敛速度的同时减少显存占用; - 应用迁移学习策略初始化权重参数,从而加快优化进程; - 实施早停法防止过拟合现象发生; 尽管存在上述指导方针,具体实施细节还需依据实际应用场景灵活调整。值得注意的是,虽然有部分开源项目提供了一定程度的支持文档和技术支持[^2],但对于特定领域的深入探索往往需要结合最新研究成果不断迭代完善解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值