本文提出了一种从单张近正面视角RGB图像自动重建服装和人体形状的方法。为此,我们提出了基于SMPL(Skinned Multi-Person Linear Model,多人线性蒙皮模型)的分层服装表示方法,并创新性地使服装的蒙皮权重与人体网格独立,显著提高了服装模型的表现能力。与现有方法相比,我们的方法支持更多种类的服装,并能恢复更准确的几何形状。为了训练我们的模型,我们构建了两个大规模数据集,包含真实的人体和服装几何形状以及配对的彩色图像。与单一网格或非参数化表示相比,我们的方法可以通过分离网格实现更灵活的控制,使得重新摆姿、服装转移和服装纹理映射等应用成为可能。代码和部分数据可在GitHub上获取。
虚拟试穿、虚拟现实/增强现实(VR/AR)和娱乐等领域需要从简单的输入(如彩色图像)中详细且准确地重建人体和穿着服装的形状。然而,由于人体形状、姿势和服装种类的多样性,这一问题极具挑战性。基于仿真的方法虽然可以探索这一问题,但其解决方案通常耗时且专用性强。本文旨在利用深度神经网络的强大拟合能力,仅从单张近正面视角图像自动重建人体和服装形状。
近年来,从图像重建人体形状取得了显著进展。常见的方法是推断统计人体模型(如SMPL)的形状和姿势参数。这些方法对不同姿势具有鲁棒性,但重建的几何形状受限于模型空间,无法捕捉复杂的服装形状。为了推断超出人体形状的详细几何形状,一些非参数化表示方法被提出,但这些方法存在细节恢复不足、内存效率低或缺乏语义信息等问题。此外,现有方法中将服装与SMPL点绑定的方式限制了可支持的服装拓扑结构,难以表示宽松服装(如裙子)。
本文的主要贡献包括:
一些基于体素或隐函数的非参数化方法被提出以解决服装的复杂拓扑结构问题。然而,这些方法缺乏语义信息,难以控制重建结果。
基于人体统计模型的方法可以估计裸体形状,但通过在人体模型基础上添加位移向量来表示服装的方法,难以支持宽松服装类型,如裙子。本文提出的方法通过将服装网格与人体网格分离,并独立预测服装的蒙皮权重,解决了这一问题。
现有的服装数据集要么样本数量有限,要么未公开,无法满足我们的需求。因此,我们构建了一个包含多种服装类型、不同尺寸和姿势的数据集。
如何表示服装的变形也与我们的工作相关。现有方法通过线性组合预计算的变形或基于身体形状回归服装变形,但这些方法难以处理复杂的服装与人体交互。
我们使用SMPL作为人体模型,并在此基础上定义了服装网格。通过添加线性位移变形和高频细节位移,我们的模型能够独立于人体网格表示服装的形状和变形。此外,我们通过神经网络估计服装的蒙皮权重,使其能够支持更多种类的服装拓扑结构。
给定一张近正面视角的RGB图像,我们的模型估计人体形状、姿势参数和全局平移,以及服装参数。模型由图像编码器、分类模块、蒙皮权重网络和位移网络组成,最终重建穿衣人体的形状。
蒙皮权重网络的目标是为任意角色估计蒙皮权重。我们设计了一个基于图注意力网络(GAT)的网络结构,能够独立于网格连接性预测蒙皮权重,适用于不同类型的服装。
位移网络用于回归服装顶点的高频细节位移。我们为每种服装类型训练一个独立的网络,并使用螺旋图卷积来提高回归能力。此外,我们通过图像投影提取局部特征,进一步提升细节恢复能力。
我们采用监督学习的方式训练网络,设计了多种损失函数,包括形状参数损失、几何损失、投影损失、分类损失、穿透损失和蒙皮权重损失,以确保网络能够准确重建人体和服装的形状。
为了训练蒙皮权重网络,我们构建了一个包含中立服装和对应蒙皮权重的数据集。通过计算服装顶点与人体网格的距离和法线角度,我们使用逆距离加权(IDW)方法计算蒙皮权重,并通过拉普拉斯平滑去除噪声。
由于缺乏公开的包含彩色图像和对应人体及服装形状的数据集,我们通过物理引擎合成数据集。合成过程包括服装裁剪模式设计、中立服装合成、姿态服装模拟和图像渲染。我们使用NvFlex和Blender实现这一流程,生成了包含多种姿势和服装类型的训练数据。
为了弥补合成数据与真实图像之间的差异,我们处理了包含高分辨率纹理的商业3D人物模型数据集。我们通过Mixamo驱动这些模型,并使用优化流程将它们注册到我们的表示中,提取服装纹理并生成高质量图像。
我们对BCNet的性能进行了分析,包括蒙皮权重网络的准确性、穿透损失的有效性和位移网络的细节恢复能力。实验结果表明,我们的方法能够准确重建人体和服装的形状,并有效减少穿透问题。
我们在BUFF和Digital Wardrobe数据集上与现有方法进行了比较。结果表明,我们的方法在仅使用单张图像的情况下,能够获得与现有方法相当或更好的重建精度。
我们展示了BCNet在不同数据集上的重建结果,并与MGN方法进行了定性比较。我们的方法能够更准确地恢复人体形状和服装细节,并支持服装转移等应用。
我们提出了BCNet,一种从单张RGB图像自动重建人体和服装形状的新方法。通过将服装与人体网格分离,并独立预测蒙皮权重,我们的方法能够支持更多种类的服装,并实现灵活的控制。实验结果表明,我们的方法在重建精度和应用扩展性方面具有显著优势。我们构建的数据集和提出的BCNet为数字化人体研究提供了新的推动力。
本文旨在从单张近正面视角的RGB图像中自动重建人体和服装的三维形状。这一研究目标主要针对虚拟试穿、虚拟现实/增强现实(VR/AR)以及娱乐等领域的需求,这些领域需要从简单的输入(如彩色图像)中获取详细且准确的人体和服装几何信息。然而,由于人体形状、姿势和服装种类的多样性,这一问题极具挑战性。
本文提出了一种基于深度学习的方法,核心是BCNet(Body and Cloth Network)。该方法的主要特点包括:
以下是按照Markdown代码格式输出的内容,数学公式用$$
括起来,数学符号用$
括起来:
图 1. 我们提出的网络架构。CNN将图像编码为潜在特征,然后通过全连接层分别得到重建的SMPL参数(形状参数 β ^ \hat{\beta} β^、姿势参数 θ ^ \hat{\theta} θ^、平移参数 t ^ \hat{t} t^)和共享的服装潜在特征 l l l。从 l l l中,我们分别重建服装形状参数 α ^ \hat{\alpha} α^和上下装分类得分 { u ^ , d ^ } \{\hat{u}, \hat{d}\} {u^,d^}。通过分类器和 α ^ \hat{\alpha} α^、 β ^ \hat{\beta} β^,我们重建中立的穿衣人体。随后通过位移网络和蒙皮权重网络,分别预测服装顶点位移和蒙皮权重。最后,利用预测的姿势参数 θ ^ \hat{\theta} θ^、 t ^ \hat{t} t^和 W ^ g \hat{W}_g W^g,将中立人体和服装重新摆姿到目标姿势。
图 2. 我们合成裤子的过程。首先根据中立人体类型生成随机裁剪模式,然后将裁剪线连接到骨架周围并逐渐缩短长度。当所有裁剪线的长度小于阈值时,将裁剪线缝合在一起。为了模拟服装在中立人体上的真实效果,我们对骨架进行膨胀并添加重力。对于姿态服装模拟,我们使用生成的蒙皮权重将中立服装变形到目标姿势,并对身体和服装进行膨胀和重力模拟,以生成最终的姿势服装。
图 3. 我们合成数据集(左侧三个)和高清纹理数据集(右侧三个)的一些示例。
图 4. 两个注册化虚拟角色的示例。我们展示了扫描网格(带纹理和不带纹理)、重建的几何形状以及带纹理的服装。
图 5. 左侧展示了穿透损失的消融研究。示例表明,穿透项(公式 7 7 7)有助于缓解碰撞问题。右侧展示了我们预测的位移结果。对于每个示例,我们分别展示了基础网格、带位移的网格和重新摆姿的网格。为了更好地可视化,我们在第二个结果中展示了两个视角。
图 6. 左侧:在BUFF数据集(灰色)和数字衣橱数据集(白色)上的误差图。从左到右,我们展示了GT网格、我们的结果、Octopus-opt-8的结果和MGN-opt-8的结果(红色表示误差 ≥ 4 \geq4 ≥4cm)。右侧:在MGN数据集上的误差图。从左到右,我们展示了我们的结果、PIFu的结果和DeepHuman的结果。
图 7. 左侧:我们在几个测试图像上重建的人体和服装形状。右侧:与MGN [7]的定性比较。在每组中,分别展示了输入图像、MGN的结果和我们的结果。
图 8. 蒙皮权重网络(SK net)和位移网络(Dis net)的架构。两个网络遵循类似的架构,但配置略有不同。多层变换(MLT)是一个模块,它使用共享的多层感知器(MLP)为每个顶点改变特征维度。残差块(ResBlock)用于提取更深层次的特征,遵循经典设计。
图 9. 我们构建的合成数据集和高清纹理数据集的一些示例。我们展示了每组中的彩色图像和几何形状。前两行是合成数据集的样本,后两行是高清纹理数据集的样本。我们构建的数据集包含各种姿势和服装类型,服装几何形状与对应的图像匹配良好。
图 10. 预测蒙皮权重与真实蒙皮权重之间变形服装的误差图。
图 11. 蒙皮权重网络输入顶点法线的消融研究。左侧是使用真实权重变形的裤子,中间是未将法线作为输入的网络结果,右侧是完整输入的网络结果。没有法线作为输入的预测结果会在模糊顶点处产生显著误差和伪影。
图 12. 在BUFF数据集上与MGN的两个比较结果。每组从左到右分别为参考图像、MGN预测的形状(无后处理优化)和我们的预测结果。可以看到,我们的方法预测的人体形状更接近输入图像。此外,我们的服装能够捕捉输入图像中的尺寸变化,而MGN的预测服装由于与SMPL绑定,限制了其对大位移的表达能力。因此,即使输入图像不同,MGN的结果对于同一服装类型仍倾向于保持相似的风格和尺寸。
图 13. 我们在测试集上的一些重建结果。每组包括输入图像和我们的结果。
图 14. 我们在数字衣橱数据集上的重建结果。我们的方法能够很好地恢复人体形状、姿势和服装类型及形状。
图 15. 我们在真实图像上的一些重建结果。第一行是来自互联网的三张图像,第二行是来自PeopleSnapshot数据集的两张图像。每组包括输入图像和我们的结果。
图 16. 左侧:我们使用第一行的两张输入图像,预测它们的人体形状并交换服装几何形状和纹理。右侧:两个服装转移示例。在每一行中,我们将第一张图像的服装转移到第二张图像上,并在第三列展示了带有纹理的重建形状。
图 17. 更多在测试数据集上的服装转移结果。第一列为目标服装图像,我们将目标图像中的服装转移到四个不同的源穿衣人体图像上。对于每个结果,我们展示了预测的人体和带有纹理的转移服装。
图 18. 服装切换的示例。我们在第一行提供了成对的穿衣人体图像,并在第二行展示了预测的人体和切换后的服装(带纹理)。
图 19. 我们的方法存在一些不足。我们在图中展示了未来工作的三个挑战。A)由于不支持的服装类型导致服装重建错误。B)多层服装被当作单层服装处理。C)对于Kinect v2相机拍摄的两张图像,模型可能产生过度平滑的结果。
表 1. 在我们的测试数据集上,预测形状与真实形状之间的平均欧几里得距离(MED,单位:厘米)。对于服装,我们分别报告了有(灰色)和没有(白色)位移模块的误差。
数据集 | 上衣 | 裤子 | 裙子 | 人体 |
---|---|---|---|---|
合成数据集 | 0.91 0.91 0.91 | 0.75 0.75 0.75 | 0.87 0.87 0.87 | 1.57 1.57 1.57 |
1.72 1.72 1.72 | 1.59 1.59 1.59 | 2.46 2.46 2.46 | ||
高清纹理数据集 | 1.71 1.71 1.71 | 1.42 1.42 1.42 | 1.65 1.65 1.65 | 2.93 2.93 2.93 |
1.97 1.97 1.97 | 1.72 1.72 1.72 | 1.87 1.87 1.87 |
表 2. 在BUFF粗A字姿势数据集(灰色)和数字衣橱数据集(白色)上的误差(单位:厘米)。
方法 | 上衣 | 裤子 | 总体 | Chamfer距离 |
---|---|---|---|---|
MGN-opt-8 | 1.63 1.63 1.63 | 1.91 1.91 1.91 | 1.82 1.82 1.82 | 1.91 1.91 1.91 |
MGN-8 | 1.78 1.78 1.78 | 2.13 2.13 2.13 | 1.99 1.99 1.99 | 2.08 2.08 2.08 |
Octopus-opt-8 | 1.40 1.40 1.40 | 1.35 1.35 1.35 | 1.31 1.31 1.31 | 1.41 1.41 1.41 |
Octopus-8 | 1.54 1.54 1.54 | 1.74 1.74 1.74 | 1.70 1.70 1.70 | 1.76 1.76 1.76 |
我们的方法 | 1.07 1.07 1.07 | 1.35 1.35 1.35 | 1.35 1.35 1.35 | 1.34 1.34 1.34 |
PIFu | 1.59 1.59 1.59 | 1.37 1.37 1.37 | 1.85 1.85 1.85 | 1.61 1.61 1.61 |
DeepHuman | 2.38 2.38 2.38 | 2.46 2.46 2.46 | 3.15 3.15 3.15 | 2.98 2.98 2.98 |
我们的方法 | 1.44 1.44 1.44 | 1.78 1.78 1.78 | 1.80 1.80 1.80 | 1.77 1.77 1.77 |
公式
M b ( β , θ ) = W ( T b ( β , θ ) , J ( β ) , θ , W b ) , T b ( β , θ ) = B + B s β + B p θ M_b(\beta, \theta) = W(T_b(\beta, \theta), J(\beta), \theta, W_b), \quad T_b(\beta, \theta) = B + B_s\beta + B_p\theta Mb(β,θ)=W(Tb(β,θ),J(β),θ,Wb),Tb(β,θ)=B+Bsβ+Bpθ
讲解
公式
M g ( α , β , θ , D ) = W ( T g ( α , D ) , J ( β ) , θ , W g ( α , β ) ) , T g ( α , D ) = G + B g α + D M_g(\alpha, \beta, \theta, D) = W(T_g(\alpha, D), J(\beta), \theta, W_g(\alpha, \beta)), \quad T_g(\alpha, D) = G + B_g\alpha + D Mg(α,β,θ,D)=W(Tg(α,D),J(β),θ,Wg(α,β)),Tg(α,D)=G+Bgα+D
讲解
公式
L w s = ∑ i = 1 ∣ V g ∣ ∑ j = 1 24 ω ^ i j log ω ^ i j ω i j L_{ws} = \sum_{i=1}^{|V_g|} \sum_{j=1}^{24} \hat{\omega}_{ij} \log \frac{\hat{\omega}_{ij}}{\omega_{ij}} Lws=i=1∑∣Vg∣j=1∑24ω^ijlogωijω^ij
讲解
公式
L D = ∑ i = 1 ∣ V g ∣ ∣ D ^ i − D i ∣ + ∑ i = 1 ∣ V g ∣ ∥ L ^ i − L i ∥ 2 L_D = \sum_{i=1}^{|V_g|} |\hat{D}_i - D_i| + \sum_{i=1}^{|V_g|} \|\hat{L}_i - L_i\|^2 LD=i=1∑∣Vg∣∣D^i−Di∣+i=1∑∣Vg∣∥L^i−Li∥2
讲解
公式
L t o t a l = L B P + L G + L J 3 D + L D + L B 2 D + L G 2 D + L c l a s s + L i n t e r + L w s L_{total} = L_{BP} + L_{G} + L_{J3D} + L_{D} + L_{B2D} + L_{G2D} + L_{class} + L_{inter} + L_{ws} Ltotal=LBP+LG+LJ3D+LD+LB2D+LG2D+Lclass+Linter+Lws
讲解
公式
L i n t ( P , Q ) = ∑ ( i , j ) ∈ C ( P , Q ) ReLU ( − n j T ( p i − q j ) ) / N L_{int}(P, Q) = \sum_{(i,j) \in C(P, Q)} \text{ReLU}(-n_j^T (p_i - q_j)) / N Lint(P,Q)=(i,j)∈C(P,Q)∑ReLU(−njT(pi−qj))/N
讲解
公式
Input = [ coordinate , normal , distance ] \text{Input} = [\text{coordinate}, \text{normal}, \text{distance}] Input=[coordinate,normal,distance]
讲解
公式
Input = [ coordinate , normal , distance , texture ] \text{Input} = [\text{coordinate}, \text{normal}, \text{distance}, \text{texture}] Input=[coordinate,normal,distance,texture]
讲解