3D Gaussian Splatting复现

news2025/1/17 0:01:02

        最近3D Gaussian Splatting很火,网上有很多复现过程,大部分都是在Windows上的。Linux上配置环境会方便简单一点,这里记录一下我在Linux上复现的过程。

        Windows下的环境配置和编译,建议看这个up主的视频配置,讲解的很细致:3D Gaussian Splatting從0開始到Unreal與Unity-( pzman )_哔哩哔哩_bilibili


预先准备

        一支MP4格式的视频,可以是你用手机拍摄的任何一个你想要重建的物体或者环境的视频。

        Gaussian Splatting的源码,源码地址:GitHub - graphdeco-inria/gaussian-splatting: Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering"


一、环境配置与准备

1.下载Gaussian Splatting的源码

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

2.安装CUDA

        这个这里就不赘述了,需要注意的是官方说使用11.6版本的CUDA会有问题,。官方使用的是11.8版本的,所以需要确保你的CUDA版本高于11.8,使用下面的命令查看你的CUDA版本:

nvcc --version

 3.使用conda安装依赖库,并创建虚拟环境

        首先进入上面从GitHub上clone下载来的gaussian-splatting源码路径,在里面我们可以看到一个 environment.yml 文件,里面提供了需要的依赖库的名字,直接使用下面的命令执行会自动为你创建一个名为 gaussian_splatting 的conda虚拟环境,并开始安装所需要的依赖库:

conda env create --file environment.yml

        等待安装完毕后,激活创建的conda虚拟环境:

conda activate gaussian_splatting

 4.安装FFmpeg

        这里主要是为了提取拍摄的视频中的图片,如果有数据集的话也可以不用安装。

        由于安装别的依赖的时候,可能会装了FFmpeg,但是使用起来会有问题。这里建议先把环境中使用FFmpeg删除再重新安装:

// 删除所有安装的 ffmpeg
sudo apt-get remove ffmpeg
sudo apt-get purge ffmpeg
// 删除 Anaconda ffmpeg 模块
conda remove ffmpeg
重新安装
sudo apt-get install ffmpeg

 5.安装colmap

        这里安装colmap是为了从图片生成点云,因为gaussian splatting的输入是点云。如果有colmap生成的数据集或者NeRF格式的数据集也可以直接使用。

        编译安装colmap可以查看我的另一篇博客:Linux 编译安装colmap_linux colmap-CSDN博客

6.安装viewers

        这个工具是最后查看我们训练完后的结果的可视化,这里建议下载Windows下的,把Linux下的训练结果放到Windows下查看。因为Linux下需要源码编译,比较麻烦。

        Windows安装包下载地址:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/binaries/viewers.zip


二、开始训练

        1.首先进入Gaussian Splatting源码的路径下,然后创建一个data文件夹,并把准备的MP4格式的视频放到data文件夹下,我这里视频的名字为input.MP4。

        2.使用FFmpeg截取视频帧为图片,在data目录下创建input目录,使用下面的代码可以截取视频帧并把图片放到input目录下:

ffmpeg -i input.mp4 -vf "setpts=0.2*PTS" input/input_%4d.jpg

        3.进入到源码的目录下,使用源码中的 convert.py 文件生成点云,其中就是调用colmap生成点云,所以需要先安装好colmap,运行后的data文件夹中目录结构如下:

python convert.py -s data

        4.开始训练,接下来等待训练完即可:

python train.py -s data -m data/output

        训练完成后,可以看到在data文件夹下生成了一个output文件夹,里面就是我们的训练结果。input.ply是描述重建后的顶点和表面的模型文件,point_cloud下是7000步和30000步时的训练结果:

        5.最后一步,可视化训练的结果。

        这里是在Windows下使用的官方提供的Viewer工具,下载链接放在上面了,下载完后只要解压就行了。解压后是一个名字是viewers的文件夹,进入这个文件夹,然后把训练结果的output文件夹放在下面,在该文件夹下打开cmd,使用下面的命令运行:

.\bin\SIBR_gaussianViewer_app -m output

         大功告成!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1358165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

led台灯哪些牌子性价比高?那些性价比高的LED护眼台灯推荐

台灯作为家居用品在日常生活中使用频繁。用户可以根据个人需求和喜好,在市场上找到合适的款式。然而,由于台灯种类繁多,甚至连相关标准都存在差异,这使得一些缺乏经验的购物小白感到困扰。那么,led台灯哪些牌子性价比高…

python入门,list列表详解

目录 1.list的定义 2.index查找某元素的下标 3.修改 ​编辑 4.插入 ​编辑 5.追加元素 1.append,追加到尾部 2.extend,追加一批元素 ​编辑 6.删除元素 1.del 列表[下标] 2.列表.pop(下标) 3.列表.remove(元素) 7.清空列表 8.统计某一元素在列表内的数量 9.计算…

app广告变现——广告预加载机制,提升用户体验

通过广告预加载,开发者可以避免在向用户显示广告时出现延迟。 应用在程序启动时需要请求网络,加载资源会需要等待时间,如果在等待过程中没有及时给用户展现画面或反馈,用户很可能会因为等待时间过长而推出应用。广告预加载在此时…

美团后端Java实习一面面经

说一下AOP? 面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的技术。可以减少程序中相同代码的编写,简化开发,使得接口更加专注于业务 相关概念 Aspect(切面): Aspect 声…

【ES6语法学习】解构赋值

文章目录 引言一、什么是解构赋值1.1什么是解构赋值1.2 数组的解构赋值1.2.1 基本用法1.2.2 默认值1.2.3 剩余参数 1.3 对象的解构赋值1.3.1 基本用法1.3.2 默认值1.3.2 剩余参数 1.4 字符串的解构赋值1.5 函数参数的解构赋值 二、解构赋值的优势和应用场景2.1 代码简化和可读性…

并发程序设计--D2D3exec函数族和守护进程

exec 函数族 背景&#xff1a;fork创建进程之后&#xff0c;子进程和父进程执行相同的代码&#xff0c;但是在实际开发当中&#xff0c;我们希望父子进程执行不同的代码。 作用&#xff1a;执行指定的程序 #include <unistd.h> int execl(const char *path, const cha…

echarts中dataZoom拖拽不起效果

vue3项目中&#xff0c;echarts使用dataZoom进行区域拖动&#xff0c;拖动下图红色框&#xff0c;数据展示无变化拖动功能失效。 原因 vue3中使用了ref或者reactive等初始化图表的变量 //定义 let myChart ref<any>(null); //使用 myChart.value echarts.init(chartR…

京东年度数据报告-2023全年度净水器十大热门品牌销量榜单

近年来&#xff0c;随着科技的不断发展和应用&#xff0c;净水器的技术得到持续创新和提高&#xff0c;产品品质和使用效果不断优化&#xff0c;这也进一步提升了净水器的市场竞争力&#xff0c;2023年&#xff0c;净水器市场的销售成绩呈现增长。 根据鲸参谋平台的数据显示&a…

了解单元测试

一&#xff0c;测试分类 1.1 E2E测试&#xff08;end to end端到端测试&#xff09; 属于黑盒测试。 主要通过测试框架&#xff0c;站在用户测试人员的角度&#xff0c;模拟用户的操作进行页面功能的验证&#xff0c;不管内部实现机制&#xff0c;完全模拟浏览器的行为。&am…

接口自动化—pytest命令行操作

学习目标&#xff1a; 1、pytest的不同的运行方法 2、pytest常见的命令行参数 3、如何添加自定义的pytest命令行参数 学习内容&#xff1a; 1、pytest的不同的运行方法 1.1主要有三种情况的运行方式&#xff1a; 1.1.1没有使用pytest框架&#xff0c;但是要运行包含test…

微信多功能投票小程序源码系统:送礼物+在线充值+票数汇总+创建活动+完整的代码安装包 附带完整的搭建教程

微信已成为人们日常生活中不可或缺的一部分。因此&#xff0c;微信小程序也受到了广大用户的欢迎。在这个背景下&#xff0c;多功能投票小程序应运而生&#xff0c;为各种活动提供了方便快捷的投票方式。本文将介绍一款微信多功能投票小程序源码系统&#xff0c;该系统具有送礼…

Python | Iter/genartor | 一文了解迭代器、生成器的含义\区别\优缺点

前提 一种技术的出现&#xff0c;需要考虑&#xff1a; 为了实现什么样的需求&#xff1b;遇到了什么样的问题&#xff1b;采用了什么样的方案&#xff1b;最终接近或达到了预期的效果。 概念 提前理解几个概念&#xff1a; 迭代 我们经常听到产品迭代、技术迭代、功能迭代…

Apache Doris (六十一): Spark Doris Connector - (1)-源码编译

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. Spark Doris Connector…

开发者必备的 Github 加速工具(截至2024年01月)

开始闲聊前&#xff0c;我要感谢大神小青龍总结的博文&#xff1a;作为程序员不得不知道的几款Github加速神器&#xff0c;给我们介绍了常用&#xff08;较为合规&#x1f604;&#xff09;的加速方法。毕竟 github 是开发者绕不过的宝库。 背景 我用 Github 将近12年&#x…

drf知识--11

补充 # 研究simple-jwt提供的Token类&#xff1a; 1、RefreshToken:生成refresh token的类 2、AccessToken:生成refresh token的类 3、Token&#xff1a;他们俩的父类 4、str(RefreshToken的对象)---得到字符串 refresh token&#xff0c;Token类写了 …

【linux学习】linux概述

1. linux概述 操作系统主要的功能有两个部分&#xff0c;一是更有效率的控制计算机硬件资源&#xff08;主要通过核心来控制&#xff09;&#xff0c;二是为程序设计师提供更容易开发软件的环境&#xff08;系统呼叫提供软件开发环境&#xff09;。linux就是一套操作系统&…

台灯学生用哪个牌子最好?学生护眼台灯最好的品牌推荐

如今的家长对教育十分重视&#xff0c;不仅给孩子提供了各种别致的文具&#xff0c;为了孩子有更好的学习光线&#xff0c;还会购买各种护眼台灯&#xff0c;但各种选择五花八门。从无蓝光、无频闪到柔和光&#xff0c;各种宣传亮点层出不穷……为了为孩子选购一款优质的学习护…

P3704数字表格(莫比乌斯反演)

题目背景 Doris 刚刚学习了 fibonacci 数列。用 fi​ 表示数列的第 i 项&#xff0c;那么 00,11f0​0,f1​1 fn​fn−1​fn−2​,n≥2 题目描述 Doris 用老师的超级计算机生成了一个 nm 的表格&#xff0c; 第 i 行第 j 列的格子中的数是 gcd(i,j)​&#xff0c;其中gcd(…

企业数据治理的三个阶段:从起步到成熟的数据管理之旅

随着数字化时代的到来&#xff0c;企业数据已经成为企业的重要资产和驱动业务发展的重要力量。然而&#xff0c;要想充分利用数据的价值&#xff0c;企业需要对其数据进行有效的管理和治理。本文将对企业数据治理的三个阶段进行详细的探讨&#xff0c;以帮助企业了解其在数据治…

5600U PVE安装WIN10后直通核显

修改PVE系统配置 请先安装相同版本的PVE系统&#xff0c;其他版本如果存在问题请自行查找。 安装过程比较简单&#xff0c;具体方法请自行百度 1. 修改grub启动参数&#xff1a; 修改文件 /etc/default/grub 中 GRUB_CMDLINE_LINUX_DEFAULT 配置&#xff1a; GRUB_CMDLINE_LI…