本文提出基于3D体素表征学习的新颖实例检测器VoxDet。给定目标实例的多视图,VoxDet建立该实例的三维体素表征。在更加杂乱的测试图片上,VoxDet使用体素匹配算法检测目标实例。实验表明,VoxDet中的三维体素表征与匹配比多种二维特征与匹配要更鲁棒、准确与高效。本文已收录于NeurIPS 2023并被选为SpotLight。
论文题目: VoxDet: Voxel Learning for Novel Instance Detection
论文链接:VoxDet: Voxel Learning for Novel Instance Detection | OpenReview
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。
图一,VoxDet与以往二维框架的结构对比
除了方法外,我们发现这类任务也没有很好的基准和数据。大多数以往的研究基于BOP challenge的数据开展实验,他们的参考图片通常是直接从测试集中剪裁的,而不是我们想要的object-centric的多视图。因此,在这项研究中我们也自己制作了虚拟数据集Open World Instance Detection (OWID) 与实录的测试数据集 RoboTools。
图二,RoboTools 数据集中的一些检测示例
02. 贡献
- 我们提出了基于三维体素表征的新颖实例检测器VoxDet,其表现优于多种基于二维表征的检测器。
- 我们发现三维重建+检测的两阶段训练范式可以大幅提高VoxDet内体素特征的表征能力。
- 我们也提出了一种体素匹配算法,可以更高效准确得比对两个实例的体素特征。
- 我们收集、标注了新颖实例检测的虚拟训练集OWID与实际测试集RoboTools。
03. 方法
3.1 宏观架构
图三,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 两阶段训练范式
图四,两阶段训练范式
上述模型结构听起来简单直观,但是我们发现直接设计这样的结构再端到端训练并不会取得很好的效果,实际上与普通的纯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训练的,和使用真实数据训练的方法,结果如下表:
表一,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 消融实验
表二,消融实验
消融实验在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精英的学习成长社区