论文翻译解读与代码实践 PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization

本文介绍了PIFu算法,这是一种利用深度学习的像素对齐隐函数,实现从单个或多个图像中重建高分辨率、细节丰富的三维人体模型,包括衣物。PIFu通过学习像素级特征并结合全局上下文,解决了传统方法在处理复杂形状和细节时的局限性,同时具备内存高效和任意拓扑结构的优势。该方法不仅能够进行表面重建,还能预测纹理,甚至处理多视图输入,提高了模型的精度和完整性。
摘要由CSDN通过智能技术生成

本文首发于微信公众号:视觉三维重建 ,欢迎大家关注公众号,共同学习成长进步!


​ 近年来,利用深度学习方法,通过 2D 图像进行 3D 重建是计算机视觉领域一大热门研究方向,人体重建正是这一领域中颇具价值的子领域。PIFu 是 LiHao 团队的作品,发表于 ICCV2019(oral),代码和论文见: 项目主页

​ 本人将详细研读论文与代码的心得记录下来,并将论文进行了翻译,特别是 related work 部分,可让不了解人体重建领域的同学快速了解该领域的技术发展脉络。对算法细节也进行了解读,欢迎各位共同探讨。


算法优点:

  • 同时支持 single-view 和 multi-view;
  • 高度复杂的形状,如发型、服装,以及它们的变化和变形都可以用统一的方式数字化
  • 重建精度、细节表现比现有的方法更优;
  • 与体素表示不同,内存效率更高,可以处理任意拓扑结构,并且生成的表面与输入图像在空间上对齐
  • 目前唯一能预测 texture map 的深度学习算法模型

在这里插入图片描述

1. Introduction

​ 在一个沉浸式技术和传感器自动化系统日益盛行的时代,我们大规模创建虚拟 3D 内容的能力与我们数字化和理解野外 3D 物体的能力是相辅相成的。如果用 3D 技术将整个物体数字化就像拍照一样简单,那么就不需要复杂的 3D 扫描设备、多视图立体视觉算法或繁琐的捕获过程,因为传感器需要移动。

​ 对于某些特定领域的物体,如人脸、人体或已知的人造物体,借助参数模型、数据驱动技术或深度神经网络,已经有可能从图像中推断出相对准确的 3D 表面。最近的 3D 深度学习进展表明,一般形状可以从很少的图像、有时甚至是一个单一的输入图像进行推断。然而,由于无效的模型表示,即使对于特定领域的建模任务,重建结果的分辨率和准确性通常也是有限的。

​ 我们提出了一种新的三维深度学习的像素对齐内隐函数(PIFu)表示方法,用于解决服装三维人体从单个或多个输入图像进行纹理表面推理的难题。虽然大多数成功的二维图像处理深度学习方法(如语义分割[51]、二维联合检测[57]等)利用全卷积网络架构来保持图像与输出之间的空间对齐,但这在三维领域尤其具有挑战性。虽然体素表示[59]可以以完全卷积的方式应用,但表示的内存密集型本质内在地限制了它生成精细细节表面的能力。基于全局表示的推理技术[19,30,1]具有更高的内存效率,但不能保证保留输入图像的细节。类似地,基于隐式函数[11,44,38]的方法依赖于图像的全局上下文来推断整体形状,这可能与输入图像不一致。另一方面,PIFu 以完全卷积的方式将像素级的单个局部特征与整个对象的全局上下文对齐,并且不需要像基于体素的表示那样占用大量内存。这对于服装受试者的三维重建尤为重要,服装受试者的形状可以是任意的拓扑结构,高度可变形,细节也非常丰富。虽然[26]也利用了局部特征,但是由于缺乏三维感知的特征融合机制,他们的方法无法从单一视图中推理出三维形状。在这项工作中,我们证明了局部特征和三维感知的隐式表面表示法的结合产生了显著的差异,包括即使从单一视图进行高度详细的重构。

​ 具体地说,我们训练一个编码器来学习图像中每个像素的单独的特征向量(一个像素是一个 3 ∗ 1 3*1 31 的矩阵,特征向量即 RGB 值),这些特征向量考虑了相对于其位置的全局上下文。给定这个每像素特征向量和从这个像素发出的相机光线的指定 z z z 深度,我们学习了一个隐式函数,它可以分类与这个 z 深度对应的 3D 点是在曲面内还是在曲面外。特别的,我们的特征向量在空间上将全局三维表面形状对齐到像素上,这使得我们能够保留输入图像中存在的局部细节,同时在不可见区域推断出可信的细节。

​ 我们的端到端的统一数字化方法可以直接预测发型复杂、衣着随意的人的高分辨率三维形状。尽管有大量的不可见区域,特别是对于单视图输入,我们的方法可以生成一个完整的模型,类似于从多视图立体摄影测量或其他 3D 扫描技术获得的模型。如图 1 所示,我们的算法可以处理范围广泛的复杂服装,如裙子、围巾,甚至高跟鞋,同时捕获与输入图像像素级匹配的高频细节,如皱纹。

​ 通过简单地采用隐式函数沿着射线获取的每个点上返回的 RGB 值,PIFu 可以自然地扩展到每个顶点的颜色。因此,我们的数字化框架也生成了一个完整的表面纹理,同时在不可见区域预测看似合理的外观细节。通过额外的多视图立体约束,PIFu 还可以自然地扩展到处理多个输入图像,这是实际的人体捕获设备经常需要的。由于从单个输入图像生成一个完整的纹理网格已经是可能的,所以添加更多的视图只能通过为不可见区域提供额外的信息来进一步改进我们的结果。

​ 我们在一个广泛的挑战现实世界和不受约束的图像的衣服的主题中证明了我们的方法的有效性和准确性。我们还首次展示了高分辨率的单目和纹理三维重建动态人体服装从视频序列重建的例子。我们使用高精度摄影测量设备采集的 3D scan datasets 作为 ground truth 综合评价我们的方法。我们将我们的方法与之前的工作进行了比较,并在数字化人类服装的公共基准上展示了最先进的性能。

2. Related Work

Single-View 3D Human Digitization. 由于问题的模糊性,单视图数字化技术需要很强的先验性。因此,人体和形状的参数化模型 SMPL[4,35]被广泛用于从输入图像对人体进行数字化。剪影和其他类型的手动注释[20,72]通常用于初始化统计体模型到图像的拟合。Bogo 等人提出了一种用于无约束输入数据的全自动流水线。最近的方法涉及到深度神经网络来提高高度挑战性图像的姿态和形状参数估计的鲁棒性[30,46]。将部分分割作为输入的方法[33,42]可以得到更准确的配件。尽管参数化模型能够捕捉人体的测量和运动,但它们只能生成一个赤裸的人体。衣服、头发和其他配饰的 3D 表面完全被忽略了。对于紧身衣,有时会使用每个顶点的位移向量来模拟某种程度的衣服,如[2,67,1]。然而,这些技术在更复杂的拓扑结构中失败了,比如裙子、裙子和长发。为了解决这个问题,像 BodyNet[59]这样的无模板方法学会了使用深度神经网络直接生成人的体素表示。由于体素表示的高内存需求,在输出中常常缺少精细的细节。最近,[39]引入了一种多视图推理方法,通过综合一个图像的新颖轮廓视图。虽然多视图轮廓具有更高的内存效率,但是很难推断凹区域以及一致生成的视图。因此,无法可靠地生成精细的细节。相比之下,PIFu 内存效率高,能够捕捉图像中出现的精细细节,并预测每个顶点的颜色。

Multi-View 3D Human Digitization. 多视图采集方法旨在生成一个完整的人的模型并简化重建问题,但通常仅限于工作室设置和使用已校准的传感器。早期的尝试是基于visual hulls[37,61,15,14],它使用来自多个视图的轮廓来雕刻出一个捕获体的可见区域。当使用大量摄像机时,可以得到合理的重构,但孔洞本身就具有挑战性。使用多视图立体约束[55,75,65,16]或使用控制照明,如多视图光度立体技术[62,68],可以获得更精确的几何图形。有几种方法使用参数化的身体模型来进一步指导数字化过程[54,17,5,25,3,1]。运动线索的使用也被作为附加先验引入[47,70]。虽然多视图捕获技术明显优于单视图捕获技术,但它们的灵活性和可部署性明显较差。

​ 一个中庸之道的解决方案是使用深度学习框架从非常稀疏的视图中生成可信的 3D 表面。[12]训练一个三维卷积 LSTM 来预测任意视图中对象的三维体素表示。[32]使用可微的非投影操作组合来自任意视图的信息。[28]也使用了类似的方法,但是需要至少两个视图。所有这些技术都依赖于体素的使用,体素是内存密集型的,可以防止捕获高频细节。[26,18]提出了一种基于容积占用域的深度学习方法,该方法可以使用稀疏视点作为输入来捕获动态的穿戴式人类性能。这些方法至少需要三个视图才能产生合理的输出。

Texture Inference. 当从单个图像重建三维模型时,可以很容易地从输入数据中采样纹理。然而,为了获得完整的纹理,需要推断遮挡区域的外观。与 3D 纹理推断问题相关的是视图合成方法,它可以预测来自单个图像[73、43]或多个图像[56]的新视图。在服装人体纹理网格推理的背景下,[39]引入了一种从前视图预测后视图的视图合成技术。前视图和后视图都用于纹理最终的 3D 网格,但是自遮挡区域和侧视图无法处理。与图像 inpainting problem[45]类似,[40]inpaint UV 图像是从检测到的表面点的输出中采样,[58,22]推断出每个体素颜色,但输出分辨率非常有限。[31]直接在 UV 参数化上预测 RGB 值,但是他们的技术只能处理已知拓扑的形状,因此不适合服装推断。我们提出的方法可以以端到端方式预测每个顶点的颜色,并且可以处理任意拓扑结构的表面。

3. PIFu: Pixel-Aligned Implicit Function

​ 给定一个单一或多视图图像,我们的目标是重建一个穿着衣服的人的三维几何和纹理,同时保留图像中的细节。为此,我们引入了像素对齐隐式函数(PIFu),它是一种存储效率高、空间对齐的三维曲面表示方法。隐式函数将曲面定义为函数的水平集 f , f ( X ) = 0 f , f(X)=0 f,f(X)=0.(该函数出自 paper:Generalized implicit functions for computer graphics, volume 25.)这样就产生了一种在内存上高效率的曲面表示,其中嵌入曲面的空间不需要显式地存储。提出的像素对齐隐式函数(PIFu)由全卷积图像编码器 g g g 和由多层感知器(MLPs)表示的连续隐式函数 $ f $ 组成,曲面被定义为一个水平集:

f ( F ( x ) , z ( X ) ) = s : s ∈ R f(F(x), z(X))=s: s \in \mathbb{R} f(F(x),z(X))=s:sR

其中, X X X 为 3D 点, x = π ( x ) x =π(x) x=π(x) X X X 在图片上的 2D 投影, z ( X ) z (X) z(X) 是在相机坐标空间中的深度值(通过相机内外参数投影计算得到) , F ( x ) = g ( I ( x ) ) F (x) = g(I(x)) F(x)=g(I(x)) 是通过全卷积神经网络 g ( ) g() g() 提取的 x x x 处的图像特征向量, I ( ) I() I() 是输入图片。我们假设相机是一个弱透视相机,但是扩展到透视相机很简单。注意,我们使用双线性采样获得像素对齐的特征 F ( x ) F (x) F(x),因为 X X X 的二维投影是在连续空间中定义的,而不是在离散空间中定义的

​ 关键的观察结果是,我们通过像素对齐的图像特征而不是全局特征来学习三维空间中的隐式函数,这使得我们所学习的函数能够保留图像中的局部细节PIFu 的连续特性允许我们以内存有效的方式生成具有任意拓扑结构的详细几何图形。此外,PIFu 可以被转换为一个通用的框架,可以扩展到各种 co-domains ,比如 RGB 颜色。

Digitization Pipeline. 图 2 展示了我们的框架的概述。给定一个输入图像,PIFu 为表面重构预测穿着衣服的人的内外概率场是连续的,在这个概率场中等值面(iso-surface)很容易提取(第 3.1 节)。类似地,用于纹理推理的 PIFu (Tex-PIFu)在曲面几何的 3D 位置输出 RGB 值,使纹理推理能够在不聚焦的表面区域和任意拓扑的形状中进行(第 3.2 节)。此外,我们证明了所提出的方法可以自然地处理单视图和多视图输入,这使我们能够在有更多视图可用时产生更高的保真度结果(第 3.3 节)。

在这里插入图片描述

Figure 2: Overview of our clothed human digitization pipeline: Given an input image, a pixel-aligned implicit function(PIFu) predicts the continuous inside/outside probability field of a clothed human. Similarly, PIFu for texture inference(Tex-PIFu) infers an RGB value at given 3D positions of the surface geometry with arbitrary topology.

3.1. Single-view Surface Reconstruction

​ 对于表面重建,我们将 ground truth 表面表示为一个连续 3D 占用场的 0.5 水平集:

f v ∗ ( X ) = { 1 ,  if  X  is inside mesh surface  0 ,  otherwise  f_{v}^{*}(X)=\left\{\begin{array}{ll} 1, & \text { if } X \text { is inside mesh surface } \\ 0, & \text { otherwise } \end{array}\right. fv(X)={ 1,0, if X is inside mesh surface  otherwise 

解读:人体 mesh 作为拓扑结构复杂的非刚体,其表面难以用一个函数进行表达,我们只知道一些离散的观测点、以及这些点属于人体 mesh 内部还是外部,这样我们就可以通过一个连续 3D 占用场的 0.5 水平集来表示,当 f v ∗ ( X ) > 0.5 f_{v}^{*}(X)>0.5 fv(X)>0.5 时,表示该 3D 点在人体 mesh 内部, f v ∗ ( X ) < 0.5 f_{v}^{*}(X)<0.5 fv(X)<0.5 时,在外部,且值越接近 1or0 表示在内部 or 外部的概率越大,这样转换为概率问题也方便将网络 Sigmoid 的输出作为 Pixel-Aligned Implicit Function 的输出。

我们的目的是为了得到该隐式函数 f v f_v fv, 使得函数能够尽量拟合 Ground Truth 函数 f v ∗ (

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值