当前位置: 首页 > news >正文

Instruct-GS2GS:通过用户指令编辑 GS 三维场景

Paper: Instruct-GS2GS: Editing 3D Gaussian Splats with Instructions
Introduction: https://instruct-gs2gs.github.io/
Code: https://github.com/cvachha/instruct-gs2gs

Instruct-GS2GS 复用了 Instruct-NeRF2NeRF 1 的架构,将基于 NeRF 的三维场景编辑方法迁移到基于 3D GS 的三维场景中。

与 Instruct-NeRF2NeRF 不同的是,Instruct-GS2GS 并不采取 Instruct-NeRF2NeRF 中 Iterative DU 的迭代方式,而是在每一轮的迭代中更新所有训练视图,然后训练 GS 场景。

在这里插入图片描述

目录

  • 一. 研究思路
  • 二. Instruct-GS2GS 模型
  • 三. 训练方法
  • 四. 实验结果
  • 五. 总结
  • 六. 复现

一. 研究思路

二. Instruct-GS2GS 模型

三. 训练方法

在每一轮训练中,先使用 InstructPix2Pix 编辑 所有 训练视图并更新,然后使用全新的训练集训练当前 GS 场景 2.5k 轮。不断重复上述迭代直至收敛。

Instruct-GS2GS 并不采取 Instruct-NeRF2NeRF 中 Iterative DU 的迭代方式,而是在每一轮的迭代中更新所有训练视图,然后再训练 GS 场景。这是因为 NeRF 是基于像素优化的,而 GS 是基于图像优化的,需要一次性光栅化整个图像并计算其损失。如果 Instruct-GS2GS 只更新部分数据集,那么光栅化时必然有一些视角下的图像对应的场景是混合包含已编辑和未编辑图像信息,那么此时计算基于整张图像的损失函数就会失真,导致错误的更新。2

在这里插入图片描述

四. 实验结果

在这里插入图片描述

五. 总结

六. 复现

Instruct-GS2GS 基于 Nerfstudio:

  • 平台:AutoDL
  • 显卡:RTX 4090 24GB
  • 镜像:PyTorch 2.0.0、Python 3.8(ubuntu20.04)、Cuda 11.8
  • 源码:https://github.com/cvachha/instruct-gs2gs

实验记录

  1. 先按照 nerfstudio 教程 创建虚拟环境并激活:source activate nerfstudio。然后安装依赖包,执行到 conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit 即可;

  2. 安装 Instruct-GS2GS 包,然后克隆 Instruct-GS2GS 仓库并更新组件和包;

  3. 在 instruct-gs2gs 文件夹下克隆并安装 Nerfstudio 3,随后执行 ns-train -h 就可以成功验证;
    在这里插入图片描述

  4. Nerfstudio 安装完成后,就可以训练了。因为系统盘空间有限,因此将训练数据放在数据盘,使用 garden 数据集进行训练:ns-train splatfacto --data ../autodl-tmp/data/garden。需要注意的是,这里使用的是 1.0 版本的 Nerfstudio,不再有 gaussian-splatting 参数,这里选用 splatfacto
    在这里插入图片描述
    上一版本的 Instruct-GS2GS 因为 dataparser 的问题,训练时解析 colmap 数据时还会出现路径错误,新版本使用 Nerfstudio V1.0 修复了该问题:
    在这里插入图片描述

  5. 训练时遇到 FileNotFoundError 报错,找不到 colmap 数据中的 .json 文件:
    在这里插入图片描述
    一开始以为是 colmap 处理数据时的命名歧义,将 instruct-gs2gs/nerfstudio/nerfstudio/data/dataparsers/nerfstudio_dataparser.py 第 94 行的 "transforms.json" 修改为 "cameras.json",事实上并非如此。后来发现是训练数据中缺少 transforms.json 文件 4,尝试先安装 COLMAP 5,然后自行处理数据 6ns-process-data images --data ../autodl-tmp/data/garden --output-dir ../autodl-tmp/data/garden。随后就可以成功训练;

  6. garden 场景训练完成后,就可以进行编辑:ns-train igs2gs --data ../autodl-tmp/data/garden --load-dir outputs/garden/splatfacto/2024-05-11_142858/nerfstudio_models --pipeline.prompt "Delete the vase on the table" --pipeline.guidance-scale 12.5 --pipeline.image-guidance-scale 1.5
    在这里插入图片描述

  7. 如果是在服务器上训练的,想要使用监视窗口,需要转发:ssh -p <port> -L 7007:localhost:7007 <username>@<training-host-ip>
    在这里插入图片描述

  8. 训练和编辑后的场景可以再次查看:ns-viewer --load-config outputs/garden/splatfacto/2024-05-11_142858/config.yml,也可以渲染成视频:ns-render camera-path --load-config outputs/garden/splatfacto/2024-05-11_142858/config.yml --camera-path-filename ../autodl-tmp/data/garden/camera_paths/2024-05-11_142858.json --output-path renders/garden/2024-05-11_142858.mp4。渲染场景时,出现 RuntimeError: stack expects a non-empty TensorList 报错:
    在这里插入图片描述
    查询发现是 camera_pathskeyframes 为空导致的 7,机位为空应该是处理数据过程中的问题,目前还没找到解决办法。可以在 Nerfstudio 的可视化界面自行处理数据或者直接使用其他数据集处理得到的机位文件,但后者可能会失真。本次实验使用 Bear 场景的机位进行渲染:
    在这里插入图片描述

实验结果

借用 Bear 场景的机位路径渲染编辑前后的 garden 场景视频如下:

garden场景训练效果

garden场景编辑效果


  1. Instruct-NeRF2NeRF:通过用户指令编辑 NeRF 三维场景 ↩︎

  2. A question about Dataset Update #4 ↩︎

  3. Fresh install error #72 ↩︎

  4. Colab Notebook not generating transforms.json file for custom data #2272 ↩︎

  5. Nerfstudio | Installing COLMAP ↩︎

  6. Nerfstudio | Processing Data ↩︎

  7. Unable to render to mp4 with RuntimeError: stack expects a non-empty TensorList #2916 ↩︎

相关文章:

Instruct-GS2GS:通过用户指令编辑 GS 三维场景

Paper: Instruct-GS2GS: Editing 3D Gaussian Splats with Instructions Introduction: https://instruct-gs2gs.github.io/ Code: https://github.com/cvachha/instruct-gs2gs Instruct-GS2GS 复用了 Instruct-NeRF2NeRF 1 的架构&#xff0c;将基于 NeRF 的三维场景编辑方法迁…...

disql使用

SQL 交互式查询工具 | 达梦技术文档 进入bin目录&#xff1a;cd /opt/dmdbms/bin 启动disql&#xff1a;./disql&#xff0c;然后输入用户名、密码 sh文件直接使用disql&#xff1a; 临时添加路径到PATH环境变量&#xff1a;在当前会话中临时使用disql命令而无需每次都写完整…...

SpringBoot Mybatis-Plus 日志带参数

SpringBoot Mybatis-Plus 日志带参数 1 实现代码2 测试结果 在Spring Boot中&#xff0c;MyBatis插件机制通过拦截器&#xff08;Interceptor&#xff09;来实现。拦截器允许开发人员在执行SQL语句的各个阶段&#xff08;如SQL语句创建、参数处理、结果映射等&#xff09;插入自…...

【WebGIS平台】传统聚落建筑科普数字化建模平台

基于上述概括出建筑单体的特征部件&#xff0c;本文利用互联网、三维建模和地理信息等技术设计了基于浏览器/服务器&#xff08;B/S&#xff09;的传统聚落建筑科普数字化平台。该平台不仅实现了对传统聚落建筑风貌从基础到复杂的数字化再现&#xff0c;允许用户轻松在线构建从…...

Zookeeper分布式锁原理说明【简单易理解】

Zookeeper 非公平锁/公平锁/共享锁 。 1.zookeeper分布式锁加锁原理 如上实现方式在并发问题比较严重的情况下&#xff0c;性能会下降的比较厉害&#xff0c;主要原因是&#xff0c;所有的连接都在对同一个节点进行监听&#xff0c;当服务器检测到删除事件时&#xff0c;要通知…...

去除Win32 Tab Control控件每个选项卡上的深色对话框背景

一般情况下&#xff0c;我们是用不带边框的对话框来充当Tab Control的每个选项卡的内容的。 例如&#xff0c;主对话框IDD_TABBOX上有一个Tab Control&#xff0c;上面有两个选项卡&#xff0c;第一个选项卡用的是IDD_DIALOG1充当内容&#xff0c;第二个用的则是IDD_DIALOG2。I…...

iis部署前后端分离项目(React前端,Node.js后端)

iis虽然已经有点过时&#xff0c;但不少用户还在用&#xff0c;故总结一下。 1. 安装iis 如果电脑没有自带iis管理器&#xff0c;打开控制面板->程序->启用或关闭Windows功能&#xff0c;勾选iis安装即可 2. 部署前端项目 打开iis&#xff0c;添加网站&#xff0c;物理…...

【前端项目笔记】9 数据报表

数据报表 效果展示&#xff1a; 在开发代码之前新建分支 git checkout -b report 新建分支report git branch 查看分支 git push -u origin report 将本地report分支推送到云端origin并命名为report 通过路由的形式将数据报表加载到页面中 渲染数据报表基本布局 面包屑导航…...

等保测评推动哈尔滨数字化转型中的安全保障

在数字经济的浪潮下&#xff0c;哈尔滨作为东北老工业基地的核心城市&#xff0c;正积极推动数字化转型&#xff0c;以创新技术驱动产业升级和经济发展。网络安全等级保护测评&#xff08;简称“等保测评”&#xff09;作为国家网络安全战略的重要组成部分&#xff0c;为哈尔滨…...

#pragma 指令

#pragma 指令作用是设定编译器的状态或者是指示编译器完成一些特定的动作 message 参数能够在编译信息输出窗口中输出相应的信息 #pragma message(“消息文本”) code_seg参数能够设置程序中函数代码存放的代码段&#xff0c;当我们开发驱动程序的时候就会使用到它 #pragma…...

【Excel】 批量跳转图片

目录标题 1. CtrlA全选图片 → 右键 → 大小和属性2. 取消 锁定纵横比 → 跳转高度宽度 → 关闭窗口3. 最后一图拉到最后一单元格 → Alt吸附边框![](https://i-blog.csdnimg.cn/direct/d56ac1f41af54d54bb8c68339b558dd1.png)4. CtrlA全选图片 → 对齐 → 左对齐 → 纵向分布!…...

网站更新改版了

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a;Leo杂谈 ✨特色专栏&#xff1a;MySQL学…...

初识大模型

前提&#xff1a;学习一项技术&#xff0c;要从原理、实践、认知三个方面进行攻克。 不懂原理就不会举一反三&#xff0c;走不了太远。 不懂实践就只能纸上谈兵&#xff0c;做事不落地。 认知不高就无法作对决策&#xff0c;天花板太低。 一、知识体系 二、什么是AI 基于机器…...

Open3D SVD算法实现对应点集配准

目录 一、概述 1.1基本思想 1.2实现步骤 二、代码实现 三、实现效果 3.1原始点云 3.2配准后点云 3.3变换矩阵 一、概述 在点云配准中,SVD(Singular Value Decomposition,奇异值分解)方法是一种常用的精确计算旋转和平移变换的算法。其目标是找到一个刚体变…...

bWAPP靶场安装

bWAPP安装 下载 git地址&#xff1a;https://github.com/raesene/bWAPP 百度网盘地址&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1Y-LvHxyW7SozGFtHoc9PKA 提取码&#xff1a;4tt8 –来自百度网盘超级会员V5的分享 phpstudy中打开根目录&#xff0c;并将下载的文…...

SpringBoot + MyBatisPlus 实现多租户分库

一、引言 在如今的软件开发中&#xff0c;多租户(Multi-Tenancy)应用已经变得越来越常见。多租户是一种软件架构技术&#xff0c;它允许一个应用程序实例为多个租户提供服务。每个租户都有自己的数据和配置&#xff0c;但应用程序实例是共享的。而在我们的Spring Boot MyBati…...

【数据挖掘】银行信用卡风险大数据分析与挖掘

银行信用卡风险大数据分析与挖掘 1、实验目的 中国某个商业银行高层发现自家信用卡存在严重的欺诈和拖欠现象,已经影响到自身经营和发展。银行高层希望大数据分析部门采用数据挖掘技术,对影响用户信用等级的主要因素进行分析,结合信用卡用户的人口特征属性对欺诈行为和拖欠…...

使用 Qt 和 ECharts 进行数据可视化

文章目录 示例图表预览折线图散点图柱状图使用 Qt 和 ECharts 进行数据可视化一、准备工作1. 安装 Qt2. 准备 ECharts二、在 Qt 中使用 ECharts1. 创建 Qt 项目2. 配置项目文件3. 在 UI 中添加 WebEngineView4. 加载 ECharts三、创建折线图、散点图和柱状图1. 折线图2. 散点图3…...

【机器学习】在【Pycharm】中的实践教程:使用【逻辑回归模型】进行【乳腺癌检测】

目录 案例背景 具体问题 1. 环境准备 小李的理解 知识点 2. 数据准备 2.1 导入必要的库和数据集 小李的理解 知识点 2.2 数据集基本信息 小李的理解 知识点 注意事项 3. 数据预处理 3.1 划分训练集和测试集 小李的理解 知识点 注意事项 3.2 数据标准化 小李…...

【搭建Nacos服务】centos7 docker从0搭建Nacos服务

前言 本次搭建基于阿里云服务器系统为&#xff08;CentOS7 Linux&#xff09;、Nacos&#xff08;2.0.3&#xff09;、Docker version 26.1.4 本次搭建基于一个新的云服务器 安装java yum install -y java-1.8.0-openjdk.x86_64安装驱动以及gcc等前置需要的命令 yum install …...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...