3D Human Body Reconstruction from a Single Image via Volumetric Regression笔记

3D Human Body Reconstruction from a Single Image via Volumetric Regression

(基于体积回归的单幅图像三维人体重建)

Abstract

本文提出了一种端到端的卷积神经网络,通过体积回归直接重建人体的三维几何形状。该方法不需要拟合形状模型,并且可以从各种输入类型进行训练,无论是地标、图像还是分割掩码。此外,不可见部分,无论是自遮挡的还是其他的,仍然被重建,这与深度图回归的情况不同。实验结果表明,在给定合适的训练数据集的情况下,我们的方法既能处理姿态变化,又能处理细节重建。

3D Human Body Reconstruction from a Single Image via Volumetric Regression笔记

Introduction

3D重建是从一个或多个2D图像估计3D几何形状的过程。在这项工作中,我们专注于从一幅图像中重建人体,包括被自遮挡的不可见部分。我们的方法建立在文献[1]的基础上,即使用他们所称的“体积回归网络”(VRN)从单个图像直接回归3D人脸。
在这篇文章中,我们展示了同样的想法也可以应用于其他可变形物体,特别是人体。这带来了一系列的挑战,这些挑战在重建脸部时是不存在的。虽然我们仍然只重建一个单一类别的物体,但与脸部相比,身体的旋转轴要多得多。因此,人体重建通常被认为是一个非常困难的问题。

3D人体重建(以及一般的3D重建)所需的管道通常基于解决困难的非凸优化问题(non-convex optimisation problems)。也许最常见的3D人体重建方法是拟合形状模型。例如,最近的方法[2],使用优化来将3D形状模型拟合到2D身体关节。然而,优化方法对初始化很敏感,很容易陷入局部极小值,这两种情况都会因遮挡和潜在的尺度变化而加剧。

在这项工作中,我们的目标是显著降低标准3D人体重建技术的复杂性,使其可以像分割任务一样容易地处理。我们通过使用标准的、空间的CNN架构直接回归3D几何体的体积表示来实现这一点,其中回归的体积结构与输入在空间上对齐。值得注意的是,我们没有回归深度图;3D结构回归为切片,并使用标准曲面提取算法(如Marching Cubes[3])从其体积表示中恢复。综上所述,我们在这项工作中的主要贡献如下:

1.我们首次将体积回归网络[1]应用于人体重建问题,而不仅仅是人脸重建问题。
2.我们对文献[1]中描述的网络体系结构提出了几点改进,这些改进显示了显著的性能改善。这些措施包括引入中间监管,使用更先进的残差模块,并通过减少残差模块的数量来增加沙漏模块的数量,从而改变网络结构。
3.研究表明,VRN在合适的数据集上训练时,能够重构复杂的姿态。
4.最后,我们证明了在给定高质量的训练数据的情况下,我们的方法可以学习从一幅图像中生成以前看不见的、高细节的、完整的3D重建。据我们所知,没有其他方法能像我们的方法那样获得如此高的保真度和可靠性的结果。

论文的其余部分结构如下:首先,回顾了三维人体重建和人体姿态估计的相关工作。然后我们描述我们的方法,包括我们已经简要提到的体积表示,接下来是数据集和训练过程。接下来,我们将讨论VRN的几个建筑变体,接下来是用姿势变体数据训练的网络的结果,但细节很少。最后,我们将展示通过使用高度详细的数据训练模型而产生的结果。

Closely Related Work

在本节中,我们将概述最近流行的人体姿态估计方法(通常是人体重建的先决条件)和三维重建方法,这两种方法都是从图像和地标开始工作的。

Human Pose Estimation.

所有估计人体姿势的现代方法都基于使用CNN的方法。这些方法通常分为两类。第一种是使用L2(或类似)损失直接回归关节坐标[4–10]。特别地,[5]通过将2D预测与图像特征相结合来估计3D姿态。在[6]中使用了一个自动编码器来将姿势限制在合理的范围内。类似地,[8]有相同的目标,但通过使用运动学模型来实现。合成数据用于[9]中的完整训练程序,以确保网络使用准确的数据进行训练。然而,在[10]中,他们只使用合成数据来扩充现有的训练集。基于CNN的人体姿势估计的第二种方法是回归热图[11-14]。在[11]中,他们通过视频做到了这一点。在[12]中,他们回归了3D热图,这与我们自己的工作类似。在[13]中描述了另一种基于时间的方法,其中2D地标首先也被细化为热图。基于零件的热图回归方法如[14]所示。

在这项工作中,我们不打算将人体姿势估计为一组坐标。取而代之的是,我们的目标是仅从一张图像重建人体的完整3D几何图形。这包括身体的任何被自身遮挡的部分。然而,在这样做的过程中,我们可选地利用来自人体姿势估计步骤的信息,该信息作为16个通道提供给网络,每个通道具有位于各自地标上方的高斯中心。

Reconstruction from Image.

许多人类重建方法从一幅或多幅图像估计几何形状。例如,[15-17]基于单个RGB或灰度图像拟合模型。具体地说,[16]通过分别估计身体每个部位的比例和姿势来使骨骼模型适合图像。在[17]中,它们符合一个形状模型,该模型是由用户在分割掩码的辅助下点击不同的身体部位而初始化的。在[15]中提出了另一种基于形状模型的方法,使用带有随机优化步骤的SCRAPE(刮擦)模型[18]。文献[19]中提出了一种用于重建的通用形状拟合方法,其中通过求解非线性优化问题,使用了两个高斯模型-一个用于形状,一个用于姿态。作者在人体和鲨鱼身上演示了这种方法。在[20]中,单个图像和相应的地标被用来使用kd-tree查找相似的人体姿势,包含大约400万个示例。文献[21]描述了一种用于从单幅图像拟合多实例模型的方法。

有几种方法的目标是仅使用通过人体姿势估计提取的地标来估计3D几何图形[2,22]。特别地,SMPLify2被扩展到也包括来自[24]中分段掩码的进一步指导。然而,除非图像中的信息也被捕获,否则这样的方法永远不能回归更精细的细节。

除了前面提到的SCRPRE[18]和SMPL[23],Dyna在[25]中提出了能够捕捉身体形状大变化的形状模型,但没有附带的从单个图像进行拟合的方法。最新的一种名为Total Capture[26]的形状模型捕捉了身体的许多方面,这些方面通常被其他形状模型忽略,包括脸和手。

我们的工作不同于前面提到的所有方法,因为我们不回归形状模型的参数,也不直接回归顶点。
此外,我们的方法完全跳过了模型生成步骤,避免了在所有训练样本之间寻找密集对应关系的需要。取而代之的是,我们将问题限制在空间域,并通过可以恢复完整3D几何的体积表示,使用CNN中的空间卷积直接回归3D结构。

Method

本节介绍我们建议的方法,包括体素化和对齐过程。

Volumetric Regression

在这项工作中,我们的目标是仅从一张图像重建人体的完整几何形状。有几种方法可以使用深度学习来估计几何图形。第一种方法是使用自上而下的网络(如用L2损耗训练的VGG[27]或ResNet[28])直接回归顶点。这至少有两个缺点:首先,它需要对训练数据进行重采样,使其具有固定的顶点数,这意味着需要在所有网格的所有顶点之间找到对应关系。其次,也是更重要的是,训练网络来直接回归非常大量的顶点是困难的。一种常见且更有效的替代方法是回归3D形状模型的参数。然而,由于这些参数的比例不相等,因此有必要采用归一化方法,例如使用马氏距离对输出进行加权,这也已被证明是使其正常工作的挑战[1]。此外,众所周知,基于3D形状模型的方法在捕获粗略形状方面很好,但在捕获精细细节方面能力较差(在详细3D重建的情况下)。

为了消除上述学习挑战,我们使用标准的卷积神经网络将3D重建问题重新表述为将其约束到空间域。我们的方法可以被认为是一种图像分割,其中输出是一组捕捉3D几何图形的切片。因此,在体系结构上,可以使用标准体系结构进行(比方说,语义)分割。在[1]关于人脸的工作之后,我们通过在体积表示中对身体的几何形状进行编码来实现这一点。在该表示中,3D空间已被离散为固定维度。
对象内部的空间被编码为值等于1的体素。
所有其他空间(即背景或未知对象类)用值等于零的体素进行编码。对于这个特定的应用,我们体积的维度是128×128×128,考虑到我们训练集中的详细程度,这已经绰绰有余了(尽管我们在第6节中显示了更详细的结果,并且体积只略大一些)。此表示的主要优点之一是,它还允许重建几何体的不可见部分(自遮挡或其他)。在试图使用深度图回归重建身体的方法中,情况并非如此。

在训练体积回归网络的情况下,需要注意的最重要的方面之一是输入和输出必须在空间上对齐。简而言之,目标对象的2D投影应该在分割输入方面做合理的工作(如果不是很好的话)。通过实验,我们发现,只要姿势是固定的(即始终是正面的),就可以忽略空间对齐。然而,忽略空间对齐将严重影响该方法的性能。

当训练接收来自人体姿态估计的指导时,地标作为单独的通道传递到网络,每个通道包含一个以地标位置为中心的高斯分布。高斯的直径约为6个像素。

Dataset and Voxelisation

虽然Human3.6M[29,30]确实包含自己的3D扫描,但它们与视频帧不一致。因此,我们通过在Human3.6M数据集上运行SMPLify[2]来生成我们的训练数据。SMPLify所需的地标是使用[14]提供的代码生成的。拟合的网格以128×128×128的分辨率进行体素化。就深度而言,网格首先按Z分量的平均值对齐。然而,通过实验,我们发现,只要Z对齐是以一种看似合理的方式进行的,并且在所有图像上保持稳定,网络就会学会毫无问题地回归3D结构。随机比例增大是在训练过程之前执行的,因为动态执行此操作(对于3D卷)在CPU使用率方面可能非常苛刻。

使用SMPLify生成我们的训练数据的一个不幸的副作用是不可能回归手指或面部表情等特征。
SMPLify不对这些进行建模,因此,它们的姿势在所有图像中保持固定。它也成为性能方面的瓶颈。在第6节中,我们使用不同的数据集显示,使用我们提出的方法也可以实现非常高质量的重建。

Training

我们的端到端网络使用RMSProp[31]优化进行训练,学习率为10−4,在大约20个epochs后减少到10−5,持续40个epoch。我们没有观察到通过进一步降低这个学习率来提高性能。在2个NVIDIA 1080 Ti显卡上使用6个批处理大小。在体素化过程中,应用了随机尺度放大。动态地对3D体积应用比例放大非常耗费CPU资源,并且会大大减慢训练过程。在训练期间,对输入图像进行增强。这种动态增强包括颜色通道缩放、随机平移和随机水平翻转。

Architecture

在接下来的小节中,我们将介绍作为[1]的扩展而探索的几个体系结构选项。我们的第一个网络与[1]中使用的网络相同,称为VRN-Guided,它建立了我们的基准。该网络在一个堆栈中使用两个编解码器(“沙漏”)网络。除了本节中描述的更改之外,我们遵循类似的设计。我们所有的架构都接受了与[1]中相同的损失函数培训:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5H1l53TF-1638697539727)(https://cdn.jsdelivr.net/gh/Wqinghe/picgo@main/img/image-20211122170515179.png)]
其中V^whd是体素{w,h,d}处的相应Sigmoid输出。

Ours - Multistack

3D Human Body Reconstruction from a Single Image via Volumetric Regression笔记
我们的多栈网络。深蓝色方框表示残差模块。每个编解码器模块都有自己的损失,但仍将功能传递给下一个模块。

该网络对VRN引导的基线网络进行以下更改。我们将残差模块的数量减半,从四个减少到两个。在这样做的同时,我们还将内存需求减半,允许我们将堆栈中的沙漏模块数量从2个增加到4个。接下来,我们用文献[32]中提出的多尺度残差模型来代替VRN制导中使用的原始残差模块。我们还展示了在结果部分仅引入此组件所带来的性能提升。最后,我们介绍了每个沙漏模块后的监控。因此,我们有四个损失。每个沙漏模块分叉以提供下一个沙漏的功能,并回归体积表示。每个沙漏之后的性能都会提高。我们发现,添加四个以上的沙漏网络没有任何好处,因为性能只是随着添加的数量的增加而波动。该网络如图2所示。

Ours - Image Only

我们的标准网络(OURS-MultiStack)经过训练,可以接收地标的指导,同时还可以使用图像中的有用信息。通过这个网络,我们尝试仅使用图像来衡量培训的影响,同时保持架构的一致性。我们称这个网络为Ours - Image Only。我们预计该网络的性能将明显低于还提供人体姿势指导时的性能。

Ours - Landmarks Only

许多方法,如[2,22],在训练和推理过程中只使用地标作为输入。因此,当只提供地标而不提供图像时,测量我们的方法的性能是一项有趣的研究。因此,我们培训了我们的-仅限地标。但是,如果仅使用地标来拟合形状模型,则会产生常规外观管件。如果有高质量的训练数据,我们的方法可以回归这些细微的细节,并在提供图像的情况下匹配身体形状。

Ours - Mask Only

我们的方法不像在[33]中那样依赖于分割掩码。然而,我们的方法没有理由不能从单个分割掩模或轮廓重建3D几何图形。为了展示这一点,我们训练了另一个网络OURS-分段掩码,它只接受一个通道,其中包含目标对象的掩码。在此基础上,网络以相同的方式重建3D几何体。再一次,除了第一层接收不同数量的输入之外,这个网络与我们的多协议栈具有相同的配置。由于我们提供给网络的分段掩码是目标体积的投影,因此我们预计该网络的性能会很好。

Ours - 3D Convolution

3D Human Body Reconstruction from a Single Image via Volumetric Regression笔记

虽然体积CNN在性能方面可能胜过空间网络,但在此任务上,内存需求远高于空间CNN。如此之多,目前不可能以合适的分辨率使用体积CNN。然而,我们有兴趣测试两者之间的折衷并训练滤波器平坦的体积CNN。更具体地说,其中f是特征数量,我们的滤波器的尺寸为f×3×1×1,f×1×3×1或f×1×1×3。这些被组合成一个平坦的体积残留模块,如图3所示,受到[34]的强烈启发。该网络还将具有相应地标的图像作为输入。为了与其他方法进行公平的比较,我们通过减少参数的数量(这也允许网络适应内存),将该网络的浮动点操作数量与我们的Multistack相匹配。

总结:

该论文使用体积回归网络(Volumetric Regression Network,VRN),来从单个图像中重建人体。VRN网络最早是用于人脸重建的,作者把它引入了人体重建上面,并进行了一定程度的改进,使其能够产生比较好的人体重建效果。

上一篇:苹果Mac犀牛3D造型软件:Rhino


下一篇:a