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

3DGS语义分割之LangSplat

LangSplat是CVPR2024的paper. 实现3DGS的语义分割(可文本检索语义)
github: https://github.com/minghanqin/LangSplat?tab=readme-ov-file

主要思想是在3DGS中加入了CLIP的降维语义特征,可用文本检索目标,实现分割。

配置环境:
environment.yml一步一步执行。

conda create -n langsplat python=3.7.13
conda activate langsplatpip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
pip install numpy
pip install tqdm
pip install matplotlib
pip install submodules/langsplat-rasterization
pip install submodules/simple-knn
pip install open-clip-torch
pip install mediapy
pip install tensorboard
pip install opencv-pythonpip install submodules/segment-anything-langsplat
pip install submodules/langsplat-rasterization
pip install submodules/simple-knn

作者有训练好的ckpt 和 output, 直接下载下来,按照issues里面的step操作了一下。
https://github.com/minghanqin/LangSplat/issues/18

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

执行成功,但是在本机效果很差,有点像模型没有被训练,直接用随机值预测的一样。
iou=0.02, localization accuracy=0.1

结果图

RGB:
在这里插入图片描述

apple gt:

在这里插入图片描述

预测的:

在这里插入图片描述

其他的目标也都一样效果不好。

于是决定重新训练一遍。

首先,准备数据集:
下载lerf_ovs。

刚开始里面是images, sparse这两个要用到的文件夹。

然后按github的说明,运行3DGS, 得到一个权重和点云文件。
也就是output这个文件夹全部。
在这里插入图片描述

进入到3DGS的github:https://github.com/graphdeco-inria/gaussian-splatting
按照它的说明。

# HTTPS
git clone https://github.com/graphdeco-inria/gaussian-splatting --recursivepython train.py -s ~/dataset/lerf_ovs/teatime

这个模块是要安装的,每修改一次都要重新安装,

pip install submodules/diff-gaussian-rasterization

训练好了,但是没有pth文件
需要这样训练才会保存pth文件

python train.py -s ~/dataset/lerf_ovs/teatime --checkpoint_iterations 30000

然后把输出的output文件夹整个copy到~/dataset/lerf_ovs/teatime下面。

下一步,
提取语言特征

python preprocess.py --dataset_path ~/dataset/lerf_ovs/teatime

训练autoencoder

cd autoencoder
python train.py --dataset_path ~/dataset/lerf_ovs/teatime --dataset_name teatime --encoder_dims 256 128 64 32 3 --decoder_dims 16 32 64 128 256 256 512 --lr 0.0007

训练3D语义特征

python test.py --dataset_path ~/dataset/lerf_ovs/teatime --dataset_name teatime

下面要训练不同feature_level的LangSplat模型
–start_checkpoint是上面训练的3DGS模型

python train.py -s ~/dataset/lerf_ovs/teatime -m output/teatime --start_checkpoint ~/dataset/lerf_ovs/teatime/output/teatime/chkpnt30000.pth --feature_level 1
#同样的训练level 2 和 level 3

渲染

 python render.py -s ~/dataset/lerf_ovs/teatime -m output/teatime_1 --include_feature#同样的渲染level 2 和 level 3

最后eval, 需要改一下eval.sh中的gt路径。

cd eval
sh eval.sh

现在的效果好多了。
iou=0.5514, localization accuracy=0.7966

现在产生的apple mask

在这里插入图片描述

render.py产生的并不是ply文件,而是npy和png文件, 每张图片分别对应一个.

output/teatime_1/train/ours_None/renders里面是png文件,
是3DGS根据相机的位姿生成对应的渲染语义图片。

在这里插入图片描述
所以其实LangSplat生成的结果是3DGS,
即output/teatime下面的cnkpnt30000.pth,
里面存的有语义信息,通过渲染可以得到不同视角下的语义图片。

相关文章:

  • 步进电机双闭环细分控制(matlab仿真)内含课设等参考文件
  • 新闻出版署发布新规定,腾讯游戏限制未成年人端午期间每天一小时
  • 搭载昇腾310NPU的Orange Pi AIpro开箱体验以及深度学习样例测试
  • LAMP分布式安全方案搭建网页 (LinuxCentOS7+Apache+Mariadb+PHP)包括服务端口及防火墙规则配置
  • 防雷接地测试方法及注意事项
  • 前端 JS 经典:判断数组的准确方法
  • LLM主流开源代表模型
  • ethernet eth0: Could not attach to PHY
  • 家宽动态公网IP,使用docker+ddns 实现动态域名解析
  • 计算机视觉与模式识别实验2-2 SIFT特征提取与匹配
  • 云端数据提取:安全、高效地利用无限资源
  • 2024-5-13——腐烂的橘子
  • 在Spring Boot项目中使用Redisson实现延迟执行
  • java基础篇(1)
  • Shell编程实际应用
  • #Java异常处理
  • CentOS 7 修改主机名
  • IDEA 插件开发入门教程
  • Iterator 和 for...of 循环
  • Laravel Mix运行时关于es2015报错解决方案
  • php ci框架整合银盛支付
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • SpringBoot 实战 (三) | 配置文件详解
  • TypeScript迭代器
  • underscore源码剖析之整体架构
  • Vue 重置组件到初始状态
  • 闭包,sync使用细节
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 基于遗传算法的优化问题求解
  • 开源SQL-on-Hadoop系统一览
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 网页视频流m3u8/ts视频下载
  • 小程序button引导用户授权
  • Java总结 - String - 这篇请使劲喷我
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​configparser --- 配置文件解析器​
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (函数)颠倒字符串顺序(C语言)
  • (一)插入排序
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)创业的注意事项
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (自用)仿写程序
  • .NET8 动态添加定时任务(CRON Expression, Whatever)
  • .Net环境下的缓存技术介绍
  • .NET中使用Protobuffer 实现序列化和反序列化
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [《百万宝贝》观后]To be or not to be?