3d gaussian-splatting源码运行及结果展示

2024-05-11 01:28

本文主要是介绍3d gaussian-splatting源码运行及结果展示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

笔者是在windows下配置的环境

源码地址及官方教程

github gaussian-splatting
官网给出了详细的配置教程和视频解说
记录一下个人的部署过程

环境需求

硬件需求

具有计算能力 7.0+ 的带有CUDA的GPU
24G显存

软件需求

python版本我没注意到明确说明,3.7以上应该就可以(我用的3.12)
Anaconda (python环境管理,网上教程很多)
支持PyTorch扩展的C++编译器(VS2019)
支持PyTorch扩展的CUDA SDK 11 (笔者及官方使用的是11.8)(在cmd中使用命令nvcc --version

第三方应用

  1. ffmpeg 是一款免费,开源的音视频编解码工具及开发套件,在这里只需要用它来将视频分割成图片序列
    下载链接
    在这里插入图片描述
    两个都可以,上面是基础版,下面是完整版
    解压缩,然后添加环境变量到加压目录下的bin文件夹(这里我把下载后的文件名改过了)
    在这里插入图片描述

  2. COLMAP是一款开源的结合SfM(Structure-from-Motion)和MVS(Multi-View Stereo)的三维重建Pipeline
    GitHubRelease页下载
    在这里插入图片描述
    如果电脑已经配置了CUDA可以下载没有CUDA的包,但是我们前面应该是配置了CUDA的环境,这里下载no-cuda版本就可以了。
    解压缩,然后添加系统环境变量到加压文件夹路径就可以了
    在这里插入图片描述

  3. ImageMagick 图像批处理的软件
    下载地址
    在这里插入图片描述
    选择一个路径,勾选添加环境变量,无脑安装。

源码下载

可以用git也可以直接下载

git clone git@github.com:graphdeco-inria/gaussian-splatting.git --recursive
or
git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive

Conda环境

打开一个anaconda prompt,cd到gaussian-splatting源码所在路径,例如D:\3DGaussian\gaussian-splatting
一次输入下面命令

SET DISTUTILS_USE_SDK=1 # Windows only
conda env create --file environment.yml
conda activate gaussian_splatting

可能会在第二步出错,官方给出的方案是(注意在源码所在路径下)执行以下代码

conda activate gaussian_splatting
pip install submodules\diff-gaussian-rasterization
pip install submodules\simple-knn

数据集准备

  1. 用手机相机围绕一个物体拍摄一段视频

  2. 比如拍摄一个可乐瓶视频,放到<gaussian-splatting source>\data\cola路径下

  3. 在<gaussian-splatting source>\data\cola下执行ffmpeg -i {video} -qscale:v 1 -qmin 1 -vf fps={fps} %04d.jpg,其中{video}参数是视频路径,{fps}参数是指每秒的获取的帧数,笔者拍摄了15秒的视频每秒2帧。

  4. 分割结果应该是若干张图片
    在这里插入图片描述

  5. 把图片放到<gaussian-splatting source>\data\cola\input下
    在这里插入图片描述

  6. 在conda环境gaussian_splatting下,cd到<gaussian-splatting source>目录下执行命令
    python convert.py -s <location>
    <location>指的是<gaussian-splatting source>\data\cola路径,也就是input的上级目录
    执行完成后生成的内容大概是这样
    在这里插入图片描述

  7. 然后执行以下命令
    python train.py -s <path to COLMAP or NeRF Synthetic dataset>
    <path to COLMAP or NeRF Synthetic dataset>是input的上级目录<gaussian-splatting source>\data\cola
    开始训练
    训练结果在路径<gaussian-splatting source>\output\cola_7000\point_cloud\iteration_7000路径下
    在这里插入图片描述
    用文本编辑器打开能看到各种参数
    在这里插入图片描述

  8. 渲染结果,命令中的路径为<gaussian-splatting source>\output\cola_7000\,因为我这里只存储了7000次迭代的结果

python render.py -m <path to trained model> # Generate renderings

渲染结果保存在<gaussian-splatting source>\output\cola_7000\train\下面
9. 评估结果,路径与渲染的路径相同

python metrics.py -m <path to trained model> # Compute error metrics on renderings

交互式窗口

windows下的预编译版本链接下载
下载完后是一个压缩包,解压缩即可。
在这里插入图片描述
SIBR_remoteGaussian_app.exe 这个程序可以在训练的同时查看训练情况,并且随着迭代更新显示结果,可以双击运行,也可以命令行运行
SIBR_gaussianViewer_app.exe 这个可以用来查看训练的结果
比如我的模型保存在<gaussian-splatting source>\output\cola_7000\point_cloud\iteration_7000路径下
那么我在命令行调用以下命令
SIBR_gaussianViewer_app.exe -m D:\3DGaussian\gaussian-splatting\output\cola_7000
就可以将训练好的模型可视化了。
在这里插入图片描述
最后,祝大家科研顺利,有什么问题欢迎讨论,本人能力有限,仍需学习!

这篇关于3d gaussian-splatting源码运行及结果展示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/978114

相关文章

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

PostgreSQL如何用psql运行SQL文件

《PostgreSQL如何用psql运行SQL文件》文章介绍了两种运行预写好的SQL文件的方式:首先连接数据库后执行,或者直接通过psql命令执行,需要注意的是,文件路径在Linux系统中应使用斜杠/... 目录PostgreSQ编程L用psql运行SQL文件方式一方式二总结PostgreSQL用psql运

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、