APP下载

基于PC-SGD的深度学习雷达人体点云补全

2022-12-25孙浩鹏

重庆理工大学学报(自然科学) 2022年11期
关键词:法线解码器躯干

孙浩鹏

(长春工程学院 计算机技术与工程学院, 长春 130012)

0 引言

随着虚拟现实蓬勃发展,元宇宙环境下每个人都会有完全不同的生活习惯,各种行为在元宇宙内将形成大量的交互数据[1]。在未来,计算机对人的行为识别和交互必然是元宇宙内的最核心内容。目前人体的身体动作行为数据从输入数据信号的不同一般可分为身体穿戴惯性[2]或光学传感器实现动作捕捉[3]、通过摄像头视频录像利用算法计算出骨骼运动数据[4]、利用WIFI信号在受到干扰时候的数据信号强度变化得到人体运动轨迹数据[5]、摆放阵列红外线传感器然后获得传感器的阵列信号变化计算人体动作数据、通过雷达TOF原理返回的接收激光信号建立点云进行人体行为识别[6]这几种。以上几种方法各有优缺点,如果想实现人体动作识别并且考虑隐私,例如在卫生间或者洗澡间等,就不适合穿戴设备或者摄像头。本文仅讨论基于激光雷达行为识别前的数据处理,由于近年来某些型号的雷达实现了国产,国产后的雷达价格降低,使昂贵的雷达民用成为可能,Jokanovic等[7]就采集了雷达的调频连续波数据进行深度训练,实现了监护摔倒和没摔倒的动作识别。但是在采集雷达数据时,雷达的数据均为深度数据,由于激光雷达原理是TOF[8],依托的是发射的红外激光的反射接收,人体的胳膊交叉、人体在阴影中、人体外衣有明显的反射物(例如金属镜面纽扣、金属皮带扣、反光效果比较强的防水外衣等)都会导致点云丢失。所以在利用雷达进行人体行为识别前,将雷达扫描获得的点云进行补全是非常必要的。

1 点云补全基本原理

目前的点云三维补全算法的思路普遍是基于空间几何或者基于现有模型库的方法[9]。空间几何方法不用数据库中完整模型,一般利用点云的几何信息完成补全,例如桌子的单个腿部一般均为圆柱形或者正方形,只要点云缺失不是太大,从已有点云中利用LERP插值运算来填充缺失的部分,基本可以实现点云补全,这种方法也被称为表面重建。桌子的4条腿中往往由于遮挡会导致点云按照表面重建,补全后也只有3条腿,此时利用桌子腿的对称结构,将3条腿中间的一条按照对称轴(桌子中心点)进行复制,也能实现点云补全,这种方法比较适合简单物体,如果输入的点云缺失过大或者对于人体、植物、动物等无法用空间几何方式描述的物体就无法实现补全,这时就需要有参考目标来补全。以雷达扫描树叶为例,假设在数据库中已有地球上所有品类树叶的点云完整模型,通过雷达扫描得到的树叶有部分缺失的情况下往往有3种情况。第一种是已知树叶品类,直接在数据库中找到已有点云,通过定义树叶根部对齐旋转方向和放缩就可以实现点云补全,第二种无法得知雷达扫描获得的树叶品类,只能通过未缺失的点云和数据库点云进行部分对比,但是由于点云的空间结构不是对齐的,所以这种对比方法获得的数据往往错误率高,后期还要利用二次曲面或者直接用小型平面替代数据库实现补全。目前不可能收集地球上所有树叶品类的数据库,这就属于第三种情况,雷达扫描后的点云有缺失,数据库内又没有完整数据,从2017年提到的点网络(PointNet)[10]出现后这种情况就推荐使用深度学习的方法来进行点云补全。

2 深度学习点云补全算法

深度学习补全点云常规方法是构建编码器-解码器的网络结构,编码器是由卷积神经网络的卷积、归一、池化层组成,目的是将扫描获得的带有丢失数据的点云进行特征提取,提取后的特征输入解码器,解码器是由全连接层和另外的点网络组成,进行人体点云补全的框架如图1所示。

图1 深度学习人体补全原理图

编码器通过输入点云所含数据量的多少并利用最远点采样法将其分类为不同范围点云,这种多范围可以类比图像处理中的不同分辨率图像,对不同范围数据降维后提取特征,再将多个范围的特征拼合,使得编码器得到的编码既带有局部特征,又带有全局特征,其网络的输入层用来输入点云数据,隐藏层(编码层)用来提取特征,最大池化后得到各个范围域中值最大的点,进一步精炼特征。核心是通过不断的迭代训练将高密度点云的特征用低密度点云的特征描述并将特征传输给解码器。

解码器获得编码器传过来的点云特征,通过解码网络生成新的点云并输出。一般的解码器主要是多个全连接层,往往第一个全连接层接收上述编码器中的最大范围点云特征,主要用来实现整体轮廓补全,第二个全连接层实现上述编码器中的局部点云特征,主要用来实现局部轮廓补全。编码器特征分类越多,解码器的全连接层就越多,输出前需要把多层解码器进行合并汇总,获得趋近完整的点云输出。

阿特拉斯网络[11](ATLASNET)把图1中下半部分的解码器中的全连接层进行了共享,使全连接层能共同进行同一个物体的点云补全,重建了缺失较大的物体,实现了点云补全。Lyne等[12]提出了顶点网络(TOPNET),该网络把树状结构和图1结合起来,假设树从最底层向上发展,越向上层次越多,以牺牲计算速度的代价实现了物体点云的补全。点分形网络[13](PF-NET)利用基于特征点的多尺度生成网络把缺失划分为不同级别,每个级别分别完成损失和对抗,并将对抗损失和损失相加,保留了不完整的空间排列并能预测缺失区域的详细集合结构,可以实现凹陷物体的内表面重建。Chang等[14]提出的改进PCN网络(FinePCN)以从粗到细的方式生成完整和精细的点云。FinePCN由2个子网络组成:第一个用于生成粗糙形状的编码器-解码器,第二个用于生成局部结构的逐点卷积。先通过第一个粗糙网络实现大体的补全,再将局部信息输入到第二个子网络中补全,不但考虑了局部信息,而且在保持全局形状的同时减轻了输入的数据数量。对大多数例如汽车、房屋等补全效果都很不错,对有凹陷的表面会出现一些错误,将凹陷填平。

由上述可见,现有的深度学习主要都是依靠2017年提出的点网络进行的优化,核心方法均利用全连接层网络进行单独处理每一个采样点,但是处理每个数据的时候没有包含该采样点的周边点云的密度。当处理数据为人体动作发生变化时也没有包含邻域空间和时间信息,而且每次补全的时候就用全连接层直接将整个补全后的点云直接全部映射回去,无法得知哪个部分到底损失了多少,也无法将点云的时空特征保留下来。

3 基于PC-SGD原理的深度学习点云补全算法

普通人体动作点云虽然是多变的,但动作的变化是有规律的和分层次的,将雷达人体补全分为五步法为本文的第一个创新点,第一步是要获得和目标体型适配的完整人体点云并将其定义为H,第二步将H和采集的数据分割为单独的躯干、下肢和上肢。第三步在隐藏层针对分割后不同层次点云添加时间参数获取各自不同的特征。第四步在解码器部分针对不同身体层次采用不同的损失函数,在损失函数的随机梯度下降计算过程中根据不同的身体部分设定不同的判断标准即partiality criteria stochastic gradient descent,简称PCSGD。第五步将补全的各个部分合并得到完整的人体点云。

3.1 参数化人体点云H的获得

正确人体点云H的获得参考了Dibra等[15]的方法,他们在2017年利用站立人体的特殊掩码作为参数输入CNN(convolutional neural network),较准确地在SCAPE人体模型库[16]中的17种模型中获得了目标人体对应的模型。获得相对应的三维模型后通过PCL实现三维模型到点云的转化,PCL(point cloud library)是跨平台开源C++编程库,主要是针对三维扫描仪器获得的点云数据产生三维模型而生,内含专门针对点云的一系列操作[17]。其中安装PCL路径下的bin文件夹中的pcl_mesh_sampling_release.exe即可对OBJ格式的三维模型进行点云转换。因此,本文对SCAPE人体模型库中的17种模型均进行了转换,获得17种标准人体点云。在采集人体点云数据时利用人体高度和宽度作为参数,获得对应的合适人体点云。

3.2 点云分割

普通人体的动作按区域可分为3个层次,第一层是躯干,动作变化相对较慢,第二层是腿,动作变化较快,第三层是上臂和手,速度最快。而区分这些部位的最核心拓扑结构为腋窝和骨盆,文献[18]使用夹角分析法获得点云投影到平面的二维轮廓,在二维图像上采用最小二乘法提取分割特征点对人体点云进行分割。但是人体是圆形的,投影到平面会导致图像重叠,例如人的手在胸前时,正面投影平面无法看到腋窝,也就无法将上臂和躯干分离开来。在此基础上进行改进,提出了以人体躯干中心点为轴心的圆柱投影法是本文的第二个创新点,将人体的点云在分割前投影到一个包围人体的圆柱体上,由于是雷达前方采集的人体,所以人体的后背点云是缺失的,对于圆柱来说就是180°的半圆柱就可以完成投影。如图2所示,对于任意人体点云以人体头顶点云为圆柱开始断面,以脚部中心点为结束断面,以点云的坐标中心(计算所有点云的X,Y的平均值)向下垂直生成的直线L作为圆柱的中心轴,半径为人的上肢伸展最大距离。将点云按中心轴从上到下的半圆截面进行投影,每个点云都会在同高度的半圆截面上按中心轴沿着半径投影到圆上,从而实现人体到圆柱的投影。投影后利用最小二乘法提取分割特征点进行分割。进而获得人体的3个不同部分躯干、上肢、下肢。

图2 人体圆柱内壁投影示意图

3.3 不同部分分别输入点网络并添加法线维度

当获得的点云被分割为3个不同部分后,必须分别输入神经网络,每次都直接将点云作为输入训练集。由于雷达获得人体数据点在人体运动的时候有方向性变化,例如身体旋转,所以每个点除了标准的空间坐标X,Y,Z以外,本文还添加了法线数据[19],法线的计算步骤为:

步骤1对于任意点pi,使用RadiusSearch得到该点的周边点,如式(1)所示。RadiusSearch是指以该点为圆心,获得限定半径范围内的全部点,这里半径设定为5 cm。

pj∈Nbhd(pi)

(1)

步骤2根据式(1)可以计算这些点的质心,如式(2)所示。

(2)

步骤3构建矩阵可以计算协方差,如式(3)所示。

(3)

步骤4将式(3)进行SVD(singular value decomposition,奇异值)分解,计算后得到的最小特征向量就是法线。

这样每个点就有6个维度,为了提高计算速度,将3个方向的法线向量只采用垂直人体表面方向的向量,这样每个点的数据就剩下4个维度(x,y,z,normal),添加了法线维度后每个点都是唯一的,并且这些点在输入时有以下3个要求,第一,这些点不同于图像的像素矩阵计算方法,没有第几行第几列的概念,都没有顺序,所以点的选择可以是无序选择,但是选好后给定标号,顺序不能再变;第二,由于点云是非均匀采样,点和点之间一定要有距离,所以取样的时候距离过近或者重合就要舍弃一些点;第三,当点进行移动或者旋转时(例如人体旋转走路等),点的标号不可以改变。

在卷积上,输入的点网络是在传统CNN上发展而来,卷积过程可以用式(4)描述。

j+Δj,k+Δk,n+Δn)

(4)

其中,X(i,j,k)是点云的原始坐标,n为点云的法线向量,W为卷积核,G为邻域。卷积过程其实是加权求和,把多个相邻点的值进行计算后获得的值输入新的表格中,也就提取了特征值。

人体是连续的,所以W就不能是一个简单的矩阵,而必须是一个连续函数,由于在前期输入点云时顺序是随机的,不同身体部分的点云权重就不能相等,一般情况下躯干丢失点云相比四肢丢失要小,所以躯干的权重就要小于四肢,这样通过不同的权重建立一个关于权重的连续函数W,这个函数可对点云的三维空间坐标进行学习,在输入要求的第二条中点云的各个点之间要有距离,距离过近可以演化为密度过大,距离过远可以演化为密度过小,所以本文利用点云密度对权重进行加权操作从而获得连续函数W,如式(5)所示。

j+Δj,k+Δk,n+Δn)dΔi,Δj,Δk,Δn

(5)

在池化上,输入时一定要使用单一的对称函数来进行最大池化,令每个点p={S∶S∈[0,1]m,且|S|=n},那么可以定义函数f(p)是在集合上关于豪斯多夫(Hausdorff)距离dH的一个连续函数,即对于任意点,ε>0,存在δ>0只要该点数据属于p集合,如果dH(S,Si)<δ,那么f(s)-f(si)<ε,所以在最大池化层只要有足够的隐藏层,并且隐藏层的神经元足够多,那么可以无限趋近f(p)。通过隐藏层池化的整个过程实现了大量点云的压缩,保留了重要的点云信息,去除了重叠和冗余点云信息。

3.4 随机梯度下降准则

当点网络通过编码器获得点云的特征后,通常需要通过解码器反向把点云还原,在还原过程前要输入本文第一步提供的完整人体点云H,将其作为神经网络计算过程中的正确参考,在输出前首先将输出点云和完整点云H进行对准,对准的基本位置是骨盆。对准后通过全连接层实现补全,在补全的过程中,对身体的不同部分通过不同的参数做为评判梯度下降是否合格的标准,对3个不同的身体部分进行分别补全,这是本文的第三个创新点。

对躯干部分来说,只要边界完整是很容易获得躯干行为识别数据的,所以身体部分主要的损失函数由边界来主导,这里主要评判还原后的躯干点云边界和点云H的边界是否有偏差,H的边界是不变的,设e代表解码器输出后的边(edge),代表点云H的边界,u和v是相邻的2个点,那么判别过程如式(6)所示。

(6)

躯干的损失函数还要考虑点的损失和法线的损失,所以躯干的损失函数如式(7)所示。

Lossbody=ωelosse+ωnlossn+ωslosss

(7)

(8)

损失函数依据点和H的距离来进行计算,如式(9)所示,之后添加点的损失即可。

(9)

对手臂来说,由于人手挥动自由度特别大,例如在举起手的时候,人们可以做到手心向前和手心向后。所以无论是依靠边界还是依靠点都无法实现完整补全,手臂损失函数由点和法线来主导,点的计算方式和腿部相同,法线是能表明手臂旋转的,因为法线是垂直于表面的,所以每个法线都是依托面来计算的,这里设φ为H的面,从模板的手部开始,每个点加上周边半径为r的点连接成的面,设f为神经网络生成的面,计算方式也是每个点加上周边半径为r的点形成的面。r取值为0.01 m。则手臂的法线损失函数如式(10)所示,之后也添加点的损失即可。

(10)

3.5 输出的点云合并

由于获得的是3个分开部分的点云,所以输出点云的过程就必须包含常规输出和合并操作[20]。 将3个部分合并过程的第一步是对准,主要是人体上肢对齐躯干的腋窝部分和下肢对齐骨盆部分,对齐的过程主要是首先找到补全后的上肢或者下肢的轮廓,由于上肢轮廓有一端是手的形状或者说是有明显分叉,那么对应的另一端自然就是轴心,找到轴心后缩放和旋转使得位置和方向与躯干对齐。下肢的特征在于脚部有较多的重叠点云,所以相对的另一端也就是轴心,同样通过缩放和旋转与躯干对齐。将合并后的点云与标准点云H对比,四肢的长度应该和标准点云H一致,如果大于标准点云H的话,缩小比例再次合并,如果小于标准点云H的话,增加比例再次合并,直到四肢与躯干的比例相比H误差较小即可。

4 数据测试

数据通过国产固态面阵激光雷达采集,因为要对采集的数据进行行为识别,所以使用了时间流采集,但由于单帧数据就达到19 200字节,所以对每个人体行为只采集5 s,每秒采集60帧,更换不同身高体重男女不同衣物等多样化采集,每人动作行为均规定为有遮挡和无遮挡多种,模拟走路、跳跃、转身等行为。共采集人体点云50 000个,经过观察,在动作过快时和反光衣物类有明显点云缺失。将人体点云进行圆柱投影、切割后添加法线向量并输入PointNet、TOPNET、PF-NET、FinePCN和本文算法进行比较,所用参数为单向豪斯多夫距离[21](unidirectional hausdorff distance,UHD),单向豪斯多夫距离实际上计算的是神经网络解码器补全的点云的各个点三维空间坐标与最开始输入神经网络编码器的带缺陷点云三维空间坐标的最小距离,然后在这些最小距离构建的数组中挑选出最大的值,计算的最大值超过固定值,一般就认为补全的点云误差过大,对于人体点云,如果初始采集密度点与点之间距离为0.1 cm,一般UHD如果大于0.1 cm就认为补全的点云偏差过大,点云补全过程往往通过UHD的值来判断补全的算法好坏,UHD的数学描述为:给定欧式空间的点集X和Y,其计算定义如式(11)所示。

(11)

表1 补全后点云与原始点云的单向豪斯多夫距离

补全实际效果如图3所示,可以看出,FinePCN对人体躯干点云的补全效果较好,但是在上肢和下肢由于有动作和遮挡情况下效果不好。PointNet相对有很高的补全能力,但是它是利用全连接层对全局整个输出,局部细节尤其是手臂转弯的地方有明显的密度不均匀问题。TopNET由于是采用很多全连接层分层计算,收敛计算速度慢,所以在下肢补全的地方明显有散乱情况,PF-NET是对抗网络,主要优点是对凹陷结构有良好的补全,在人体点云对躯干凹陷有不错的表现,但是对于四肢的遮挡处理的不是很好。本文提出的5步点云补全方法由于是分为3个部分计算的,每个部分又有单独的计算方法,所以针对性较强,可以更好地补全人体点云的细节,例如手部和脚部的位置等,补全效果在固态面阵雷达人体点云领域明显强于上述几种算法。

根据式(5)的描述,神经网络的池化层只有要足够多的神经元或者说有足够多的隐藏层就可以无限逼近最完美的补全效果,所以对补全网络增加了隐藏层的测试,并且使用RMSE作为神经网络的评估指标[22]。RMSE(root mean square error)为均方根误差,表示预测值与真实值差的平方的期望,如式(12)所示:

(12)

通过测试将隐藏层数量和RMSE数值制成如图4所示的隐藏层数量与误差关系图,可以看出,上肢在隐藏层13层误差最小,躯干由于轮廓简单,在第6层达到最好效果,下肢在隐藏层为4层时达到0.16的误差,但是从第5层开始增加,到第9层时才减少,到11层效果较好。由此可见并不是隐藏层数量越大越好,分为3个部分输入的神经网络,并不可以采用同样的隐藏层数量,所以点云补全过程中分割后的模型应该用不同深度的神经网络才可以。

图4 隐藏层数量和RMSE误差关系曲线

5 结论

提出了一种基于雷达扫描人体点云的补全方法,利用完整的人体作为参考,将雷达获得的人体分割为3个部分分别进行补全,针对不同的部分采用不用损失函数进行梯度下降计算。分割后的部分由于每个部分都有不同的运动速度和不同的旋转,所以在考虑旋转的问题上又添加了点法线作为旋转判断的参数。这样点云就以4个维度输入神经网络,分别进行3次不同的计算,计算后得到的点云再进行拼合,能够更好地实现人体点云补全。实验表明,本文方法在人体动作较快、幅度较大状态下比完整输入点云明显改善。

雷达人体行为识别在无光、隐私等条件下依然不会被摄像头取代,对点云的补全问题还有更多需要做的内容,未来会向以下几个方向发展,第一,更加精细的细分,现在将人体分割为3个部分数据,如果点云是为了进行手势识别,那么就应该将手臂分割为手部和上臂,如果是为了进行脚部动作识别,例如踢踏舞的脚部行为规范,就应该将腿部分割为脚部和腿部等;第二,现有雷达采集的点云均有不同数量的噪声,所以点云补全应该增加去除噪声功能,大大提高数据的鲁棒性;第三,完善标准人体库,如SCAPE库,未来的人体库应该有完整的空间点云并包含多种生活行为动作,在人体动作行为采集后可进行对比参考补全。

猜你喜欢

法线解码器躯干
拉伸对越野行走学生躯干柔韧素质影响分析研究
基于文献回顾的罚球命中率与躯干稳定性影响因素研究
科学解码器(一)
科学解码器(二)
科学解码器(三)
线圣AudioQuest 发布第三代Dragonfly Cobalt蓝蜻蜓解码器
树与人
人走路时为什么要摆手?
关于法线教学的几点思考
椭圆法线定理的逆定理