markdown 头部姿态估计

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown 头部姿态估计相关的知识,希望对你有一定的参考价值。

## 数据集  
[人脸数据集汇总博文](https://blog.csdn.net/oYouHuo/article/details/84338779)
1. [300W](https://ibug.doc.ic.ac.uk/resources/300-W/)  
是由AFLW、AFW、HELEN、IBUG、LFPW、LFW等数据集组成的数据库。
2. [300W-LP](https://drive.google.com/file/d/0B7OEHD3T4eCkVGs0TkhUWFN6N1k/view?usp=sharing)   
是来自于300W数据集做大型人脸姿态预测的一个综合数据库。  
[百度网盘资源](https://pan.baidu.com/s/1Sb1xkisHuLiZLfi-XwjyUA?errno=0&errmsg=Auth%20Login%20Sucess&&bduss=&ssnerror=0&traceid=)  密码:ij6q
3. [BIWI](https://data.vision.ee.ethz.ch/cvl/gfanelli/head_pose/head_forest.html#db)  
总共约15000张RGB-D图像,包括20个人14名男性,6名女性   
姿态角的范围:yaw偏航角为±75度,pitch俯仰角为±60度,roll旋转角为±50度  
给定参数:ground truth pose angles,calibration matrix,head center, the position of the nose tip。  
4. [AFLW2000]()  
[数据库介绍](https://blog.csdn.net/LEE18254290736/article/details/89211807)   

## 1. QuatNet  
***《QuatNet: Quaternion-based Head Pose Estimation with Multi-regression Loss》
2018,Heng-Wei Hsu et al. QuatNet***  

[论文笔记](https://blog.csdn.net/u013841196/article/details/82949638)  

提出了multi-regression loss function来使用CNNs进行头部姿态估计,输入采用RGB,并没有深度(Depth)信息。损失函数为L2 regression loss结合ordinal regression loss。  

1) ordinal regression loss是被用于去处理non-stationary property,学习鲁棒的特征。  
The non-stationary property:不同的头部姿态角度面部的特征将会发生变化。  
Ordinal regression learns去预测labels的排序,而非label值本身,当labels的顺序扮演着更加重要的角色相比于它们实际的数值,这是非常重要和有效的。  

2) L2 regression loss利用特征去提供更加精确的角度预测  

3) Label:本文使用Euler angle和quaternions作为网络回归的结果,发现基于四元数的效果更好,因此论文题目为:QuatNet。

## 2. Fine-Grained Head Pose Estimation Without Keypoints  
***《Fine-Grained Head Pose Estimation Without Keypoints》
2018,Nataniel Ruiz Eunji Chong James M. Rehg. multi-loss***  

[论文笔记](https://blog.csdn.net/qq_42189368/article/details/84849638)  
[代码链接](https://github.com/natanielruiz/deep-head-pose)  

本文提出了一种简洁和鲁棒的方式来确定姿态,通过训练一个multi-loss的卷积神经网络。
直接使用RGB结合分类和回归损失来预测Euler angles(yaw,pitch and roll)。

## 3. SDM (Supervised Descent Method)  
***Supervised Descent Method and its Applications to Face Alignment,CVPR 2013***  
[代码1](https://github.com/patrikhuber/superviseddescent/)  
[代码2](https://github.com/RoboPai/sdm)  
[论文笔记](https://blog.csdn.net/jiajinrang93/article/details/68937710)  

主要提出了一种名为SDM(Supervised Descent Method)的方法,用来最小化非线性最小二乘(Non-linear Least Squares)目标函数,即目标函数是均方误差。SDM方法通过学习得到一系列下降的方向和该方向上的尺度,使得目标函数以非常快的速度收敛到最小值,回避了求解Jacobian矩阵和Hessian矩阵的问题。  

**用于人脸对齐,但附带了姿态估计的方法。**  

## 4. 基于Dlib和OpenCV的头部姿态估计  
[解析 + C++代码](https://blog.csdn.net/u013512448/article/details/77804161)  
**python代码已经下载到本地**  

人脸姿态估计主要是获得脸部朝向的角度信息。本文获得的人脸姿态信息用三个欧拉角(pitch,yaw,roll)表示。   
首先定义一个6关键点的3D脸部模型(左眼角,右眼角,鼻尖,左嘴角,右嘴角,下颌),然后采用Dlib检测出图片中对应的6个脸部关键点,采用OpenCV的solvePnP函数解出旋转向量,最后将旋转向量转换为欧拉角。   
- 基于Dlib的人脸关键点检测  
Dlib提供了一个68关键点的检测模型,而且是按照顺序排列的。因此可以直接索引到需要的6个关键点。  
接着对检测到的人脸进行关键点检测.关键的索引顺序是固定的,姿态估计需要的6个关键点的索引id分别是: 
    - 下巴:8 
    - 鼻尖:30 
    - 左眼角:36 
    - 右眼角:45 
    - 左嘴角:48 
    - 右嘴角:54  
- 用OpenCV的solvePnP函数估计Pose  
OpenCV中solvePnP 和 solvePnPRansac都可以用来估计Pose。  
确定pose也就是确定从3D model到图片中人脸的仿射变换矩阵,它包含旋转和平移的信息。solvePnP函数输出结果包括旋转向量(roatation vector)和平移向量(translation vector)。这里我们只关心旋转信息,所以主要将对 roatation vector进行操作。 
在调用solvePnP函数前需要初始化cameraMatrix,也就是相机内参。
- 将旋转向量转换为欧拉角  
[欧拉角与四元数的转换关系](http://www.cnblogs.com/wqj1212/archive/2010/11/21/1883033.html)  

以上是关于markdown 头部姿态估计的主要内容,如果未能解决你的问题,请参考以下文章

HeadPose Estimation头部姿态估计头部朝向(Android)

基于模型的头部姿态估计

计算机视觉头部姿态估计

基于人脸识别姿态检测距离估计的看电视姿态检测

基于人脸识别姿态检测距离估计的看电视姿态检测

opencv相机标定和人头姿态估计案例