基于SMPL模型人体三维重建算法研究*

2022-10-11 12:33王栾栾姚剑敏林志贤
传感器与微系统 2022年10期
关键词:三维重建建模图像

王栾栾, 严 群,2, 姚剑敏,2, 林志贤

(1.福州大学 物理与信息工程学院,福建 福州350108; 2.博感电子科技有限公司,福建 晋江 362200)

0 引 言

随着图像处理技术的发展,三维人体重建技术逐渐成为计算机视觉、计算机图形学领域中重要的研究课题之一。通过计算机视觉图像的方式实现人体的表面重建,根据输入数据检测出人体的体态参数,即将这些数据转换为三维的数据信息。能够实现高效且高还原度的三维人体重建,在面貌还原、游戏与动画、增强现实(AR),以及虚拟现实(VR)等领域中具有极为深远的意义[1,2]。

目前,三维人体姿态重建主要分为4种方式:传统三维建模、深度相机Kinect建模、基于RGB建模,以及基于模型框架的建模。传统的三维建模软件或扫描设备运用Maya,3Ds MAX等软件构建人体模型,该方法创建过程中存在时间过长的缺点。Kinect(深度)相机具有较强的环境适应力、高精度数据采集、高性价比而被广泛应用[3],但Kinect Fusion系统仅适用于静态场景,而人体并不能保持绝对静止的姿态[4,5]。基于RGB图像建模可以使用多张 RGB 图像或仅一张RGB图像的三维建模[6]。文献[7]在使用图>片进行三维重建的过程中,仍需要用户手动标记数量繁杂的关键点才能实现精确的模型。为此,有研究人员提出通过模型驱动建模,利用现有的模型库利用组合、变形、拼接等方法实现人体模型的重建。第一个三维人体模型库是 CAESAR(Civilian American and European Surface Anthropometry Resource),通过使用大型激光扫描仪采集将近3 000个完整的人体数据信息。Anguelov D等人在此基础上加入姿态变形,建立SCAPE(shape completion and animation of people)模型[8]。研究人员根据身高体重等参数来调整模型,但人体软组织在不同姿态下与人体基本结构仍存在偏差。2015年,Loper M提出基于顶点的SMPL(skinned multi-person linear)模型[9],相较于SCAPE模型更符合人体结构。SMPL模型是参数化的三维人体模型,可以通过静态图像自动重构三维人体模型的姿态和形状。2016年Bogo F等人[10]提出经典自动化人体重建方法,从图像预测2D身体关节位置,将SMPL模型的3D关节点投影到图像上,利用最小化目标函数将SMPL模型拟合到2D关节,该目标函数将惩罚投影与检测到的2D关节之间的误差最小化。但由于投影效应存在偏差,实验结果未能达到理想的效果。Lassne C等人[11]对该项目进行扩展研究,获得了适用于多个人体姿势数据集的3D人体模型,虽然可以生成带有丰富注释数据的初始数据集,但训练结果仍然差强人意。

为了提高建模的精度和效率,本文提出了一种研究方案,训练U-Net++及PatchGAN对抗生成网络,计算出三维图像的法线贴图和位移贴图,将贴图信息采用线性差值方法融合到SMPL模型的表面,这种训练卷积神经网络(CNN)结合位移贴图和法线贴图数据的方法,不需要精密复杂的仪器就可以完成高效精细的三维重建。

1 DensePose算法

本文利用DensePose算法对人体部位进行分割操作,把2D图像坐标映射到3D人体表面上,实现精确定位和姿态估计,其具体实现步骤如下:1)先用Faster-RCNN检测,得到人物区域检测图。扫描图像生成一个有可能包含一个目标的区域,继而生成分类标签、边界框和掩码。2)用传统神经网络分块,通过划分身体部位来对应标注的等距点,对于每个像素,确定它在贴图上的位置,并进行二维校正。3)分块后用传统神经网络在每一块分点。使用SMPL模型,将人体分成24份,比如将人脑分为左脑、右脑,将手臂分为前、后两个面,每个人体部位包含多个点信息。4)将点转换成热力图IVU,将2D图像中人的表面的像素投影到3D人体表面上,也可以在估计出图像中人体的UV后,将3D模型空间坐标转换为UV坐标后,输出包括身体分割部位和UV坐标。

2 人体表面贴图生成与三维重建

2.1 算法流程

首先,输入多张彩色图片并对其进行关节点的检测,关节点信息和彩色图片作为输入数据送入CNN中,计算出估计SMPL模型所需的参数。同时,从输入的多张图片中通过计算角度提取得到一张正面图像,利用DensePose算法对图像进行分割,并将分割结果与原图一起作为对抗生成网络的输入,获得精细的法线贴图和位移贴图。最后,将位移贴图利用线性差值的方法融合到标准的SMPL模型表面。算法流程如图1。

图1 算法流程

2.2 数据采集和图片处理

通过OpenCV +Visual studio + MATLAB开发环境对用户的照片进行采集,获得多个1 080像素×1 080像素的图片。同时,利用位移贴图将人体表面展开到二维图像上,使得每个像素对应于人体表面的一个三维点。利用DensePose网络将正面图的可见图像像素映射到UV空间,获得部分纹理映射图像,并将其作为网络的输入数据。

SMPL模型是一个使用Pose和Shape参数驱动的线性人体模型,可以表示人体的不同形状,具有自然的动作变形,并且模型的软组织会随着运动过程发生连贯的形变。为了添加更多的细节,本文在SMPL标准T模型下添加偏移量D,其模型表述如下

M(β,θ,D)=W(T(β,θ,D),J(β),θ,W)

(1)

T(β,θ,D)=T+BS(β)+BP(θ)+D

(2)

式中T为模型处于T位姿时的模型属性,W为权重,J(β)为关节点的角度信息,BS(β)和BP(θ)分别为形状和位置的依赖项,偏移量D使模型拥有更多的凹凸细节,T(β,θ,D)为添加了位置、形态和偏移量D的模型。

设计的CNN可以从一个语义图像预测三维人体形状,也可从二维关节点检测计算出每个图像的位姿信息。姿态信息通过渲染可用于细化人体形状,经过卷积网络后的每帧位姿β和平移参数D添加到模型中。最终的人体目标模型的函数表达式为

(3)

(4)

(5)

利用线性回归因子JB25预测三维关节

NJ3D(I,J,i)=JB25(N3D(I,J,i))

(6)

JB25经过训练可以按顺序输出25个与关节点位置对应的关节点信息,估计的人体模型网格可以用相机的内置参数以及图像的生成函数RC进行渲染

N2D(I,J,i)=RC(N3D(I,J,i))

(7)

同时,可以通过透视投影法(πc表示投影关系运算符)将关节投影到图像平面

NJ2D(I,J,i)=πc(NJ3D(I,J,i))

(8)

上述公式均可微,利用这些公式可表示损失函数。

2.3 位移贴图生成并拟合三维人体模型

本文训练了一个网络,该网络可以从局部纹理贴图预测并生成法线贴图和位移贴图。通过该网络可以根据图片数据信息计算出适用于SMPL 模型的法线贴图和位移贴图。该网络是一个条件生成对抗网络,由一个U-Net++网络[12]和一个PatchGAN判别器[13]两部分组成。本文采用了U-Net++网络[14](如图2),相比于以往的U-Net网络[15],它可以抓取不同层次的特征,通过特征叠加的方式整合,加入更浅的U-Net结构,使得融合时的特征图尺度差异更小。其中,编码器和解码器网络通过一系列嵌套的跳跃连接,跳跃连接减小了编码器和解码器子网的特征图之间的语义差距。同时,输出部分采用了PatchGAN网络,普通的GAN判别器是将输入映射成一个实数,而PatchGAN网络完全由卷积层构成,最后输出的是一个n×n的矩阵,结果是将输出矩阵的均值作为True/False的输出,输出矩阵中的每一个输出,代表着原图中一个感受野,对应原图的一个Patch。

图2 U-Net++网络结构

将人体曲面参数化并映射到纹理贴图,然后用参数域上的每个像素来记录三维曲面上相应点的位置,从而获得一张几何图像,例如在所有人体的几何图像中,左眼角都具有相同的参数坐标。这些人体曲面需要事先被配准,最后生成三维人体曲面模型。

2.4 损失函数

对于数据集中互相对应的样本,估计出模型与扫描得到的真实模型M之间的损失,这种三维形状监督与姿态不相关。

空间中的每个顶点损失

(9)

(10)

式中b(Ii)为二值分割掩码,可以直接从RGB图像估计。LN2D为二维顶点弱监督损失,LN3D为三维顶点弱监督损失。

在欧几里得空间内对关节添加损失,对姿态训练进行正则化处理

(11)

同样地,对二维图片投影损失也设置了一个损失函数

(12)

3 实验结果与分析

本文实验在Ubuntu16.04LTS系统下运行,硬件属性为8 G DDR4内存和1060显卡。实验采用的数据集为Human 3.6M和UP-3D,其中Human 3.6M涵盖近360万形态各异的图像信息;UP-3D 的数据集源于 Leeds Sports Pose 及其扩展内容,具有充足的分割、姿势和骨骼关节点等图像数据[16]。利用本文算法可以对任何人体进行三维重建。实验只需要人在相机前面旋转一周,从中获得8~10张图片即可得到人体的三维模型,实验配置和操作都比较简单。

3.1 定性分析

本文重建的效果如图3所示。对输入图片进行人体部位设置语义标签以及分割后,通过估计人体的2D关键点之后,通过计算阴影形状,用对抗网络将UV贴图信息转换为位移贴图和法线贴图等信息,匹配到标准的SMPL模型上,拟合重建三维人体表面细节。同时,为了使模型便于使用,将所有的输出模型的角度参数都设置为标准的静态T姿势,扩大了模型的适用范围。

图3 人体重建效果

图4为不同方法对形状大小、姿态各异的人体重建对比。本文与经典三维重建算法Octopus[17]进行比较,通过位移贴图能够精确地恢复人体的衣服褶皱及个性化细节,并且相比较于Octopus算法,运行时间上也快了1倍。

图4 人体重建方法对比展示

在实际生活中,人体经常会穿着形态各异的衣服,以衣领为例,由于衣领相对于人体表面皮肤较为突出,Octopus算法无法重建;相反,本文算法可以通过位移贴图信息精确建立这种与人体模型偏差较大的点,如图5所示,由于衣领突出,在图5(a)中可以明显地看到衣服偏离人体皮肤;从图5(b)中可以看出,Octopus算法重建精度差,其重建的模型没有反映出手臂的运动;实验表明,本算法能精确的处理这些偏离人体皮肤的人体三维重建。

图5 不同算法人体重建效果

由于Octopus对于人体的细节处理的不够完善,如褶皱以及衣领等细节显示较弱,相对于真实的人体有较大的差距,并且衣服发型凹凸细节不突出。本文实验的结果证明该网络可以在13.7 s内完成人体的重建工作并能将细节展现。对于人体三维重建技术的研究方法,大多数只能重建没有穿着衣服的或穿紧身衣的人体表面,对于穿着衣服的人体重建就没办法表述,本文与Octopus算法方法进行对比,从图5中可以看出,当人体衣服较为宽松时,Octopus算法无法重建出具有特征的表面,本文算法可以检测并重建出衣领、裤脚、衣服褶皱、头发等细节。

3.2 定量评估

由表1的数据可以看出,本文的重建时间比Octopus算法的重建时间短,这是因为采用了迅速生成位移贴图的网络结构,提升了重建模型的效率。

表1 不同人物不同算法重建模型所用时间对比 s

为了更好地验证网络的通用性,本文在三维人体重建检测数据集Human 3.6 M上训练模型并测试网络检测误差,SMPLify[6]、NBF[18]、HMR[19]、Octopus、本文模型的误差分别为82.3,59.9,56.8,55.9,56.3 mm。可以看出,本文方法与其他算法相比,重建效果更佳。

4 结 论

本文基于SMPL模型的人体三维重建,提出根据图片进行图像分割及计算关节点,然后通过生成对抗网络计算出对应的法线贴图和位移贴图的方法,使得重建的精细化程度大大提升,任务形象更加逼真,细节如领口、腰带等可以充分显示出来。

猜你喜欢
三维重建建模图像
物理建模在教与学实践中的应用
在经历中发现在探究中建模
思维建模在连续型随机变量中的应用
求距求值方程建模
A、B两点漂流记
互联网全息位置地图迭加协议与建模制图技术
品析“飞利浦公司”基于单目视觉的三维重建技术专利
无人机影像在文物建筑保护中的应用
光编码技术在犯罪现场重建中的应用
名人语录的极简图像表达