人脸姿态估计,即如何通过图像中2D人脸关键点计算出头部姿态角,具体就是计算出俯仰角(pitch),偏航角(yaw)和翻滚角(roll);

首先三维姿态估计模型,你需要拿到2D人脸关键点坐标,通过dlib的人脸关键点检测器可以很容易的计算出人脸68个关键点的位置()。但是在具体计算头部姿态的时候可以选择性的使用这68个关键点。我看网上大量的文章都是摘取的其中6个关键点(如下图)。我分别试验了6点、14点以及68点这三种情形。

从上一步计算出的人脸关键点中选出N(例如:6)个,但因为这N个点只是2D坐标,你还要想办法计算出他们对应的3D坐标。你或许会想,这一步是不是需要图像中的人脸的3D模型?只能说理论上是这样的,而实际应用过程中,一个通用的3D模型就可以满足了,更近一步,你只需要知道通用模型中关键点对应的3D坐标位置就可以干活了,例如:
进行相机参数估计时首先需要对相机进行标定,精确的相机标定需要使用张正友的棋盘格标定,这里还是进行近似。相机的内参数矩阵需要设定相机的焦距、图像的中心位置并Kaiyun Sports且假设不存在径向畸变。这里设置相机焦距为图像的宽度(以像素为单位),图像中心位置为(image.width/2,image.height/2).
关键点的获取由dlib来实现,其中需要用到官方预训练好的模型,地址如下: