【华南理工大学ICCV-CVPR2019】基于单一的RGB图像的拓扑感知的三维物体重建

2020 年 1 月 15 日 专知
导读

从单张图片恢复出三维物体形状这一研究课题在许多应用中扮演着重要的角色,例如增强现实,图像编辑。但是由于物体的拓扑结构复杂多变,这一课题也颇具挑战性。目前,基于体素表达的方法受限于三维卷积网络计算和内存的限制而难以得到高分辨率的输出。基于点云表达的方法又很难生成平滑而又干净的表面。三角网格表达对物体形状提供了一种更有效,更自然的离散化逼近方式。最近的一些方法尝试直接从输入图像中恢复物体的网格表达。这些方法本质上是在对一个给定拓扑连接关系的初始网格变形,但它们都难以重建出拓扑复杂的物体形状。针对这一问题,华南理工大学几何感知与智能实验室,分别与香港中文大学(深圳)、微软亚研院以及南加州大学展开合作,提出两种能重建出拓扑复杂的物体形状的算法,非常有效地解决了这一难题。一种是以骨架(meso-skeleton)为桥梁融合多种形状表达方式优点的深度学习算法,已收录为CVPR2019 Oral论文。另一种算法提出了拓扑修正网络,能够在对初始网格变形的过程中动态地更新顶点连接关系,修正拓扑连接关系,该论文被ICCV2019所接受。




简介

基于骨架表达的三维物体重建算法,采用分阶段学习的方式,来实现从单张图片恢复物体表面网格表达(如图1),对于重构桌子椅子这些具有细长结构的物体效果尤为显著。我们引入了骨架,因其能很好地保护拓扑,而且相比于复杂的表面更易于学习。我们的方法具体分为以下三个阶段。第一阶段是从输入图像中学习生成骨架点云。为此我们设计了平行的双分支网络架构,被命名为CurSkeNet和 SurSkeNet,分别用于曲线状和曲面状骨架点云的合成。为了CurSkeNet和 SurSkeNet的训练,我们先针对ShapeNet的物体模型处理了骨架数据集来当做ground truth用于训练。在第二个阶段,我们通过将合成的骨架点云体素化,然后用三维卷积网络对粗糙的骨架体素进行修复提取出一个初始网格。此处为了减小高清体素输出时的网络复杂度,采取了用全局结构引导分块体素修复的方式。最后一个阶段使用图卷积神经网络来对前面获得的初始网格进行变形以得到最终的表面网格表达。
图1 基于骨架表达的方法能从单视角图像中重建完整的形状,且能正确地恢复拓扑基于拓扑修正网络的表面网格重建算法提出了一种新的端到端的单视图表面网格重建框架,该框架能够从一个亏格 (genus) 为零的初始网格生成具有复杂拓扑的高质量三维模型。我们方法的关键是一个渐进成形框架 (progressive shaping framework),该框架在网格形变 (mesh deformation)和拓扑修正 (topology modification)之间交替。网格形变模块可以预测每个顶点的位移,从而减少重建的网格和真实物体表面之间的差距,而拓扑修正网络可以删除重建误差较大的三角面片,从而更新拓扑。通过迭代这两个过程,可以逐步修正网格拓扑,同时提高重建精度。此外,我们设计了边界优化 (boundary refinement)模块以优化边界条件,以进一步提高重建的三维网格的视觉质量。

总的来说,基于骨架表达的方法是自底向上的,先从图片中学习抓住拓扑结构,再去增加形状的表面细节。基于拓扑修正网络的重建算法是自顶向下,先直接用初始网格去拟合物体的表面,然后再进行逐步的拓扑更新和修正。
论文链接: http://openaccess.thecvf.com/content_CVPR_2019/papers/Tang_A_SkeletonBridged_Deep_Learning_Approach_for_Generating_Meshes_of_Complex_CVPR_2019_paper.pdf

代码: https://github.com/tangjiapeng/SkeletonBridgeRecon
图2. 算法流程图总览





算法总览

图2,展示了我们方法的整个流程图。输入物体的单视角图像I, 本文的目标是重构出网格表达的完整物体形状,同时能正确地抓住三维物体的拓扑结构。为了解决这一难题,本文基于骨架表达,提出了以下分三个阶段的物体重构过程。在第一阶段,我们采用编码器--解码器的网络结构从输入图片I学习出对应的骨架K,它本质上是一个更简洁紧凑的点云表达。在第二个阶段,我们把获得的骨架K先转成一个粗糙的体素表达的Vk,然后用三维卷积神经网络对其进行修复,得到一个更精细化的体素V.  在最后一个阶段,我们先从体素M中提取出一个粗糙的初始网格Mb,然后再用图神经网络对网格的顶点位置进一步优化,得到最后的输出网格M.  每个阶段都有一个图像编码器来提取所各自需要的信息,因此输入图片I引导着三个阶段的学习过程。
 



骨架学习


用于骨架生成的CurSkeNet 和 SurSkeNet

给定输入图像I,我们采用ResNet-18做为编码器将提取的特征映射成高维空间的向量,然后设计译码器同于生成骨架点云,而译码器的网络架构是基于CurSke和SurSkeNet的平行双分支结构。这样的设计方法,可使曲线状和曲面状的骨架区域的合成得以独立完成,互不干扰。SurSkeNet通过对一些2D 平面进行变形,来逼近曲面状骨架。CurSkeNet对一些1D 直线进行变形,通过实施仿射变换来形成曲线,然后学习如何将这些曲线聚集成曲线状的骨架部分。
 

骨架生成的网络训练

本文用曲线状和曲面状的骨架点云分别去训练CurSkeNet和 SurSkeNet, 所以采用ChamferDistance (CD 距离)做为损失函数的一部分,其定义如下:
为了保证变形的局部一致性,防止出现过大的变形,我们还在骨架学习过程中加上了拉普拉斯平滑正则化项。它被定义为:

从骨架生成粗糙网格

图3 高清体素表达的骨架合成方法流程图
(The pipeline of high-resolutionskeletal volume synthesis method)

全局引导下的分子块合成

为了保护骨架K所抓住的拓扑结构以及得到粗糙的初始网格,我们需要将K进行修复以得到一个高分辨率的体素表达。具体地做法如下,先把骨架K体素化,得到两种分辨率下的体素表达,被记做 分辨率 如图3所示,我们采用两个三维卷积网络用于骨架体素的全局结构和局部子块合成。 全局结构合成网络用于对 修复,产生一个分辨率为的骨架体素表达。 局部子块合成网络用从 中均匀切割出来的64^3子块做输入,对这些子块独立地进行修复。 当修复每个子块的时候,全局网络的输出 中对应的32^3 对应的子块也被一起输入,使得每个子块修复后的结果仍然保持全局一致性。

图4 (a) 输入图片(b) 学习到的骨架点云 (c) 只分子块进行修复 (d) 加上全局结构引导 (e) 加上图像的引导

加入图像引导进行拓扑纠正

为了纠正在骨架生成阶段时的预测误差,我们再次利用输入图像I,从中学习一个低分辨率32^3的骨架体素表达,将其集成到我们前面提到的全局结构合成网络,得到一个更准确的全局结构V。 这最终将有助于得到一个更好的修复结果V。 如图4所示,图像I的使用大大提高了修复后的骨架体素V的效果。

初始网格提取

得到修复后的体素V后,我们用Marching Cubes算法来产生初始网格Mb,它仍然保留着和骨架K一样的拓扑结构。 为了减轻后续的计算负担,我们对Mb进行了简化。
 

初始网格变

图5 三角网格变形网络
到目前为止我们获得了抓住潜在物体拓扑结构的初始网格Mb,但是还缺乏物体表面的细节。我们利用图卷积神经网络结合输入图像对粗糙的初始网格进行变形,达到在Mb的表面处补充细节的目的。

图5所示是我们的网格变形网络。本文的图神经卷积网络由一些图卷积层组成,每个层对Mb的每个顶点以及其局部邻域实施空间滤波操作。图卷积层的定义如下:
与Pixel2Mesh类似,我们也将从图像I提取出来的特征结合到对应的顶点位置上来促进学习过程。关于损失函数选择,此阶段再次使用了CD距离来训练。同时加上了平滑正则项来规范网格变形过程。一个是edge regularization,用于防止边长过长,避免大的变形,造成形状畸变。另外一个是normal loss,用于保证输出物体表面的平滑。

















实验


单视角物体重建

为证明所提出方法在单视角重构这个任务上的有效性,本文挑选了ShapeNet中有代表性的五个物体种类(plane, bench, chair,table, firearm)来进行实验说明。

  可视化对比
图6展示了我们方法与现有方法的视觉对比结果。可以看出,我们的方法(f)已经超过了其他方法(b-e),因为我们生成的是完整的物体形状网格表达,而且能抓住正确的拓扑结构,以及刻画更多的细节。
 

量化对比

通过使用网格上采出具有10000个点的点云,本文采用CD和EMD 来评估重建质量。表1展示了与其他方法量化对比的结果

表1:单视角重建方法的 CD EMD 对比结果
 

真实图片泛化测试

图7所示我们的方法在三张真实图片上的重构结果。可以看到重建结果的质量与合成图片的结果十分相似。特别是图7(a)所示,该图片虽然与ShapeNet无关,但是我们仍然能将看不到的细杆很好地重构出来。这一结果也证明了其方法优秀的泛化能力。
图7 真实图像测试结果
 

骨架生成比较

在这一节,我们对骨架学习方法的几个变种进行比较,用此来说明我们最后所选用的模型是最优的。它们是:(1)”Point-only fitting”方式直接采用PointSetGeneration 去回归骨架点坐标(2)“Line-only fitting”方式移除了我们方法中的面拟合分支,只通过对多根直线变形来逼近骨架(3)“Square-only fitting”方式则移除了线拟合分支,只通过对多个平面变形来逼近骨架(4)“Line-and-Square fitting”则是只用一个MLP来同时学习线和面的变形(5)“Ours w/o laplacian”代表我们的模型但没有加拉普拉斯平滑项。

量化对比

表2:骨架学习方法的CD 对比结果
由表2可以看出我们最终的骨架学习模型比其它的几个变种方法更优。另外一个发现是拉普拉斯正则化项有助于骨架预测得更加准确。

可视化对比

图8用一个例子展示了这些骨架学习方法的视觉对比结果。由此图可以观察到利用双平行预测分支用于曲线状和曲面状骨架独立合成这一设计方法和拉普拉斯平滑项的有效性。
 
基于拓扑修正网络的单视图深度表面网格重构
论文链接: http://openaccess.thecvf.com/content_ICCV_2019/papers/Pan_Deep_Mesh_Reconstruction_From_Single_RGB_Images_via_Topology_Modification_ICCV_2019_paper.pdf

Code: https://github.com/jnypan/TMNet




拓扑自适应(Topology-adaptive)网格重建


模型架构

我们提出了一种渐进的网络结构以形变初始网格贴合目标表面。在具体实现中,我们采用具有2,562个顶点的球面网格作为初始。图1给出了整个重建流程。我们利用编码器——解码器网络结构进行三维物体重建。在编码器端,输入的单张图片被馈送到ResNet-18网络中提取1024维图片特征向量。解码器包含三个连续的子网络。前两个子网络中的每个子网络均包含网格形变 (mesh deformation) 模块和拓扑修正 (topology modification) 模块,最后一个子网络由一个边界优化 (boundary refinement) 模块组成。其中每个网格形变模块都会预测网格顶点的偏移量,并将其与输入网格的对应坐标相加以获得重构结果。然后,拓扑修正模块首先预测出先前形变模块结果的重建误差,并删除误差较大的三角面片,以更新网格拓扑。最后,边界优化模块保证了边界的平滑,从而进一步改善了视觉效果。

网格形变模块

我们的网格形变模块是一个由大小为1024、512、256、128的四个全连接层组成得多层感知器(MLP),前三层使用了非线性激活函数ReLU,最终输出层使用了tanh。给定输入网格和包含物体形状先验的特征向量,我们复制向量并将其与包含的所有顶点的矩阵相连结,然后再将其馈入MLP。MLP预测每个顶点得位移。我们选择预测顶点位移而非直接回归坐标。这样的设计可以以更少的训练时间更精确地学习物体的几何细节。
图1. 模型架构。给定单个输入图像,我们首先使用多个网格形变模块和拓扑修正模块来逐渐形变网格顶点并更新拓扑以逼近目标物体表面。最后利用边界优化模块来优化边界条件。

拓扑修正模块

为生成具有不同拓扑的三维模型,必须要能够修改预定义的顶点连接关系。为了实现这一目标,我们提出了拓扑修正模块,该模块通过删除误差较大的三角面片来更新重构出的表面网格的拓扑结构。拓扑修正模块如图2所示,其中包括两个部分:误差估计(error estimation)和面片删除 (face pruning)。

误差估计

要进行面片删除(face pruning),关键是在能够在测试时找到具有较大重构误差的三角形面片。我们提出了误差估计网络,该网络预测从先前的网格变形模块得到的表面网格中的每个面片的重构误差。它利用了与网格变形模块相似的MLP结构。首先,我们在重构出的网格的表面上随机采样点,并将复制的形状特征向量与包含所有采样点的矩阵连结。MLP将此特征矩阵作为输入,并预测每个点的重构误差(与真实表面的距离)。通过对三角形面的所有采样点的预测误差取均值或最大值而得到每个三角形面片的最终误差。

面片删除

给定每个三角形面片的估计误差,我们采用了阈值化策略去删除预测误差超出预定义阈值的三角面片以更新网格拓扑。然而,为了得到适当的网格结构,需要仔细设置阈值:采用较高的值往往会得到具有较高误差的结果,而较低的阈值可能会删除过多的三角面片并破坏生成的网格的几何结构。为此,我们提出了一种渐进式面片删除策略,该策略以粗到细的方式删除了有着较大重建误差的面片。其中,我们在第一个子网络中为设置了一个较高的值,并在随后的子网络中将其减小。这样的策略可以以更加准确的方式执行面片删除。
图2. 拓扑修正模块。给定重建的表面网格,我们首先使用误差估计网络对表面网格上采样点的误差进行估计,随后基于估计的误差删除表面网格对应的面片。图片中红色表示有着较大重建误差的区域。

边界优化模块

如图1所示,对三角形面片进行直接删除将会导致锯齿状边界,从而影响重建结果视觉外观。为了防止此类结果并进一步提高重建网格的视觉质量,我们设计了边界优化模块以确保边界的平滑度。该模块预测每个输入网格的边界顶点的位移。其中每个边界顶点仅允许在由在此顶点处相交的两个边界边确立的二维平面上移动。我们进一步提出了一种新的正则化项,该项通过强制边界曲线保持平滑一致来惩罚锯齿形边界。其定义如下:
其中是位于表面网格边界上的顶点的集合,是位于该边界上的点的相邻顶点的集合。

目标函数

我们的网络采用了复数不同的损失函数作为训练目标。对于网格形变和边界优化模块,我们使用常用的倒角距离 (CD) [1]来衡量重建结果和真实物体之间的差异。我们采用函数训练误差估计网络,以回归重构误差。

倒角距离

误差估计损失函数

实验结果

表1. 相对于现有方法的数值比较结果。
我们在shapenet [2]数据集上进行了实验以验证我们方法的有效性。我们将我们的方法的性能与三种用于单视图三维网格重建的最新技术进行比较,其中包括neural 3d mesh renderer (N3MR)[3] , Pixel2Mesh[4]和AtlasNet [5]。我们还通过baseline网络进行比较进一步体现出来我们方法得有效性,其中baseline仅包含网格形变模块。
图3. 相对于现有方法的可视化比较结果。(a) 输入图片, (b)N3MR, (c)pixel2mesh, (d)AtlasNet, (e)Baseline, (f) Ours,(g) Ground-truth.
 
我们采用了广泛使用的倒角距离(CD)和 Earth Mover’s Distance(EMD)来定量评估重构结果。如上表所示,在所有五个类别的两个指标中,我们的方法始终都优于最新方法,尤其是在具有复杂拓扑(例如椅子和桌子)的模型上。

可视化结果如上图所示。尽管N3MR可以重建粗糙的形状,但它无法恢复出三维模型的精细细节,并且无法对具有复杂拓扑的物体的表面进行建模。在建模精细结构的能力方面,Pixel2Mesh通常比N3MR更好。但是,由于Pixel2Mesh采用了类似的形变策略,因此也难以重建具有复杂拓扑的形状,尤其是对于椅子和桌子。由于没有拓扑修正模块,我们的baseline方法也存在相同的问题。由于使用多个表面网格作为初始,AtlasNet-25可以生成具有不同拓扑的物体。然而,它得结果存在着严重的自相交和重叠,并且仍然无法重建具有更为复杂拓扑的物体,例如,图中第三排的桌子和第五排的椅子。相比之下,就视觉质量而言,我们的方法优于其他方法。借助拓扑修正模块,我们能够生成具有复杂拓扑的表面网格,同时保持较高的重构精度。另外,我们的方法也可以很好地重建具有简单拓扑的三维物体,例如图中最后一排的飞机等。
 



总结

针对从单张图片中难以重建出拓扑复杂的物体形状网格这一难题,华南理工大学几何感知与智能实验室提供了两种有效的解决方案,这两种方法在可视化和量化上均优于现有其他方法。第一种是自底向上的,基于骨架表达的三维物体重建算法将任务分成三个阶段,逐步恢复出形状的拓扑结构与表面网格;它首先恢复点云表达的3D骨架,然后这些骨架点被转为体素表达,通过三维卷积网络合成一个更可靠的体素用于提取粗糙的初始网格。最后,一个图神经网络被用于学习网格变形来产生表面细节。第二种是自顶向下的,基于拓扑修正网络的网格重构算法直接对初始球面网格变形去拟合真实形状表面,与此同时会动态修正顶点连接关系,更新拓扑结构。该框架是一种新的端到端的学习框架,整个框架包括逐步恢复三维形状的多个网格形变和拓扑修正模块,以及边界优化模块。
 
参考文献
[1] HaoqiangFan, Hao Su, and Leonidas J. Guibas. A point set generation network for 3dobject reconstruction from a single image. In 2017 IEEE Conference on ComputerVision and Pattern Recognition (CVPR), pages 2463–2471, 2017.
[2] Angel XChang, Thomas Funkhouser, Leonidas Guibas, Pat Hanrahan, Qixing Huang, Zimo Li,Silvio Savarese, Manolis Savva, Shuran Song, Hao Su, et al. Shapenet: Aninformation-rich 3d model repository. arXiv preprint arXiv:1512.03012, 2015.
[3] HiroharuKato, Yoshitaka Ushiku, and Tatsuya Harada. Neural 3d mesh renderer. InProceedings of the IEEE Conference on Computer Vision and Pattern Recognition,pages 3907– 3916, 2018.
[4] NanyangWang, Yinda Zhang, Zhuwen Li, Yanwei Fu, Wei Liu, and Yu-Gang Jiang.Pixel2mesh: Generating 3d mesh models from single rgb images. In Proceedings ofthe European Conference on Computer Vision (ECCV), pages 52–67, 2018.
[5] ThibaultGroueix, Matthew Fisher, Vladimir G. Kim, Bryan Russell, and Mathieu Aubry.AtlasNet: A Papier-Mach ˆ e´ Approach to Learning 3D Surface Generation. InProceedings of the IEEE conference on computer vision and pattern recognition,pages 216–224, 2018.

专知,专业可信的人工智能知识分发,让认知协作更快更好!欢迎注册登录专知www.zhuanzhi.ai,获取5000+AI主题干货知识资料!
欢迎微信扫一扫加入专知人工智能知识星球群,获取最新AI专业干货知识教程视频资料和与专家交流咨询
点击“阅读原文”,了解使用专知,查看5000+AI主题知识资料
登录查看更多
18

相关内容

CVPR 2020 最佳论文与最佳学生论文!
专知会员服务
35+阅读 · 2020年6月17日
CVPR2020 | 商汤-港中文等提出PV-RCNN:3D目标检测新网络
专知会员服务
43+阅读 · 2020年4月17日
专知会员服务
41+阅读 · 2020年2月20日
姿势服装随心换-CVPR2019
专知会员服务
34+阅读 · 2020年1月26日
已删除
将门创投
5+阅读 · 2019年10月29日
已删除
将门创投
5+阅读 · 2019年9月10日
ICCV2019 | 高精度,高效率点云三维重建 PointMVSNet
计算机视觉life
23+阅读 · 2019年9月5日
已删除
将门创投
8+阅读 · 2019年6月13日
SkeletonNet:完整的人体三维位姿重建方法
极市平台
11+阅读 · 2019年1月11日
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Foreground-aware Image Inpainting
Arxiv
4+阅读 · 2019年1月17日
Arxiv
11+阅读 · 2018年9月28日
Two Stream 3D Semantic Scene Completion
Arxiv
4+阅读 · 2018年7月16日
VIP会员
相关资讯
已删除
将门创投
5+阅读 · 2019年10月29日
已删除
将门创投
5+阅读 · 2019年9月10日
ICCV2019 | 高精度,高效率点云三维重建 PointMVSNet
计算机视觉life
23+阅读 · 2019年9月5日
已删除
将门创投
8+阅读 · 2019年6月13日
SkeletonNet:完整的人体三维位姿重建方法
极市平台
11+阅读 · 2019年1月11日
Top
微信扫码咨询专知VIP会员