APP下载

基于RGB 相机的驾驶员注视区域估计

2019-03-04刘觅涵代欢欢

现代计算机 2019年36期
关键词:关键点人脸头部

刘觅涵,代欢欢

(四川大学计算机学院,成都610065)

0 引言

随着我国汽车保有量以及机动车驾驶人数的不断上升,交通事故的死亡人数也在直线上升,仅2017 年由于交通事故所导致的死亡人数就有63772 人,直接造成经济损失121311.3 万元[1]。道路交通事故的影响因素可以归纳为人为因素、车辆因素以及其他因素,人为因素中驾驶员的分心驾驶占有很大的比例,例如在驾驶过程中查看手机、低头捡拾物品、观看路边建筑等,都会导致驾驶员的视线离开道路,最终酿成不可挽回的后果。因此,实时监测驾驶员的注意力很有必要。

近些年,有许多学者对于驾驶员注意力分析进行了研究。例如,文献[2]通过提取驾驶员脸部特征以及头部姿态,将这些信息送入一个随机森林分类器进行分类后得到驾驶员的注视区域,但是这种方法的泛化能力不强,在跨个体上面的表现较差。文献[3]和文献[4]使用RGBD 相机通过图像信息结合深度信息的方式得到驾驶员的姿态等相关信息进而分析驾驶员的注意力,但是深度相机价格一般比较高昂不如普通相机普遍,并且深度相机的数据量更大,耗电量更高,在汽车这种移动设备上面的实用性不高。

基于上述问题,本文提出一种基于普通RGB 相机的驾驶员注意力分析的方法,不依赖特定的驾驶员的驾驶数据集进行训练且不需要深度相机如此高昂的设备,通过放置与驾驶员正前方的一个普通RGB 相机得到驾驶员的注视区域,进而分析驾驶员的注意力。

1 系统总体设计

本文提出的方法基于一个已标定的RGB 相机,首先通过相机获取驾驶员的人脸位置以及人脸关键点信息,结合一个平均的3D 人脸模型[5],通过求解PNP(Perspective-N-Point)问题[6]得出驾驶员头部的姿态信息,借助得到的姿态信息将驾驶员双眼中心的法线投影到驾驶室的前方,以获取驾驶员的注视的区域。进而分析驾驶员的注意力。摄像机的放置位置如图1 所示,平均3D 人脸模型如图2 所示,算法的流程图如图3 所示。

图1 相机安放位置

图2 平均3D人脸模型

图3 方法流程

2 驾驶员头部姿态估计

头部姿态的估计有很多种方法:按照输入可分为基于RGB 图像的和基于深度图像的方法,其中基于RGB 图像的方法又可以分为基于人脸关键点的和不基于人脸关键点的。

基于深度信息的方法,如文献[7],通过RGB 图像结合深度信息得出最后的头部姿态。深度相机的优点是能够获得极高的精度,但是深度相机相对于普通的RGB 相机来说功耗更高,在汽车这种移动设备上会存在耗能问题,并且不如RGB 相机普及,其次深度相机的数据传输量更大使得传输时延更长。这些局限性使得深度相机在驾驶员状态监控这种情景下并不实用。

在基于图像的方法中,由于近些年来神经网络,特别是卷积神经网络[8]在图像领域的大放异彩,也有很多研究人员[9-10]尝试使用神经网络回归头部的姿态角度,这种方法的优点是在拥有足够的数据集的情况下,能够有较高的精度,但是标注高精度的头部姿态训练数据集耗时耗力,现有的高精度的头部姿态数据集极少。并且,这些方法所得到的头部姿态无法得知头部的三维位置信息,而在这里却恰恰是我们需要的。

基于RGB 图像获取头部姿态的另一种方法是基于关键点的头部姿态估计,这种方法通过人脸关键点检测所得到的人脸关键点集合,配合上3D 的人脸模型的关键点集合,通过求解PNP 问题得出头部的姿态信息,其中人脸关键点检测已经是计算机视觉领域研究得十分深入的一个方向,有足够的高精度的人脸关键点训练数据集,足以保证较高的泛化能力。

基于关键点的头部姿态估计过程如下:

(1)人脸检测

本文采用基于人脸关键点的头部姿态估计方法,首先需要从输入的图像中获得准确的人脸位置,本文采用了S3FD(Single Shot Scale-invariant Face Detector)[11]作为人脸检测器。相较于常用的通过SVM(Support Vector Machine)以及HOG(Histogram of Oriented Gradients)特征进行人脸检测的方法[12]拥有更低的误检率。而误检率对于我们这个项目来说是很重要的指标。使用S3FD 预测的人脸边界框结果如图4 所示。

图4 人脸检测结果

(2)人脸关键点检测

人脸关键点检测又称人脸对齐,在安防、驾驶员状态分析、娱乐等领域有着广泛的应用。最早期的人脸特征点检测方法主要是通过人脸纹理模型以及PCA 统计方法检测人脸特征点的位置,例如主动形状模型(Active Shape Model,ASM)[12]和主动表观模型(Active Appearance Model,AAM)[13]。随着深度学习的在计算机视觉领域的发展,也有越来越多的学者提出基于卷积神经网络的人脸特征点检测算法[14-15],并取得了较好的成果。

如图5 所示,本文使用FAN(Face Alignment Network)[16]作为人脸关键点检测的方法,它采用图6 所示的沙漏网络层(Hourglass Block)[17]作为基本单元,沙漏网络层与传统的卷积神经网络层在结构上不同。传统的卷积神经网络通常多采取一种“自下而上”(由高分辨率到低分辨率)的结构,而沙漏网络则采用了一种对称的结构,既有“自下而上”又有“自上而下”(由低分辨率到高分辨率)的方法,使得网络在提取局部特征的同时也能考虑到各个特征之间的空间结构相关性,其次传统神经网络回归的关键点的二维坐标信息是采用直接回归坐标值的方式,而FAN 对于每一个关键点预测一张热力图(heat map),热力图是一张和原始图片形状大小相同或者等比例的灰度图,它的最大值点所在的位置代表了图像的关键点所在的位置。

图5 FAN 网络结构

图6 沙漏网络层结构

沙漏网络首先通过多组卷积层和池化层对输入的特征图进行降采样,然后通过多组上采样层和卷积层将特征图再次上采样到原始特征图的分辨率。由于池化层会丢失一些图像中的细节,在沙漏网络中添加了跳层(skip layer)将丢失的细节带回到上采样后的特征图里面去。这样当多个沙漏网络重叠在一起的时候,这些网络可以反复地处理这些特征图以获取更高层次的信息。这种基础的网络模型原本是用于人体姿态检测(人体关键点检测),在人脸关键点检测方面也有不俗的表现。

本文采用Multi-PIE[18]的68 个关键点的规范来标记人脸关键点,其人脸关键点的分布如图7 所示,通过上述方法的人脸关键点检测结果如图8 所示。

图7 人脸关键点分布

图8 关键点检测结果

(3)基于PNP 算法的头部姿态估计

在获取了人脸的二维坐标点之后,需要结合人脸三位坐标点的信息求解头部的姿态。本文所采用如图9 所示的针孔相机成像模型,其中点P(X,Y,Z)为三维世界中的点,p(u,v)为成像平面的点,它们之间的对应关系由式4 所示,式中:R 和t 分别为旋转矩阵和平移向量,它们与相机的位姿有关,矩阵M 是相机的内参矩阵,可以通过对相机进行标定得出,s 是缩放因子。PNP 问题就是在已知一组互相对应的三维世界中的P的点和成像平面上的对应的二维坐标点p 求解出式(3)中的R 和t。

图9 针孔相机成像模型

求解PNP 问题已经有很多的经典解法,例如迭代法、P3P、EPNP、DLS 等,本文采用迭代法求解,其主要思想是:通过直接线性变换(Direct Linear Transformation,DLT)求得一组初始的R 和t,再通过莱文贝格-马夸特方法(Levenberg-Marquardt algorithm)对重投影的误差进行优化以得到最小化的数值解。

在本文中,三维世界中的点集为图2 所示的平均三维人脸坐标点,成像平面上的点集为通过人脸关键点检测所得到的二维坐标点集。根据上述方法最终预测到的头部姿态如图10 所示。

图10 头部姿态估计结果

3 注意力分析

本文对于驾驶员的注意力分析是通过对驾驶员的注视区域进行分类,以确保驾驶员的视线保持在与驾驶相关的区域上面。

在获取到了驾驶员的头部姿态(R,t)之后,本文采用如图11 所示的射线投影的方法来估计注视区域。以驾驶员的双眼中心为起点向驾驶舱前部发出射线,求出与求出射线与驾驶舱前部的交点,以交点所在的位置作为驾驶员的注视位置。在图11 中,驾驶员头部的局部坐标系为OmXmYmZm,相机坐标系为OcXcYcZc。以(Om,nm)向量的方向发射一条射线与XcOcYc平面相交与点I(xi,yi),点I 就是我们要求的注视点。

图11 注视区域估计方式

由于此时的(Om,nm)向量是在头部局部坐标系下表出的,而XcOcYc平面处在相机坐标系下,无法进行计算。此时需要进行坐标转换,将(Om,nm)向量转换到相机坐标系下。

当驾驶员头部偏移时,我们可以通过头部姿态估计得到相应的旋转矩阵R,以及平移向量t,之后我们可以通过式(5)的方法,将人脸局部坐标系下的(Om,nm)向量转成为相机坐标系下的(Omc,nmc),此后在相机坐标系下可以由三角形相似的方法求出I 点的坐标(xi,yi),我们令Omc=(Xs,Ys,Zs),nmc=(Xe,Ye,Ze),则可以用式(6)求出I 点的坐标。

为了对驾员的注视区域进行分析,本文对于驾驶区域的分类如图12 所示,其中1 号左后视镜,2 号左挡风玻璃,3 号内后视镜,4 号右挡风玻璃,5 号右挡风玻璃,这五个区域作为与驾驶相关的区域,而6 号仪表盘,7 号中控台作为与驾驶无关的区域。

图12 驾驶员注视区域分类

4 实验设置与结果分析

4.1 头部姿态估计效果分析

对于头部姿态估计,通常是将人体的头部作为刚体进行的检测,但是在实际生活中人体的头部并不是一个纯刚体,人体有各种表情,其中人体嘴部及脸部轮廓是动作最大的区域,对于使用PNP 算法来说所造成的误差最大。例如,一个咧嘴的动作会让头部的姿态估计在Roll 这个维度产生较大的误差。为了证实这一观点本文设计了一组实验来探讨不同区域的关键点对于头部姿态估计的误差的影响。

本实验所采用的数据集是BIWI 数据集[19],BIWI数据集通过深度相机采集了15000 多张不同个体在不同头部姿态下的图片。它的头部姿态的分布范围是:俯仰角(pitch)±60°,偏航角(yaw)±75°,旋转角(roll)±50°。该数据集给通过跟踪每一个个体的三维点云信息获得头部的姿态。该数据集通常作为评估使用深度信息的方法的一个标准数据集,官方标称数据集的误差在±1°。本文在实验测试过程中只使用,它的RGB 图像以及对应的真实头部姿态信息,不使用深度信息。

表1 是使用本方法在不同关键点分布情况下在BIWI 数据集上面的平均误差。其中第一行是保留了全部68 个关键点的头部姿态估计结果,第二行是去除了人脸轮廓之后剩下的51 个关键点的集合,第三行是仅仅保留了人眼4 个角点、眉毛6 个点和鼻尖位置的11 个点的集合。在分别去除了人脸轮廓以及嘴部关键点之后,对于头部姿态估计的误差有了明显的下降,验证了本文之前的设想。因此本文决定采用表1 所示的第三行的关键点集合。同时,为了验证本文方法的性能,选择了现有的头部姿态估计的算法作为比较对象,它们在BIWI 数据集上能效性能效果如表2 所示。

表1 不同关键点分布的误差分析

表2 与各种方法的比较

4.2 注视区域估计准确度分析

为了对所提方法的有效性进行评估,本文收集了如图13 所示的真实驾驶情况下的驾驶员注视区域的数据集。该数据集有三个不同的个体,戴眼镜与不带眼镜,以及不同的性别和身高。每个个体需要注视7个区域,每个区域收集20 张图片,三个个体共收集到图片420 张。在该数据集上进行测试得到了如表3 所示的混淆矩阵。各区域的平均准确率为86.67%,满足实际使用要求。

图13 数据集部分图片示例

表3 验证结果混淆矩阵

4.3 运行时间分析

为了分析本方法的时间效能,本文统计了各个部分的计算用时。实验所采用的计算机配置为:CPU 为Intel 酷睿i3-4170,GPU 为英伟达GTX 1060,其中人脸检测与人脸关键点检测使用PyTorch 框架实现,使用了GPU 并行加速计算,头部姿态的解决使用了OpenCV中实现的solvePnP()方法。测试了3 分钟的视频,其平均帧率为8.97,各阶段的平均计算耗时如表4 所示。从表中可以看出人脸和人脸关键点检测耗费了较多的时间,但是整体运行时间能够达到实时性的要求。

表4 时间性能分析

5 结语

本文提出了一种基于RGB 相机的驾驶员注视区域检测方法,使用人脸检测、人脸关键点检测以及图形学中的坐标变换的方法有效地获取了驾驶员的注视区域。但是,由于本方法在输入方面采用的是可见光源的方法,在夜间的效果不好,下一步将会考虑将加入红外光源,以增加在夜间的适用性。时间方面,算法在人脸检测和关键点检测阶段的时间复杂度较高,可以考虑将两个神经网络合成一个多任务的网络,使其能够复用前面的网络层学到的特征,进而减少在人脸部分的时间开支,使系统有更高的实时性。此外通过实验分析可以看到,本方法对于区域3、6、7 的预测精度较差,主要是由于这些区域的头部转动角度较小,眼球转动较大,因此下一步还可以眼球注视方向估计以增强注视区域估计的准确度。

猜你喜欢

关键点人脸头部
论建筑工程管理关键点
肉兔育肥抓好七个关键点
有特点的人脸
自动驾驶走向L4 企业头部效应显现
玻璃窗上的人脸
火箭的头部为什么是圆钝形?
利用定义法破解关键点
“领家系”可爱脸VS“高冷系”美人脸
机械能守恒定律应用的关键点
长得象人脸的十种动物