NeurIPS 2023 Spotlight | VoxDet:基于3D体素表征学习的新颖实例检测器

本文提出基于3D体素表征学习的新颖实例检测器VoxDet。给定目标实例的多视图,VoxDet建立该实例的三维体素表征。在更加杂乱的测试图片上,VoxDet使用体素匹配算法检测目标实例。实验表明,VoxDet中的三维体素表征与匹配比多种二维特征与匹配要更鲁棒、准确与高效。本文已收录于NeurIPS 2023并被选为SpotLight。

Title.png

 

论文题目: VoxDet: Voxel Learning for Novel Instance Detection

论文链接:VoxDet: Voxel Learning for Novel Instance Detection | OpenReview 

开源代码: GitHub - Jaraxxus-Me/VoxDet: Official code for NeurIPS 2023 SpotLight: VoxDet: Voxel Learning for Novel Instance Detection 

ROS部署: GitHub - Jaraxxus-Me/voxdet_ros: Ros Interface for VoxDet

01. 引言

实例检测/分割是计算机视觉研究已久的问题。大多数现有的实例检测算法可以从测试图片上获取所有实例的目标框(及其ID代号),在现实生活中,我们很多时候不只需要获得“所有”实例的检测框,还需要得到“某个特定”实例的检测结果(试想,在机场找寻自己的行李箱,在洗衣房找寻丢失的袜子,在停车场找到自己的车等等)。

在本文中,我们探讨了特定新颖实例的检测问题(Novel Instance Detection)。给定任何(可能是训练过程中未见过的新颖的)特定实例的多视图,我们希望在测试图上又快又好的得到检测结果。过往的算法通常是基于物体的二维特征,如二维“局部”特征匹配,二维注意力等等。然而,这类算法有如下三大问题(1)(全局)二维特征匹配对实例的旋转是不稳定的(2)二维特征对于物体的遮挡不够稳定(3)二维匹配通常不够高效(因为每个测试图上的候选框都要和每一张二维多视图匹配)。

反观人类,我们观察,记忆,并搜索一个实例,在脑海中形成的不只是一张张独立的二维图片,而是包含该实例几何的“三维”记忆。基于这种“带有几何的记忆”,即使实例被遮挡或展现出不同的旋转方位时,我们仍能在环境背景干扰下定位该实例。

在这一直觉的驱动下,我们研发了一种基于三维体素表征的实例检测器,VoxDet。它结合了实例的三维几何和二维外观特征,很大程度上解决了纯二维的实例检测器的不足。如下图所示,VoxDet包含三部分,用于从多视图组建Voxel的Template Voxel Aggregation,用于在测试图上生成开放世界候选框的open world detector,和用于比对匹配候选框和template的Query Voxel Matching。

teaser.png
图一,VoxDet与以往二维框架的结构对比

除了方法外,我们发现这类任务也没有很好的基准和数据。大多数以往的研究基于BOP challenge的数据开展实验,他们的参考图片通常是直接从测试集中剪裁的,而不是我们想要的object-centric的多视图。因此,在这项研究中我们也自己制作了虚拟数据集Open World Instance Detection (OWID) 与实录的测试数据集 RoboTools。

teaser_vis.png
图二,RoboTools 数据集中的一些检测示例

02. 贡献

  •    我们提出了基于三维体素表征的新颖实例检测器VoxDet,其表现优于多种基于二维表征的检测器。
  • 我们发现三维重建+检测的两阶段训练范式可以大幅提高VoxDet内体素特征的表征能力。
  • 我们也提出了一种体素匹配算法,可以更高效准确得比对两个实例的体素特征。
  • 我们收集、标注了新颖实例检测的虚拟训练集OWID与实际测试集RoboTools。   

03. 方法

3.1 宏观架构

Structure.png
图三,VoxDet的算法框架

VoxDet的架构如图三所示,测试图(Query Image)首先输入开放世界检测器得到开放世界候选框。这里我们直接采用了结构简单方便端对端训练的OLN (Learning Open-World Object Proposals without Learning to Classify, RA-L, 2022)。与此同时,目标实例的多视图(以及每张视图的相机外参)输入Template Voxel Aggregation (TVA)模块得到该实例的三维体素表征。最后 Query Voxel Matching (QVM)模块比对模版体素与每个候选框的体素特征得到分类结果。

下面具体介绍两个带有三维体素的模块的实现细节。

3.2 Template Voxel Aggregation

实例的多视图二维特征输入TVA模块后,我们参考了VideoAutoEncoder(lai et al., In. ICCV 2021)的做法,直接暴力将2D特征图(feature map)reshape并结合3D卷积得到3D特征体素(feature voxel),这一步称为2D-3D mapping。之后我们将每个独立的Voxel利用相机外参旋转到同一参考系下,最后在这个参考系下取平均得到用于表征这个实例的特征体素(support voxel)。这里由于多视图是目标为中心的,相机的相对旋转可以得到实例每帧相对自己第一帧参考系的旋转,我们在此只使用了旋转没有使用平移。

3.3 Query Voxel Matching

QVA的输入是二维候选框的特征(ROI feature)与目标实例的特征体素support voxel。与TVA中的操作类似,我们首先使用2D-3D mapping得到候选框的3D特征体素。此后,我们使用了一种Voxel Relation运算(具体细节见原文)估计了每个候选框3D体素相对support voxel的旋转矩阵。获得旋转矩阵后,我们将候选框3D体素旋转到和support voxel相同的参考系下。最后,在同一个参考系下,我们使用Voxel Relation运算获取候选框3D体素的分类结果,即每个候选框是否是目标实例。

3.4 两阶段训练范式

twostage.png
图四,两阶段训练范式

上述模型结构听起来简单直观,但是我们发现直接设计这样的结构再端到端训练并不会取得很好的效果,实际上与普通的纯2D方法相差无几。我们发现,想要让VoxDet真正学习到如何通过实例的多视图抽取几何信息(在不同的视角下其外观与形状是什么样的)需要先使用“三维重建”训练上文提及的2D-3D mapping,再将训好的2D-3D mapping作为initialization weights植入检测器的框架中继续微调才能真正实现“可感知几何”的实例检测。

具体而言,这种两阶段范式如图四所示。在第一阶段,我们先输入几个实例的多视图,抽取其二维特征,经过TVA模块获得体素表征。之后,我们用新颖视角的相机外参旋转该体素,再将旋转后的体素解码生成新颖视角的图片。生成的新视角图片与真值之间由perception,gan,和reconstruction三个loss监督(这一操作与VideoAutoEncoder中类似)。这个过程很像Nerf,但VoxDet的重建也只需要在基训练的实例上进行,测试时不需要再针对新颖实例进行test time optimization。

在第二阶段,我们将第一阶段训练好的TVA模块中的2D-3D mapping部分参数拿出来植入进detector,之后再在detection的训练过程中进一步微调。最终训练出的VoxDet才是可感知几何,效果更好的实例检测器。

04. 实验

4.1 数据集

现有的数据集绝大多数都是class-level的,因此我们在这项工作中自己搭建了训练集与测试集。

OWID训练集是完全虚拟的训练数据,我们利用Blender虚拟引擎,将ShapeNet和ABO两个3D模型数据集中的实例随机抽取丢进Blender中,之后在一定的范围内随机采样相机位姿,渲染出用于训练的图片、目标框真值,和相机旋转矩阵。

LM-O和YCB-V是半虚拟半真实的测试数据集。我们使用训练数据的制造方式,将LM-O和YCB-V中的实例加载到Blender中获取其多视图作为实例模版,测试图片直接使用BOP challenge官方提供的数据。

RoboTools是完全真实的测试数据。我们在实验室选取了一些机器人实验室常用的工具作为目标实例,手动拍摄了模版多视图与多个场景下的测试图,最终人工标注了这个数据集。

在制作这些数据集时,我们确保了训练集与测试集的实例(甚至是实例的semantic class)都是完全没有重叠的。

4.2 总体评估

在半虚拟半真实的数据集上我们比较了所有方法,包括使用OWID训练的,和使用真实数据训练的方法,结果如下表:

tab1.png
表一,LM-O和YCB-V上的整体评估

其中除了现有的一些实例检测器如DTOID,Gen6D,One-shot检测器如OS2D,BHRL外,我们也自己搭建了一些基于开放世界检测器的基准方法。OLN Corr中我们设计了基于depth-wise convolution的matching head,将每个多视图逐一与候选框比对后选择得分最高的作为比对结果。OLN CLIP和OLN DINO中我们先获取开放世界候选框,然后抽取其CLIP/DINO的特征与模版多视图的CLIP/DINO特征比对(cosine similarity)得到结果。可见在这些基准方法中,我们的VoxDet是效果最好,速度最快的。

在全真实的测试集上,公平起见我们在正文中只比较了完全使用OWID训练的方法,结果见原文表2与Appendix D。

4.3 消融实验

ablation.png
表二,消融实验

消融实验在RoboTools上开展,这里中重点强调重建的作用(表二中红色框)。不使用第一阶段重建,直接训练VoxDet会导致结果与其他2D基准方法相似,无法使用几何信息,重建后才能获得较好的结果。

05. 讨论与未来

VoxDet最大的limitation是sim2real domain gap。由于VoxDet(除了backbone initialization是ImageNet pre-train外)全部由虚拟数据集训练,它在generalize到全真实的数据集上时会有一些domain gap,详见原文Appendix D。进行这项研究之初,我们想严格确保测试实例是模型没见过的,那时也没有很好的基础模型,所以没有使用DINOv2、SAM,而是自己造了训练集从ImageNet pretrain ResNet开始做。如果想要追求更好的performance,或许可以从foundation model极强的feature extractor出发,用freeze的backbone设计feature voxel。

另外,在VoxDet中我们也没有使用vision-language model(Clip,Glip等),原因除了上面说的严格确保新颖以外,针对某个特定实例的description可能很主观,也很难做到100%精确。到底精细到何种程度的description才是适合任意实例detection的?描述实例的不同特征的description里哪些最影响模型的表现?以及我们能不能根据一组多视图生成最适合detect这个实例的description?这些都是很有趣的open problem可以进一步研究。

我们的代码,模型权重,数据,生成数据使用的工具代码,以及所有baseline方法的原始结果均已开源。新颖实例检测仍有很多有意思的问题值得发掘研究,VoxDet也有很大的提升空间,欢迎大家关注、交流与讨论。

06. 后记

这项工作完成于2023年上半年,那时大厂们先后发布的SAM,DINOv2可谓是席卷了整个二维感知领域。VoxDet投出的时候没有使用这些foundation model ,所以从performance角度(尤其是真实数据上)讲可能还有不小提升空间。因此我投出时对这篇工作抱有些遗憾和担忧。结果审稿人们和AC给的意见居然都很正面,似乎都很喜欢方法本身的idea和实验的严谨设定。最后SpotLight的结果属实是我意料之外。这件事对我的research taste产生了不小的影响,可能有的时候方法的本质与实验、故事的完整性、一致性要比数据集上能取得的点数要重要

VoxDet可能是我在纯感知领域的最后一篇工作,从2020年开始研究学习视觉目标追踪至今转眼已过了四年,CV领域也似乎逐渐从model driven转为data driven,大数据,大模型似乎正逐渐垄断许多方向。现在我更感兴趣的可能是,单靠扩大数据量、模型体量大力出不了奇迹,而人类却能高效做到的事情。譬如我们学习数学做逻辑归纳与推理时似乎并不需要“背”很多东西,只需要记住、理解一些基础的运算法则我们便能泛化到各种没见过的,困难的推理/算数问题。数理推断在多年前就能被人们搭建的symbolic solver (如微软的Z3-solver)以(几乎)100%的精度解决,而如今就连LLM在这些问题上都依然显得有些笨拙,高效泛化并发现新问题的解可能就更困难了。

让模型既能从海量数据中隐式地“记忆”知识,又能显式地“理解”知识,还能“植入”人类专家的知识,最终实现“可控的”高效泛化这一研究方向有个fancy的名字,叫Neuro-Symbolic Artificial Intelligence。希望自己下一步能对这个尚不成熟的领域做出一些贡献。


  关于TechBeat人工智能社区

TechBeat(www.techbeat.net)隶属于将门创投,是一个荟聚全球华人AI精英的成长社区。

我们希望为AI人才打造更专业的服务和体验,加速并陪伴其学习成长。

期待这里可以成为你学习AI前沿知识的高地,分享自己最新工作的沃土,在AI进阶之路上的升级打怪的根据地!

更多详细介绍>>TechBeat,一个荟聚全球华人AI精英的学习成长社区 

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

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

相关文章

Linux进程 ----- 信号处理

前言 从信号产生到信号保存,中间经历了很多,当操作系统准备对信号进行处理时,还需要判断时机是否 “合适”,在绝大多数情况下,只有在 “合适” 的时机才能处理信号,即调用信号的执行动作。 一、信号的处理…

linux系统---nginx基础

目录 一、Nginx的概念 二、Nginx常用功能 1、HTTP(正向)代理,反向代理 1.1正向代理 1.2 反向代理 2、负载均衡 2.1 轮询法(默认方法) 2.2 weight权重模式(加权轮询) 2.3 ip_hash 3、web缓存 三、基础特性 四…

基于SpringBoot+Apache ECharts的前后端分离外卖项目-苍穹外卖(十八)

数据展示 1. Apache ECharts1.1 介绍1.2 入门案例 2. 营业额统计2.1 需求分析和设计2.1.1 产品原型2.1.2 接口设计 2.2 代码开发2.2.1 VO设计2.2.2 Controller层2.2.3 Service层接口2.2.4 Service层实现类2.2.5 Mapper层 2.3 功能测试 3. 用户统计3.1 需求分析和设计3.1.1 产品…

【人脸朝向识别与分类预测】基于PNN神经网络

课题名称:基于PNN神经网络的人脸朝向识别分类 版本日期:2024-02-20 运行方式:直接运行PNN0503.m文件 代码获取方式:私信博主或 QQ:491052175 模型描述: 采集到一组人脸朝向不同角度时的图像,图像来自不…

【Spring】事务总结

目录 1. 什么是事务? 2. 事务的特性(ACID)了解么? 3. 详谈 Spring 对事务的支持 3.1. Spring 支持两种方式的事务管理 1).编程式事务管理 2)声明式事务管理 3.2. Spring 事务管理接口介绍 3.2.1. PlatformTransactionManager:事务管理…

投资黄金在哪里买比较好?

黄金,作为一种传统的避险资产,历来受到投资者的青睐。在全球经济波动的大背景下,黄金的价值愈发凸显。那么,投资黄金在哪里买比较好呢?本文将重点探讨在香港黄金平台投资黄金的优势,并以金田金业为例&#…

Powershell中conda init失效、无法使用conda activate的问题

起因 近期折腾了一下Windows Terminal,安装配置了Powershell 7.3,然后发现conda activate在Powershell中用不了了,conda init powershell不起作用,conda init cmd.exe没有问题 分析 因为powershell的profile.ps1文件路径中存在…

ELK 简介安装

1、概念介绍 日志介绍 日志就是程序产生的,遵循一定格式(通常包含时间戳)的文本数据。 通常日志由服务器生成,输出到不同的文件中,一般会有系统日志、 应用日志、安全日志。这些日志分散地存储在不同的机器上。 日志…

网络层的DDoS攻击与应用层的DDoS攻击之间的区别

DDoS攻击(即“分布是拒绝服务攻击”),是基于DoS的特殊形式的拒绝服务攻击,是一种分布式、协作的大规模攻击方式,主要瞄准一些企业或政府部门的网站发起攻击。根据攻击原理和方式的区别,可以把DDoS攻击分为两…

The Grapes NFT 概览与数据分析

作者:stellafootprint.network 编译:cicifootprint.network 数据源:The Grapes NFT Collection Dashboard The Grapes 是一个有趣且具有吸引力的 NFT 收藏集合,包含 3,333 个精心制作的 NFT。这个 NFT 项目会在 2024 年再创高…

linux僵尸进程

僵尸进程(Zombie Process)是指在一个进程终止时,其父进程尚未调用wait()或waitpid()函数来获取该进程的终止状态信息,导致进程的资源(如进程表中的记录)仍然保留在系统中的一种状态。 当一个进程结束时&am…

GO数组解密:从基础到高阶全解

在本文中,我们深入探讨了Go语言中数组的各个方面。从基础概念、常规操作,到高级技巧和特殊操作,我们通过清晰的解释和具体的Go代码示例为读者提供了全面的指南。无论您是初学者还是经验丰富的开发者,这篇文章都将助您更深入地理解…

java使用Swagger文档报错“java.lang.NullPointerException: null”

java使用Swagger文档报错 一、问题二、解决1、报错2、源码3、方法 一、问题 java项目引入Swagger文档,后期因为一些原因导致Swagger文档不能使用,但是不影响项目运行和正常使用,但每次启动都会报错。 原因有可能是: 1、一个实体类…

【HMAC-SHA1算法以及工作原理】

曾梦想执剑走天涯,我是程序猿【AK】 目录 简述概要知识图谱总结 简述概要 连接HMAC-SHA1工作原理以及工具代码 知识图谱 HMAC(Hash-based Message Authentication Code,基于散列的消息认证码)是一种结合了密钥和消息的认证方法…

刚拿到的《HarmonyOS应用开发者高级认证》,全网整理的题目,将近300题,100%通过

刚拿到《HarmonyOS应用开发者高级认证》,现在把题目和答案分享一下,这些题目是我根据其他网站整理的,宁滥勿缺,有个别题目是重复的,抽半天时间看一下,应该是稳过的。当然建议还是先跟着文档学一下鸿蒙或者看…

Centos 7.5 上nginx设置开机自启动

nginx的安装目录 : /usr/local/nginx 一、没有设置开机自启动前,需要执行/usr/local/nginx/sbin/nginx 启动 二、接下来,我们设置开机自启动,就不用手动启动nginx了 1、cd /usr/lib/systemd/system/ 2、vi nginx.service [un…

如何在Win系统搭建Oracle数据库并实现远程访问【内网穿透】

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle,是甲骨文公司的一款关系…

【深入理解设计模式】适配器设计模式

适配器设计模式 适配器设计模式是一种结构型设计模式,用于将一个类的接口转换成客户端所期望的另一个接口,从而使得原本由于接口不兼容而不能一起工作的类能够一起工作。适配器模式通常用于以下场景: 现有接口与需求不匹配:当需要…

Linux安装Mysql(超详细,亲测)

文章中的全部内容自己都有亲身实践,都是有效的,像常见登录错误中,那种错误的密码修改方式自己以前就浪费了很多事件,还有设置Mysql远程登录这些也是,所以我把这些操作整理了一下,让大家在安装和使用Mysql的…

多线程基础说明【基础篇】

目录 🌭1.相关概念 🍿2.创建和启动线程 🥞3.线程安全 🧈4.死锁 🥓5.线程通信的方法 1.相关概念 1.1程序 为完成特定任务,用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象…