From Depth Data to Head Pose Estimation: a Siamese approach
基于深度图孪生网络的人脸姿态估计
摘要
- 传统的人脸姿态估计是建立在学习人脸的面部特征进行的,比如关键点和鼻尖位置。本文提出了一种基于深度数据间接学习人脸姿态的方法—孪生(Siamese CNN)深度神经网络。通过引入一种新的损失函数来提高回归层的学习表现能力。
- 该方法在Biwi Kinect HeadPose and ICT-3DHP database进行了验证测试,结果表明相比最新的方法,所提算法在精度方面有一定的提升。
引言
- 研究背景:
- 作者的研究工作主要侧重于自动驾驶的领域,人脸姿态估计是分析驾驶员行为和注意力重要的因素之一。而导致交通事故发生的重要原因是由于司机在驾驶过程中出现不同程度的分心。Craye and Karray等人定义了三种驾驶分心的类型,第一:手动分心,如手脱离方向盘;第二;视觉分心,驾驶过程中看手机,视线脱离车道等;第三:认知分心,驾驶者的注意力由于抑郁的心情、压力无法集中于驾驶行为中。因此,评估其人脸的姿态可以从视觉角度来间接反映驾驶者分心的程度。
- 姿态估计考虑的因素:
- 光照变化因素(Light invariance),受天气变化干扰较大,而深度相机相比传统的RGB和立体传感器不易受这种因素的干扰。
- 传感器等其他电子拍摄的设备不会妨碍驾驶者本身的动作变化。
- 直接估计,驾驶者的身体动作和场景的变化增加了脸部特征学习的难度。
- 实时性,自动监控系统需要能快速检测出驾驶者的动作状态。
- 检测设备的尺寸大小,低成本、高准确度还有小尺寸的检测设备具有较大的市场竞争力。
- 因此,作者致力于开发出一种通过深度数据的深度神经网络模型用于实时检测脸部姿态;构建出孪生网络来提高模型的鉴别能力,提出新的损失函数来更好地优化回归层。
相关工作
- 目前的姿态估计依赖的数据类型主要为RGB图像(2D信息)和深度图(3D信息)。大多数姿态估计方法依赖于RGB数据,这种方法受限于光照干扰以及部分场景;这里不具体介绍RGB数据估计姿态的研究现状。基于深度数据的方法主要缺乏纹理和颜色信息,相关的研究工作相对较少;
- Several works in the literature proposed to use Con- volutional Neural Networks with depth data, but especially in skeleton body pose estimation (Crabbe et al., 2015) or action recognition tasks (Ji et al., 2013). These works reveal how techniques like background subtraction, depth maps normalization and data augmentation could influence deep architectures performance. Recently,
- 基于深度数据的算法学习表现受其深度相机的性能影响,深度数据质量越好,检测准确率越高。不同深度设备采集的深度图如图1所示。the global quality of depth images strictly depends by the technology of the acquisition device。
Figure 1: Examples of depth images taken by different acquisition devices. (a) is acquired by Microsoft Kinect based on structured-light technology (BIWI dataset ). (b) is obtained thanks to Microsoft Kinect One, a TOF 3D scanner; (d)-(e) are the correspondent images, after contrast stretching elaboration to enhance facial clues.Images ©-(f) come from synthetic dataset.
头部姿态估计
目的
- 估计pitch、roll、yaw角;深度数据作为输入,孪生网络对应的CNN的分支用于建立额外的损失函数来提高训练阶段的收敛速度。这里假设头部检测和定位已知,其他一些人脸关键点、鼻尖位置、肤色并不考虑。
头部获取
- 给定人脸的中心坐标 (
x
c
,
y
c
x_c,y_c
xc,yc),利用动态窗口来裁剪人脸图像,以该坐标为中心的矩形方框进行裁剪,其中方框的宽和高计算公式如下:
w , h = f x , y ∗ R Z w,h = \dfrac{f_{x,y}*R}{Z} w,h=Zfx,y∗R其中, f x , y f_{x,y} fx,y表示的是相机焦点的水平和垂直方向的宽度和高度, R R R表示的是图像中人脸的宽度,这里设为300mm, Z Z Z表示深度值。裁剪后的图像resize到 64 ∗ 64 64*64 64∗64的像素大小;输入图像将进行均值为0,方差为1的归一化操作。
训练细节
- 网络结构:主要由两个相同的分支组成,每一个分支由四个卷积和三个最大池化层以及三个全连接层组成。具体的参数图上可以体现出来;输入是大小为64*64的pair样本,pair样本要满足他们之间的角度差至少大于30度。Only pairs with at least 30 degrees of difference between all head angles are selected.每一个分支的输出是对应输入的Euler角:pitch、yaw、roll。
- 损失函数
- 单一分支下的损失为L2损失,公式如下: L c n n = ∑ i n ∣ ∣ y i − f ( x i ) ∣ ∣ 2 2 L_{cnn}=\sum_i^n||y_i-f(x_i)||_2^2 Lcnn=i∑n∣∣yi−f(xi)∣∣22其中, y i y_i yi表示Euler角的ground truth, f ( x i ) f(x_i) f(xi)表示网路的预测输出。额外的损失形式表示如下: L s i a m = ∑ i n ∣ ∣ d c n n ( x i ) − d g t ( x i ) ∣ ∣ 2 2 L_{siam}=\sum_i^n||d_{cnn}(x_i)-d_{gt}(x_i)||_2^2 Lsiam=i∑n∣∣dcnn(xi)−dgt(xi)∣∣22其中, d c n n ( x i ) = f 1 ( x ) − f 2 ( x ) d_{cnn}(x_i)=f_1(x)-f_2(x) dcnn(xi)=f1(x)−f2(x)表示两个分支输出的差值, d g t ( x i ) = y 1 − y 2 d_{gt}(x_i)=y_1-y_2 dgt(xi)=y1−y2表示两个分支的输入的ground truth的差值。
- 因此,总的损失函数为: L = L c n n , 1 + L c n n , 2 + L s i a m L=L_{cnn,1}+L_{cnn,2}+L_{siam} L=Lcnn,1+Lcnn,2+Lsiam
- 参数设置: batch size of 64, a decay value of 5−4, a momentum value of 9−1 and a learning rate set to 10−1, decreased up to 10−3 in the final epochs。
- 数据增强:We performed data augmentation to increment the size of training input images and to avoid over fitting. Additional patches are randomly cropped from each corner of the input images and from the head center; besides, patches are also extracted by cropping input images starting from the bottom, upper, left and right and adding Gaussian noise.
实验结果分析
数据集
- Biwi Kinect Head Pose Database:BKHPD数据集总共约15000张RGB-D图像,包括20个人14名男性,6名女性;
- 姿态角的范围:yaw偏航角为 ± 7 5 。 ±75^。 ±75。,pitch俯仰角为 ± 6 0 。 ±60^。 ±60。,roll旋转角为 ± 5 0 。 ±50^。 ±50。。
- 给定参数:ground truth pose angles,calibration matrix,head center, the position of the nose tip。
- ICT-3DHP Database:共有14000 张灰度和深度图像,被分为10个序列, The resolution is 640x480. The ground truth is annotated using a Polhemus Fastrack flock of birds tracker, that require a showy white cap, well visible in both RGB and RGB-D frames。
- 训练集和测试集: the training has been done on Biwi dataset (2 subjects used for test), while the testing phases also exploited the ICT-3DHP dataset。
定量评估
- 所提姿态估计算法与其他算法相比,结果如表1,2所示。孪生网络的输入为原始数据加增强后的数据;Table 1表示的是在BiWi数据集的测试对比结果。其中Saeed提出的算法分别对RGB和depth分块提取对应的Hog特征,然后进行融合,最后将特征向量送到SVM进行回归。Papazov提出的算法是通过引入三角网格重建三维模型来匹配二维深度图人脸的关键点。
- 评价指标:The evaluation metric is based on the Mean Average Error (MAE) between the absolute difference in angle between network predictions and ground truth.
- Figure 3: Experimental results for Biwi dataset: ground truth is black. The second column reports the angle error per frame,while the last column reports histograms that highlight the errors at specific angles.
- Figure 4: Experimental results for ICT-3DHP dataset: see Figure 3 for explanation.
总结与参考文献
- 本文提出了一种基于深度数据的实时头部姿态估计算法,通过浅层孪生深度网络建立回归模型并且展示实时性。
思考:
- 并且data字段也是很不理解为什么加上RGB,因为文中仅提到的是用深度信息进行训练和预测的。
- 训练的pair样本满足两者角度差异至少是30度,指是单个的roll、yaw、pitch差异还是三个角的总平均差异。
- 参考文献:
(1).From Depth Data to Head Pose Estimation: a Siamese approach.[CVPR2017]
(2) Real-time 3D Head Pose and Facial Landmark Estimation from Depth Images Using Triangular Surface Patch Features
(3).Real-time head pose estimation with random regression forests.
论文理解不对的地方,欢迎大家交流指正,后期会考虑复现代码!