3D Gaussian Splatting复现

        最近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.mzph.cn/news/598093.shtml

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

相关文章

695岛屿最大面积

题目 给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] 1 表示陆地, grid[i][j] 0 表示水域。 网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个…

逻辑回归简单案例分析--鸢尾花数据集

文章目录 1. IRIS数据集介绍2. 具体步骤2.1 手动将数据转化为numpy矩阵2.1.1 从csv文件数据构建Numpy数据2.1.2 模型的搭建与训练2.1.3 分类器评估2.1.4 分类器的分类报告总结2.1.5 用交叉验证(Cross Validation)来验证分类器性能2.1.6 完整代码&#xf…

copilot插件全解

COPILOT是一个基于AI的编程辅助工具,它可以帮助程序员自动编写代码,提高开发效率。COPILOT的插件主要是为了将其功能集成到不同的编程环境中,方便程序员使用。 目前,COPILOT支持多种编程环境,包括Visual Studio Code、…

钉钉审批流程解读

组织机构 部门 部门可以创建下级部门部门可以设置部门主管,可以是多人部门可以默认构建,沟通群可以设置部门信息,比如电话、简介可以设置部门的可见性,比如隐藏本部门,本部门将不会在组织机构、搜索,个人…

如何从格式化的 Windows 和 Mac 电脑硬盘恢复文件

格式化硬盘可为您提供全新的体验。它可以是硬盘驱动器定期维护的一部分,是清除不再使用的文件的一种方法,在某些情况下,它是处理逻辑损坏的万福玛利亚。但是,许多用户发现自己格式化了错误的分区或驱动器,或者后来意识…

c语言-指针进阶

文章目录 前言一、字符指针二、数组指针2.1 数组指针基础2.2 数组指针作函数参数 总结 前言 在c语言基础已经介绍过关于指针的概念和基本使用,本篇文章进一步介绍c语言中关于指针的应用。 一、字符指针 字符指针是指向字符的指针。 结果分析: "ab…

elementui loading自定义图标和字体样式

需求:页面是用了很多个loading,需要其中有一个字体大些(具体到图标也一样的方法,换下类名就行) 遇见的问题:改不好的话会影响其他的loading样式(一起改变了) 效果展示 改之前 改之…

使用 Kafka 和 CDC 将数据从 MongoDB Atlas 流式传输到 SingleStore Kai

SingleStore 提供了变更数据捕获 (CDC) 解决方案,可将数据从 MongoDB 流式传输到 SingleStore Kai。在本文中,我们将了解如何将 Apache Kafka 代理连接到 MongoDB Atlas,然后使用 CDC 解决方案将数据从 MongoDB Atlas 流式传输到 SingleStore…

AQS原来是这么设计的,泰裤辣!

缘起 每门编程语言基本都离不开并发问题,Java亦如此。谈到Java的并发就离不开Doug lea老爷子贡献的juc包,而AQS又是juc里面的佼佼者 因此今天就一起来聊聊AQS 概念 AQS是什么,这里借用官方的话 Provides a framework for implementing blo…

第11课 实现桌面与摄像头叠加

在上一节,我们实现了桌面捕获功能,并成功把桌面图像和麦克风声音发送给对方。在实际应用中,有时候会需要把桌面与摄像头图像叠加在一起发送,这节课我们就来看下如何实现这一功能。 1.备份与修改 备份demo10并修改demo10为demo11…

前端跨域问题的解决思路

目录 前言 跨域问题的解决思路 一般跨域的解决方案 前言 做了一个简单页面,做了一些数据埋点,想通过企业微信机器人来推送数据,遇到了一些问题,顺便记录下。 跨域问题的解决思路 由于是项目比较简单,直接使用了aj…

《Effective C++》《Resource Management》

文章目录 13、term13:Use objects to manage resources14、term14:Think carefully about copying behavior in resource-managing classes15、term15:Provide access to raw resources in resource-managing classes法一: 使用智能指针的get进行显示转换法二&#…

Redis 连接 命令

目录 1.Redis Echo 命令 - 打印字符串简介语法可用版本: > 1.0.0返回值: 返回字符串本身。 示例 2.Redis Select 命令 - 切换到指定的数据库简介语法可用版本: > 1.0.0返回值: 总是返回 OK 。 示例 3.Redis Ping 命令 - 查看服务是否运行简介语法可用版本: > 1.0.0返回…

Apache 网页优化

目录 1.网页压缩与缓存 1.1 网页压缩 1. gzip 介绍 2. Http的压缩过程 3. Apache的压缩模块 4. mod_deflate模块 1.2 网页缓存 1. 配置 mod_expires 模块启用 2. 隐藏版本信息 2.1 配置Apache隐藏版本信息 2.2 Apache 防盗链 1. 配置防盗链 2.检查是否安装mod_re…

景联文科技GPT教育题库:AI教育大模型的强大数据引擎

GPT-4发布后,美国奥数队总教练、卡耐基梅隆大学数学系教授罗博认为,这个几乎是用“刷题”方式喂大的AI教育大模型的到来,意味着人类的刷题时代即将退出历史舞台。 未来教育将更加注重学生的个性化需求和多元化发展,借助GPT和AI教育…

你想过在 C++ 中使用契约和反射特性吗?

以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/fOEG22dQqKSpsZmk8z6w6g ISO/IEC C 技术委员会主持人 Herb Sutter 报告称,C26 将具有新的功能,包括契约和反射。 该委员会…

Java异常简单介绍

文章目录 1. 异常分类和关键字1.1 分类1.2 关键字 2. Error2.1 Error定义2.2 常见的Error2.2.1 VirtualMachineError2.2.2 ThreadDeath2.2.3 LinkageError2.2.4 AssertionError2.2.5 InternalError2.2.6 OutOfMemoryError2.2.6.1 OOM原因2.2.6.2 OutOfMemoryError会导致宕机吗 …

大创项目推荐 深度学习卫星遥感图像检测与识别 -opencv python 目标检测

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **深度学习卫星遥感图像检测与识别 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐…

Leetcode算法系列| 11. 盛最多水的容器

目录 1.题目2.题解C# 解法一:暴力C# 解法二:双指针(左指针大于右指针,left)C# 解法三:双指针优化(左指针小于等于最小高度,left)Java 解法一:双指针Python3 解…

经常使用耳机对耳朵听力有影响吗?戴哪种耳机不伤耳朵听力?

经常使用耳机容易引起末梢感受器官受损,可能造成内耳功能损伤,出现耳聋、耳鸣等听力的适应性下降的症状,建议使用耳机时间不要过长,并且音量不要过大。如果想保护听力的话,建议选择骨传导耳机,骨传导耳机通…