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

自定义数据实现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上产生新标注的点。
在这里插入图片描述
分割及渲染结果。
在这里插入图片描述

相关文章:

自定义数据实现SA3D

SA3D:Segment Anything in 3D with NeRFs 实现了3D目标分割 原理是利用SAM(segment anything) 模型和Nerf分割渲染3D目标, SAM只能分块,是没有语义标签的,如何做到语义连续? SA3D中用了self-prompt, 根据前一帧的mask…...

设计模式基础概念:探索设计模式的魅力

设计模式是软件开发中的一种指导性概念,它提供了一套被广泛接受的解决方案,用于常见的设计问题。设计模式有助于提高软件的可重用性、可扩展性和可维护性,并促进团队之间的沟通。 以下是一些常见的设计模式: 创建型模式&#xff1…...

【Leetcode】2182. 构造限制重复的字符串

文章目录 题目思路代码 题目 2182. 构造限制重复的字符串 问题:给你一个字符串 s 和一个整数 repeatLimit ,用 s 中的字符构造一个新字符串 repeatLimitedString ,使任何字母 连续 出现的次数都不超过 repeatLimit 次。你不必使用 s 中的全…...

Kubernetes(K8S)云服务器实操TKE

一、 Kubernetes(K8S)简介 Kubernetes源于希腊语,意为舵手,因为首尾字母中间正好有8个字母,简称为K8S。Kubernetes是当今最流行的开源容器管理平台,是 Google 发起并维护的基于 Docker 的开源容器集群管理系统。它是大名鼎鼎的Google Borg的开源版本。 K8s构建在 Docker …...

设置弹窗随鼠标位置移动

1.这是要移动的弹窗&#xff0c;隐藏显示逻辑、样式、展示内容自己写&#xff0c;主要就是动态设置弹窗的style&#xff0c;floatLeft和floatTop都是Vue中的data双向绑定数据&#xff1b; <div id"box" v-show"hasMove" :style"{ left: floatLeft…...

Spring Boot实现数据加密脱敏:注解 + 反射 + AOP

文章目录 1. 引言2. 数据加密和脱敏的需求3. Spring Boot项目初始化4. 敏感数据加密注解设计5. 实现加密和脱敏的工具类6. 实体类和加密脱敏注解的使用7. 利用AOP实现加密和脱敏8. 完善AOP切面9. 测试10. 拓展功能与未来展望10.1 加密算法的选择10.2 动态注解配置 11. 总结 &am…...

jmeter和meterSphere如何使用第三方jar包

工具引用jar包语言都是beanshell 问题起因&#xff1a;metersphere 接口自动化实现过程中&#xff0c;如何实现字符串加密且加密方法依赖第三方库&#xff1b; 使用语言&#xff1a;beanshell脚本语言&#xff0c;java语言 使用工具&#xff1a;idea jmeter metersphere 1.首…...

API对象上千个,有啥关联性,kubectl-tree一键搞定

关注【云原生百宝箱】公众号&#xff0c;获取更多云原生消息 "kubectl-tree 是一款强大的 kubectl 插件&#xff0c;通过 ownerReferences 实现 Kubernetes 对象之间的所有权关系探索。相较于 kubectl lineage&#xff0c;它不仅更全面理解 API 对象的逻辑关系&#xff0c…...

java自定义工具类在List快速查找相同字段值对象

根据对象某一字段名&#xff0c;获取字段值&#xff0c;将List转换为Map中包含list&#xff0c;Key为字段值&#xff0c;Value为相同字段值的对象list&#xff0c;快速定位具有相同字段值的对象&#xff0c;转换之后便于在Map中根据字段值快速查找相同字段值的对象 //List转Map…...

codeforces Hello 2024 - C - Grouping Increases --- 题解

目录 Grouping Increases 题目描述&#xff1a; 思路解析&#xff1a; 代码实现&#xff1a; Grouping Increases 题目描述&#xff1a; 给你一个大小为n的数组a&#xff0c;你可以把数组a划分为两个子序列s和t&#xff0c;a中元素&#xff0c;要么在子序列s中&#xff0c;…...

STM32H5培训(一)总览

文章目录 1. 前言2. STM32H5系列MCU的特点和新功能包括性能提升、新外设和安全功能等3. STM32H5系列型号之间的区别和关键资源对比4. 性能和功能亮点6. 开发生态参考&#xff1a; 1. 前言 本篇主要介绍STM32H5系列MCU的特点和新功能&#xff0c;包括全新的M33内核、250M主频处…...

亚马逊云科技 WAF 部署小指南(五):在客户端集成 Amazon WAF SDK 抵御 DDoS 攻击...

方案介绍 在 WAF 部署小指南&#xff08;一&#xff09;中&#xff0c;我们了解了 Amazon WAF 的原理&#xff0c;并通过创建 WEB ACL 和托管规则防护常见的攻击。也了解了通过创建自定义规则在 HTTP 请求到达应用之前判断是阻断还是允许该请求。在 Amazon WAF 自定义规则中&am…...

高光谱分类论文解读分享之基于多模态融合Transformer的遥感图像分类方法

IEEE TGRS 2023&#xff1a;基于多模态融合Transformer的遥感图像分类方法 题目 Multimodal Fusion Transformer for Remote Sensing Image Classification 作者 Swalpa Kumar Roy , Student Member, IEEE, Ankur Deria , Danfeng Hong , Senior Member, IEEE, Behnood Ras…...

Trans论文复现:基于数据驱动的新能源充电站两阶段规划方法程序代码!

适用平台&#xff1a;MatlabYalmipCplex/Gurobi&#xff1b; 文章提出了一种电动汽车充电站的两阶段规划方法&#xff0c;第一阶段通过蒙特卡洛法模拟充电车辆需求和电池充放电数据来确定充电站位置&#xff1b;第二阶段通过数据驱动的分布鲁棒优化方法优化充电站的新能源和电池…...

将抖音视频转成MP3并下载

这篇是在上一篇的基础上写的&#xff0c;这篇负责抖音作者详情页的视频转声音提取&#xff0c;这篇需要用到后端。 本地启动后端后&#xff0c;在控制台输入对应代码&#xff0c;即可实现hover在封面上&#xff0c;按d一键下载音频 控制台代码 // 获取作者的视频列表var liEle…...

C程序训练:与输入有关的错误

在录入程序时有时稍不注意就可能录入错误的字符导致程序运行结果出现错误&#xff0c;下面举例说明。 下面程序的运行结果是错的&#xff0c;但程序又没有错&#xff0c;到底问题出现在哪呢&#xff1f; #include <stdio.h> int main() {FILE *fp;int i, k, n;fpfopen(…...

制作 CentOS Stream9 的U盘系统启动盘

一、简述 注:请勿用于商用&#xff0c;如有版权纠纷&#xff0c;于博主无任何关系。&#xff08;仅用于学习研究使用&#xff09; 由于CentOs Linux 7和CentOs Stream8终止日期是2024年&#xff0c;需要将系统升级到最新版本的CentOs Stream9&#xff0c;下面是刻录系统盘的操…...

Vulnhub靶机:driftingblues 1

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;driftingblues1&#xff08;10.0.2.17&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entr…...

CloudCompare——点云空间圆拟合

目录 1.概述2.软件实现3.完整操作4.算法源码5.相关代码 本文由CSDN点云侠原创&#xff0c;CloudCompare——点云空间圆拟合&#xff0c;爬虫自重。如果你不是在点云侠的博客中看到该文章&#xff0c;那么此处便是不要脸的爬虫与GPT生成的文章。 1.概述 CloudCompare软件中的To…...

解决POI报错POIXMLTypeLoader不存在的问题

问题&#xff1a; springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoaderat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet…...

DAMO-YOLO实战:用AI视觉系统做内容安全审核与统计

DAMO-YOLO实战&#xff1a;用AI视觉系统做内容安全审核与统计 1. 引言&#xff1a;当AI视觉遇见内容安全 在数字内容爆炸式增长的今天&#xff0c;如何高效地进行内容审核成为许多平台面临的挑战。传统人工审核不仅效率低下&#xff0c;而且容易因疲劳导致误判。本文将介绍如…...

高效掌握Mermaid:从文本到可视化的实战指南

高效掌握Mermaid&#xff1a;从文本到可视化的实战指南 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器&#xff0c;支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流程图的开发者…...

如何通过AndroidAnnotations与Kotlin扩展函数实现极速Android开发:新手必备指南

如何通过AndroidAnnotations与Kotlin扩展函数实现极速Android开发&#xff1a;新手必备指南 【免费下载链接】androidannotations Fast Android Development. Easy maintainance. 项目地址: https://gitcode.com/gh_mirrors/an/androidannotations AndroidAnnotations是…...

Neeshck-Z-lmage_LYX_v2实际作品:基于LoRA微调的专属IP形象批量生成

Neeshck-Z-lmage_LYX_v2实际作品&#xff1a;基于LoRA微调的专属IP形象批量生成 1. 引言&#xff1a;从零到一&#xff0c;打造你的专属数字形象 想象一下&#xff0c;你需要为你的品牌、游戏或者社交媒体账号设计一套统一的视觉形象。传统的做法是找设计师&#xff0c;沟通需…...

Webflux fromXXX对比

Mono.fromFuture和Mono.fromSupplier 刚开始尝试使用 Spring WebFlux 的时候&#xff0c;很多人都会使用 Mono.fromFuture() 将异步请求转成 Mono 对象&#xff0c;或者 Mono.fromSupplier() 将请求转成 MOno 对象&#xff0c;这两种方式在响应式编程 中都是不建议的&#xff0…...

将 OnePlus 手机备份到云服务

丢失 OnePlus 设备上的珍贵照片、重要联系人、短信或应用数据可能会令人非常沮丧&#xff0c;无论是意外删除、设备损坏、被盗&#xff0c;甚至是恢复出厂设置。这时&#xff0c;云备份就派上了用场。它提供了一种简单可靠的数据保护方式&#xff0c;确保您可以随时随地在新 On…...

MacOS极简部署OpenClaw:GLM-4.7-Flash模型联调与安全防护

MacOS极简部署OpenClaw&#xff1a;GLM-4.7-Flash模型联调与安全防护 1. 为什么选择OpenClawGLM-4.7-Flash组合 去年冬天&#xff0c;当我第一次尝试用Python脚本批量处理公司周报时&#xff0c;发现传统自动化工具对非结构化数据的处理能力非常有限。直到遇见OpenClaw这个能…...

降重不靠删,降AI不靠装——百考通用语义重构守住你的原创观点

在2026年的高校毕业季&#xff0c;一种新型的不公正在悄然制度化&#xff1a; 不是抄袭者被放过&#xff0c;而是原创者被怀疑&#xff1b; 不是敷衍者被批评&#xff0c;而是严谨者被标记&#xff1b; 不是懒惰者被警告&#xff0c;而是认真写了一篇好论文的人&#xff0c;被迫…...

颠覆PDF转换体验:Marker无缝实现25页/秒全场景文档格式精准迁移

颠覆PDF转换体验&#xff1a;Marker无缝实现25页/秒全场景文档格式精准迁移 【免费下载链接】marker 一个高效、准确的工具&#xff0c;能够将 PDF 和图像快速转换为 Markdown、JSON 和 HTML 格式&#xff0c;支持多语言和复杂布局处理&#xff0c;可选集成 LLM 提升精度&#…...

Android开机向导定制实战:从源码分析到禁用状态栏的隐藏技巧

Android开机向导深度定制&#xff1a;从源码解析到状态栏控制实战 第一次接触Android开机向导定制时&#xff0c;我被这个看似简单却隐藏复杂逻辑的系统组件深深吸引。作为设备初始化的第一道门户&#xff0c;开机向导不仅承载着用户体验的第一印象&#xff0c;更是厂商品牌展示…...