gaussian grouping训练自定义数据集

gaussian grouping是一个语义分割3DGS的方法。
它在每个3DGS点云中加入一个叫Identity Encoding的特征向量,
在渲染时把特征向量渲染到2D图像,每个像素位置为一个特征向量,使用额外的线性分类层对每个2D位置的特征向量分类。得到mask。
这个mask和gt mask计算2D损失,同时3D正则化损失利用3D空间一致性,强制执行Identity Encoding在特征距离上接近其最近的3D高斯点。
训练Identity Encoding和线性分类层。

如果训练时有比较完美的mask, 渲染的效果也是很好的。

下面以mip360/kitchen为例训练gaussian grouping. 其他数据集类似。
假设初步只有一些拍摄的图像。放在input文件夹。
用3DGS的convert.py文件处理mip360/kitchen之后,
可得到images和相关下采样图像文件夹,sparse文件夹。

kitchen数据集自带标注好的mask, 如果没有,需要自己标注mask(可以用prepare_pseudo_label.sh),
mask放在kitchen/object_mask文件夹下,格式为png.

train.json设置:

假设mask里面只有2类物体,即前景和背景,前景的像素值取的是255, 背景是0,
那么,在gaussian-grouping/config/gaussian_dataset/train.json中,

"num_classes"要写256.
你会纳闷,为什么只有2类却要写256类?
因为你的前景像素值取的是255,从数字上看,它是第255个类别,想输出类别255,分类器中就要有>=255个类别。如果前景像素值取1,那么"num_classes"可以写2。

类别写小了会报错cuda非法内存访问。
当cuda内存有限时,可以设置较小的"reg3d_max_points"和"reg3d_sample_size"。

train.py

数据集图片过大时可能需要resize,用到images_2, images_4文件夹,
而假设你标注的mask只有一个尺寸。
那么训练的时候就需要把mask调整到和渲染mask一个尺寸。

logits = classifier(objects)
# Object Loss
if len(viewpoint_cam.objects.shape) > 2:gt_obj = viewpoint_cam.objects[:,:,0]  #mask是单通道时不需要这步gt_obj_reshaped = gt_obj.unsqueeze(0).unsqueeze(0)gt_obj_resized = F.interpolate(gt_obj_reshaped,size=(logits.shape[1], logits.shape[2]),mode='nearest')gt_obj_resized = gt_obj_resized.squeeze(0).squeeze(0)gt_obj = gt_obj_resized.cuda().long()
else:gt_obj = viewpoint_cam.objects.cuda().long()

训练很简单,

train.py -s data/mip360/kitchen -r 2  -m output/kitchen --config_file config/gaussian_dataset/train.json

渲染时,num_classes要和前面一致:

render.py -m output/kitchen --num_classes 256

会在output/kitchen中得到mask等结果。

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

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

相关文章

Python——模块和包

模块 Python的模块(Modules)是Python程序的重要组成部分,它们允许你将代码分解成可重用的单元。每个模块都是一个包含Python代码的文件,文件名就是模块名加上.py后缀。模块可以定义函数、类和变量,也可以包含可执行的…

sheng的学习笔记-AI-半监督聚类

AI目录:sheng的学习笔记-AI目录-CSDN博客 半监督学习:sheng的学习笔记-AI-半监督学习-CSDN博客 聚类:sheng的学习笔记-AI-聚类(Clustering)-CSDN博客 均值算法:sheng的学习笔记-AI-K均值算法_k均值算法怎么算迭代两次后的最大…

突发!Runway 从 HuggingFace 及 GitHub 上删库跑路,背后有何隐情?

突发!2024年8月29日Runway 从 HuggingFace 及 GitHub 上删库跑路,背后有何隐情? 🧐 今天我们来聊一聊科技圈一则爆炸性消息:Runway ML 从 HuggingFace 和 GitHub 上删库跑路,毫无预警!这个举动…

Java大文件上传方案(vue+饿了么):秒传、断点续传、分片上传!

前言 本篇文章是基于其他文章的基础上结合自己的理解写出来的,如果哪里有问题请指出! 详细教程 秒传 1、什么是秒传 通俗的说,你把要上传的东西上传,服务器会先做MD5校验,如果服务器上有它就会进入秒传,想要不秒传&#xff0…

properties文件提示未引用

问题描述 以前用的好好的项目,今天突然打开就发现idea不识别spring配置信息显示未引用,如果config代码中引入的配置却可以高亮显示,然后输入spring相关的配置,文件是没有提示的。经过研究发现是spring相关的插件被关闭了。效果如下 解决方法 启用三个插件spring Boot,Sp…

看完这100道软件测试面试题,拿不到offer,算我输

掌握此套面试题,人手至少2份offer,绝不瞎吹!分享给大家。 一、自我介绍 二、灵活问题 1、大概说说之前公司的测试流程 2、测试报告有哪些内容? 3、如何保证用例的覆盖度? 4、什么是测试用例,什么是测试脚本&…

知识社区的小程序源码系统 界面支持万能DIY装修 带源代码包以及搭建部署教程

系统概述 知识社区的小程序源码系统是一款专为构建知识分享和交流社区而设计的强大工具。它提供了完整的源代码包,使开发者能够根据自己的需求进行定制和扩展,打造出个性化的小程序应用。 该系统的界面设计简洁大方,易于操作,同…

【JavaEE】线程安全性问题,线程不安全是怎么产生的,该如何应对

产生线程不安全的原因 在Java多线程编程中,线程不安全通常是由于多个线程同时访问共享资源而引发的竞争条件。以下是一些导致线程不安全的常见原因: 共享可变状态:当多个线程对共享的可变数据进行读写时,如果没有适当的同步机制&…

鸿蒙Next 单元测试框架——hypium

一 框架概述 单元测试框架(hypium)是HarmonyOS上的测试框架,提供测试用例编写、执行、结果显示能力,用于测试系统或应用接口。 表1 单元测试框架功能特性 二 安装使用 目前hypium以npm包的形式发布, 因此需要在Deveco Studio 工程级package.json内配…

CSS-常用属性【看这一篇就够了】

目录 前言文章 常用属性 cursor鼠标样式 outline外轮廓 border与outline的区别 overflow超出部分隐藏 overflow属性值 overflow-x和overflow-y vertical-align属性 应用案例 常用的a标签布局按钮 水平居中的轮播图按钮 产品展示效果: 小米商城菜单 前…

【C#】属性的声明

在面向对象程序设计中,属性是访问对象存储数据的首选方式。 一般不要直接公开类的变量成员,即便是get访问器和set访问器并无数据访问规则。 属性的声明 1. 完整声明 在代码中输入propfull ,并连续按两下tab键 高亮的部分是可以修改的部分,按tab键可以…

FPGA上板项目(四)——FIFO测试

目录 实验内容实验原理FIFO IP 核时序绘制HDL 代码仿真综合实现上板测试 实验内容 理解 FIFO 原理调用 FIFO IP 核完成数据读写 实验原理 FIFO:First In First Out,先入先出式数据缓冲器,用来实现数据先入先出的读写方式。可分类为同步 FI…

一个php快速项目搭建框架源码,带一键CURD等功能

介绍: 框架易于功能扩展,代码维护,方便二次开发,帮助开发者简单高效降低二次开发成本,满足专注业务深度开发的需求。 百度网盘下载 图片:

Redis 入门到精通1

一、String(字符串) 特点: 最基本的数据类型,二进制安全,可以存储任何数据,比如图片或者序列化的对象。一个 key 对应一个 value。 常用命令及示例: SET key value:设置一个键值对。…

科研绘图系列:R语言多组极坐标图(grouped polar plot)

介绍 Polar plot(极坐标图)是一种二维图表,它使用极坐标系统来表示数据,而不是像笛卡尔坐标系(直角坐标系)那样使用x和y坐标。在极坐标图中,每个数据点由一个角度(极角)和一个半径(极径)来确定。角度通常从水平线(或图表的某个固定参考方向)开始测量,而半径则是…

CannotCreateTransactionException产生原因及解决方案

CannotCreateTransactionException 是 Spring 框架中的一个异常,通常出现在使用 Spring 的事务管理器时。该异常表明事务无法创建,可能是由于与底层资源(如数据库连接)相关的问题导致的。这是一个运行时异常,通常与 Da…

MySQL 函数、约束、多表查询与事务详解

在 MySQL 数据库中,函数、约束、多表查询和事务是非常重要的概念,它们可以帮助我们更好地管理和操作数据。本文将详细介绍这些概念,并通过代码演示来帮助你更好地理解。 一、函数 MySQL 提供了许多内置函数,可以用于处理字符串、数…

【网络安全】服务基础第一阶段——第六节:Windows系统管理基础---- DNS部署与安全

计算机智能识别并用IP地址定位,例如我们想要访问一个网页,其实是只能使用这个网页的IP地址,即四位的0~255来访问,但这一串数字难以记忆,于是就有了DNS,将难以记忆的数字转化为容易记忆的域名&am…

odbc连接达梦数据库DM8

odbc连接达梦数据库DM8 1 环境介绍2 达梦数据库安装3 odbc安装3.1 查询yum 匹配的odbc安装包3.2 安装 unixODBC.x86_64 4 配置odbc4.1 查看odbc 环境信息 5 odbc连接dm8成功5.1 配置 odbcinst.ini5.2 配置 odbc.ini5.3 odbc 连接达梦数据库5.3.1 dmdba 用户使用isql5.3.2 root …

AI模型:追求全能还是专精?

OpenAI计划在秋季推出的代号为“草莓”的新AI模型,展现了从数学问题到主观营销策略等多样化处理能力,这确实是一个引人注目的全能型AI发展的里程碑。关于全能型AI是否代表未来趋势,以及相比专业型AI产品是否具有更广阔的经济市场和用户吸引力…