点云深度学习系列:Sam2Point——基于提示的点云分割

文章:SAM2POINT:Segment Any 3D as Videos in Zero-shot and Promptable Manners
代码:https://github.com/ZiyuGuo99/SAM2Point
Demo:https://huggingface.co/spaces/ZiyuG/SAM2Point
1)摘要
文章介绍了SAM2POINT,这是一种初步探索,采用 Segment Anything Model 2 (SAM2) 进行zero-shot和可提示的3D分割。SAM2POINT将任何 3D 数据解释为一系列多向视频,并利用SAM2进行3D空间分割,无需进一步训练或2D-3D投影。文中的框架支持各种提示类型,包括3D点、框和蒙版,并且可以泛化到各种场景,例如3D对象、室内场景、室外场景和原始激光雷达。在多个3D数据集(例如Objaverse、S3DIS、ScanNet、Semantic3D 和 KITTI)上的演示突出了SAM2POINT的强大泛化功能。据作者了解,其展示的SAM 在 3D 中最真实的实现,这可能作为未来快速 3D 分割研究的起点。
2)创新点
现有SAM在3D上的工作存在以下问题:
①低效的2D-3D投影——考虑到 2D 和 3D 之间的域差距,大多数现有工作将 3D 数据表示为其 2D 对应物作为 SAM 的输入,并将分割结果反向投影到 3D 空间,这种模式转换会带来显著的处理复杂性,从而阻碍高效实施;
②3D空间信息退化——对 2D 投影的依赖会导致精细的 3D 几何图形和语义的丢失,因为多视图数据通常无法保持空间关系。此外,2D 图像无法充分捕捉 3D 对象的内部结构,这严重限制了分割精度;
③提示词灵活性不足——SAM 的一个引人注目的优势在于它通过各种提示替代方案的交互功能。不幸的是,这些功能在当前方法中大多被忽视,因为用户很难使用 2D 表示指定精确的 3D 位置。因此,SAM 通常用于整个多视图图像的密集分割,从而牺牲了交互性;
④域泛化性能受限——现有的 2D-3D 投影技术通常是针对特定的 3D 场景量身定制的,在很大程度上依赖于域内图形。这使得它们难以应用于新的环境,例如,从对象到场景或从室内到室外环境。另一个研究方向旨在从头开始在3D中训练一个可提示的网络。虽然绕过了对 2D 投影的需求,但它需要大量的训练和数据资源,并且可能仍会受到训练数据分布的限制。
文章创新点:
①将3D点云转换为视频进行分割——为了在分割过程中保留 3D 几何图形,同时确保与 SAM 2 的兼容性,我们采用体素化来模拟视频。体素化 3D 数据的形状为 w × h × l × 3,与 w × h × t × 3 的视频格式非常相似。这种表示允许 SAM 2 进行零样本 3D 分割,同时保留足够的空间信息,而无需额外的训练或 2D-3D 投影;
②支持多种3D提示词——SAM2POINT 基于 SAM 2 构建,支持三种类型的提示:3D 点、边界框和蒙版。从用户提供的 3D 提示开始,例如一个点 (x, y, z),我们将 3D 空间划分为三个正交方向,生成六个相应的视频。然后,将多向分割结果整合在一起,形成 3D 空间中的最终预测,从而允许交互式可提示分割;
③能泛化到各种场景——SAM2POINT 在具有不同点云分布的不同 3D 场景中展示了强大的泛化能力。文中方法可以有效地分割单个物体、室内场景、室外场景和原始 LiDAR,凸显其在不同领域的卓越可传递性。
3)算法结构
A 3D数据转换为视频格式
给定任何对象级或场景级点云,我们用 P ∈ R n×6 表示它,每个点都表示为 p = (x, y, z, r, g, b)。我们的目标是将 P 转换为一种数据格式,一方面,SAM 2 可以直接以零样本方式处理,另一方面,可以很好地保留细粒度的空间几何特性。为此,我们采用了 3D 体素化技术。与 RGB 图像映射、多视图渲染和 NeRF相比,体素化在 3D 空间中高效执行,避免了信息退化和繁琐的后处理。
通过这种方式,我们获得了 3D 输入的体素化表示,用 V ∈ R w×h×l×3 表示,每个体素为 v = (r, g, b)。为简单起见,根据最接近体素中心的点设置 (r, g, b) 值。此格式与形状为 w×h×t×3 的视频非常相似。主要区别在于,视频数据包含跨 t 帧的单向时间依赖性,而 3D 体素在三个空间维度上是各向同性的。考虑到这一点,作者将体素表示转换为一系列多向视频,从而激发 SAM 2 以与视频相同的方式分割 3D点云空间。
B 基于提示进行数据分割
为了实现灵活的交互性,文中的 SAM2POINT 支持 3D 空间中的三种类型的提示,可以单独使用,也可以联合使用。

①3D点提示——表示为 。我们首先将 视为 3D 空间中的锚点,以定义三个正交的 2D 截面。从这些部分开始,我们将 3D 体素沿六个空间方向分为六个子部分,即前、后、左、右、上和下。然后,我们将它们视为六个不同的视频,其中该部分作为第一帧, 被投影为 2D 点提示。在应用 SAM 2 进行并发分割后,我们将 6 个视频的结果整合为最终的 3D 蒙版预测。
②3D框提示——表示为 ,包括 3D 中心坐标和尺寸。我们采用的几何中心作为锚点,如前所述,用 6 个不同的视频表示 3D 体素。对于某个方向的视频,我们将 投影到相应的 2D 截面中,作为分割的框点。我们还支持具有旋转角度的 3D 框,例如 ,其中投影 的边界矩形被用作 2D 提示。
③3Dmask提示——表示为 Mp ∈ R n×1 ,其中 1 或 0 表示掩码和未掩码区域。我们以蒙版提示的重心作为锚点,同样将 3D 空间划分为 6 个视频。3D 蒙版提示与每个部分之间的交集用作分段的 2D 蒙版提示。这种类型的提示还可以用作后优化步骤,以提高先前预测的 3D 掩码的准确性。
4)实验
(1)3D对象



(2)室内场景



(3)室外场景



(4)原始激光扫描数据



5)结论
在这个项目中,作者提出了 SAM2POINT,它利用 Segment Anything 2 (SAM 2) 到 3D 分割,具有零样本和可提示的框架。通过将 3D 数据表示为多向视频,SAM2POINT 支持各种类型的提示(3D 点、框和掩码),并在各种 3D 场景(3D 对象、室内场景、室外环境和原始稀疏 LiDAR)中表现出强大的泛化能力。作为初步调查,SAM2POINT 为调整 SAM 2 以实现有效和高效的 3D 理解提供了独特的见解。
相关文章:
点云深度学习系列:Sam2Point——基于提示的点云分割
文章:SAM2POINT:Segment Any 3D as Videos in Zero-shot and Promptable Manners 代码:https://github.com/ZiyuGuo99/SAM2Point Demo:https://huggingface.co/spaces/ZiyuG/SAM2Point 1)摘要 文章介绍了SAM2POINT,这是…...
mysql学习教程,从入门到精通,TOP 和MySQL LIMIT 子句(15)
1、TOP 和MySQL LIMIT 子句内容 在SQL中,不同的数据库系统对于限制查询结果的数量有不同的实现方式。TOP 关键字主要用于 SQL Server 和 Access 数据库中,而 LIMIT 子句则主要用于 MySQL、PostgreSQL(通过 LIMIT/OFFSET 语法)、S…...
备战软考Day02-数据结构与算法
1.基本概念与三要素 1.什么是数据 数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。 2.数据元素、数据项 数据元素是数据的基本单位,通常作为一个整体进行…...
COMP 6714-Info Retrieval and Web Search笔记week1
哭了哭了,这周唯一能听懂的就这门 目录 IR(Information Retrieval)是什么?IR的基本假设Unstructured (text) vs. structuredDocuments vs. Database Records比较文本(Comparing Text)IR的范围(Dimensions of IR)IR的任…...
C++在Linux实现多线程和多进程的TCP服务器和客户端通信
多进程版本 服务器 #include <arpa/inet.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <sys/wait.h> #include <signal.h> #include <string&…...
音视频开发常见的开源项目汇总
FFmpeg 地址:https://ffmpeg.org/介绍:FFmpeg 是一个非常强大的开源多媒体框架,它可以用来处理视频和音频文件。它支持多种格式的转换、编码、解码、转码、流处理等。FFmpeg 包括了 libavformat、libavcodec、libavutil、libswscale、libpos…...
Java操控Redis (面经之 使用Redis)
操控Redis的工具 ReactiveRedisTemplate 和 RedisTemplate : RedisTemplate: 它是一个通用的模板类,可以使用任何序列化策略来序列化和反序列化键和值。默认情况下,它使用 JdkSerializationRedisSerializer 序列化值,并使用 Strin…...
【计网】从零开始使用UDP进行socket编程 --- 服务端业务实现
在我们每个人都曾经历过“沮丧”时刻里, 如果我们不能对别人说有益的好话, 那我们最好还是什么也别说。 --- 卡耐基 《人性的弱点》--- 从零开始使用UDP进行socket编程 1 前情提要2 单词翻译2.1 业务需求2.2 设计字典类2.3 服务端与客户端逻辑2.4 运…...
正式发售!《黑神话:悟空》背后的技术力量——UE5与实时云渲染
千呼万唤始出来,《黑神话:悟空》终于在今年8月发售了,相信大家都已经玩起来了! 作为国产游戏的画质巅峰之作,《黑神话:悟空》凭借其令人叹为观止的画面质量和游戏体验,赢得了广泛的好评。这一切…...
qt-creator-10.0.2之后版本的jom.exe编译速度慢下来了
1、Qt的IDE一直在升级,qt-creator的新版本下载地址 https://download.qt.io/official_releases/qtcreator/ 2、本人一直用的是qt-creator-10.0.2版本,官网历史仓库可以下载安装包qt-creator-opensource-windows-x86_64-10.0.2.exe https://download.qt…...
2024CSP-J初赛全真模拟卷选择题篇(原创,难度偏简单)
注意,本卷由再临TSC原创,禁止转载! 本卷难度偏简单,若想要通过初赛本卷应拿80分左右 查看答案的方法: if(设备"PC") { 把光标移到答案上面,选中答案,就会显示(); } …...
【Android 13源码分析】WindowContainer窗口层级-4-Layer树
在安卓源码的设计中,将将屏幕分为了37层,不同的窗口将在不同的层级中显示。 对这一块的概念以及相关源码做了详细分析,整理出以下几篇。 【Android 13源码分析】WindowContainer窗口层级-1-初识窗口层级树 【Android 13源码分析】WindowCon…...
C# 开发教程-中级教程
1.C# 多线程/异步 C# 异步编程Task整理(一) C# 异步编程Task整理(二)异常捕捉 C# 异步编程Task(三) async、await C#中创建线程,创建带参数的线程 C# 线程同步之排它锁/Monitor监视器类 C# lock关键词/lock语句块…...
【C++】c++的继承
目录 思维导图大纲: 1.基类和派生类 1.1 定义格式 1.2 继承方式 1.3 基类和派生类的转换 2. 继承中的作用域(隐藏关系) 2.1 考察继承作⽤域相关选择题 3. 派生类的默认成员函数 4. 继承类模板 5. 一个不能被继承的类 编辑 6.继承与友元 编辑 7. 继…...
【ShuQiHere】 进制转换的世界:从十进制到二进制、十六进制的转换技巧
【ShuQiHere】 在计算机科学中,进制转换(Radix Conversion) 是一个基础且非常重要的技能。无论是理解计算机的存储、数据表示,还是在编程中处理不同的进制数据,进制转换都是不可或缺的。本文将详细讲解 十进制&#x…...
《化工管理》
《化工管理》征稿简则 《化工管理》杂志是由中国石油和化学工业联合会主管、中国化工企业管理协会主办,1986年创刊,在国内外公开发行,国内统一连续出版物号:CN 11—3991/F,中国标准连续出版物号:ISSN 1008—…...
LeetCode70:爬楼梯
class Solution { public:int climbStairs(int n) {if(n 1) return 1;if(n 2) return 2;vector<int> dp(n 1, 0);dp[1] 1;dp[2] 2;for(int i 3; i < n 1; i){dp[i] dp[i - 1] dp[i - 2];}return dp[n];} }; 这个题目也就是最简单的动态规划,题目…...
[程序员] 前人留下的苦难源,我们是否有勇气改正?
最近遇到一个客户现场发现的,表象是网络有问题,分析一圈下来发现是程序进入了某种死循环状态,耗尽CPU。 产品里的很多线程/进程的优先级设置的很高,甚至高过了内核运行程序的优先级,高过了产品内警告处理程序的运行&a…...
聚类_K均值
import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_blobs1.数据预处理 #创建基于高斯分布的样本点, x是点的坐标,y是所属聚类值 x, y make_blobs(n_samples100, centers6, random_state100, cluster_std0.6) # 设置图形尺寸…...
Mac电脑剪切板在哪里找 苹果电脑剪切板打开教程【详解】
Windows 和 Mac 电脑在使用方式上存在一些差异,许多习惯了 Windows 系统的用户初次接触 Mac 时可能会对某些操作感到困惑。比如,很多人会问:Mac 上的剪贴板在哪里?如果你也有这样的疑问,不妨看看下面这篇关于如何在 Ma…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
