一种基于人体点云与测量参数的参数化人体模型拟合方法
未命名
08-29
阅读:198
评论:0
1.本发明涉及计算机视觉技术领域,具体涉及一种基于人体点云与测量参数的参数化人体模型拟合方法。
背景技术:
2.近年来,捕捉非结构化的三维点云的传感技术变得无处不在且更加准确,并推动了三维人体重建技术的发展。其中,将参数化人体模型拟合到穿着紧身衣的人体点云上是计算机视觉中的一项具有挑战性的任务,因为这需要去定位人体点云中的各个关节点位置,并且让网格顶点与人体点云尽可能地对齐、贴近。在基于学习的方法中,smpl(-x)模型的拟合可以分为两类:(1)使用深度神经网络去预测smpl(-x)的姿势和体型参数;(2)通过梯度下降的迭代优化方法搜索smpl(-x)的参数,优化一个目标函数以尽可能与人体点云匹配。这两种方法各有优劣,前者需要带有三维标注的数据集进行训练,但其非线性表示能力较强;后者虽然不需要额外的数据集,但需要寻找到合适的优化项和各种先验知识进行约束。
3.现有技术1《humman:multi-modal 4d human dataset for versatile sensing and modeling》中搭建了一个多视角相机阵列,在采集了紧身着装的人体不同视角的点云数据后融合得到高精度的人体点云。为了注册到smpl网格模型,采用多视角下2d关节点的预测,通过三角测量得到3d关节点,再通过最小化目标函数来优化smpl的姿势和体型参数。但所提供的数据集缺乏紧身着装的扫描数据,因此难以评判注册后的smpl模型在体型上的准度。此外,该方法对扫描数据的质量要求较高,否则重建出的smpl模型与人体点云仍有一定差距;
4.现有技术2《3d human body reshaping with anthropometric modeling》中提出了一个利用部分人体测量参数生成特定体型的参数化人体模型方法。在训练阶段,根据数据集中的人体网格模型和测量参数,通过基于特征选择的局部映射技术去学习相关性掩码,而顶点映射矩阵则通过线性回归从相关性掩码选出的参数进一步学习得到。在推理阶段,用户输入有限测量参数,通过多重插补处理缺失值,并在映射阶段通过采用相关性掩码和映射矩阵生成人体模型。然而该方法不能应用到smpl(-x)的人体模型上,且重建出的三维人体测量参数与输入参数的误差相对较高;
5.现有技术3《accurate 3d body shape regression using metric and semantic attributes》中着重于从单幅图像预测更准确的smpl体型参数。首先通过现有回归器去预测smpl的姿势和体型参数,然后通过一个简单的神经网络输入体型参数来预测语义化体型特征,预测出的smpl人体通过虚拟测量技术得到部分人体测量参数,最后结合语义化体型和测量参数来约束smpl的体型参数。然而其运用的语义化体型特征是建立在多位标注员的主观评价上的,难以准确客观地表示人的体型特征,虽然有效提升了体型预测的准度,但其误差依然较大。
6.现有smpl(-x)模型的拟合方法大多难以恢复出准确的体型,或需要通过额外的顶
点偏移实现。基于深度神经网络的方法需要预先构建好的3d数据集进行训练,对体型的重建结果依然较差。
技术实现要素:
7.本发明的目的是为了解决现有技术中的上述缺陷,提供一种基于人体点云与测量参数的参数化人体模型拟合方法,该方法能够通过引入测量参数的约束实现对smpl(-x)体型的精确控制,不仅能够在拟合流程中提供体型的强约束,还能够直接通过测量参数生成目标体型的smpl(-x)模型。
8.本发明的目的可以通过采取如下技术方案达到:
9.一种基于人体点云与测量参数的参数化人体模型拟合方法,所述拟合方法包括以下步骤:
10.s1、将人体点云以固定距离与多个不同的视角渲染得到在每个不同视角下的全身人体图像;
11.s2、对每个视角下的全身人体图像,通过深度神经网络openpose预测出每个视角下的2d关节点集以及与各个关节点相对应的置信度;
12.s3、对所有视角下的2d关节点集,通过视角筛选与低置信度2d关节点排除,得到2d关节点筛选集,然后采用三角测量算法重建得到3d关节点,对重投影损失超过第一阈值的3d关节点通过排除噪声视角的方法进行优化;
13.s4、已知参数化人体模型smpl(-x)的初始姿势参数θ0与体型参数β0,以下参数化人体模型smpl(-x)简称smpl(-x)模型,在提供0向量姿势参数时,生成的人体模型呈现出t-姿势,且手掌呈伸直展开状态;在smpl(-x)模型上预先定义测量所需的特征点,对特定体型参数生成的t-姿势下smpl(-x)模型测量获取所需的测量参数;然后进行smpl(-x)模型的拟合,在拟合过程中,首先将smpl(-x)模型按臀中点平移到重建出的3d关节点的臀中点完成初步对齐,然后以重建出的3d关节点、人体点云与输入的测量参数作为约束,通过迭代优化的方式最小化目标函数,得到优化后smpl(-x)模型的姿势参数θ与体型参数β。
14.进一步地,所述步骤s1中将人体点云整体按重心平移至以原点为重心的位置,确保渲染得到的人体位于图像的中心,坐标单位为mm,然后将相机距离设置为1200mm,采用宽高比a=1、垂直视场角近平面zn=10mm、远平面zf=10000mm的透视投影,在保证全身人体位于图像中的同时覆盖更多的像素区域,相机正对人体正面开始渲染,然后每次将人体点云绕y轴逆时针旋转30度,一共旋转11次,最终渲染得到12幅不同视角的分辨率为512x512的全身人体图像。
15.进一步地,所述步骤s2中将12幅全身人体图像作为深度神经网络openpose的输入,预测得到每幅全身人体图像的人体2d关节点集以及各个2d关节点对应的置信度,设k为openpose预测出的人体2d关节点数目,openpose可预测25个关节点的body25或18个关节点的coco这两种身体部位的关节点集,并额外支持对42个手掌关节点的预测或对70个脸部关节点的预测,根据全身人体图像的清晰程度,在选择身体部分关节点集的基础上决定是否需要添加手掌关节点或脸部关节点。
16.进一步地,所述步骤s3过程如下:
17.s31、从12幅全身人体图像筛选出n个视角的2d关节点集,部分视角由于存在人体
自遮挡的情况,使得openpose预测出的关节点置信度相比其余视角更低,通过筛选的方式排除掉人体自遮挡严重的视角,然后由于低置信度的2d关节点会影响重建出的3d关节点的精度,在这n个视角的2d关节点集中排除掉所有置信度低于第二阈值的2d关节点,得到2d关节点筛选集;
18.s32、在2d关节点筛选集中,通过三角测量方法重建出k个3d关节点:设为当前关节剩余的视角构成的2d关节点集,其中n'表示剩余的视角数,i表示剩余视角中的第i个视角,vi表示对应的视角编号,表示该关节在视角编号vi下的2d关节点,和分别表示的x坐标和y坐标,设定每个视角vi下的3
×
3相机旋转矩阵和平移向量其中向量和表示旋转矩阵的第1列、第2列和第3列,和分别表示的x坐标、y坐标和z坐标,此外设定12个视角都有相同的4
×
4透视投影矩阵其中其中a表示宽高比,表示垂直视场角zn表示近平面位置距离,zf表示远平面位置距离,通过下面的公式对视角vi的2d关节点进行逆图片空间变换与逆投影变换,得到相机视角的3d方向向量:
[0019][0020]
其中表示视角vi下的方向向量,和分别表示的x坐标和y坐标,w和h分别表示全身人体图像的宽和高;
[0021]
对每个视角vi列出下面两个方程:
[0022][0023][0024]
其中x'为待求3d关节点位置;n'个剩余的视角列出2n'个方程,每个视角vi从对应的相机位置出发,根据各自视角对应2d关节点的位置产生一条沿着方向的射线,共产生n'条射线,采用最小二乘法求解出与这n'条射线距离最小的3d关节点x'后,将x'投影到剩
余视角的图片空间中,得到重投影2d关节点集通过下面的公式计算重投影2d关节点:
[0025][0026]
其中,是位于投影空间的列向量,和表示的x坐标、y坐标、z坐标和w坐标,对进行透视除法,即整体除以使得其x、y、z分量表示投影空间中的3d坐标,为视角编号vi的重投影2d关节点;
[0027]
最后通过下面的公式计算平均像素误差:
[0028]
其中e为平均像素误差,||
·
||2用于求向量的欧氏距离,平均像素误差越小,所求3d关节点越准确,这取决于全身人体图像的质量与openpose预测出的2d关节点的置信度高低;
[0029]
s33、若平均像素误差e小于第一阈值,或剩余视角数n'《4,得到最终预测的3d关节点x',否则需要使用下述方法排除噪声视角直至满足条件:对当前关节剩余视角构成的2d关节点集设qi为排除剩余视角中第i个视角对应的2d关节点得到的点集,对qi进行三角测量重建出3d关节点xi',然后进行重投影并计算出平均像素误差ei,设m为所求平均像素误差构成的集合中的最小值em对应的下标,若em小于第一阈值,或点集qm的剩余视角数小于4,得到最终预测的3d关节点xm',否则将qm作为排除噪声视角方法的输入并继续执行,通过排除噪声视角能够有效降低重建出的3d关节点经过重投影计算得到的平均像素误差,从而有助于后续smpl(-x)模型3d关节点与重建出的3d关节点对齐,以及点云与smpl(-x)模型之间的对齐。
[0030]
进一步地,所述步骤s4中测量方法获取身高、会阴高、臂展、上肢长、胸围、腰围、臀围和大腿围共8项测量参数,然后经过扩展以支持更多的测量参数,包括臀宽、腰宽、大腿长、上臂长和肩宽,由于测量过程是在smpl(-x)模型上进行的,部分测量参数与真实测量参数会不可避免地存在一定差异。
[0031]
进一步地,所述步骤s4中测量方法需要预先从smpl(-x)模型的顶点中定义特征点,包括:头顶点、左脚后跟点、左手中指末端点、右手中指末端点、左肩点、会阴点、右胸点、肚脐点、会阴点和左大腿点,若需要进一步扩充测量类别,在增加定义更多用于测量的特征点,然后在统一的t-姿势下进行长度相关与围长相关的测量,由于smpl在默认t-姿势下手掌呈伸直展开状态,而smpl-x在默认t-姿势下手掌呈弯曲状态,需要将smpl-x的手掌姿势转变为与smpl相同的伸直展开的状态;
[0032]
其中,长度相关的测量包括身高、臂展、上肢长和会阴高,身高通过计算头顶点到左脚后跟点在y轴下的垂直距离得到,臂展通过计算左手中指末端点到右手中指末端点在x轴下的水平距离得到,上肢长通过计算左肩点到左手中指末端点的距离得到,会阴高通过计算会阴点到左脚后跟点在y轴下的垂直距离得到;
[0033]
其中,围长相关的测量包括胸围、腰围、臀围和左大腿围,围长相关的测量首先需要选择一个特征点用于横向切割,结合法向量n=(0,1,0)通过点法式确定出一个能够完整切割smpl(-x)模型的平面网格,然后smpl(-x)模型与平面网格进行相交检测,得到相交顶点集,通过去除重复顶点操作和凸包算法求出凸包顶点集,最后求凸包顶点集的围长,其中相交检测与求凸包顶点集的过程不参与梯度的传导,而由于相交检测的运算量大,在cpu的计算速度很慢,可为smpl(-x)模型构建基于空间的加速结构bvh树,然后在gpu进行相交检测计算,从而大幅提升计算速度,但输出结果的顺序不同会使求出的凸包顶点集不同并导致测量存在多个结果,为了降低这种影响,需要进行多次相交检测和凸包计算,取测量结果的最大值作为最终的围长;
[0034]
胸围、腰围、臀围和左大腿围在测量前需要分别使用右胸点、肚脐点、会阴点和左大腿点进行横向切割,且在测量左大腿围时需要定义一个仅有左半身的smpl(-x)模型与平面网格进行相交检测,以避免出现双腿的顶点自相交影响相交检测结果的情况,如图2所示。
[0035]
进一步地,所述最小化目标函数定义如下:
[0036]
e=λ
cdecd
+λ
pep
+λaea+λ
mem
[0037]
其中,e为目标函数,e
cd
为倒角距离损失项,e
p
为3d关节点的距离损失项、ea为全身骨骼欧拉角先验损失项,em为测量参数约束损失项,λ
cd
、λ
p
、λa和λm表示控制各损失项对应的权重;
[0038]
倒角距离损失项e
cd
用于计算下采样后的点云到smpl(-x)模型点中最近点的平均距离以及smpl(-x)模型点到下采样后的点云中最近点的平均距离之和,以评估smpl(-x)模型与点云之间的相似程度,通过下面的公式计算:
[0039][0040]
其中,表示smpl(-x)模型的所有顶点,表示中的顶点,表示人体点云中的所有顶点,表示人体点云通过最远点降采样保留预先设置的数目的顶点,相比于均匀采样,采用最远点降采样能够更好地体现出点云的整体轮廓,由于输入的人体点云存在点数过大的可能,会直接影响整体计算的速度,经过降采样能够降低该损失项的计算量,表示中的顶点,表示smpl(-x)模型的顶点数,min表示求单一顶点与点集中所有点的距离的最小值;
[0041]
3d关节点的距离损失项e
p
用于计算smpl(-x)的3d关节点与三角测量得到的3d关节点之间的距离误差,通过下面的公式进行计算:
[0042]
[0043]
其中,m(θ,β)表示通过姿势参数θ和体型参数β生成smpl(-x)模型,jk(
·
)表示smpl(-x)模型到第k个3d关节点的映射函数,ω表示3
×
1全局相机旋转欧拉角向量,rot(
·
)表示从3
×
1旋转欧拉角到3
×
3旋转矩阵的映射函数,t表示3
×
1全局相机平移向量,x
′
(
k)表示三角测量得到的第k个3d关节点,wk为控制第k个关节点的权重,且所有关节点的权重和为1,经过smpl(-x)选取得到的关节点与openpose预测并三角重建出的关节点位置存在一定的偏差(如左臀点和右臀点),也有因为openpose预测出的2d关节点位置不准导致三角测量得到的部分3d关节点位置不准的情况(比如脚跟点和脚趾点),可以将这些影响较大的3d关节点的权重设置为0;此外,双臂的对齐通常较为困难,可以在迭代优化后期增大双臂相关的3d关节点的权重并将部分3d关节点设置为0,并调整权重λ
p
;
[0044]
全身骨骼欧拉角先验损失项ea用于对超出活动范围的骨骼欧拉角进行约束,通过下面的公式进行计算:
[0045]
ea=avg(exp(relu(θ-θu)+relu(θ
l-θ))-l)
[0046]
其中,θu和θ
l
分别表示姿势参数θ的旋转欧拉角上界和下界,relu(
·
)用于求矩阵各分量与0的最大值,exp(
·
)表示矩阵各分量的自然指数函数,l表示与θ相同维度的全1矩阵,avg(
·
)表示对矩阵所有分量求平均值;
[0047]
测量参数约束损失项em用于进一步约束smpl(-x)的体型参数,使smpl(-x)模型获取到的测量参数与输入的测量参数尽可能接近,该损失项通过对各项输入的测量参数与在smpl(-x)模型上测量获取到的对应测量参数计算差值的平方并求和得到,输入的测量参数是身高、臂展、会阴高、上肢长、胸围、腰围、臀围和大腿围这8项的任意组合,若在拟合过程中仅用到该项损失,则用于从测量参数生成对应体型的smpl(-x)模型,而在向人体点云或模型对齐时,若已知输入测量值,通过大权重的方式在对齐的同时对smpl(-x)的体型进一步优化;
[0048]
由于臂展的变化会同时导致上肢长的变化,若同时输入的臂展和上肢长不合理,会导致测量参数约束损失项难以收敛,建议在臂展和上肢长中选择其中一项作为输入;同理臀围的变化会同时导致大腿围的变化,建议在臀围和大腿围中选择其中一项作为输入;
[0049]
首先需要为姿势参数θ、体型参数β、全局相机旋转欧拉角向量ω和全局相机平移向量t提供初始值,设置θ=θ0,β=β0,ω=(0,π,0),t为smpl(-x)模型臀中点与三角测量重建得到的臀中点的差值向量;
[0050]
在最小化目标函数e时,需要对全局相机旋转欧拉角向量ω、全局相机平移向量t、smpl(-x)模型的姿势参数θ和体型参数β进行优化,采用l-bfgs优化器进行梯度下降,优化器的线搜索方法为strong wolfe,学习率为0.2,权重λ
cd
、λ
p
、λa和λm的推荐值分别为5、100、30000和10000000,迭代次数可取60-100次,损失不再下降时即可提前结束迭代。
[0051]
本发明相对于现有技术具有如下的优点及效果:
[0052]
1、本发明通过对虚拟测量模块的进一步扩展,能够支持对smpl(-x)进行身高、腿长、三围、大腿围、臂展和上肢长的测量。由于该模块是可微的,其同时也能够支持通过提供测量参数生成目标体型的smpl(-x)模型。所生成的模型经过测量能与输入值非常接近,生成的体型参数更为合理,且相比于现有的测量参数生成参数化人体模型方法具有更低的误差。
[0053]
2、本发明在进行smpl(-x)模型拟合的同时能够额外引入基于测量参数的约束,并
通过这些测量参数实现可解释的smpl(-x)体型优化与生成。通过引入可微虚拟测量,使其能够在进行迭代优化的同时对体型参数做出更进一步的优化,从而得到体型更优的光滑人体模型。
附图说明
[0054]
此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0055]
图1是本发明采用的坐标系参考图;
[0056]
图2是本发明采用左半边的人体与平面进行相交检测用的人体模型参考图;
[0057]
图3是本发明具体实施方式中的结合人体点云与测量参数的smpl(-x)模型拟合流程图;
[0058]
图4是本发明具体实施方式中的通过测量参数生成目标体型的smpl(-x)模型流程图;
[0059]
图5是本发明较佳实施方式中经过拟合后得到的smpl-x模型的效果图;
[0060]
图6是本发明较佳实施方式中通过4组男性测量参数生成的4组目标体型的smpl-x模型的效果图;
[0061]
图7是本发明较佳实施方式中通过4组女性测量参数生成的4组目标体型的smpl模型的效果图。
具体实施方式
[0062]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0063]
实施例1
[0064]
本实施例提供一种基于人体点云和部分测量参数拟合对应体型与姿势的smpl(-x)模型的方法,体型参数β为10维向量,实施流程如图3所示,具体过程如下:
[0065]
s1、将人体点云整体按重心平移至以原点为重心的位置,坐标单位为mm,然后将相机距离设置为1200mm,采用宽高比a=1、垂直视场角机距离设置为1200mm,采用宽高比a=1、垂直视场角近平面zn=10mm、远平面zf=10000mm的透视投影,相机正对人体正面开始渲染,然后每次将人体点云绕y轴逆时针旋转30度,一共旋转11次,最终渲染得到12幅不同视角的分辨率为512x512的全身人体图像。
[0066]
s2、将12幅全身人体图像作为深度神经网络openpose的输入,预测得到每幅全身人体图像的body25人体2d关节点集(包含25个关节)以及各个2d关节点对应的置信度。
[0067]
s31、从12幅全身人体图像筛选出7个视角的2d关节点集,其视角编号分别为1、2、6、7、8、11和12,然后在这7个视角的2d关节点集中排除掉所有置信度低于第二阈值0.35的2d关节点,得到2d关节点筛选集。
[0068]
s32、在2d关节点筛选集中,通过三角测量方法重建出25个3d关节点:设为当前关节剩余的视角构成的2d关节点集,其中n'表示剩余的视角数,i表示剩余视角中的第
i个视角,vi表示对应的视角编号,表示该关节在视角编号vi下的2d关节点,和分别表示的x坐标和y坐标,设定每个视角vi下的3
×
3相机旋转矩阵和平移向量其中向量和表示旋转矩阵的第1列、第2列和第3列,和分别表示的x坐标、y坐标和z坐标,此外设定12个视角都有相同的4
×
4透视投影矩阵其中其中a=1表示宽高比,表示垂直视场角,zn=10mm表示近平面位置距离,zf=10000mm表示远平面位置距离,通过下面的公式对视角vi的2d关节点进行逆图片空间变换与逆投影变换,得到相机视角的3d方向向量。
[0069][0070]
其中表示视角vi下的方向向量,和分别表示的x坐标和y坐标,w=512和h=512分别表示全身人体图像的宽和高。
[0071]
对每个视角vi列出下面两个方程:
[0072][0073][0074]
其中x'为待求3d关节点位置。
[0075]
n'个剩余的视角列出2n'个方程,采用最小二乘法求解出3d关节点x'后,将x'投影到剩余视角的图片空间中,得到重投影2d关节点集通过下面的公式计算重投影2d关节点。
[0076]
[0077]
其中,是位于投影空间的列向量,和表示的x坐标、y坐标、z坐标和w坐标,为视角编号vi的重投影2d关节点。
[0078]
最后通过下面的公式计算平均像素误差:
[0079][0080]
其中e为平均像素误差,||
·
||2用于求向量的欧氏距离。
[0081]
s33、若平均像素误差e小于第一阈值5,或剩余视角数n'《4,得到最终预测的3d关节点x',否则需要使用下述方法排除噪声视角直至满足条件:对当前关节剩余视角构成的2d关节点集设qi为排除剩余视角中第i个视角对应的2d关节点得到的点集,对qi进行三角测量重建出3d关节点xi',然后进行重投影并计算出平均像素误差ei,设m为所求平均像素误差构成的集合中的最小值em对应的下标,若em小于第一阈值5,或点集qm的剩余视角数小于4,得到最终预测的3d关节点xm',否则将qm作为排除噪声视角方法的输入并继续执行。
[0082]
s4、首先将smpl(-x)模型按臀中点平移到重建出的3d关节点的臀中点完成初步对齐。
[0083]
对smpl(-x)模型的测量需要预先从smpl(-x)模型的顶点中定义特征点,完整定义如表1所示。
[0084]
表1.smpl(-x)测量所需的特征点定义表
[0085][0086]
测量smpl(-x)模型需要在统一的t-姿势下进行,图1展示了smpl(-x)模型的t-姿势和所处的坐标轴。
[0087]
其中,长度相关的测量包括身高、臂展、上肢长和会阴高,身高通过计算头顶点到左脚后跟点在y轴下的垂直距离得到,臂展通过计算左手中指末端点到右手中指末端点在x
轴下的水平距离得到,上肢长通过计算左肩点到左手中指末端点的距离得到,会阴高通过计算会阴点到左脚后跟点在y轴下的垂直距离得到。
[0088]
其中,围长相关的测量包括胸围、腰围、臀围和左大腿围,围长相关的测量首先需要选择一个特征点用于横向切割,结合法向量n=(0,1,0)通过点法式确定出一个能够完整切割smpl(-x)模型的平面网格,然后smpl(-x)模型与平面网格进行相交检测,得到相交顶点集,通过去除重复顶点操作和凸包算法求出凸包顶点集,最后求凸包顶点集的围长。
[0089]
胸围、腰围、臀围和左大腿围在测量前需要分别使用右胸点、肚脐点、会阴点和左大腿点进行横向切割,且在测量左大腿围时需要定义一个仅有左半身的smpl(-x)模型与平面网格进行相交检测,以避免出现双腿的顶点自相交影响相交检测结果的情况,如图2所示。
[0090]
由于相交检测是在gpu进行的,其输出结果顺序的不同会使求出的凸包顶点集不同并导致测量存在多个结果,需要为胸围、腰围、臀围和左大腿围分别进行30次相交检测和凸包计算,取测量结果的最大值作为最终的围长。
[0091]
最小化目标函数定义如下:e=λ
cdecd
+λ
pep
+λaea+λ
mem
[0092]
其中,e为目标函数,e
cd
为倒角距离损失项,e
p
为3d关节点的距离损失项、ea为全身骨骼欧拉角先验损失项,em为测量参数约束损失项,λ
cd
、λ
p
、λa和λm表示控制各损失项对应的权重。
[0093]
倒角距离损失项e
cd
通过下面的公式计算:
[0094][0095]
其中,表示smpl(-x)模型的所有顶点,表示中的顶点,表示人体点云中的所有顶点,表示人体点云通过最远点降采样保留预先设置的数目的顶点,表示中的顶点,表示smpl(-x)模型的顶点数,min表示求单一顶点与点集中所有点的距离的最小值。
[0096]
3d关节点的距离损失项e
p
通过下面的公式进行计算:
[0097][0098]
其中,m(θ,β)表示通过姿势参数θ和体型参数β生成smpl(-x)模型,jk(
·
)表示smpl(-x)模型到第k个3d关节点的映射函数,ω表示3
×
1全局相机旋转欧拉角向量,rot(
·
)表示从3
×
1旋转欧拉角到3
×
3旋转矩阵的映射函数,t表示3
×
1全局相机平移向量,x
′
(k)
表示三角测量得到的第k个3d关节点,wk为控制第k个关节点的权重,且所有关节点的权重和为1。表2列出了各个3d关节点在阶段1和阶段2的权重:
[0099]
表2. 3d关节点在阶段1和阶段2的权重表
[0100][0101][0102]
其中,阶段1和阶段2分别表示迭代优化的前半阶段和后半阶段,例如100次的迭代优化中,前50次采用阶段1权重,后50次采用阶段2权重。
[0103]
全身骨骼欧拉角先验损失项ea通过下面的公式进行计算:
[0104]
ea=avg(exp(relu(θ-θu)+relu(θ
l-θ))-l)
[0105]
其中,θu和θ
l
分别表示姿势参数θ的旋转欧拉角上界和下界,relu(
·
)用于求矩阵各分量与0的最大值,exp(
·
)表示矩阵各分量的自然指数函数,l表示与θ相同维度的全1矩阵,avg(
·
)表示对矩阵所有分量求平均值,表3定义了部分骨骼点的活动范围,对于未定义的骨骼点,其最小和最大欧拉角均为0。
[0106]
表3.smpl(-x)部分骨骼点活动范围定义表
[0107][0108][0109]
测量参数约束损失项em通过对身高、臂展、会阴高、胸围、腰围、臀围与在smpl(-x)模型上测量获取到的对应测量参数计算差值的平方并求和得到;
[0110]
本实施例中,首先需要为姿势参数θ、体型参数β、全局相机旋转欧拉角向量ω和全局相机平移向量t提供初始值,设置θ=θ0,β=β0,ω=(0,π,0),t为smpl(-x)模型臀中点与三角测量重建得到的臀中点的差值向量,其中θ0和β0均为0向量;
[0111]
在最小化目标函数e时,需要对全局相机旋转欧拉角ω、全局相机平移向量t、smpl(-x)模型的姿势参数θ和体型参数β进行优化,采用l-bfgs优化器进行梯度下降,优化器的线搜索方法为strong wolfe,学习率为0.2,最大迭代次数为100,权重λ
cd
、λ
p
、λa和λm分别为5、100、30000和10000000,身高、臂展、会阴高、胸围、腰围、臀围的值分别为167.6cm、166cm、75.5cm、90.5cm、85cm、92cm,损失不再下降时即可提前结束优化,结果如图5所示。表4展示了输入测量参数与生成smpl-x模型测量的结果对比。
[0112]
表4.输入测量参数与生成smpl-x模型测量的结果对比表(单位cm)
[0113]
测量参数输入值测量值误差身高167.600167.6200.020会阴高166.000166.2490.249臂展75.50075.6030.103胸围90.50090.5310.031腰围85.00084.952-0.048臀围92.00092.0550.055
[0114]
一些实施方式需要预先将人体点云进行坐标转化,包括对人体点云进行缩放和旋转,保证其朝向与图1一致。
[0115]
一些实施方式的输入不是人体点云而是网格模型,可以直接将网格模型的所有顶点视作点云。
[0116]
一些实施方式的体型参数维度在10维以上,最高到300维。
[0117]
实施例2
[0118]
本实施例提供一种基于测量参数生成对应体型的smpl(-x)模型的方法,体型参数β为10维向量,实施流程如图4所示。过程如下:
[0119]
由于输入数据中不包含人体点云,步骤s1至步骤s33不需要重复执行。
[0120]
s4、对smpl(-x)模型的测量需要预先从smpl(-x)模型的顶点中定义特征点,完整定义如前面表1所示。
[0121]
测量smpl(-x)模型需要在统一的t-姿势下进行,图1展示了smpl(-x)模型的t-姿势和所处的坐标轴。
[0122]
其中,长度相关的测量包括身高、臂展、上肢长和会阴高,身高通过计算头顶点到左脚后跟点在y轴下的垂直距离得到,臂展通过计算左手中指末端点到右手中指末端点在x轴下的水平距离得到,上肢长通过计算左肩点到左手中指末端点的距离得到,会阴高通过计算会阴点到左脚后跟点在y轴下的垂直距离得到。
[0123]
其中,围长相关的测量包括胸围、腰围、臀围和左大腿围,围长相关的测量首先需要选择一个特征点用于横向切割,结合法向量n=(0,1,0)通过点法式确定出一个能够完整切割smpl(-x)模型的平面网格,然后smpl(-x)模型与平面网格进行相交检测,得到相交顶点集,通过去除重复顶点操作和凸包算法求出凸包顶点集,最后求凸包顶点集的围长。
[0124]
胸围、腰围、臀围和左大腿围在测量前需要分别使用右胸点、肚脐点、会阴点和左大腿点进行横向切割,且在测量左大腿围时需要定义一个仅有左半身的smpl(-x)模型与平面网格进行相交检测,以避免出现双腿的顶点自相交影响相交检测结果的情况,如图2所示。
[0125]
相交检测是在gpu进行的,其输出结果顺序的不同会使求出的凸包顶点集不同并导致测量存在多个结果,需要为胸围、腰围、臀围和左大腿围分别进行30次相交检测和凸包计算,取测量结果的最大值作为最终的围长。
[0126]
由于输入数据中不包含人体点云,此时最小化目标函数为λ
mem
,其中em为测量参数约束损失项,λm表示控制各损失项对应的权重。测量参数约束损失项em通过对各项输入的测量参数与在smpl(-x)模型上测量获取到的对应测量参数计算差值的平方并求和得到,输入的测量参数是身高、臂展、会阴高、上肢长、胸围、腰围、臀围和大腿围这8项的任意组合。
[0127]
本实施例中,首先需要为体型参数β设置初值为0向量,在最小化目标函数λ
mem
时,需要对体型参数β进行优化,采用l-bfgs优化器进行梯度下降,优化器的线搜索方法为strong wolfe,学习率为0.2,最大迭代次数为60,权重λm为10000000,损失不再下降时即可提前结束优化。
[0128]
表5展示了4组男性测量参数与生成smpl-x模型测量的结果对比,其中误差均值为5次使用同样的测量参数生成smpl-x模型获取得到的测量值与输入值的误差绝对值的平均值,所生成的smpl-x模型可视化结果如图6所示。
[0129]
表5.男性测量参数与生成smpl-x模型测量的结果对比表(单位cm)
[0130][0131]
表6展示了4组女性测量参数与生成smpl模型测量的结果对比,其中误差均值为5次使用同样的测量参数生成smpl模型获取得到的测量值与输入值的误差绝对值的平均值,所生成的smpl模型可视化结果如图7所示。
[0132]
表6.女性测量参数与生成smpl模型测量的结果对比表(单位cm)
[0133][0134]
表7展示了8项测量参数生成smpl模型获取到的测量值与输入值之间的平均绝对
误差,每项测量参数的最佳方法分别以粗体表示。
[0135]
表7.测量参数与生成smpl模型测量的平均绝对误差对比表(单位cm)
[0136][0137]
由此可见,本发明对于测量参数生成的smpl(-x)模型经过测量获取到的测量参数即便是在8项测量参数的同时输入也能得到良好的效果,在部分测量参数上误差更低,相比其它方法具有更强的扩展性。一些实施方式的体型参数维度在10维以上,最高到300维。
[0138]
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
技术特征:
1.一种基于人体点云与测量参数的参数化人体模型拟合方法,其特征在于,所述拟合方法包括以下步骤:s1、将人体点云以固定距离与多个不同的视角渲染得到在每个不同视角下的全身人体图像;s2、对每个视角下的全身人体图像,通过深度神经网络openpose预测出每个视角下的2d关节点集以及与各个关节点相对应的置信度;s3、对所有视角下的2d关节点集,通过视角筛选与低置信度2d关节点排除,得到2d关节点筛选集,然后采用三角测量算法重建得到3d关节点,对重投影损失超过第一阈值的3d关节点通过排除噪声视角的方法进行优化;s4、已知参数化人体模型smpl(-x)的初始姿势参数θ0与体型参数β0,以下参数化人体模型smpl(-x)简称smpl(-x)模型,在提供0向量姿势参数时,生成的人体模型呈现出t-姿势,且手掌呈伸直展开状态;在smpl(-x)模型上预先定义测量所需的特征点,对特定体型参数生成的t-姿势下smpl(-x)模型测量获取所需的测量参数;然后进行smpl(-x)模型的拟合,在拟合过程中,首先将smpl(-x)模型按臀中点平移到重建出的3d关节点的臀中点完成初步对齐,然后以重建出的3d关节点、人体点云与输入的测量参数作为约束,通过迭代优化的方式最小化目标函数,得到优化后smpl(-x)模型的姿势参数θ与体型参数β。2.根据权利要求1所述的一种基于人体点云与测量参数的参数化人体模型拟合方法,其特征在于,所述步骤s1中将人体点云整体按重心平移至以原点为重心的位置,坐标单位为mm,然后将相机距离设置为1200mm,采用宽高比a=1、垂直视场角近平面z
n
=10mm、远平面z
f
=10000mm的透视投影,相机正对人体正面开始渲染,然后每次将人体点云绕y轴逆时针旋转30度,一共旋转11次,最终渲染得到12幅不同视角的分辨率为512x512的全身人体图像。3.根据权利要求2所述的一种基于人体点云与测量参数的参数化人体模型拟合方法,其特征在于,所述步骤s2中将12幅全身人体图像作为深度神经网络openpose的输入,预测得到每幅全身人体图像的人体2d关节点集以及各个2d关节点对应的置信度,设k为openpose预测出的人体2d关节点数目。4.根据权利要求3所述的一种基于人体点云与测量参数的参数化人体模型拟合方法,其特征在于,所述步骤s3过程如下:s31、从12幅全身人体图像筛选出n个视角的2d关节点集,然后在这n个视角的2d关节点集中排除掉所有置信度低于第二阈值的2d关节点,得到2d关节点筛选集;s32、在2d关节点筛选集中,通过三角测量方法重建出k个3d关节点:设为当前关节剩余的视角构成的2d关节点集,其中n'表示剩余的视角数,i表示剩余视角中的第i个视角,v
i
表示对应的视角编号,表示该关节在视角编号v
i
下的2d关节点,和分别表示的x坐标和y坐标,设定每个视角v
i
下的3
×
3相机旋转矩阵和平移向量其中向量和表示旋转
矩阵的第1列、第2列和第3列,和分别表示的x坐标、y坐标和z坐标,此外设定12个视角都有相同的4
×
4透视投影矩阵其中其中a表示宽高比,表示垂直视场角z
n
表示近平面位置距离,z
f
表示远平面位置距离,通过下面的公式对视角v
i
的2d关节点进行逆图片空间变换与逆投影变换,得到相机视角的3d方向向量:其中表示视角v
i
下的方向向量,和分别表示的x坐标和y坐标,w和h分别表示全身人体图像的宽和高;对每个视角v
i
列出下面两个方程:列出下面两个方程:其中x'为待求3d关节点位置;n'个剩余的视角列出2n'个方程,采用最小二乘法求解出3d关节点x'后,将x'投影到剩余视角的图片空间中,得到重投影2d关节点集通过下面的公式计算重投影2d关节点:其中,是位于投影空间的列向量,和表示的x坐标、y坐标、z坐标和w坐标,为视角编号v
i
的重投影2d关节点;最后通过下面的公式计算平均像素误差:
其中e为平均像素误差,||
·
||2用于求向量的欧氏距离;s33、若平均像素误差e小于第一阈值,或剩余视角数n'<4,得到最终预测的3d关节点x',否则需要使用下述方法排除噪声视角直至满足条件:对当前关节剩余视角构成的2d关节点集设q
i
为排除剩余视角中第i个视角对应的2d关节点得到的点集,对q
i
进行三角测量重建出3d关节点x
i
',然后进行重投影并计算出平均像素误差e
i
,设m为所求平均像素误差构成的集合中的最小值e
m
对应的下标,若e
m
小于第一阈值,或点集q
m
的剩余视角数小于4,得到最终预测的3d关节点x
m
',否则将q
m
作为排除噪声视角方法的输入并继续执行。5.根据权利要求4所述的一种基于人体点云与测量参数的参数化人体模型拟合的方法,其特征在于,所述步骤s4中的测量方法获取身高、会阴高、臂展、上肢长、胸围、腰围、臀围和大腿围共8项测量参数,然后经过扩展以支持更多的测量参数,包括臀宽、腰宽、大腿长、上臂长和肩宽。6.根据权利要求5所述的一种基于人体点云与测量参数的参数化人体模型拟合的方法,其特征在于,所述步骤s4中测量方法需要预先从smpl(-x)模型的顶点中定义特征点,包括:头顶点、左脚后跟点、左手中指末端点、右手中指末端点、左肩点、会阴点、右胸点、肚脐点、会阴点和左大腿点,若需要进一步扩充测量类别,在增加定义更多用于测量的特征点,然后在统一的t-姿势下进行长度相关与围长相关的测量;其中,长度相关的测量包括身高、臂展、上肢长和会阴高,身高通过计算头顶点到左脚后跟点在y轴下的垂直距离得到,臂展通过计算左手中指末端点到右手中指末端点在x轴下的水平距离得到,上肢长通过计算左肩点到左手中指末端点的距离得到,会阴高通过计算会阴点到左脚后跟点在y轴下的垂直距离得到;其中,围长相关的测量包括胸围、腰围、臀围和左大腿围,围长相关的测量首先需要选择一个特征点用于横向切割,结合法向量n=(0,1,0)通过点法式确定出一个能够完整切割smpl(-x)模型的平面网格,然后smpl(-x)模型与平面网格进行相交检测,得到相交顶点集,通过去除重复顶点操作和凸包算法求出凸包顶点集,最后求凸包顶点集的围长;胸围、腰围、臀围和左大腿围在测量前需要分别使用右胸点、肚脐点、会阴点和左大腿点进行横向切割,且在测量左大腿围时需要定义一个仅有左半身的smpl(-x)模型与平面网格进行相交检测,以避免出现双腿的顶点自相交影响相交检测结果的情况。7.根据权利要求5所述的一种基于人体点云与测量参数的参数化人体模型拟合的方法,其特征在于,所述最小化目标函数定义如下:e=λ
cd
e
cd
+λ
p
e
p
+λ
a
e
a
+λ
m
e
m
其中,e为目标函数,e
cd
为倒角距离损失项,e
p
为3d关节点的距离损失项、e
a
为全身骨骼欧拉角先验损失项,e
m
为测量参数约束损失项,λ
cd
、λ
p
、λ
a
和λ
m
表示控制各损失项对应的权重;倒角距离损失项e
cd
通过下面的公式计算:
其中,表示smpl(-x)模型的所有顶点,表示中的顶点,表示人体点云中的所有顶点,表示人体点云通过最远点降采样保留预先设置的数目的顶点,表示中的顶点,表示smpl(-x)模型的顶点数,min表示求单一顶点与点集中所有点的距离的最小值;3d关节点的距离损失项e
p
通过下面的公式进行计算:其中,m(θ,β)表示通过姿势参数θ和体型参数β生成smpl(-x)模型,j
k
(
·
)表示smpl(-x)模型到第k个3d关节点的映射函数,ω表示3
×
1全局相机旋转欧拉角向量,rot(
·
)表示从3
×
1旋转欧拉角到3
×
3旋转矩阵的映射函数,t表示3
×
1全局相机平移向量,x
′
(k)
表示三角测量得到的第k个3d关节点,w
k
为控制第k个关节点的权重,且所有关节点的权重和为1;全身骨骼欧拉角先验损失项e
a
通过下面的公式进行计算:e
a
=avg(exp(relu(θ-θ
u
)+relu(θ
l-θ))-l)其中,θ
u
和θ
l
分别表示姿势参数θ的旋转欧拉角上界和下界,relu(
·
)用于求矩阵各分量与0的最大值,exp(
·
)表示矩阵各分量的自然指数函数,l表示与θ相同维度的全1矩阵,avg(
·
)表示对矩阵所有分量求平均值;测量参数约束损失项e
m
通过对各项输入的测量参数与在smpl(-x)模型上测量获取到的对应测量参数计算差值的平方并求和得到,输入的测量参数是身高、臂展、会阴高、上肢长、胸围、腰围、臀围和大腿围这8项的任意组合;首先需要为smpl(-x)的姿势参数θ、体型参数β、全局相机旋转欧拉角向量ω和全局相机平移向量t提供初始值,设置θ=θ0,β=β0,ω=(0,π,0),t为smpl(-x)模型臀中点与三角测量重建得到的臀中点的差值向量;在最小化目标函数e时,需要对全局相机旋转欧拉角向量ω、全局相机平移向量t、smpl(-x)模型的姿势参数θ和体型参数β进行优化。
技术总结
本发明公开了一种基于人体点云与测量参数的参数化人体模型拟合方法,包括如下步骤:对人体点云以固定距离与不同的视角渲染得到多个视角下的全身人体图像;通过深度神经网络预测全身人体图像中人体的2D关节点;对2D关节点进行三角测量以预测出3D关节点;根据人体点云、3D关节点与输入的测量参数将参数化人体模型SMPL或SMPL-X匹配到人体点云上。通过本发明生成的参数化人体模型在姿势上与人体点云相对齐,并且在体型上能够满足人体点云的约束及测量参数的要求。此外,本发明也支持仅输入测量参数直接生成准确体型的参数化人体模型。所获取的参数化人体模型可用于数据集构建、虚拟试衣以及其它应用。试衣以及其它应用。试衣以及其它应用。
技术研发人员:毛爱华 禤骏
受保护的技术使用者:华南理工大学
技术研发日:2023.04.23
技术公布日:2023/8/14
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
