点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达
作者丨贝塔
来源丨韦心雕AI
今天小伙伴贝塔来给大家分享一下关于Transformer的单目场景重构的文章。貌似现在无transformer不AI似的,包括检测、分割、融合等等领域,现在又来占领了场景重构领域。闲话少说,来看文章《TransformerFusion--Monocular RGB Scene Reconstruction using Transformers》。
TransformerFusion,是一种基于 Transformer的3D场景重建方法。从输入的单目RGB视频中,视频帧由Transformer网络处理,该网络将观察结果融合到表示场景的体积特征网格中;然后将此特征网格解码为隐式3D场景表示。这里的关键在于 Transformer架构,它使网络能够学习关注场景中每个3D位置最相关的图像帧,仅由场景重建任务监督。特征以粗到细的方式融合,仅在需要的地方存储精细级别的特征,需要较低的内存存储并以交互速率实现融合。然后,使用从粗到细3D内插特征的基于MLP的表面占用预测,将特征网格解码为更高分辨率的场景重建。文章中的方法可实现准确的表面重建,优于最先进的多视图立体深度估计方法、全卷积 3D 重建方法以及使用基于 LSTM 或 GRU 的循环网络进行视频序列融合的方法。
基于Transformer的架构对视频帧进行学习特征融合,该架构学习关注信息量最大的图像特征以重建场景的局部 3D 区域。一个新观察到的RGB帧被编码为2D特征图,并反投影到3D体积中,其中我们的transformer从图像视图特征中学习3D体积中每个位置的融合3D特征。这使得能够为3D场景中的每个位置提取信息最丰富的视图特征。3D特征以粗到细的方式融合,提供了改进的重建性能和交互式运行时间。然后将这些特征解码为高分辨率场景几何图形,并使用基于 MLP 的表面占用预测。
简而言之就是:
1)使用transformer网络学习时域中的多视图特征融合,该网络仅关注图像视图中信息量最大的特征,以重建场景中的每个位置。
2)基于transformer的特征融合的粗到细层次结构,支持以交互式帧速率运行的在线重建方法。
End-to-end 3D Reconstruction using Transformers
介绍网络先上图,上面两张图中我们描绘了方法中使用的神经网络的架构。对于粗层和细层,我们使用独立的特征融合和特征细化网络。图 8 详细说明了这些网络中使用的构建块。
给定一组N个场景的 RGB 图像
,具有相应的相机内参数 Ki 和外参姿态 Pi ,通过预测场景中的每个 3D 点的占用值 o
[0,1]来重建场景几何结构。图2显示了我们方法的概述。每个输入图像
由 2D 卷积编码器处理,提取粗略和精细的图像特征(分别为
和
):
根据这些2D图像特征,可以在世界空间中构建了一个3D特征网格。为此,需要定期以每 vc = 30 cm 的粗分辨率和 vf = 10 cm 的精细分辨率定期对 3D 网格点进行采样。对于这些粗细样本点,在所有 N 个图像中查询相应的 2D 特征,并使用 Transformer 网络 [40] 预测融合的粗和精细 3D 特征
:
这里还需要存储了第一个transformer层的中间注意力权重 wc 和 wf 以进行有效的视图选择,关于有效视图的选择,在3.4节中进行解释。
为了进一步改进 3D 空间域中的特征,需要分别在粗略和精细级别应用3D卷积网络 Cc 和 Cf :
最后,为了预测点 的场景几何占用率,粗略
和精细特征
进行三线性插值,多层感知器 S 将这些特征映射到占用率:
这种表面占用率的提取受到卷积占用网络 [32] 和 IFNets [5] 的启发。从这个occupancy filed中,提取了一个带有 Marching 立方体的表面网格 [27]。请注意,除了表面占用率之外,还预测了粗略和精细级别的近表面位置的占用mask。这些mask用于从粗到细的表面过滤(请参阅第 3.2 节),从而提高重建性能,特别是表面几何预测并启用交互式运行时。
通过使用以下损失监督表面占用率预测,以端到端的方式训练我们的方法:
其中 Lc 和 Lf 分别表示粗略和精细级别的近表面位置的占用mask预测的二进制交叉熵 (BCE) 损失(参见第 3.2 节),而 Lo 表示表面占用预测的 BCE 损失(参见第 3.3)。
3.1 通过Transformer学习时序特征融合
对于场景重建中的空间位置p,学习从N个粗略和精细特征图像(分别为和
)中融合粗级别特征
和精细级别特征
,这些图像通过2D编码器被提取。具体来说,我们训练了一个Transformer模型的两个实例,一个用于融合粗级特征
,另一个用于融合精细级特征
。Transformer Tc 和 Tf 共享相同的架构。因此,为了简单起见,我们在下面省略了粗略和精细的表示法。
这里的Transformer模型 T独立应用于世界空间中的每个样本点。对于点 p,transformer 网络将一系列 2D 特征 作为输入,这些特征是从相应投影图像位置的特征映射
中双线性采样的。投影图像位置通过全透视投影
计算,假设已知相机内参Ki和外参
。
为了通知Transformer关于无效特征(即,一个样本点被投影到图像之外),还提供了像素有效性 作为输入。除了这些 2D 特征i 之外,还将投影深度
和视线方向 (viewing ray)
连接到输入(
表示视角
的相机中心)。这些输入特征使用线性层
转换为嵌入向量
,然后将其输入到 Transformer 网络中,然后预测融合特征
:
如上所述,w 表示初始注意力层的注意力值,用于视图选择以加速融合 (3.4节)。
Transformer架构
我们设计的Transformer架构T由前馈和注意力层的 8 个模块组成,使用具有 4 个注意力头和嵌入维度 D = 256 的多头注意力。Feed-forward层独立处理时间输入,并包含 ReLU 激活,具有残差连接的线性层,和layer norm。该模型在来自初始注意力层的所有时间输入上返回融合特征和注意力权重
,稍后用于选择在更长的输入图像视图序列上维护哪些视图。
3.2 空间特征Refinement
在Transformer网络融合了时域中的2D观察结果的同时,我们还通过应用3D CNN 在空间上细化了由Transformer Tc 和Tf 分别在粗网格和细网格上计算的融合特征 和
。粗特征
由 3D CNN
细化,该 3D CNN 由 3 个残差块组成,这些残差块保持相同的空间分辨率并产生细化特征
。使用最近邻上采样将这些特征上采样到精细的网格分辨率,并与精细级别
的融合特征连接。然后将精细级别的3D CNN
应用于连接的特征,从而产生精细的精细特征
。粗糙特征
和精细特征
都用于表面占用预测。
粗到细的表面过滤
精细特征还用于在粗略和精细级别预测近表面位置的占用率的mask,为了滤除自由空间区域并稀疏化体积,从而使得更高分辨率和计算成本高的精细表面提取是仅在靠近表面的区域进行。为了实现这一点,额外的 3D CNN 层 Mc 和 Mf 被应用于改进的特征,输出近表面mask对于每个网格点:
只有当mc和mf都大于0.5时,即靠近表面的空间区域,才会被进一步处理以计算最终的表面重建;其他区域被确定为free space。这通过将表面预测网络的能力聚焦到接近表面的区域来提高整体重建性能,并实现显着的运行时加速。
使用从真实场景重建生成的mask 和
作为近表面mask
和
的中间监督,如果在这个网格点的 vc 或 vf 的半径内存在ground truth表面,则将网格点表示为近表面。 使用Binary交叉熵损失
和
。
3.3 表面占用预测
通过将粗略和精细特征网格解码为占用值 ,值
表示占用点,值
表示自由空间点。对于点
,我们通过三线性插值粗细网格特征来计算其特征表示:
我们将插值特征拼接起来并将点的占用率预测为,其中 S 是具有 3 个前馈层模块的多层感知器 (MLP),包含 ReLU 激活、具有残差连接的线性层和层归一化。
表面占用率的监督(Surface occupancy supervision)
我们在1.5* 1.5* 1.5 m 的场景体积块 (chunk) 上进行训练,以提高训练效率。为了监督表面占用损失,在块内采样了1k 个点,80% 的样本取自距表面最多10 cm的截断区域,20% 的样本在块内均匀采样。
我们使用 ScanNet RGB-D 重建 [8] 计算groundtruth占用值 。对于均匀样本,通过在可见表面前面的free space中采样点来生成未占用的点样本很简单,但是当点样本位于可见表面后面时,它是否被占用是未知的。为了防止墙后的伪影,我们遵循 [28] 中应用的数据处理,并且如果在场景中整个垂直体素列被遮挡的区域中对点样本进行采样,则另外将点样本标记为已占用。然后将二元交叉熵损失
应用于占用率预测 o。
3.4 在线场景重建的视角选择(View Selection)
对于场景中每个 3D 位置,我们将所有的N个图像帧作为的transformer的输入;然而,对于长视频或大规模场景,这在计算上变得非常昂贵,从而阻止了在线场景重建。相反,我们逐步进行重建,逐一处理每个视频帧,同时为每个3D 点仅保留少量 K = 16 的测量值。我们在图 1中形象化了这种在线方法。
在训练期间,为了提高效率,我们对每个训练量只使用 Kt 个随机图像。在测试时,我们利用初始transformer层的注意力权重 wc 和 wf 来确定哪些视图要保留在 K 个测量集中。具体来说,对于新的 RGB 帧,我们提取其 2D 特征,并对相机视锥体内的每个粗网格点和细网格点运行特征融合。这将返回融合特征以及所有当前累积输入测量的注意力权重。
每当达到 K 测量的最大数量时,通过在最新帧中添加新测量之前,删除具有最低注意力权重的测量来进行选择。这保证了少量的输入测量,大大加快了融合处理时间。此外,通过使用从粗到细的过滤,我们可以通过只考虑估计的表面附近区域中更高分辨率的点来进一步加速融合。连同可带来高性能优势的增量处理,我们的方法尽管未优化实现,但仍以约 7 FPS 的速度执行每帧特征融合。
3.5 训练方案
使用的网络在补充文件中指定。为了训练我们的方法,我们使用 ScanNet 数据集 [8],这是一个室内公寓的 RGB-D 数据集。我们遵循既定的 train-val-test 拆分。
对于训练,我们随机采样训练场景的 1.5*1.5*1.5 m 体积块,在自由空间采样较少的块,在具有非结构物体的区域采样更多的样本,即不仅包括地板或墙壁。这导致产生了 165k 个训练块。对于每个块,我们在其相机视锥中包含该块的所有帧中随机采样 Kt = 8张 RGB 图像。
用于图像特征提取的 2D 卷积编码器作为 ResNet-18 [14] 网络实现,在 ImageNet [24] 上进行了预训练。在训练期间,使用 4 个块的batch size和Adam优化器。在计算粗糙和精细表面过滤预测的损失时,对近表面体素应用更高的权重2.0,以增加召回率并提高整体鲁棒性。使用 Intel Xeon 6242R 处理器和 Nvidia RTX 3090 GPU 进行训练大约需要 30 个小时。
4 Ablations
为了证明我们的设计选择的有效性,我们进行了一项定量消融研究。
学习将不同视角的特征利用transformer融合有什么影响?我们通过用独立处理输入图像观察的多层感知器 (MLP) 替换transformer块来评估我们学习的特征融合的效果。该 MLP 的每个视图输出使用平均值或使用加权平均值与 MLP 预测的权重融合。我们发现基于transformer的视图融合有效地学习关注特定位置的信息最多的视图,从而显着提高了这些基于平均的特征融合替代方案的性能。
空间特征细化是否有助于重建性能?空间特征细化对于重建质量确实非常重要。它使模型能够在空间域中聚合特征信息并产生更多空间一致和完整的重建,没有它(无空间参考)几何完成(和召回度量)会相当糟糕。
粗到细过滤有多重要?预测粗糙和精细的近表面mask与没有它的模型(没有C2F filter)相比,提供了额外的性能改进,因为它允许更多地关注表面几何。此外,这可以将融合运行时间加快约3.5倍,从而使处理时间达到 7 FPS(而不是 2 FPS)。
应该使用多少个视图进行特征融合?在我们的实验中,我们使用有限数量的 K = 16 帧观察来通知每个 3D 网格位置的特征。我们发现这些观点都有贡献,但随着观察的稀疏集(K = 8 或 K = 4)性能有所下降。由于较大场景的执行时间和内存消耗,帧数是有限的。
使用注意力权重进行帧选择的效果如何?每个 3D 网格特征的 K 帧是根据计算的注意力权重选择的,并在扫描期间更新。为了评估此帧选择,我们与随机选择观察 3D 位置 (RND) 的帧的帧选择方案进行比较,这导致F分数的性能显着下降。当使用较少的视图进行融合(K = 8 或 K = 4)时,性能差异甚至更大,其中视图选择变得更加重要。
局限性
在严重遮挡和局部观察场景下,我们的方法可能难以重建某些物体的细节,例如椅子腿、显示器支架或书架上的书籍。此外,透明物体,例如没有框架的玻璃窗,经常被不准确地重建为空的空间。我们在补充材料中展示了这些失败案例的定性示例。即使使用真值 RGB-D 数据,这些具有挑战性的场景通常也无法正确重建,我们相信使用自监督损失 [10] 进行单目场景重建可能是一个有趣的未来研究方向。 此外,通过 3D 中的稀疏操作或在详细合成数据上学习局部几何先验,可以潜在地实现更高分辨率的几何保真度 [21]。
本文仅做学术分享,如有侵权,请联系删文。
3D视觉精品课程推荐:
2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~