当前位置:首页 期刊杂志

基于深度学习的单帧人体体型测量

时间:2024-09-03

王 昕,郑贤浩,姜日福,姜哲进,李 雪*

(1. 辽东学院 信息工程学院,辽宁 丹东 118003 ;2.辽宁铪纳永和科技发展有限公司,辽宁 丹东 118000)

人体全身扫描及体型参数测量在健身、健康医疗和服装试穿及服装定制行业有着广泛应用前景。例如,在健身及健康医疗领域可以长期收集被监测人的身体形态变化趋势信息,从而为人们在健康生活方面提出有益的指导建议或提供有价值的参考数据;在服装试穿及服装定制领域,利用测量出的人体体型参数可以让服装生产企业或时尚品牌商家更容易为顾客量身定制服装或推荐合适的款式衣服。

目前市场上用于人体体型扫描的设备有多种,例如激光扫描设备,虽然扫描精度很高但是价格过于昂贵。目前可以采用微软公司的Kinect深度传感器作为激光扫描设备的替代方案,因为Kinect深度传感器属于家用级别因此价格低廉、性价比高。当前市场上已经有若干基于Kinect深度传感器的人体扫描方案[1-4]。随着深度学习技术的不断发展[5]及相关训练数据集的充实完善,将深度学习技术与Kinect深度传感器相结合,实现单深度帧人体扫描及测量人体体型参数具备了必要条件[6]。另外,由于Kinect深度传感器在点云(point cloud)扫描及加工处理方面性能越来越好,从而促进围绕Kinect设备的各种相关研究[7-8]和产品应运而生。本研究采用的Dynamic Fusion技术[3]就是一种基于Kinect深度传感器的高质量三维扫描技术。该技术提供多种三维人体体型数据计算方法[9-10],测量结果精度与人工测量及商业激光扫描测量结果进行比较,可以证实基于Kinect深度传感器的扫描解决方案在实际应用过程中只要不断提高深度学习算法质量可以达到类似商业版产品精度。但是目前基于Kinect深度传感器的扫描方案需配套相关的机械设备或采用多个Kinect传感器,在实际应用场景中进行推广还是有一定困难。

该研究是借助单个Kinect深度传感器实现人体扫描及参数测量。具体方法是首先设计实现出专用的训练数据集生成器工具,然后利用该工具生成的大量的训练数据集,接着结合Inception-ResNet-v2[5]深度学习框架来生成人体体型计算引擎,最后利用体型计算引擎将Kinect深度传感器扫描出来的单帧RGBD图像作为输入,计算出人体的全身三维模型以及体型参数作为输出。测试结果表明本研究对人体体型参数的测量精度为5.8 mm,基本达到人体体型测量要求标准。

1 方法

本研究提出一种利用单个Kinect深度传感器,基于单帧深度扫描进行人体体型参数测量的方法。为了精确测量出人体体型参数,需要建立人体体型计算引擎对单帧深度图像的体型参数进行计算,该引擎结合SPRING数据集[11]就可以生成人体体型深度学习模型,然后对生成的人体模型进行测量并生成测量参数列表。该引擎算法包括人体体型模型构建、语义建模及模型优化3部分。

1.1 人体体型模型构建

人体体型模型是指人体体型三维网格数学模型,为了精准计算出人体体型参数,必须首先构建精准的人体体型模型。该研究中人体体型模型是借助SPRING体型三维模型数据集进行构建,具体方法是通过统计分析数据集中的人体体型变化范围,计算出体型变化参数和变化矢量来实现人体体型模型构建。SPRING数据集由标准化的人体三维网格组成,共包含3 048个人的人体网格信息,其中每个人又包含12 500个顶点信息。下面简述人体体模型模型构建算法,该算法基于SPRING人体体型数据集进行构建。

首先通过PCA(principal components analysis)分析算法找到SPRING人体体型数据集的特征向量,具体操作是针对数据集中的每个扫描模型数据的人体方向进行对齐操作,并在原点平移其质心位置。SPRING人体网格数据集由M={mi,i=1,2,…,k},和每个人对齐后的顶点集Si={pij∈mi,j=1,2,…,N}构成,定义矩阵为

(1)

在上述使用SPRING数据集的情况下,k=3 048和N=12 500,由于每个顶点有3个位置信息(x,y,z)参数,矩阵P共有3N×k个元素。

协方差矩阵表示为

MP=PPT。

(2)

协方差矩阵MP的特征向量表示每个参数的形状变化的影响因子。

统计人体体型模型可以表示为

v=p+m=Bc+m。

(3)

其中:v∈R3N×1作为N个顶点的三维坐标(x,y,z);B∈R3N×k作为PCA模型的特征向量,m∈R3N×1代表平均体型的顶点坐标,c∈Rk×1表示人体体型变形系数。

1.2 语义建模描述

语义模型是人口统计学等领域中对于人体体型的参数定义,在该研究中即为人体体型测量参数。

该语义模型为男性定义了身高、颈围、胸围、腰围等24个参数,为女性定义了48个人体体型参数。由于SPRING数据集中的网格是标准化的数据,因此参照三维人体网格计算人体参数非常简单。每个参数主要采用三种规则进行计算得出:第一种规则是简单导线测量法,例如通过将构成特定颈部区域的顶点连接线的长度相加来计算颈部周长参数;第二种规则是针对第一种规则得出的参数再次应用数学函数计算得出,例如可以通过获取腰部周围不同宽度的几个候选值中的最大值来计算腰围;第三种是自定义规则,例如人体身高可以根据人体网格边界框的高度来计算。

1.3 模型优化方法

人体体型模型优化是指利用SPRING人体体型数据集对人体体型空间[11]的参数进行优化计算。

优化方法将SPRING数据集中的人体网格定义为Ri={vij=Bicj+mi,j∈(1,N)}, 用1.4中的方法将其渲染并生成深度图像di,然后计算求出人体体型参数qi(既可以是1.1中公式3的系数c,也可以是1.2中的语义模型,即人体体型测量参数)。

最后为人体体型参数计算和人体三维网格构建。定义如下优化参数L:

(4)

其中:n为训练数据集中帧的个数;qi为第i帧的形状参数;di为第i帧的深度图像;qi及di利用1.4节深度学习训练数据集模拟生成;fθ为将深度图像映射到人体体型参数的函数。

通过建立一个机器学习优化模型L来计算fθ的参数θ,在此使用了Inception-ResNet-v2[5]深度学习框架。输入层的图像设置为512×512像素大小,对于较小的深度图像可以用0值填充边距,以输出层作为回归问题,设计出男性24个参数及女性48个参数的神经元。

输入参数di的深度范围约为1.2~2.9 m,将其映射为0~1取值范围,输出结果为未加工的原始真实数据qi。

1.4 生成深度学习训练数据集

在模型进行优化前需生成深度学习训练数据集,本研究采用的学习训练数据集的生成基于Kinect SDK[12]中的生成方法实现。生成的训练数据集由3 048个男性和女性三维身体网格构成,然后利用OpenGL(Open Graphics Library)库生成模拟的人体体型深度帧di及人体体型参数qi,为了获取更逼真的模拟结果需要设置扫描环境的参数范围,例如Kinect传感器的安装位置、人体的站立位置和角度等,如表1所示。由于SPRING数据集中的女性发型已经固定,为了提升扫描效果的逼真感,在引擎中还添加了具有多种头发样式的三维头发模型以便实现渲染效果的真实感,生成的深度图像示例如图1所示。

表1 模拟深度扫描的参数范围

1.5 人体体型扫描前的预处理

人体体型扫描前的预处理操作主要是解决Kinect传感器扫描出的实际数据与模拟生成的人体扫描数据之间的误差问题。 由于训练数据集中没有噪音,因此在生成的深度帧内只有人体区域的数据,但是使用Kinect深度传感器进行实际扫描时会产生噪点,而且人体会与周围环境例如建筑物混合在一起。作为神经网络输入,被扫描人脚部周围的轻微噪点会导致输出出现较大误差,因为这些噪点没有存在于生成的训练数据集中,因此深度学习框架由于信息不足无法区分脚部和地面,所以在系统的测试环境中使用相应区域的颜色信息来分割像素级别的人体区域,例如人体足部区域。

在实际环境中进行应用时采用的方法是在扫描区域地面上铺设2 m×2 m的绿色地毯,输入帧提供颜色和深度之间关系的坐标映射,在HSV(色调H、饱和度S、明度V)空间上应用简单的背景提取技术,将地面和脚部皮肤分离,判断背景信息和扫描图片点的明度差距是否大于20,找到脚部和背景区域并去除相应深度像素上的背景区域,最后利用聚类和KNN(K-Nearest Neighbor)算法移除深度图像上的剩余噪点。

2 实验

实际的测试工作是基于该研究生成的训练数据集(包含3.5万张男性和女性图像)完成,深度学习次数设置为400,因为测量精度在学习次数取值为300以上时并没有明显的提高。如图2所示的训练过程和如图3所示的人体体型参数的平均值和标准差结果是在GTX 1080 Ti显卡上经历24小时学习完成的。深度学习环境为Windows 10版本Tensorflow 2.1。图2的横坐标表示深度学习训练次数,纵坐标表示平均精度。

2.1 验证测试数据集

深度学习数据集分为训练数据集和测试数据集,在该研究中设置所占比例分别为80%和20%,结果如图3所示,显示测试数据集的平均精度为5. 8 mm。由于某些人体参数在定义上就有精度误差的差别,例如腰围等参数不像人体身高参数基本固定不变,腰围在人体中变化幅度比较明显,所以产生比其他人体参数较高的测量误差,但是实际测量精度仍然可以满足大多实际应用场景,与基于人工或商业版激光扫描系统具有类似的精度水平。

2.2 验证实际扫描结果

图4显示针对24名男性进行5次扫描后的数据平均值与人工实际测量数据进行比较的误差结果,例如针对男性身高进行5次扫描后结果的平均值与实际测量结果误差为0.7 cm。

应用预处理加工后的测试结果如图5所示。与测试数据集(图4)相比,其精确度相似并且没有明显的错误,表明所生成的训练数据集与实际扫描数据集非常接近,同时预处理正确地移除了地面上绿色地毯的区域。

3 结论

测试结果证明本研究提出的基于单帧RGBD的全身人体体型参数计算引擎算法在实际扫描中可以达到较高的精度。该算法利用单个深度扫描实例和人体体型参数生成深度训练集来实现人体体型训练,不需要提供额外信息。本研究达到的精度可以满足大多数应用场景,当需要更精确的精度值时可以通过增加扫描范围和次数进行提高,例如增加人体背部的扫描操作。本研究提出的引擎算法无法处理未包含在训练数据集中的扫描结果,所以无法精确扫描及测量出穿着宽松衣服或戴帽子以及具有不同运动姿势的人体体型参数。当Kinect深度传感器的安装位置、人体运动范围与训练数据集生成器中使用的深度传感器安装位置和运动范围不一致时也会影响测量精度。在未来的研究开发工作过程中重点解决在人体穿着简便服装以及实施各种运动姿势时扫描及测量人体体型的精确度问题。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!