自定义数据实现SA3D

SA3D:Segment Anything in 3D with NeRFs
实现了3D目标分割
在这里插入图片描述
原理是利用SAM(segment anything) 模型和Nerf分割渲染3D目标,
SAM只能分块,是没有语义标签的,如何做到语义连续?
SA3D中用了self-prompt, 根据前一帧的mask自己给出提示点,用SAM再预测下一帧的mask.

1.准备数据

这里用llff数据的格式。
它需要的input是图像,colmap建好的poses, 训练好的nerf。

通过llff的fern文件夹说明自定义数据怎么准备。

nerf_llff_data/fern文件夹包含如下数据,

在这里插入图片描述
其中images是相机拍摄的原图,size为4032 * 3024,
由于图片太大,于是有了下采样4倍的images_4, 下采样8倍的images_8.
用的时候images_4就可以了。
sparse和database.db 是colmap生成的相机内外参,colmap怎么用参考其他。
poses_bounds.npy由sparse生成,后面会说。
最后2个用不到。

1.1 拍摄图片或视频

图片的话按照llff github 上的要求,

根据经验,您应该使用视图之间最大视差不超过约 64 像素的图像(观察距离相机最近的物体,不要让它移动超过视图之间水平视场的 1/8)。图片)。我们的数据集通常包含 20-30 张以粗略网格模式手持拍摄的图像。

最好是网格状拍。

在这里插入图片描述
如果拍的是视频,把视频转为图片序列。

把images里面拍到的图片下采样4倍,存入images_4文件夹。

1.2 生成pose

自己安装colmap. 或者用llff github 上的imgs2poses.py
这里用colmap生成。

colmap选Reconstruction -> Automatic Reconstruction.
只需要填workspace folder和image folder.
image folder要选images,而不是images_4.
Dense model的勾可以去掉,节省时间。
然后run, 你就会得到sparse文件夹。

然后你需要用这里的pose_utils.py生成poses_bounds.npy.
需要下载这3个文件。

在这里插入图片描述

2.训练模型

2.1 训练nerf

设置文件:
configs/llff/fern.py
configs/liff/seg_fern.py

调整factor需要的文件
configs/llff/llff_default.py
configs/default.py
configs/llff/llff_seg_default.py
configs/seg_default.py

上面这些设置文件可以修改了直接用,也可以新建类似的。
2个设置文件中修改数据集的路径。

如果你不用下采样4倍的图片,比如要用下采样8倍的,
在后面4个文件中,把factor置8. 如果用原图,factor=1.

训练nerf

python run.py --config=configs/llff/fern.py --stop_at=20000 --render_video --i_weights=10000

你可能会遇到sam3d.py中的bug,
UnboundLocalError: local variable ‘sam_model_registry’ referenced before assignment
解决方法,修改sam3d.py,

class Sam3D(ABC):'''TODO, add discription'''def __init__(self, args, cfg, xyz_min, xyz_max, cfg_model, cfg_train, \data_dict, device=torch.device('cuda'), stage='coarse', coarse_ckpt_path=None):...if args.mobile_sam:...else:from segment_anything import sam_model_registry  #加上这一句,修复bugsam_checkpoint = "./dependencies/sam_ckpt/sam_vit_h_4b8939.pth"...

然后会在log/xx/xx/render_video_fine_last下面得到渲染好的3D场景。

2.2 训练SAM+nerf

python run_seg_gui.py --config=configs/llff/seg/seg_fern.py --segment \
--sp_name=_gui --num_prompts=20 \
--render_opt=train --save_ckpt

会给一个链接,点进webUI,
这第一帧图包括后面训练的图,是上面训练nerf时渲染的图片,
如果你换了数据集,一定要重新训练nerf, 不然这些图片就还是之前的。

在第一帧图上选你要分割的物体。

在这里插入图片描述

训练中不需要再标注,SAM本身是没有语义的,为了保持语义的连续性,采用自标注的方法,
不断在mask上产生新标注的点。
在这里插入图片描述
分割及渲染结果。
在这里插入图片描述

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

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

相关文章

打通商城与ERP系统,实现物料自动同步

【客户介绍】 某文化传播有限公司是一家专注于为企业提供品牌营销、公关传播、活动策划、数字营销等服务的综合性文化传播公司。该公司拥有一支经验丰富的专业团队,具有丰富的品牌营销、公关传播、活动策划、数字营销经验。该公司自成立以来,已经为数百…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机的高速图像保存(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机的高速图像保存(C#)) Baumer工业相机Baumer工业相机的图像高速保存的技术背景Baumer工业相机通过NEOAPI SDK函数图像高速保存在NEOAPI SDK里实现线程高速图像保存:工业相机高…

STM32 定时器输入捕获1——初始化配置

当想检测高电平或低电平的持续时间的时候,就可以使用定时器输入捕获。例如示波器就是用到这个功能。这里就讲解一下定时器到底是如何输入捕获的: 由上图我们可以知道,周期 是每次连续的上升沿的时间差(例如:T第二个方波…

Elasticsearch:Search tutorial - 使用 Python 进行搜索 (四)

在本节中,你将了解另一种机器学习搜索方法,该方法利用 Elastic Learned Sparse EncodeR 模型或 ELSER,这是一种由 Elastic 训练来执行语义搜索的自然语言处理模型。这是继之前的文章 “Elasticsearch:Search tutorial - 使用 Pyth…

git ssh key 配置

一、Profile Settings-->SSH Keys 我们点击这里会有详情的文档介绍生成sshkey。 ssh-keygen -t rsa -b 2048 -C "邮箱" --回车... 将生成的id_rsa.pub粘贴到如下保存 git config --global user.name "用户名" git config --global user.email "邮…

js(JavaScript)数据结构之数组(Array)

什么是数据结构? 下面是维基百科的解释: 数据结构是计算机存储、组织数据的方式。数据结构意味着接口或封装:一个数据结构可被视为两个函数之间的接口,或者是由数据类型联合组成的存储内容的访问方法封装。 我们每天的编码中都会…

HackTheBox - Medium - Linux - Faculty

Faculty Faculty 是一台中型 Linux 机器,具有 PHP Web 应用程序,该应用程序使用的库容易受到本地文件包含的影响。利用该库中的 LFi 会泄露一个密码,该密码可用于通过 SSH 以名为“gbyolo”的低级用户身份登录。用户“gbyolo”有权作为“dev…

Linux 内核如何根据设备树文件来匹配内核

一. 简介 上一篇文章学习了 Linux内核如何确定是否支持此设备,如果支持,设备就会启动 Linux 内核。 文章地址如下: 设备树根节点下的compatile属性的作用-CSDN博客 本文继上面文章的学习。这里简单看一下, Linux 内核是如何根…

iOS App自动化测试:从环境搭建到实际应用(Python+pytest+appium+allure框架)

iOS App自动化测试:Pythonpytestappiumallure 一、环境准备: 1.1 Appium环境搭建 Windows端:Windows端appium环境搭建Mac端:Mac端appium环境搭建 总结:appium-doctor 是用来检测环境配的是否完整,安装完…

java进阶||jdk进阶之循环

从18年学java到现在除了各种各样的数据类型和集合烧不了要遍历这些变量, for循环这时就少不了啦(当然还有8后引入的神器泛型) 先来看一段精髓业务代码, 使用了多个新特性当然也少不了循环和分支判断 代码较长解析在后面 private CommonPage<List<Object>> handle…

【MyBatis】动态SQL

文章目录 前言增加操作\<trim>标签查询操作\<where>标签修改操作\<set>标签删除操作\<foreach>标签\<include>标签 前言 动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架&#xff0c;你应该能理解根据不同条件拼接 SQ…

超声波清洗机可以洗些什么东西?质量比较好的超声波清洗机推荐

超声波清洗机只能清洗眼镜吗&#xff1f;不是的&#xff01;超声波清洗机能够清洗的物品远比我们想象的还多&#xff0c;最常见的还是清洗眼镜&#xff0c;毕竟超声波清洗机最常见就是在眼镜店了&#xff0c;很多朋友都喜欢定期都眼镜店里来清洗一下眼镜&#xff0c;这个习惯其…

vivado Revision Control

2020.2 只需要git 管理 prj.xpr 和 prj.srcs/ https://china.xilinx.com/video/hardware/ip-revision-control.html Using Vivado Design Suite with Revision Control https://www.xilinx.com/video/hardware/vivado-design-suite-revision-control.html http://www.xi…

腾讯实验平台基于 StarRocks 构建湖仓底座

作者&#xff1a; 腾讯大数据平台部科学实验中心Tech Lead、专家工程师 马金勇博士 腾讯大数据平台部科学实验中心数据负责人、专家工程师 胡明杰 StarRocks Contributor、腾讯高级工程师 刘志行 在 2022 年&#xff0c;腾讯 A/B Test 团队启动了海外商业化版本 ABetterChoice …

企业网络两层和三层架构部署有何差异

知识改变命运&#xff0c;技术就是要分享&#xff0c;有问题随时联系&#xff0c;免费答疑&#xff0c;欢迎联系&#xff01; 厦门微思网络​​​​​​ https://www.xmws.cn华为认证\华为HCIA-Datacom\华为HCIP-Datacom\华为HCIE-Datacom Linux\RHCE\RHCE 9.0\RHCA\ Oracle OC…

html的全选反选

一、实验题目 html实现选择框的全选和反选 二、实验代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>全选和反选</title></head><body><ul>兴趣爱好</ul><input id"all"…

【AI】 AIOTSummary

智能物联网(AIoT)是2018年兴起的概念,指系统通过各种信息传感器实时采集 各类信息(一般是在监控、互动、连接情境下的),在终端设备、边缘域或云中心 通过机器学习对数据进行智能化分析,包括定位、比对、预测、调度等。智能物联网(AIoT)是2018年兴起的概念,指系统通过…

微软等开源评估ChatGPT、Phi、Llma等,统一测试平台

微软亚洲研究院、中国科学院自动化研究所、中国科学技术大学和卡内基梅隆大学联合开源了&#xff0c;用于评估、分析大语言模型的统一测试平台——PromptBench。 Prompt Bench支持目前主流的开源、闭源大语言模型&#xff0c;例如&#xff0c;ChatGPT、GPT-4、Phi、Llma1/2、G…

基于虚拟机安装centos且远程连接

基于虚拟机安装centos且远程连接 1、安装虚拟机 目前市面上的虚拟机种类有很多&#xff0c;我们可以选择自己熟悉的虚拟机进行安装&#xff0c;我在这里用的虚拟机是VMware。具体的安装过程很简单&#xff0c;一直点击下一步就可以了。因为VMware虚拟机需要激活&#xff0c;所…

AI语音识别模块--whisper模块

1.下载 ffmpeg&#xff0c;挑一个自己电脑系统的版本&#xff0c;下载&#xff0c;如我win64&#xff1a; 地址&#xff1a; Releases BtbN/FFmpeg-Builds GitHub 下载压缩包zip&#xff0c;到本地 解压安装&#xff0c;其实无需安装&#xff0c;只需把对应的目录下的bin&…