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

本文主要是介绍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精英的学习成长社区 

这篇关于NeurIPS 2023 Spotlight | VoxDet:基于3D体素表征学习的新颖实例检测器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/749087

相关文章

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Spring 中使用反射创建 Bean 实例的几种方式

《Spring中使用反射创建Bean实例的几种方式》文章介绍了在Spring框架中如何使用反射来创建Bean实例,包括使用Class.newInstance()、Constructor.newI... 目录1. 使用 Class.newInstance() (仅限无参构造函数):2. 使用 Construc

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例