【3DGS】Ubuntu系统下完成3D Gaussian Splatting自采数据集的重建、评估及可视化

  • 先决条件

【3DGS】Ubuntu20.04系统搭建3D Gaussian Splatting及可视化环境_ubuntu 3dgs安装-CSDN博客

【Azure Kinect】配置Azure Kinect SDK,验证并保存流传输-CSDN博客 

  • 利用ffmpeg从视频中获得图像

在gaussian splatting源码中创建一个mydata文件夹,存入从Azure Kinect DK采集到的output.mkv。同时在mydata文件夹下创建input文件夹,将图片存入:

注:后续运行convert.py文件时,--image_path 被设置为 args.source_path + "/input",即输入图像应该放在名为 "input" 的子目录下。

ffmpeg -i output.mkv input/input_%04d.png

  • 安装COLMAP

官网:GitHub - colmap/colmap: COLMAP - Structure-from-Motion and Multi-View Stereo

#安装依赖
sudo apt-get install git cmake ninja-build build-essential libboost-program-options-dev libboost-filesystem-dev libboost-graph-dev libboost-system-dev libeigen3-dev libflann-dev libfreeimage-dev libmetis-dev libgoogle-glog-dev libgtest-dev libsqlite3-dev libglew-dev qtbase5-dev libqt5opengl5-dev libcgal-dev libceres-dev

#进入文件夹
cd colmap

#创建并进入build文件夹
mkdir build
cd build

#构建安装
cmake .. -GNinja #CMake预处理,生成Ninja构建系统所需的文件
ninja #默认使用系统最大可用cpu核心数进行编译,如果系统cpu有32个核,等效与ninja -j32
sudo ninja install

在这个过程中遇到了ffmpeg版本不兼容的问题,尝试过下面的命令,但是好像不起作用:

// 删除所有安装的 ffmpeg
sudo apt-get remove ffmpeg
sudo apt-get purge ffmpeg

// 删除 Anaconda ffmpeg 模块
conda remove ffmpeg

重新安装
sudo apt-get install ffmpeg

然后我就把错误信息发给chatgpt,哈哈哈我是懒子,让它帮我分析并提出解决办法,不知这么怎么的就由源码安装了ffmpeg3.4.13版本,然后就成功了哈哈哈哈: 

在MobaXterm下运行colmap:

colmap gui

将官方数据File->Import model->data->truck->sparse->0导入看看:

  • 使用convert.py文件生成点云

即调用colmap生成点云。

python convert.py -s mydata

第一次采集的output.mkv大概有7秒,从中获得了220+张图片,但是在生成点云的过程中遇到了图像配准过程多次失败的问题,导致最后只有2张图片符合要求,送入images文件夹。

所以在第二次采集的时候,缓慢移动相机,也采集久了一点,确保相邻图像之间有足够的重叠区域,大概是30秒,800+张图片(转换了还挺久的)。转换后的mydata文件夹如下:

  • 使用ImageMagick进行图像下采样

第二次采集的图片在在训练的时候遇到了宽度大于1600像素的输入图像,在处理时可能导致内存不足或溢出:

因此,使用 ImageMagick 来调整无畸变图像的大小,即在对应文件夹中创建原始分辨率的 1/2、1/4 和 1/8 的图像。

#获取ImageMagick压缩包
wget https://imagemagick.org/archive/ImageMagick.tar.gz

#解压
tar xzvf ImageMagick.tar.gz

#进入文件夹
cd ImageMagick-7.1.1-33

#安装
sudo ./configure
sudo make
sudo make install
sudo ldconfig /usr/local/lib

检查是否安装成功:

还是使用convert.py文件:

python convert.py -s mydata --resize

然后就会有images-2/images-4/images-8文件夹:

  • 使用train.py文件进行重建

 开始用images_8训练,接下来等待训练完即可:

python train.py -s mydata -i images_8 -m mydata/output

  • 评估渲染质量

python train.py -s mydata -i images_8 -m mydata/output --eval
python render.py -m mydata/output
python metrics.py -m mydata/output

结果如下:

  1. SSIM 用于衡量两幅图像之间的相似性,取值范围在 0 到 1 之间。值越接近 1,表示两幅图像越相似。0.9518 表示两幅图像具有很高的结构相似性,质量非常好。
  2. PSNR 是用来衡量图像重建质量的常用指标,单位为分贝 (dB)。值越高,表示重建图像与原始图像之间的差异越小。32.75 dB 是一个较高的值,表示重建图像与原始图像之间的误差较小,质量较好。
  3. LPIPS 是一种基于深度学习的感知相似性指标,值越低,表示图像之间的感知差异越小。0.1045 表示重建图像与原始图像之间的感知差异较小,质量较高。
  • 重建结果可视化

在gaussian-splatting/SIBR_viewers/install/bin文件夹下运行: 

./SIBR_gaussianViewer_app -m (your path)/mydata/output

### 如何在Ubuntu上使用或安装3DGS #### 准备工作 为了确保能够在Ubuntu系统上成功安装和使用3DGS (3D Gaussian Splatting),需要先准备好必要的依赖项以及配置开发环境。 对于CUDA的安装,如果遇到`libt5info`无法安装的问题,则可以通过编辑APT源列表来解决。打开用于存储源列表的新文件 `sudo nano /etc/apt/sources.list.d/ubuntu.sources` 并在文件末尾粘贴特定的内容以更新软件包索引[^1]: ```bash Types: deb URIs: http://archive.ubuntu.com/ubuntu/ Suites: lunar Components: universe Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg ``` 保存该文件之后运行命令 `sudo apt update` 来刷新缓存,这一步骤有助于后续CUDA及其他组件的成功安装。 #### 获取项目仓库 接着获取官方提供的3DGS GitHub仓库,推荐使用带有`--recursive`选项的方式克隆整个仓库及其子模块,这样可以直接获得所有必需的部分而无需手动处理各个部分: ```bash git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive ``` 此方法能简化初始化过程中的复杂度,并减少潜在错误的发生几率[^4]。 #### 配置Python虚拟环境与安装依赖库 进入已下载好的本地副本根目录内创建一个新的Python虚拟环境并激活它;随后按照说明文档指示完成对应版本解释器的选择及必要扩展工具链(如CMake)的预设。完成后,在安装目录下的`submodules`文件夹中分别执行如下两条指令来进行额外第三方库的加载: ```bash pip install submodules/diff-gaussian-rasterization pip install submodules/simple-knn ``` 这两步是为了满足核心算法实现过程中所调用到的功能需求,从而保障程序逻辑层面的一致性和稳定性[^3]。 #### 解决常见问题 当尝试在Ubuntu环境下编译或调试期间遭遇异常状况时,可参照先前积累的经验记录进行排查修复。例如针对Git Submodule相关的权限不足或是路径缺失等问题,应当仔细核对每一条提示信息以便快速定位原因所在[^2]。 通过上述指导方针的操作步骤,应该可以在大多数情况下顺利完成基于Linux发行版平台上的3DGS部署任务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值