基于神经网络的双目视觉下头部姿态估计*

2021-04-08 08:41陈锦涛石守东郑佳罄胡加钿房志远
传感技术学报 2021年1期
关键词:欧拉角双目坐姿

陈锦涛石守东郑佳罄胡加钿房志远

(宁波大学信息科学与工程学院,浙江 宁波315211)

当前我国青少年近视患病率呈高发态势,职业性肌肉骨骼疾患患者日益增多。 有证据表明,青少年近视主要由其不良坐姿所引发的近距离用眼导致,而职业性肌肉骨骼疾患也同样与长期保持不良坐姿密切相关。 而坐姿的研究离不开头部姿态的估计,该研究在人机交互、医疗健康、交通安全等领域具有较高的应用价值。

对于坐姿中头部姿态的研究方法,其研究方法主要分为两大类:基于穿戴式传感器方法以及基于图像采集法。 Kinect 利用多个传感器快速定位人体的20 个关键点并追踪,还能实时计算空间深度信息。 文献[1]使用Kinect 获取人体关节点,并基于隐马尔可夫模型(HMM)对人姿态进行识别。 文献[2]用Kinect 由低分辨率3D 数据通过误差的预期分布模型与局部加权回归方法组合来移除异常值并构建高分辨率面部模型。 文献[3]提出一种三角形表面补丁描述符(TSP)估计头部方向和位置。 文献[4]通过双支路多级卷积神经网络处理二维图像,基于部分亲和字段(PAF)分段分部分进行各部分的连接,第一分支估计人体的二维置信图,第二分支计算各部位的关联度,得到多个面部点,识别效果好。文献[5]基于模糊肤色分类器和颜色特征的人脸追踪,通过高并行GPU 计算、分类器权重预计算等方法提高设备在高分辨率视频图像中稳定追踪面部的能力,并在3D 图像中由对面部位置估计实现对头部运动的追踪。 文献[6]用机器视觉技术实现了实时分析人类坐姿图像,并依从一定的规律抓取视频流中的两个帧,以定位用户的眼睛,嘴巴,肩膀,将定位结果综合并于基准坐姿图像对比以确定属于何种坐姿类型。

利用摄像头采集二维图像的方法成本低、易推广。 同时,利用神经网络算法对图像中头部进行检测在近些年涌现出一些成果,例如利用SDM、CNN、DNN 等算法对头部进行估计的理论都已成熟,基于双目视觉的畸变校正、深度信息计算、立体匹配、质量评价等方法在内的理论体系也日渐成熟。

基于穿戴式传感器方法虽然实时性较好,可以实时接收传感器数据用于分析姿态,但穿戴不方便并且成本较高。 Kinect 虽然实时性较好,但价格高昂,在生产生活中无法大规模普及;而利用神经网络算法对采集后的图像进行处理,再对头部姿态进行判断,为判断姿态的实时性以及低成本提供了可能。

1 改进SDM 人脸对齐算法

人脸对齐即人脸关键点定位,目标是自动定位面部关键点,目前被应用在许多主流的人脸分析任务中:表情识别[7]、人脸验证与识别[8]、人脸动作捕捉[9]以及人脸属性分析[10]等。 近年来,大量人脸对齐方法涌现。 在众多方法中,级联回归[11-15]方法实现了很好的人脸对齐结果。 级联回归的方法是通过回归关键点位置处提取的特征从而逐步逼近真实关键点位置。

监督下降方法(super-vised descent method,SDM[15])是众多级联回归方法中最有效的方法之一。 属于解决非线性最小化NLS(Non-linear Least Squares)问题的一种方法。

传统SDM 的级联方式是利用一级接一级的学习矢量回归函数来对齐人脸。 输入的图像定义为Img,初始形态定义为S0,级联回归法通过不断估计形态增量ΔS来持续的精细化人脸形状。 阶段n的形状增量ΔS可以表示为式(1):

式中:Φ为特征的映射函数,R为不断迭代提高精度的回归器。

SDM 人脸对齐基本内容就是特征映射到偏移量:

式中:l是特征,x是映射矩阵,R是偏移量。 映射矩阵x就是SDM 训练的结果。

1.1 HOG 特征提取

SDM 算法对均值人脸的标记点特征进行计算从而提取出HOG(Histogram of Oriented Gridients)特征,串联所有的人脸特征点从而得出样本特征,全部样本特征组成矩阵I。 再计算原始人脸和估计人脸的偏移,形成矩阵R。 最终得出线性方程lx=R的解。

其中HOG 称为方向梯度直方图,即为将被检测图像的部分区块梯度方向直方图来组成图像的特征。 因梯度主要表现在图像中物体的边缘位置,所以对采集图像的质量要求不高,对各种镜头畸变、透视变化等干扰具有较强的鲁棒性。 并且HOG 特征具有不易受光线环境干扰的优点,使得在复杂光线环境下还能正确识别检测人体面部姿态。

HOG 特征的提取过程如下。

步骤1 将待提取特征的输入图像进行标准归一化。 使图片中人体对于光照的影响程度降到较低的水平。

步骤2 对于整幅图像中的每个像素,都需要求出这个像素横向和纵向的梯度方向和梯度,数学描述如下式(3)和式(4):

式中:Gradx、Grady分别为横向和纵向的梯度,P(x,y)代表图像中坐标(x,y)的该点像素的数值。

计算出Gradx和Grady后,利用式(5)算出位于(x,y)的梯度方向和幅值:

步骤3 将图片中每个像素以长宽各八个像素划分区域,对于每一个64 像素的区域进行梯度的统计加权投影。

步骤4 对每个划分区域进行归一化处理,去除干扰信息。

步骤5 对于图像中的各个块都进行HOG 的统计,转化为下一步分类需要使用的特征向量。

1.2 PCA 降低数据维度

由于面部特征点的HOG 维度较高,传统SDM算法计算量过大,计算时间过长,因此本文使用了主成分分析法(Principal components analysis,PCA)降低数据的维度,对传统SDM 算法进行改进,加快运行速度提高训练效率。 该方法的具体步骤如下:

首先定义一个贡献值,也称为主成分比重:由于特征值实际上为向量在作用方向上的投影值,因此不妨设前n个特征矢量作投影操作。 由于前n个特征矢量具有最大的投影值的和,所以能在数据降维后还保存有较丰富的有效信息,使得损失降到可以接受的程度。 其定义如式(6):

式中:all 为初始待降维特征向量个数。C值为降维后的百分比,通常取85%以上,经测试本文取95%。

对于投影后的n(n<all)维度新基,需要源数据投影后的新基上的投影向量分布最分散,具有最小程度的重叠,即方差最大。 其步骤如下:

步骤1 利用式(7)高维的数据集进行中心化操作,其中m为数据集个数,x为数据集X中数据。

步骤2 求出X数据集的协方差矩阵C的特征向量和数值。

步骤3 以特征值为依据从大到小按照行来排序,并且仅需要该矩阵的头k行,舍弃余下的数据,将该矩阵定义为L矩阵。

步骤4 按Y=LX求出所需要求的Y矩阵,实现降维。

2 头部姿态估计

在SDM 人脸特征点标定后,就可以利用特征点进行姿态估计。 目前常用的头部姿态表示法主要有两种:欧拉角及面部朝向。 因为面部朝向方法无法准确描述头部的姿态,因此本文选取的是欧拉角表示法。

描述头部姿态的方向参数有三个:Ptich、Yaw、Roll,分别代表左右旋转、平面内旋转以及上下旋转,如图1 所示。 根据这三个参数可得出人脸所在位置的空间角,继而可以对头部姿态进行较好估计。

图1 头部姿态描述

对于动作种类,文献[16]和文献[17]分为6种。 在相机坐标系中,左、右眼在在Z方向上的距离变化为Δzl、Δzr;在图像坐标系下,左、右眼在X、Y方向上的位置变化分别为Δxl、Δxr,Δyl、Δyr。 对于6 类基本方向,头部姿态按如下判定标准分类:

前倾Pf:Δzl &Δzr<-20 mm∧Δyl &Δyr>20 pixel;

后仰Pb:Δzl &Δzr>20 mm∧Δyl &Δyr<-20 pixel;

左转Yl:Δzr<-20 mm∧Δxr<-20 pixel;

右转Yr:Δzl<-20 mm∧Δxl>20 pixel;

左偏Rl:|Δzl|&|Δzr|<20 mm∧Δxl-Δxr>40 pixel;

右偏Rr:|Δzl|&|Δzr|<20 mm∧Δxr-Δxl>40 pixel。

2.1 头部姿态估计

本文利用POSIT 算法进行头部位姿估计,能较为准确的计算出头部欧拉角。 该算法理想情况下可实现的检测角度范围如表1 所示。

表1 POSIT 算法检测范围

POSIT 算法利用SDM 算法中的少数代表性特征点对头部的欧拉角进行计算。 本文中确定的少数代表性特征点分别为右眼右眼角、右眼左眼角、左眼左眼角、左眼右眼角、鼻尖、左嘴角、右嘴角。 相对来说此七个特征点在人脸各个角度都能较完整反应头部位置关系。

假设未知的头部姿态旋转矩阵R与平移矢量T定义如下:

假设世界坐标系中点(Xw,Yw,Zw)通过推导得出:

式中:s为比例参数,x、y为图像中坐标位置。 由此易知需要求解这个方程, 总共需要解出这八个未知量,代入7 个特征点三维空间坐标后就能求出R1以及R2,通过R1×R2求得R3。 通过迭代最终求解出R与T,使已知的人体脸部三维模型能够通过R的旋转与T的平移操作,对输入图像中的人脸关键点进行投影对应。最终得到三个方向欧拉角:

利用六个头部姿态方向的标准对头部欧拉角进行阈值设定,最终得到头部姿态集合:

2.2 双目视觉空间位置分析

由于坐姿防近视关键在于用眼,而用眼很大程度与眼部距离目标点的距离有关,因此本文利用双眼连线中点作为头部空间位置参照点,该点到摄像头的距离不仅可以很好反映头部空间位置,也可以很好反映当前坐姿下的用眼距离。

双目视觉的工作原理类似人眼,用两个同向放置的相机采集同一位置的两幅图像,由视差根据三角测量原理计算出该位置的深度信息。

如图2 所示,由两相机的投影中心Ol、Or引出的主光线与左右像平面分别交于主点pl、pr,投影中心距离|OlOr|=T称为基线,两相机焦距fl=fr=f,目标点P在左右像平面上的水平方向对应坐标值为xl、xr,视差用(15)定义,根据相似三角形有式(16):

图2 理想状态下的双目视觉系统

可得到目标深度距离Z的值。 要得到理想的双目系统,需对双目相机在数学上进行畸变矫正等操作,可用张正友标定法[18]获得畸变参数、内参数矩阵、旋转矩阵及平移向量等未知量。

测量左右眼中心点对于目标的深度距离,判断当前的用眼情况,将用眼情况分为三类,分类标准如下:

正确用眼null:50 cm<(fT)/d<65 cm

用眼距离过短dc:(fT)/d<50 cm

用眼距离过长dl:(fT)/d>65 cm

3 实验设计及分析

系统基于W10 系统、vs2017、opencv3 设计,内存为4 GB,图3 为实验的流程图。

图3 头部姿态估计流程

3.1 相机标定

根据张正友标定法[18],将包含10×8 长宽大小均为22 mm 的黑白棋盘格标定板置于双目相机前,多角度采集相机视野中的各个区域图像,如图4。

图4 双目相机采集标定板图像

经过校正后,如图5 所示,图像边缘变形区域裁剪,并且将左右图像进行约束化处理,图像特征的关联性一定程度上有所加强。

图5 相机校正并对极约束后的效果

3.2 头部关键点检测

将摄像机采集到的单帧坐姿图像输入,利用改进SDM 算法对人脸进行标定,标定结果如图6。

图6 SDM 人脸标定结果

如图6 所示,SDM 算法成功标定脸部关键点,并且关键点可实现左右一一对应。 由于头部轮廓关键点受到背景环境等因素影响,略有偏差,但左右眼中心点标定准确,可用于后续POSIT 算法利用关键点进行欧拉角计算以及左右眼中心点深度信息测量。 由于本文对SDM 算法进行了改进,此处选取300 张人脸图片对传统SDM 算法与本文算法进行比较,比较结果如表2 所示。

表2 传统SDM 算法与改进算法比较结果

由表2 可知,改进后SDM 算法在漏检率上虽有小幅提升,但平均耗时明显降低。 对于实时坐姿检测而言,改进后的方法漏检率仍然符合要求,但检测平均耗时降低后相比传统SDM 算法更符合实时性。

3.3 头部姿态估计及验证

获取脸部关键点后,利用POSIT 算法对头部欧拉角进行计算,分别得出Yaw、Roll 和Pitch 三个方位欧拉角。

放置头部模型于三自由度转台,调节头部模型姿态,使其呈现固定欧拉角,分别对6 种头部姿态的300 张双目摄像头采集的不同欧拉角图像进行头部姿态估计,得出结果如表3 所示。

由于本文使用双目视觉进行估计,双目视觉下头部姿态的检测可能会受到一定影响,因此对双目视觉以及单目视觉下的头部姿态检测进行比较,分析双目视觉下对头部姿态估计影响是否可以接受。

表3 头部姿态估计效果

如图7 所示,经过比较,本文方法在耗时以及准确率上都有较好的表现,由于双目摄像头采集到的左右图片存在视差,导致判断头部左右姿态时比单目视觉更容易误检,准确率也有所降低。 但准确率以及误检率都可以接受、且检测效果良好。

图7 单/双目视觉头部姿态估计比较

3.4 关键点测距

获得立体匹配关系后,以式(15)、式(16)计算深度信息。 固定相机并移动头部模型位置,测量左右眼中心点的距离值,同时利用激光测距仪对实际距离进行测量,得到精确距离,两者进行比较分析,结果如表4 所示。

表4 关键点测距实验数据和实际数据比较

由于硬点算法等因素,相机标定无法做到完全消除畸变,因此存在一定误差。 由于本文主要研究坐姿下头部的空间位置,因此只考虑750 mm 范围内的误差。 由表4 可知,平均误差为0.50%,参考文献[19]为5%,文献[20]为0.13%,因此本文方法测距的误差可以接受,且效果良好,满足生产生活中对用眼距离测量的需求。 得出关键点距离信息后,即可利用设定阈值对头部空间位置进行分析。

3.5 姿态估计验证

基于6 种头部姿态以及2 种空间位置关系,结合可细分出12 种更详细姿态,例如头部过于靠近目标点的同时头部左右偏移等姿态。 再加上标准姿态,共计有21 种姿态。 考虑到年龄分布和性别差异,对10个男性志愿者和10 个女性志愿者各采集21 种不同姿态的图像,其中四十岁以上的志愿者占比30%,二十到三十岁的志愿者占比50%。 使用上文方法对采集的图像进行姿态估计,估计结果分类为5 大姿态,分别为标准姿态(null)、头部错误姿态(H)、用眼距离错误(d)、近距离用眼头部错误姿态(dc/H)以及远距离用眼头部错误姿态(dl/H),估计结果如图8。

图8 姿态估计准确率

实验结果良好,识别正确率均在90%以上。 可以看出,对正确坐姿下的头部姿态检测准确率较高,以及眼部过近距离下头部姿态检测准确率较高。 由于环境因素的影响,远距离用眼下的头部姿态检测容易出现误差。 同时,由于头发眼镜等遮挡以及大角度转头会对准确率造成一定影响。 但总体准确率依旧高达90%以上。

4 结束语

本文设计的方法具有精确度高同时检测速率快等优点,满足生活中对坐姿实时判断的需求。 利用双目摄像头测量深度信息很好解决了使用激光等设备局限性较高的缺点,利用改进SDM 算法既降低传统方法中使用穿戴传感器检测的成本以及不便性,又同时保证了检测精度和速率,使得头部姿态的估计更加实时性、精确性以及成本更低。 同时双目视觉也使得用眼距离得到较好解决,使得坐姿状态下头部的估计更加满足生产生活的需要。 本文算法也存在一定局限性,例如没有很好解决头发遮挡等对于关键点检测算法的影响,后续工作可考虑如何进一步判断人体坐姿下其他部位姿态的精确的估计,例如脊椎、肩部等。

猜你喜欢
欧拉角双目坐姿
坐姿好习惯
基于双目测距的卡尔曼滤波船舶轨迹跟踪
学生作业坐姿及台灯控制器
双目视觉运动目标跟踪定位系统的设计
基于坐姿感应的智能视力保护台灯设计
从CATIA位置矩阵求解欧拉角的计算方法分析
一种基于EGI和标准人脸模板的三维人脸点云拼合算法
基于双目视觉图像的长度测量方法
“长跪”与谢罪无关
大姿态角入水时的鱼雷半实物仿真方法研究