# FaceLandMark-UseOpenpose **Repository Path**: peter3106/FaceLandMark-UseOpenpose ## Basic Information - **Project Name**: FaceLandMark-UseOpenpose - **Description**: A face landmark detection program use openpose and libfacedetection. - **Primary Language**: C++ - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-05-25 - **Last Updated**: 2021-06-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FaceLandMark-UseOpenpose #### 介绍 ##### 数字电影特效课程作业 A face landmark detection program use openpose, openCV, openGL and libfacedetection. ##### 单目相机面部特征点获取及简单控制 ​经过对比,dlib与OpenCV中的面部特征点模型在实际应用中效果并不是很好,在对比OpenPose中相应的面部特征点获取模型后,我选择了OpenPose中的面部特征点获取模型。然而OpenPose并不带有面部检测模块,所以我们需要利用其它框架进行面部检测,libfacedetection库在面部检测上取得了很好的成绩,它对性能的消耗非常低,因此我选用了libfacedetection来检测输入图像中人脸的位置与长宽,进行简单处理后,将数据传递到OpenPose的API中,利用OpenPose模型获取人脸70个特征点。 ​在获取特征点后,我们可以发现特征点的抖动非常明显,因此需要加入滤波,卡尔曼滤波是较好的选择。但是由于引入滤波器后,系统对冲击响应比较迟缓,为改善这一问题,可以简单通过制定阈值的方式来区分开冲击信号与其他信号,从而提高系统响应速率,改善滤波效果。 ​在获取了这些面部特征点后,再通过与标准人脸模型中的顶点比对,利用OpenCV中的n点透视姿态求解(solvePnP)反求出人脸姿态。(这部分非常不完善,但人脸带有夸张表情时,由于与标准人脸模型不匹配,会出现极大误差。) #### 使用说明 1. 需要配置caffe, openpose, libfacedetection, openGL环境. 2. 在百度网盘中下载面部特征点检测模型 百度网盘链接为: https://pan.baidu.com/s/1BC47K9782LxmafqIUObouA 密码: hh60 保留目录结构, 并将其放置在工程文件夹中, 与根文件夹同级. 3. 将工作目录设置为工程文件夹, 以便按路径查找模型. 4. 测试使用到CUDA10.2. 5. 建议显卡为RTX2060 6g以上, CPU测试AMD R7 3700X通过. 6. 按Q退出. #### 效果 在RTX2060, R7 3700X下可以接近实时的效果.