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
大功告成!
相关文章:
3D Gaussian Splatting复现
最近3D Gaussian Splatting很火,网上有很多复现过程,大部分都是在Windows上的。Linux上配置环境会方便简单一点,这里记录一下我在Linux上复现的过程。 Windows下的环境配置和编译,建议看这个up主的视频配置,讲解的很细…...
tf-idf +逻辑回归来识别垃圾文本
引入相关包 from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, auc, roc_auc_score import joblib import os import pandas as pd from sklearn.model_select…...
Oracle - 数据库的实例、表空间、用户、表之间关系
Oracle是一种广泛使用的关系型数据库管理系统,它具有高性能、高可靠性、高安全性等特点。1Oracle数据库的结构和组成是一个复杂而又有趣的话题,本文将介绍Oracle数据库的四个基本概念:数据库、实例、表空间和用户,以及它们之间的关…...
Java面试项目推荐,异构数据源数据流转服务DatalinkX
前言 作为一个年迈的夹娃练习生,每次到了春招秋招面试实习生时都能看到一批简历,十个简历里得有七八个是写商城或者外卖项目。 不由得想到了我大四那会,由于没有啥项目经验,又想借一个质量高点的项目通过简历初筛,就…...
一、Vue3组合式基础[ref、reactive]
一、ref 解释:ref是Vue3通过ES6的Proxy实现的响应式数据,其与基本的js类型不同,其为响应式数据,值得注意的是,reactive可以算是ref的子集,ref一般用来处理js的基本数据类型如整型、字符型等等(也可以用来处…...
unity网页远程手机游戏Inspector面板proxima
https://www.unityproxima.com/docs...
聊聊spring事务12种场景,太坑了
前言 对于从事java开发工作的同学来说,spring的事务肯定再熟悉不过了。 在某些业务场景下,如果一个请求中,需要同时写入多张表的数据。为了保证操作的原子性(要么同时成功,要么同时失败),避免数…...
mysql 数据查重与查重分页
起因是公司的crm录入不规范,有重复数据。 之后考虑到需要手动处理,首先需要自动找出重复的数据 查重要求: 存在多个不允许重复的字段,任一字段重复,则判断为同一个客户。划分到同一重复组中。 查重sql如下 SELECT C…...
微服务(12)
目录 56.k8s是怎么进行服务注册的? 57.k8s集群外流量怎么访问Pod? 58.k8s数据持久化的方式有哪些? 59.Relica Set和Replication Controller之间有什么区别? 60.什么是Service Mesh(服务网格)&#x…...
iOS实时查看App运行日志
目录 一、设备连接 二、使用克魔助手查看日志 三、过滤我们自己App的日志 📝 摘要: 本文介绍了如何在iOS iPhone设备上实时查看输出在console控制台的日志。通过克魔助手工具,我们可以连接手机并方便地筛选我们自己App的日志。 Ǵ…...
【计算机毕业设计】SSM健身房管理系统
项目介绍 本项目为后台管理系统,主要分为管理员与用户两种角色; 登录页面,管理员首页,会员增删改查,教练增删改查,运动器材管理等功能。 用户角色包含以下功能: 用户登录页面,用户首页,选择课程,选择教练等功能。 环境需要 1.运行环境&a…...
嵌入式Linux之MX6ULL裸机开发学习笔记(IMX启动方式-启动设备的选择)
一,硬件启动方式选择 1.启动方式的选择 6ull支持多种启动方式。 比如可以从 SD/EMMC、 NAND Flash、 QSPI Flash等启动。 6ull是怎么支持多种外置flash启动程序的。 1.启动方式选择: BOOT_MODE0 and BOOT_MODE1,这两个是两个IO来控制的,…...
K8S Ingress-Nginx导出TCP端口
ingress-nginx导出TCP端口 Exposing TCP and UDP services - Ingress-Nginx Controllerhttps://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/exposing-tcp-udp-services.md helm upgrade ingress-nginx导出redis 6379端口(这种方式最简单&…...
索引类型-哈希索引
一. 前言 前面我们简单介绍了数据库的B-Tree索引,下面我们介绍另一种索引类型-哈希索引。 二. 哈希索引的简介 哈希索引(hash index) 基于哈希表实现,只有精确匹配索引所有列的查询才有效。对于每一行数据,存储引擎都会对所有索引列计算一个…...
uniapp中组件库的Textarea 文本域的丰富使用方法
目录 #平台差异说明 #基本使用 #字数统计 #自动增高 #禁用状态 #下划线模式 #格式化处理 API #List Props #Methods #List Events 文本域此组件满足了可能出现的表单信息补充,编辑等实际逻辑的功能,内置了字数校验等 注意: 由于…...
LLM、AGI、多模态AI 篇三:微调模型
文章目录 系列LLM的几个应用层次Lora技术其他微调技术FreezeP-TuningQLoRA指令设计构建高质量的数据微调步骤系列 LLM、AGI、多模态AI 篇一:开源大语言模型简记 LLM、AGI、多模态AI 篇二:Prompt编写技巧 LLM、AGI、多模态AI 篇三...
IPC之十二:使用libdbus在D-Bus上异步发送/接收信号的实例
IPC 是 Linux 编程中一个重要的概念,IPC 有多种方式,本 IPC 系列文章的前十篇介绍了几乎所有的常用的 IPC 方法,每种方法都给出了具体实例,前面的文章里介绍了 D-Bus 的基本概念以及调用远程方法的实例,本文介绍 D-Bus…...
ES6之生成器(Generator)
✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…...
Matlab技巧[绘画逻辑分析仪产生的数据]
绘画逻辑分析仪产生的数据 逻分上抓到了ADC数字信号,一共是10Bit,12MHZ的波形: 这里用并口协议已经解析出数据: 导出csv表格数据(这个数据为补码,所以要做数据转换): 现在要把这个数据绘制成波形,用Python和表格直接绘制速度太慢了,转了一圈发现MATLAB很好用,操作方法如下:…...
Go面试题学习
1.并发安全性 Go语言中的并发安全性是什么?如何确保并发安全性? 并发安全性是指在并发编程中,多个goroutine对共享资源的访问不会导致数据竞争和不确定的结果。 使用互斥锁(Mutex):通过使用互斥锁来保护…...
SQL效率-查询条件需避免使用函数处理索引字段
一个sql效率的问题 问题 假设created_at 是date类型、是索引,那么以下2种方式有没效率差异: WHERE TO_CHAR(created_at, ‘YYYY-MM-DD’) ‘2020-02-01’WHERE created_at TO_DATE(‘2020-02-01’ , ‘YYYY-MM-DD’) DBA回复 有的,第一…...
【Spring 篇】Spring:轻松驾驭 Java 世界的利器
在 Java 开发领域,Spring 框架无疑是一颗璀璨的明星,它不仅提供了全面的企业级特性,还为开发者提供了简便而强大的开发方式。本文将深入探讨 Spring 框架的简介、配置和快速入门,带你轻松驾驭 Java 世界的利器。 Spring 简介 Sp…...
八个LOGO素材网站推荐分享
即时设计资源广场 在UI界面设计中,为了找到合适的图标icon,你有没有尝试过翻遍整个网络,找到自己想要的,却无法下载或收费使用?最后,只收集图标icon材料需要半天时间。专业设计师使用的图标icon设计材料“…...
React格式化规范
React并没有特定的格式要求,它允许开发者根据自己的喜好和项目需求来选择代码的格式化风格。然而,在React社区中有一些常见的约定和最佳实践,以下是一些常用的格式化规范和建议: 缩进:使用2个或4个空格来进行缩进&…...
如何利用Conda管理多种虚拟环境与Jupyter Notebook内核切换
写在开头 在数据科学与机器学习领域,项目之间可能存在不同的依赖关系和版本要求。为了有效管理这些差异,使用虚拟环境成为一种标准实践。本文将介绍如何利用Conda这一强大的环境管理工具,结合Jupyter Notebook,使得在不同项目之间灵活切换变得轻而易举。 2. Conda简介 2…...
博客摘录「 什么是QPS、TPS、吞吐量?- 高并发名词概念」2024年1月5日
1.什么是高并发? 高并发(High Concurrency)。通常是指系统在短时间内的大量操作。 高并发相关的常见指标有:QPS、TPS、吞吐量、并发数等。 2.QPS(Query Per Second) QPS每秒查询率,是指系统…...
PTA——逆序的三位数
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。 输入格式: 每个测试是一个3位的正整数。 输出格式: 输出按位逆序…...
ChatGPT怎么帮我上班的
1.解放生产力 1)标准格式,完美输出。GPT对于公文等具有一定标准格式的文件,可以进行完美仿写,随随便便以假乱真那都是小菜一碟,这对于经常要开展规范成文的人来说,简直就是个福音,只要前期调教…...
WPF 漂亮长方体、正文体简单实现方法 Path实现长方体 正方体方案 WPF快速实现长方体、正方体的方法源代码
这段XAML代码在WPF中实现了一个类似长方体视觉效果的图形 声明式绘制:通过Path、PathGeometry和PathFigure等元素组合,能够以声明方式精确描述长方体每个面的位置和形状,无需编写复杂的绘图逻辑,清晰直观。 层次结构与ZIndex控制…...
Nginx(十三) 配置文件详解 - 反向代理(超详细)
本篇文章主要讲ngx_http_proxy_module和ngx_stream_proxy_module模块下各指令的使用方法。 1. 代理请求 proxy_pass 1.1 proxy_pass 代理请求 Syntax: proxy_pass URL; Default: — Context: location, if in location, limit_except 设置代理服务器的协议和地址以…...
深圳科技网站建设/建网站公司
液晶显示屏液晶显示屏(LCD)分类:按产品用途,可分为通信工具、家用电器、掌上电脑、交通工具、计量器械、仪器仪表、文教器具、游艺设施等类别; 按显示方式,可分为正性、负性两类; 正性显示时为白底黑字…...
佛山网站建设服务公司/北京互联网公司
C#读取xml节点数据方法小结 本文实例总结了C#读取xml节点数据的方法。分享给大家供大家参考。具体如下: 第一种: 使用XPath XML的路径我配置在web.config 的appSettings节点下 <appSettings><add key"orgCodePath" value"../…...
纯php网站/网站页面分析作业
数据分析师适合女生吗?这个问题被很多人问起过,从总体上来说数据分析师是适合女生的,在IT行业,数据分析师可以说是性别之分较弱的岗位了,女生比较细心,作为数据分析师而言,细心还是十分重要的&a…...
服装网站公司网站/兰州网络推广优化服务
在编辑 MD 的格式的时候出现了下面的问题。 文字和图片排版的时候出现了偏差。 问题和解决 这是因为文字和图片排版的时候没有空行。 在 MD 格式进行排版的时候文字和图片虽然在 MD 文件内已经空行了,但是在实际情况下,MD 将会将图片插入到文字的后面…...
如何搜名字搜到自己做的网站/市场调研与分析
题目链接: https://www.nowcoder.com/practice/9d1559511b3849deaa71b576fa7009dc?tpId85&&tqId29842&rp1&ru/activity/oj&qru/ta/2017test/question-ranking 解题思路: 回文意思就是从前往后和从后往前是一样的 利用str3.insert(i, str2); 将题目中要求…...
wordpress短代码教程/深圳营销型网站建设
1.不管是手动编程方式,校验框架方式,写的类都要继承ActionSupport类2.ActionSupport类中默认有SUCCESS,INPUT变量,execute()方法等。因此继承ActionSupport类后2.1:及时不重写execute(),默认也是有的&#…...