一、前言
本篇主要记录由mtcnn检测得的关键点作人头姿态估计,思路较为简单,mtcnn是一种可以检测输出5个关键点的人脸检测算法,分别是左眼,右眼,鼻尖,嘴的左角和嘴的右角。当获得图像中人脸的5个2D关键点,再由Opencv中POSIT的姿态估计算法将5个世界坐标系的模板3D关键点通过旋转、平移等变换投射至这5个2D关键点,进而估计得变换参数,最后求得2D平面中的人头的姿态参数,分别为Yaw:摇头 左正右负、Pitch:点头 上负下正、Roll:摆头(歪头)左负 右正
二、Mtcnn-light
对于mtcnn,网上具有较多开源版本,这里使用light版本,优点是速度较快,缺点为模型准确性略有下降,为输出5个关键点,对原来src/mtcnn.cpp中增加重载函数 void findFace(Mat &image , vector &resBox );
三、人头姿态估计
人头姿态估计代码参考自https://blog.csdn.net/zzyy0929/article/details/78323363
#include "network.h"
#include "mtcnn.h"
#include
#include
#include
#include
#include
四、实验结果
载入两张图片实验,结果如下所示,可以评估侧脸程度,不过失败时会出现nan的计算