论文阅读:Pix2Vox++: Multi-scale Context-aware 3D Object Reconstruction from Single and Multiple Images
Pix2Vox++: Multi-scale Context-aware 3D Object Reconstruction from Single and Multiple Images
Pix2Vox++:基于单个和多个图像的多尺度上下文感知三维对象重建
来源:International Journal of Computer Vision 2020
源码
摘要
利用深度神经网络从单幅或多幅图像中恢复物体的三维形状在过去的几年中受到越来越多的关注。主流作品(例如3D-R2N2)使用递归神经网络(RNNs)来顺序融合输入图像的特征图。然而,当给定具有不同阶数的相同输入图像时,基于RNN的方法不能产生一致的重建结果。此外,由于长期记忆丧失,RNNs可能会忘记早期输入图像的重要特征。为了解决这些问题,我们提出了一种新的单视图和多视图三维对象重建框架,称为Pix2Vox++。通过使用设计良好的编码器解码器,它从每个输入图像生成一个粗略的3D体积。然后引入多尺度上下文感知融合模块,自适应地从所有粗略三维体中为不同部分选择高质量重建,以获得融合的三维体。为了进一步校正融合的3D体积中错误恢复的部分,采用rediner来产生最终输出。在ShapeNet、Pix3D和Things3D基准上的实验结果表明,Pix2Vox++在准确性和效率方面都优于最先进的方法。
关键词:三维物体重建、多尺度上下文感知、卷积神经网络
介绍
推断物体的完整和精确的三维形状在机器人学、三维建模和动画、物体识别和医学诊断中是必不可少的。传统的方法,如来自运动的结构(SfM)(zy eil等人,2017)和同时定位和映射(SLAM) (Fuentes-Pacheco等人,2015),匹配从稍微不同的视图捕获的跨图像的特征,然后使用三角测量原理来恢复图像像素的3D坐标。虽然这些方法可以产生质量令人满意的3D重建,但它们通常使用校准良好的相机来捕获同一对象的多个图像,这在某些情况下是不实用或不可行的(Yang等人,2019)
最近,几种基于深度学习的方法,包括3D-R2N2 (Choy等人,2016年)、(Kar等人,2017年)、DeepMVS (Huang等人,2018年)、RayNet (Paschalidou等人,2018年)和AttSets (Yang等人,2020年),从一幅或多幅RGB图像中恢复物体的3D形状,而无需复杂的相机校准,并显示出有希望的结果。3D-R2N2 (Choy等人,2016)和LSM (Kar等人,2017)都将多视图3D重建表述为序列学习问题,并使用递归神经网络(RNNs)融合由共享编码器从输入图像中提取的多个特征图。当有更多的对象视图可用时,要素地图会逐渐细化。然而,基于RNN的方法有三个局限性。首先,当给定具有不同顺序的相同图像时,由于排列方差,RNNs不能一致地估计物体的3D形状(Vinyals等人,2016)。其次,早期输入图像的重要特征可能会因为RNNs的长期记忆丧失而被遗忘(Pascanu等人,2013)。第三,基于RNN的方法很耗时,因为输入图像是顺序处理的,没有并行化(Hwang和Sung)
为了克服基于的方法的缺点,DeepMVS (Huang等人,2018)使用最大池来聚集一组无序图像上的深度特征,用于多视图立体重建。RayNet (Paschalidou等人,2018)应用平均池来聚集从同一体素提取的深层特征,以恢复三维结构。最大池化和平均池化都消除了RNNs的上述限制,但它们只捕获最大值或平均值,而没有学会用心保存有用的信息。最近的AttSets (Yang等人,2020)使用注意聚集模块自动预测权重矩阵作为输入特征的注意得分。然而,在解码器之前聚集特征对于具有复杂背景的图像来说是具有挑战性的,并且可能在现实场景中重建对象时引起问题。
为了解决上述问题,我们提出了Pix2Vox++ ,一种新的单视图和多视图三维重建框架。
它包含四个模块:编码器、多尺度上下文感知融合、解码器和细化器。 如图1所示

图1:Pix2Vox++。
- 该网络从任意(未校准)单个或多个图像中恢复物体的三维形状。当更多的输入图像可用时,重建结果可以被细化。
- 请注意,编码器和解码器的权重在所有视图中共享。
- ps:网络大概与pixel2voxel思想无差异
1、编码器和解码器并行地从多个输入图像生成粗略的3D体积,这消除了输入图像的顺序的影响并加速了计算。
2、然后,多尺度上下文感知融合模块从所有粗略3D体中选择高质量重建,并生成融合3D体,该融合3D体利用来自所有输入图像的信息,而不会长期丢失记忆。
3、最后,细化器进一步校正融合的3D体积的错误恢复部分,以获得细化的重建。
这些贡献可归纳如下: (与pixel2voxel提出差不多)
- 我们提出了一个统一的单视图和多视图三维物体重建框架,即Pix2Vox++。它由设计良好的编码器、解码器和细化器组成,在处理合成和真实世界图像中的三维重建方面表现出强大的能力。
- 我们提出了一个多尺度上下文感知融合模块,从不同的粗略三维体中并行地为每个部分自适应地选择高质量的重建,以产生整个对象的融合重建
- 我们构建了一个名为Things3D的大规模数据集,其中包含从超过39K个室内场景中收集的280K个对象的1.68米图像。据我们所知,它是第一个用于从自然图像重建多视图3D对象的大规模数据集。
- 在ShapeNet、Pix3D和Things3D数据集上的实验结果表明,所提出的方法在准确性和效率方面都优于现有方法。
区别!!!!
该作品的初步版本已于2019年在出版(谢等人,2019年)。与初步版本相比,我们在这项工作中做了一些扩展。
- 首先,我们将(Simonyan和Zisserman,2015)替换为ResNet (He等人,2016)作为新的骨干网络。
- 与初步版本相比,改进后的方法包含的参数少了25%,推理速度快了5%。
- 此外,ShapeNet上的交集-over-Union (IoU)有1.5%的增长。其次,我们提出了多尺度上下文感知融合,从多个粗糙三维体中聚合多尺度特征。与初步版本中的上下文感知融合相比,它在1283分辨率下为多视图重建带来了1%的IoU提升。
- 第三,我们在解码器中添加了几个层,以生成分辨率更高的3D体,分辨率分别为643和1283,可以更好地保留3D对象的细节。
- 最后,我们提出了一个用于多视图三维重建的大规模自然数据集,它提供的三维模型比Pix3D多708倍(孙等人,2018)。
The Proposed Method: Pix2Vox++
3.1 综述
所提出的Pix2Vox++旨在从单个或多个RGB图像重建物体的三维形状。物体的三维形状由三维体素网格表示,其中0和1分别表示一个空单元和一个被占用的单元。Pix2Vox++的关键组件 如图1所示 。
- 首先,编码器从输入图像生成特征图。
- 第二,解码器将每个特征图作为输入,相应地生成一个粗略的三维体。
- 第三,单个或多个3D体积被转发到多尺度上下文感知融合模块,该模块从所有粗略3D体积中并行地自适应地选择不同部分的高质量重建,并生成融合的3D体积。
- 最后,细化器进一步校正融合三维体积的错误恢复部分,以产生最终重建结果
3.2 Network Architecture
为了在准确性和模型大小之间实现良好的平衡,我们实现了建议框架的两个版本:Pix2Vox++/F和Pix2Vox++/A, 如图2所示 。

图2:用于低分辨率重建的Pix2Vox++/F(上)和Pix2Vox++/A(下)的网络架构。
等式3中定义了EDLoss和RLoss。为了减小模型大小,在Pix2Vox++/F中移除了细化器
对比一下版本一

前者涉及更少的参数和更低的计算复杂度。后者参数较多,可以重建更精确的三维形状,但计算复杂度较高。
3.2.1 encoder
编码器旨在为解码器计算一组特征,以恢复对象的3D形状。使用ResNet的前三个卷积块(he等,2016)从224×224×3的图像中获得512×282的特征图。
我们对Pix2Vox++/F和Pix2Vox++/A分别采用ResNet-18和ResNet50。ResNet后面是三组2D卷积层、批处理规范化层和ReLU层,用于将语义信息嵌入到特征图中。三个卷积层的内核大小为32,填充为12。在第二层和第三层ReLU之后有一个内核大小为22的最大池层。
在Pix2Vox++/F中,卷积层的输出通道分别为128、64和64。
在Pix2Vox++/A中,三个卷积层的输出通道分别为512、256和256。
Pix2Vox++/F和Pix2Vox++/A制作的特征图大小分别为64×72和256 × 72。
3.2.2 Decoder
解码器负责将2D特征图的信息转换成三维体。
低分辨率重建
在Pix2Vox++/F和Pix2Vox++/A中都有五个3D转置卷积层,具体来说,前四个反卷积层的内核大小为43,步长为2,填充为1。还有一个附加的反卷积层,带有一组13个滤波器。每个转置卷积层之后是批处理标准化层和ReLU激活,除了最后一层之后是sigmoid函数。
在Pix2Vox++/F中,转置卷积层的输出通道分别编号为128、64、32、8和1。
在Pix2Vox++/A中,五个转置卷积层的输出通道数分别为512、128、32、8和1。
解码器在对象的规范视图中输出一个323体素化的形状。
高分辨重建
为了在64 3分辨率下生成3D体积,在Pix2Vox++/F和Pix2Vox++/A的解码器中有六个转置卷积层。每个卷积层都有一个批处理归一化和一个ReLU激活,除了最后一层后跟一个sigmoid函数。
在Pix2Vox++/F中,六个转置卷积层的输出通道分别编号为128、64、32、16、8和1。
在Pix2Vox++/A中,转置卷积层的输出通道数分别为512、128、32、16、8和1。
为了在128 3分辨率下生成三维体,在Pix2Vox++/F和Pix2Vox++/A的解码器中有七个转置卷积层。
对于Pix2Vox++/F,七个转置卷积层的输出通道分别编号为128、64、32、32、32、8和1。
对于Pix2Vox++/A,七个转置卷积层的输出通道数分别为512、128、32、32、32、8和1。
3.2.3 多尺度上下文感知融合
从不同的角度可以看到物体的不同部分。可见部分的重构质量远高于不可见部分。受此启发,我们提出了一种多尺度上下文感知融合模块,以自适应地从不同的粗糙三维体中为每个部分选择高质量的重建。所选重建被融合以产生整个对象的三维体积。 如图3所示 ,多尺度上下文感知融合为高质量重建生成了更高的分数,这可以消除错误恢复部分丢失的影响。

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

图4: 多尺度上下文感知融合模块概述。
- 它旨在为每个部分选择高质量的重建体积来构建最终结果。
- 边界框中的对象描述了粗体积v1c的过程分数计算。其他分数按照同样的程序计算。
- 请注意,上下文评分网络的权重在不同视图之间共享。
更深的卷积层具有更大的感受野,这有助于在3D体积中探索上下文信息。然而,较深卷积层中的特征可能会丢失对象的细节。使用不同的比例来保留较浅卷积层中的细节,这对于恢复高分辨率3D体积中的细节非常重要。具体而言,多尺度上下文感知融合通过连接解码器中最后两层的输出生成第r个粗体素Vrc的context Cr(有两个)。上下文评分网络随后为第r个粗略体素的上下文生成评分Mr。
上下文评分网络由五组3D卷积层组成,每个卷积层的内核大小为33,填充为1,随后是批处理规范化和leaky ReLU激活。除了最后一层的输出通道数为1之外,卷积层的输出通道数为9。由前四个卷积层生成的特征映射被连接并转发到第五个卷积层。
上下文cri的所有分数mr分数进行标准化。我们选择softmax作为归一化函数。因此第r个体素的sr(i,j,k)在(i,j,k)位置的分数通过如下公式计算:

- n:指的是第几个视图
最后,通过将粗体素的乘积和相应的分数相加,产生融合体素Vf:

3.2.4 Refiner
细化器可以被看作是一个残差网络,旨在纠正3D体积中错误恢复的部分。它遵循具有U-net连接的3D编码器-解码器的概念(Ronneberger等人,2015年),该概念保留了融合体积中的局部结构。
低分辨率重建
为了在323分辨率下生成3D体,
编码器 有三个3D卷积层,每个层有一组填充为2的43个滤波器,随后是批处理标准化层、leaky ReLU激活层和内核大小为23的最大池层。卷积层的输出通道分别编号为32、64和128。编码器之后是两个完全连接的层,尺寸分别为2048和8192。
解码器 由三个转置卷积层组成,每个层有一组43个滤波器,填充为2,步长为1。除了最后一个转置卷积层之后是sigmoid函数,其他层之后是批处理标准化层和ReLU激活。转置卷积层的输出通道数分别为64、32和1。
高分辨率重构
为了在643分辨率下生成3D体积,我们在第一个卷积层之前添加一个3D卷积层(编码器中有四个卷积层),在最后一个卷积层之前添加一个3D转置卷积层(解码器中有四个反卷积层)。这两个层都有16个输出通道,内核大小为43,填充为2,随后是批处理规范化层和leakyReLU激活。添加3D卷积层后,有一个内核大小为23的最大池层。
为了以1283分辨率生成三维体,编码器中有五个三维卷积层,其输出
通道分别为8、16、32、64和128。在解码器中,有五个3D转置卷积层,内核大小为43,填充为2,步长为1。五层的输出通道分别为64、32、16、8和1。

3.3 损失函数
网络的损失函数被定义为重建对象和地面真实之间的体素二进制交叉熵的平均值。更正式地说,它可以被定义为:
数值越小,预测越接近真实情况

- N:GT的体素数量
- pi:预测的体素
- gti:GT的体素
