5

PlaneTR:一种用于提取场景中3D平面特征的Transformer(ICCV 2021)

 2 years ago
source link: https://zhuanlan.zhihu.com/p/483898287
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

PlaneTR:一种用于提取场景中3D平面特征的Transformer(ICCV 2021)

专注SLAM、点云、三维重建、结构光、自动驾驶、机械臂抓取等

论文标题:PlaneTR: Structure-Guided Transformers for 3D Plane Recovery

录用信息:ICCV2021

代码地址:https://git.io/PlaneTR

作者:PCB_Segmen 文章来源:微信公众号「3D视觉工坊」

1、背景

从单个RGB图像中恢复或重建出场景中的3D平面结构是3D视觉中的一个基本问题,并且由于其具有的不适定性而非常具有挑战性。这个问题的本质目的是检测场景中平面实例的区域并估计出它们在图像中的3D平面参数(例如表面法线和偏移)。作为3D场景的基本特征结构,重建平面在增强现实、视觉SLAM和室内场景理解等下游任务中具有广泛的应用前景。

一些早期的方法倾向于利用线段、相交点和消失点等几何元素以自下而上的方式解决这个问题。这些几何元素通常首先被分成不同的组,然后在一系列严格的假设(例如曼哈顿世界)和规则下分析特征以恢复3D平面。这些基于结构的方法虽然在一定程度上取得了成功,但也存在几何图元检测缺失或错误、技术流程复杂、场景受限等问题,影响其性能和应用。最近,一些基于神经网络的方法以自上而下的方式直接从输入图像中预测具有3D平面参数的平面实例mask。这些方法放松了基于结构的方法的约束,并取得了不错的性能。然而,它们主要利用来自CNN的上下文信息,却忽略图像中对3D平面恢复有用的结构特征。

在本文中,作者选择在基于学习的框架下利用几何结构来解决室内场景的3D平面提取问题。尽管存在各种低级几何图元,但作者发现与其他几何图元相比,线段构建出的3D平面通常包含更全面的场景3D信息,例如特征点、边缘和消失点。

近期一些CNN方法使用密集图(例如线段图)表示结构。然而,这种结构的密集表示对于网络来说很难利用全局结构线索,其中有两个缺点:(i)CNN的有限感受视野和(ii)密集图中结构像素的稀疏分布。尽管基于CNN的注意力机制可以缓解第一个缺点,但第二个缺点仍然很难很好地解决。因此,作者想是否可以利用整体稀疏线段来学习平面恢复。

受视觉Transformers中标记化表示的启发,作者提出PlaneTR来解决上述问题,这是一种利用信息上下文特征和有意义的几何结构进行平面恢复的Transformer模型。对于给定的输入图像及其检测到的线段,PlaneTR将线段和上下文特征分别编码为两组标记化序列。然后,将一组可学习的平面查询信息用于结构引导的平面解码器与上下文进行整体交互,该解码器可以输出一组标记化的平面实例。最后利用分割策略将每个像素分配给距离其最近的平面实例来产生逐像素平面分割结果。

图1 PlaneTR的方法描述。

网络利用两个标记序列表示的上下文特征和线段来预测图像中的一组3D平面实例。

本文主要贡献如下:

(1)利用线段作为标记化序列而不是密集图来指导学习具有几何结构的3D平面恢复。结合传统方法和基于学习的方法的思想,提出了一种联合利用上下文信息和几何结构进行3D平面恢复的框架。

(2提出一种新颖的Transformer结构,PlaneTR,以序列到序列的方式同时检测和重建单个图像的3D平面结构。

(3)在ScanNet和NYUv2数据集上获得了STOA性能,验证了方法的有效性。

2、核心思想

如图2所示,所提出的PlaneTR由一个卷积backbone组成,后跟一个用于平面实例预测的Transformer分支和一个通过两个解码器进行像素级平面嵌入和非平面区域深度估计的卷积分支。然后将估计的逐像素嵌入用于平面实例分割。

图2 PlaneTR架构。

(i)Transformer分支对平面实例和上下文(线段)序列之间的整体关系进行建模;(ii)卷积分支预测用于平面分割的像素级嵌入和非平面区域的深度预测。

A.使用Transformers进行平面实例预测:

上下文编码器。作者首先使用标准Transformer编码器将backbone特征图的上下文特征编码为标记化特征序列。在每个编码器层中,输入特征命令通过自注意机制(SA)操作相互交互,然后使用全连接前反馈网络(FFN)获得输出。最后一个编码器层最终输出上下文序列。

线段编码器。为了实现标记化的线段序列,作者首先使用最新的线段检测算法HAWP及其预训练模型检测n个线段L={li=(x1i,x2i)ni=1}。这里,x1i和x2i是线段li的两个端点。然后,基于高分辨率backbone特征F2构建线段序列,以区分相邻的线段。

在backbone特征图F2的顶部应用了一个1×1的卷积层Fr∈RH2×W2×d。在计算出Fr的位置编码图Er之后,作者使用双线性插值法对每个线段l在其两个端点处的特征向量和位置编码向量进行采样,分别记为(f1,f2)和(e1,e2),然后应用MLP层来产生线段l的特征及其对应的位置编码:

其中⊗表示连接操作。

最后将所有线段的特征和位置编码拼接成线段序列Sl∈Rd×n,El∈Rd×n。

结构引导的平面解码器。结构引导平面解码器有两个并行分支,如图2所示。每个分支都建立在一个标准的Transformer解码器之上,该解码器由DETR中使用的六个编码器层组成。两个分支分别以上下文序列和线段序列作为输入,共享相同的可学习平面查询信息Ep∈Rd×K。这里,K是固定数量的预测平面实例(本文中K=20)。通过与Transformer的交叉注意(CA)操作同时与上下文和线段序列交互,平面查询能够通过整体考虑图像中的上下文和结构线索来感知场景中的平面实例。将两个分支的输出序列分别定义为Oc和Ol。结构引导的平面解码器的最终解码平面实例序列可以计算为Sp=Oc+Ol∈Rd×K。

平面实例预测层。对于Sp中的每个平面实例,作者应用多头线性层来预测一组参数,包括3D平面参数n∈R3,平面和非平面概率p,以及平面实例嵌入向量E∈Rϵ(本文中ε=8)。在推理阶段,如果它们的平面概率大于0.5,则选择预测的平面实例作为输出

B.实例到像素平面分割:

从Transformer分支获得平面实例后,需要获取每个平面的分割mask。受PlaneAE的启发,作者应用关联嵌入的思想,并通过卷积分支中PlaneAE使用的平面嵌入解码器计算像素级嵌入向量。需要说明的是本文不是通过基于像素嵌入的聚类算法来实现平面实例分割掩码,而是通过直接比较嵌入的像素和嵌入平面实例之间的距离来实现实例到像素转化。然后,如果它们的距离低于阈值T,就将一个像素分配给一个在嵌入空间中最接近它的平面实例。

PlaneTR网络通过基于二分匹配结果的损失进行训练,由以下部分组成:分类损失Lcls、平面参数损失Lparm、平面中心损失Lc、嵌入损失Lemb和逐像素深度损失LD和LC。最终的损失定义为:

其中λ是平衡损失项大小的权重。

3、实验环节:

A.实验细节:

本文的实验主要在ScanNet数据集和NYUv2数据集上进行PlaneTR性能的评估和分析。与PlaneNet相似,应用平面和像素recall来评估平面检测性能。平面(像素)recall被定义为正确预测的GT平面实例(像素)的百分比。如果一个平面的IOU大于0.5并且深度(表面法线)误差小于阈值,则该平面被认为是正确预测的平面。为了进一步评估分割性能,作者应用了三种流行的分割指标分别为randindex(RI)、variationofinformation(VI)和segmentationcovering(SC)。在NYUv2数据集上,还评估了从提取的3D平面推断深度的准确性。评价指标有平均绝对相对误差(Rel)、平均log10误差(log10)、均方根误差(RMSE)和阈值精度(δi<1.25i,i=1,2,3)。

图3 ScanNet数据集上的平面和像素recall。

所提方法与PlaneNet、PlaneAE和PlaneRCNN进行定量性能比较。表1中,展示了平面分割性能的结果。所提方法明显优于其他方法。在图3中展示了各种方法的平面和像素recall,深度误差阈值区间为0m到0.6m,增量为0.05m。所提方法在所有阈值上都显著优于PlaneNet。与PlaneAE相比,在像素召回方面表现更好,这得益于完整的预测平面分割mask,如图5所示。对于平面recall,PlanTR的性能略低于PlaneAE。这主要是所提方法倾向于检测整体的平面结构,这可能会导致一些平面的缺失,例如桌子上的白板,如图5的第四行所示。

表1 ScanNet数据集和NYUv2-Plane数据集上的平面实例分割结果比较。



图4 PlaneTR在ScanNet数据集上的3D平面重建结果。

图4显示了PlaneTR可以有效地检测和合理重构场景中的平面结构。PlaneNet和PlaneAE通常会错误地合并不同的平面。PlaneRCNN则更加倾向于将一个大平面划分为几个平面实例,例如图5第三行所示的墙壁和地板。

图5 ScanNet数据集(行:1-4)和NYUv2-Plane数据集(行:5-6)上平面实例分割结果的比较。

为了验证方法的泛化性,作者还在NYUv2-Plane数据集上评估PlaneTR方法的平面分割性能。在表1中,已经展示了与PlaneNet,PlaneAE和PlaneRCNN的比较结果。PlaneTR方法在所有指标上都优于所有其他方法。为了进一步评估NYUv2数据集上的像素深度估计精度。作者设计了一个实验,通过预测的3D平面参数计算平面区域的深度值,然后用深度解码器的预测像素深度填充非平面区域,从而获得最终的深度图。

如表2所示,PlaneTR方法优于PlaneNet和PlaneAE,而PlaneRCNN实现了最佳深度性能。NYUv2-Plane数据集上的定性平面分割结果对比如图5的最后两行所示。PlaneTR方法可以检测到场景中完整合理的平面,优于其他方法。

表2 NYUv2数据集上的深度估计精度比较。

在图6中,作者展示了在结构引导的平面解码器中预测平面实例和输入上下文序列(线段序列)之间的注意力图。我们可以看到,对于图6第二行中的Plane1等平面实例,其对上下文序列的关注主要集中在空间上位于平面区域上的那些像素上。相比之下,它与输入线段的注意力更能表现出场景中的全局结构信息。

图6 结构引导平面解码器中的上下文和线段注意力图。

在图7中,作者列出了两个示例,以进一步展示输入线段如何指导完整模型中的平面检测。这里,设置‘w/o line’表示将一个空行序列输入到网络中。

图7 PlaneTR 中由线段引导的平面检测示意图。

4、总结

在本文中,作者提出了一种新的基于Transformer的模型PlaneTR,它同时利用上下文信息和全局结构线索从单个图像中恢复并提取3D平面,并获得了最先进的性能。PlaneTR用标记化序列表示上下文特征和线段,以序列到序列的方式解决场景中的平面提取问题。在未来的工作中,作者表示会继续研究几何结构在其他几何视觉任务中的应用。

本文仅做学术分享,如有侵权,请联系删文。

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)

3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进

4.国内首个面向工业级实战的点云处理课程

5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解

6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦

7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化

8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

14.ROS2从入门到精通:理论与实战

更多干货

欢迎加入【3D视觉工坊】交流群,方向涉及3D视觉、计算机视觉、深度学习、vSLAM、激光SLAM、立体视觉、自动驾驶、点云处理、三维重建、多视图几何、结构光、多传感器融合、VR/AR、学术交流、求职交流等。工坊致力于干货输出,为3D领域贡献自己的力量!欢迎大家一起交流成长~

添加小助手微信:dddvision,备注学校/公司+姓名+研究方向即可加入工坊一起学习进步。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK