论文精读(二)Pix2Vox: Context-aware 3D Reconstruction from Single and Multi-view Images 2019

哈尔滨工业大学做的,文章通俗易懂。

ICCV 2019 Open Access Repository (thecvf.com)

Pix2Vox | Infinite Script

摘要

pkXzF6e.png

针对这些问题,构造了一种新的单视图和多视图三维重建框架Pix 2 Vox.通过使用设计良好的编码器-解码器,它从每个输入图像生成粗略的3D体积。然后,引入上下文感知融合模块,以自适应地为每个部分选择高质量重建(例如,桌腿)以获得融合的3D体积。最后,细化器进一步细化融合的3D体积以生成最终输出。在ShapeNet和Pix 3D基准测试上的实验结果表明,Pix 2 Vox算法的性能明显优于现有算法。与3D-R2 N2算法相比,该算法的后向推理速度提高了24倍.在ShapeNet不可见三维类别上的实验表明,该方法具有上级的泛化能力.

1 引言

三维重建是机器人、CAD、虚拟现实和增强现实等领域的重要问题。传统的方法,如运动结构(SfM)[14]和同时定位和映射(SLAM)[6],跨视图匹配图像特征。然而,当多个视点由于局部外观变化或自遮挡而被大幅度分离时,建立特征对应变得极其困难[12]。为了克服这些限制,已经提出了几种基于深度学习的方法,包括3D-R2 N2 [2],LSM [9]和3DensiNet [27],以恢复对象的3D形状,并获得了有希望的结果。

传统的已经没落了,现在用深度学习恢复3D形状才是主流。

pkv0h1H.png

前向推理时间、模型大小和IOU的最新技术水平以及我们在ShapeNet测试集上进行单视图3D重建的方法。每个圆的半径表示相应模型的大小。Pix2Vox在正向推理时间方面优于最先进的技术,并在准确性和模型大小之间达到了最佳平衡

为了生成3D体积,3D-R2 N2 [2]和LSM [9]将多视图3D重建公式化为序列学习问题,并使用递归神经网络(RNN)融合由共享编码器从输入图像中提取的多个特征图。当一个对象的更多视图可用时,特征图会逐渐细化。然而,基于RNN的方法有三个局限性。首先,当给定具有不同顺序的同一组图像时,由于排列方差,RNN无法一致地估计对象的3D形状[26]。其次,由于RNN的长期记忆丧失,输入图像无法被充分利用来优化重建结果[15]。最后但并非最不重要的是,基于RNN的方法非常耗时,因为输入图像是按顺序处理而没有并行化。

为了解决上述问题,我们提出了Pix 2 Vox,一个新的框架,单视图和多视图三维重建,它包含四个模块:编码器,解码器,上下文感知融合,和细化。编码器和解码器并行地从多个输入图像生成粗略的3D体,这消除了输入图像的顺序的影响,并且加速了计算。然后,上下文感知融合模块从所有粗略的3D体积中选择高质量的重建,并生成融合的3D体积,其充分利用所有输入图像的信息,而不会丢失长期记忆。最后,细化器进一步校正融合3D体积的错误恢复部分,以获得细化的重建。为了在准确性和模型大小之间实现良好的平衡,我们实现了拟议框架的两个版本:Pix 2 Vox-F和Pix 2 Vox-A(图1)。

贡献在于:

  • 提出了一个适用于单视图和多视图三维重建的统一框架,即Pix2Vox。我们为Pix2Vox配备了精心设计的编码器、解码器和细化器,这显示了处理合成图像和真实图像的3D重建的强大能力。
  • 我们提出了一个上下文感知的融合模块,以自适应地选择高质量的重建,为每个部分从不同的粗3D体积并行产生融合重建的整个对象。据我们所知,这是第一次利用跨多个视图的上下文进行3D重建
  • ShapeNet [33]和Pix3D [22]数据集上的实验结果表明,所提出的方法在准确性和效率方面都优于最先进的方法。实验结果表明,该算法具有较强的泛化能力,能够很好地重建不可见的三维物体。

2 相关工作

单视点三维重建从理论上讲,从单视点图像恢复三维形状是一个不适定问题。为了解决这个问题,已经进行了许多尝试,例如ShapeFromX [1,18],其中X可以表示轮廓[4],阴影[16]和纹理[30]。然而,这些方法几乎不适用于现实世界的场景,因为它们都需要强大的假设和丰富的自然图像专业知识[35]。随着生成对抗网络(GAN)[7]和变分自编码器(VAE)[11]的成功,3D-VAE-GAN [32]采用GAN和VAE通过将单视图图像作为输入来生成3D对象。然而,3D-VAE-GAN需要用于重建的类标签。MarrNet [31]通过估计2D图像的深度,表面法线和轮廓来重建3D对象,这具有挑战性,通常会导致严重的失真[24]。OGN [23]和O-CNN [29]使用八叉树来表示具有有限内存预算的更高分辨率体积3D对象。然而,由于八叉树表示的复杂性,OGN表示是复杂的并且消耗更多的计算资源。PSGN [5]和3DLMNet [13]从单视图图像生成点云。然而,由于点之间的连接有限,点在点云表示中具有很大的自由度。因此,这些方法不能准确地恢复3D体积[28]。

多视图3D重建SfM [14]和SLAM [6]方法在处理许多场景中是成功的。这些方法匹配图像之间的特征,并估计每个图像的相机姿态。然而,当多个视点被大幅度分离时,匹配过程变得困难。此外,在重建之前扫描物体的所有表面有时是不可能的,这会导致具有遮挡或挖空区域的不完整3D形状[34]。由3D CAD模型的大规模数据集提供支持(例如,ShapeNet [33]),已经提出了用于3D重建的基于深度学习的方法。3D-R2 N2 [2]和LSM [9]都使用RNN从单个或多个输入图像中推断3D形状,并取得了令人印象深刻的结果。然而,RNN是耗时和置换变量的,这会产生不一致的重建结果。3DensiNet [27]使用最大池化来聚合来自多个图像的特征。然而,最大池化仅从特征中提取最大值,这可能会忽略对3D重建有用的其他有价值的特征。

3 方法

3.1 总体

pkXzF6e.png

图2:建议的Pix2Vox概述。该网络从任意(未校准)单个或多个图像中恢复3D对象的形状。当有更多的输入图像可用时,可以改进重建结果。注意,编码器和解码器的权重在所有视图之间共享。

Pix2Vox的目标是从单个或多个RGB图像重建物体的3D形状。对象的3D形状由3D体素网格表示,其中0表示空单元,1表示占用单元。Pix2Vox的关键组件如图2所示。首先,编码器从输入图像产生特征图。其次,解码器将每个特征图作为输入,并相应地生成粗略的3D体积。第三,单个或多个3D体积被转发到上下文融合模块,该上下文融合模块自适应地从粗略的3D体积中为每个部分选择高质量的重建,以获得融合的3D体积。最后,具有跳过连接的细化器进一步细化融合的3D体积以生成最终的重建结果。

3.2 网络结构

网络结构:

pkv0iSH.png

图3:(上)Pix 2 Vox-F和(下)Pix 2 Vox-A的网络架构。EDLoss和RSoss如公式3所定义。为了减小模型大小,Pix 2 Vox-F中删除了细化器。

图3显示了Pix 2 Vox-F和Pix 2 Vox-A的详细架构。前者涉及的参数较少,计算复杂度较低,而后者涉及的参数较多,可以构造出更准确的3D形状,但计算复杂度较高。

3.2.1 Encoder

编码器用于计算一组特征,以供解码器恢复对象的3D形状。前九个卷积层,以及在ImageNet [3]上预训练的VGG 16 [20]的相应批规范化层和ReLU激活,沿着,用于从224 × 224 × 3图像中提取512×28×28特征张量。该特征提取之后是三组2D卷积层、批归一化层和ELU层,以将语义信息嵌入特征向量中。在Pix 2 Vox-F中,第一个卷积层的内核大小为12,而其他两个卷积层的内核大小为32。卷积层的输出通道的数量从512开始,并且对于后续层减少一半,并且以128结束。在Pix 2 Vox-A中,三个卷积层的内核大小分别为32、32和12。三个卷积层的输出通道分别为512、512和256。在第二个卷积层之后,有一个最大池化层,在Pix 2 Vox-F和Pix 2 Vox-A中分别具有32和42的内核大小。Pix 2 Vox-F和Pix 2 Vox-A产生的特征向量的大小分别为2048和16384。

3.2.2 Decoder

解码器负责将2D特征图的信息转换为3D体积。Pix 2 Vox-F和Pix 2 VoxA中有五个3D转置卷积层。具体来说,前四个转置卷积层的内核大小为43,步幅为2,填充为1。有一个额外的转置卷积层,带有一组13个滤波器。每个转置卷积层后面都是一个批处理归一化层和一个ReLU激活层,除了最后一层后面是一个sigmoid函数。在Pix 2 Vox-F中,转置卷积层的输出通道的数量分别为128、64、32、8和1。在Pix 2 Vox-A中,五个转置卷积层的输出通道的数量分别为512、128、32、8和1。解码器在对象的规范视图中输出323体素化的形状。

3.2.3 Context-aware Fusion

从不同的角度,我们可以看到物体的不同可见部分。可见部分的重建质量远高于不可见部分的重建质量。受此观察的启发,我们提出了一个上下文感知融合模块,用于自适应地为每个部分选择高质量的重建(例如,表腿)从不同的粗略3D体积。所选重建被融合以生成整个对象的3D体积(图4)。

pkvBr8g.png

图4:在contextware融合模块中的分数图的可视化。上下文感知融合模块为高质量的重建生成更高的分数,这可以消除丢失或错误恢复的部分的影响。

如图5所示,给定粗略3D体积和相应的上下文,上下文感知融合模块为每个粗略体积生成分数图,然后通过根据其分数图对所有粗略体积进行加权求和来将它们融合成一个体积。在上下文感知融合模块中保留了体素的空间信息,因此Pix2Vox可以利用多视图信息更好地恢复物体的结构。

pkvBs2Q.png

图5:上下文感知融合模块的概述。它旨在为每个部分选择高质量的重建来构建最终结果。边界框中的对象描述了粗略体积vncv^c_n的过程分数计算。其他分数按照相同的程序计算。请注意,上下文评分网络的权重在不同视图之间共享。

具体地,上下文感知融合模块通过级联解码器中的最后两个层的输出来生成第r个粗体积vcr的上下文cr。然后,上下文评分网络生成第r粗体素的上下文的分数mr。上下文评分网络由五组3D卷积层组成,每组卷积层的内核大小为33,填充为1,然后是批量归一化和Leaky ReLU激活。卷积层的输出通道的数量分别为9、16、8、4和1。上下文cr的学习得分mr在所有学习得分上被归一化。我们选择softmax作为归一化函数。因此,第r个体素的位置(i,j,k)处的分数s(i,j,k)r可以计算为:

sr(i,j,k)=exp(mr(i,j,k))p=1nexp(mp(i,j,k))s_r^{(i, j, k)}=\frac{\exp \left(m_r^{(i, j, k)}\right)}{\sum_{p=1}^n \exp \left(m_p^{(i, j, k)}\right)}

其中n表示视图的数量。最后,融合体素vf是通过将粗体素和相应分数的乘积相加而产生的。

vf=r=1nsrvrcv^f=\sum_{r=1}^n s_r v_r^c

3.2.4 Refiner

细化器可以被看作是一个残差网络,其目的是纠正3D体积中错误恢复的部分。它遵循具有U形网连接的3D编码器-解码器的思想[17]。在编码器和解码器之间的U形网连接的帮助下,可以保留融合体中的局部结构。具体来说,编码器有三个3D卷积层,每个层都有一组434^3个填充为2的滤波器,然后是一个批归一化层,一个Leaky ReLU激活层和一个内核大小为232^3的最大池化层。卷积层的输出通道的数量分别为32、64和128。编码器最后后面是两个完全连接的层,尺寸分别为2048和8192。解码器由三个转置卷积层组成,每个转置卷积层有一组434^3个滤波器,填充为2,步长为1。

除了最后一个转置卷积层后面是sigmoid函数之外,其他层后面是批量归一化层和ReLU激活。

表1:ShapeNet上的单视图重建,使用Intersection-over-Union(IoU)进行比较。每个类别的最佳数字以粗体突出显示。请注意,DRC [25]是按类别训练/测试的,PSGN [5]将对象掩码作为额外的输入。此外,PSGN在训练过程中使用220 k 3D CAD模型,而其余方法仅使用44 k 3D CAD模型。

pkvBo24.png

表2:使用Intersection-over-Union (IoU)在ShapeNet上进行的多视图重建比较。不同视图数的最佳结果以粗体突出显示。标记†指示上下文感知融合被平均融合所取代。

pkvBTxJ.png

3.2.5 Loss Function

网络的损失函数被定义为重建对象和地面实况之间的逐体素二进制交叉熵的平均值。更正式地说,它可以被定义为

=1Ni=1N[gtilog(pi)+(1gti)log(1pi)]\ell=\frac{1}{N} \sum_{i=1}^N\left[g t_i \log \left(p_i\right)+\left(1-g t_i\right) \log \left(1-p_i\right)\right]

其中N表示地面实况中的体素的数量。PI和GTI表示预测的占用率和相应的基本事实。该值越小,预测就越接近真实情况。

4 实验

4.1 数据集和指标

数据集:我们在ShapeNet [33]数据集的对象合成图像和Pix 3D [22]数据集的真实的图像上评估了提出的Pix 2 Vox-F和Pix 2 Vox-A。更具体地说,我们使用ShapeNet的一个子集,包括13个主要类别和43,783个3D模型,遵循[2]的设置。至于Pix 3D,我们使用2,894个未截断和未遮挡的椅子图像,遵循[22]的设置。

评估指标:为了评估所提出的方法的输出质量,我们将概率二进制化为0.3的固定阈值,并使用交集(IoU)作为相似性度量。更正式地说,

IoU=i,j,kI(p(i,j,k)>t)I(gt(i,j,k))i,j,kI[I(p(i,j,k)>t)+I(gt(i,j,k))]\mathrm{IoU}=\frac{\sum_{i, j, k} \mathrm{I}\left(p_{(i, j, k)}>t\right) \mathrm{I}\left(g t_{(i, j, k)}\right)}{\sum_{i, j, k} \mathrm{I}\left[\mathrm{I}\left(p_{(i, j, k)}>t\right)+\mathrm{I}\left(g t_{(i, j, k)}\right)\right]}

其中p(i,j,k)和gt(i,j,k)分别表示在(i,j,k)处的预测占用概率和地面实况。I(·)是指示函数,并且t表示体素化阈值。较高的IoU值指示较好的重建结果。

4.2 实现细节

我们使用224 × 224 RGB图像作为输入,以64的形状批量训练所提出的方法。输出体素化重建的大小为323。我们在PyTorch中实现了我们的网络,并使用Adam优化器[10]训练Pix 2 Vox-F和Pix 2 VoxA,β1为0.9,β2为0.999。初始学习率设置为0.001,并在150个epoch后衰减2。首先,我们训练两个网络,除了上下文感知融合,用单视图图像喂养250个epochs。然后,我们用随机数的输入图像训练整个网络100个epoch。

4.3合成图像重建

为了评估所提出的方法在处理合成图像方面的性能,我们将我们的方法与ShapeNet测试集上的几种最先进的方法进行了比较。为了进行公平的比较,除了PSGN [5]之外,所有方法都与所有实验的相同输入图像进行比较。尽管PSGN在训练过程中使用了更多的数据,但Pix 2 Vox-A在恢复物体的3D形状方面仍然表现得更好。表1显示了单视图重建的性能,而表2显示了具有不同视图数量的多视图重建的平均IoU分数。Pix 2 Vox-F和Pix 2 Vox-A的单视图重建结果显著优于其他方法(表1)。Pix 2 Vox-A将IoU比3D-R2 N2提高了18%。在多视图重建中,Pix 2 Vox-A在所有视图数量上的表现始终优于3D-R2 N2(表2)。Pix 2 Vox-A的IoU比3D-R2 N2高13%。

表3:使用Intersection-over-Union(IoU)比较Pix 3D上的单视图重建。最佳数字以粗体突出显示。

pkvDpxH.png

图6显示了ShapeNet测试集的几个重建示例。Pix 2 Vox-F和Pix 2 Vox-A都能够恢复物体的薄部分,如灯和桌腿。与Pix 2 Vox-F相比,我们还观察到Pix 2 Vox-A中的高维特征图确实有助于3D重建。此外,在多视图重建中,Pix 2 Vox-A和Pix 2 Vox-F都比3D-R2 N2产生更好的结果。

图6:ShapeNet测试集上的单视图(左)和多视图(右)重建。GT表示3D对象的地面实况。请注意,DRC [25]是按类别训练/测试的。

4.4 真实图片重建

为了评估所提出的方法在真实图像上的性能,我们在Pix3D数据集上测试了我们的单视图重建方法。我们使用RenderForCNN [21]的管道为ShapeNet数据集中的每个3D CAD模型生成60张图像。我们使用Pix3D数据集对真实世界的RGB图像进行定量评估。此外,我们通过随机颜色和光抖动来增加我们的训练数据。首先,根据图像内的对象的边界框来裁剪图像。然后,根据每个重建网络的需要,对这些裁剪的图像进行重新缩放。

Pix 3D数据集的平均IoU报告见表3。实验结果表明,Pix 2 Vox-A算法在Pix 3D测试集上无需估计物体的位姿就能取得较好的性能。定性分析如图7所示,这表明所提方法在处理真实场景时更为有效。

图7:Pix3D测试集上的单视图图像重建。GT表示3D物体的真实值。。

4.5 未见过的物体重建

为了测试我们的方法可以推广到看不见的对象,我们在ShapeNetCore上进行了额外的实验[33]。我们使用Mitsuba 1从24个随机视图沿着与体素表示渲染ShapeNetCore的其余44个类别中的对象。所有预训练的模型以前从未“见过”这些类别中的对象或对象的标签。更具体地说,所有模型都是在[2]提供的13个主要类别的ShapeNet渲染上训练的,并在具有相同输入图像的ShapeNetCore的其余44个类别上进行测试。使用发布的预训练模型获得3D-R2 N2的重建结果。

几个重建结果如图8所示。3D-R2 N2在不可见物体上的重构IoU为0.120,而Pix 2 Vox-F和Pix 2 Vox-A分别为0.209和0.227。实验结果表明,3D-R2 N2算法很难恢复不可见物体的形状。相比之下,Pix 2 Vox-F和Pix 2 Vox-A显示出对不可见对象的令人满意的泛化能力。

图8:从5视图图像重建ShapeNet的不可见对象。GT表示3D对象的真实地面。

4.6 Ablation Study

在本节中,我们通过消融研究来验证上下文感知融合和细化器。

上下文感知融合为了定量评估上下文感知融合,我们用平均融合替换Pix 2 Vox-A中的上下文感知融合,其中融合体素vf可以计算为

v(i,j,k)f=1nr=1nv(i,j,k)rv_{(i, j, k)}^f=\frac{1}{n} \sum_{r=1}^n v_{(i, j, k)}^r

表2表明,在从不同的粗体积中为每个部分选择高质量的重建时,上下文感知融合比平均融合表现得更好。为了与基于RNN的融合进行进一步比较,我们删除了上下文感知融合,并在编码器后添加了3D卷积LSTM [2]。为了适应3D卷积LSTM的输入,我们在它之前添加了一个额外的维度为1024的全连接层。如图9a所示,平均融合和上下文融合在所有视图数量上都始终优于基于RNN的融合。

图9:ShapeNet上的IoU测试集。(a)上下文感知融合和视图数量对评估IoU的影响。(b)细化器网络和视图数量对评估IoU的影响。

细化器Pix 2 Vox-A使用细化器结构进一步细化融合后的3D体积。对于ShapeNet上的单视图重建,Pix 2 Vox-A的IoU为0.661。相比之下,没有细化器的Pix 2 Vox-A的IoU降低到0.636。去除细化器会导致重建精度显著下降。如图9 b所示,随着视图数量的增加,细化器的效果变弱。消融研究表明,上下文感知融合和细化器在该框架中起着重要的作用,与以往的最新方法相比,性能得到了改善。

4.7 空间时间复杂度

表4:ShapeNet数据集的内存使用和运行时间。请注意,向后时间是在批次大小为1的单视图重建中测量的。

表4和图1显示了不同方法的参数数量。与3D-R2 N2相比,Pix 2 Vox-F的参数减少了80%。运行时间是在具有NVIDIA GTX 1080 Ti GPU的同一台PC上获得的。为了更精确的计时,我们在评估向前和向后推理时间时排除了阅读和写入时间。Pix 2 Vox-F和Pix 2 Vox-A在单视图重建中的前向推理比3D-R2 N2快约8倍。在后向推理中,Pix 2 Vox-F和Pix 2 Vox-A分别比3D-R2 N2快24倍和4倍。

4.8 讨论

为了详细分析上下文感知融合模块,我们在从3view图像重建桌子的3D形状时可视化了三个粗略体积的分数图,如图4所示。右侧桌面的重建质量明显较低,相应部分的评分低于其他两个粗体积。融合的3D体积是通过组合所选择的高质量的重建部分,其中不良的重建可以有效地消除我们的评分方案。Pix 2 Vox在不知道相机参数的情况下恢复物体的3D形状。为了进一步证明多视图立体(MVS)系统中上下文感知融合的上级能力[19],我们用LSM中的上下文感知融合替换RNN [9]。具体地说,我们删除了经常性的融合,并增加了上下文感知的融合,联合收割机的3D体积重建的每个视图。实验结果表明,在ShapeNet测试集上的IoU提高了约2%,表明上下文融合也有助于MVS系统获得更好的重建效果。虽然我们的方法优于国家的最先进的,我们的方法的重建结果仍然具有较低的分辨率。我们可以在未来的工作中通过引入GAN来进一步提高重建分辨率[7]。

5 结论与未来工作

本文提出了一种统一的单视图和多视图三维重建框架Pix 2 Vox。与现有的基于共享编码器的深度特征融合方法相比,该方法融合了解码器产生的多个粗糙体,更好地保持了多视点空间约束。在ShapeNet和Pix 3D基准上对单视图和多视图重建的定量和定性评估表明,所提出的方法在很大程度上优于现有技术。Pix 2 Vox的计算效率很高,在反向推理时间方面比3D-R2 N2快24倍。在今后的工作中,我们将致力于提高重建的三维物体的分辨率。此外,我们还计划扩展Pix 2 Vox,以便从RGB-D图像中重建3D对象。

个人想法

这个框架主要解决的是多视图几何来三维重建,在已知它比较优秀的情况下,可以对它进行调整来适应不同的场景需求。这也是论文精读一所作的工作。

但是常规多视图几何是用外表面拍摄的,对于心脏内表面结构复杂的情况是否合适还有得考究。

这篇文章中国人写的,语法比较容易懂。对于网络的描述也足够,有时间可以复现一遍。