Face Alignment at 3000 FPS via Regressing Local Binary Features 这篇论文实现了对人脸关键点的高速检测,预测精度高。
实现步骤:
一、下载源码、查看工程相关文件。
在网上下载了https://github.com/yulequan/face-alignment-in-3000fpsC++版本的实现工程。解压。打开工程文件。
图一Face Alignment at 3000FPS工程
当然,现在直接运行会有错误。需要进行相关配置。
二、配置OpenCV路径。
此时运行,会报错无法打开包括的OpenCV的文件。配置方式可以看我之前的博文
http://blog.csdn.net/rongrongyaofeiqi/article/details/52985698
里面有关于OpenCV的配置方式。此工程自带的是2410版的OpenCV库,路径也跟我的不一样。所以需要重新配置一下。并且在工程文件夹下加入opencv_imgproc249.dll、opencv_highgui249.dll、opencv_core249.dll、opencv_objdetect249.dll。
三、配置运行参数
配置好OpenCV,运行之后出来结果提示
图二运行成功但缺少参数
查找这个提示,是在LBF.cpp中的PrintHelp函数中的提示。查看此函数调用,是在LBF.cpp的main函数中。粗读代码,是因为缺少相关的配置,所以直接调用了PrintHelp()。
图三缺少参数的源码
根据提示可以知道,在项目属性/配置属性/调试/命令参数中输入必要的参数。
图四缺少参数的配置方法
此处输入可以是TrainModel:训练模式,此篇分析当为TrainModel时,如何配置相关参数。
或TestModel:测试模式
或Demo
或Demo XX.jpg(如 Demo1.jpg)
或Demo Img_Path.txt
四、下载必要的人脸数据库,生成Path_Images.txt。
参照一篇博文获取了4个人脸数据库,下载的时候挺麻烦的,链接到一个网站,还需要有账号,然后再跳转到百度云盘…
AFW人脸数据库:http://www.thinkface.cn/thread-1029-1-1.html
LFPW人脸数据库:http://www.thinkface.cn/thread-1032-1-1.html
Helen人脸数据库:http://www.thinkface.cn/thread-1030-1-1.html
IBUG人脸数据库:http://www.thinkface.cn/thread-1031-1-1.html
下载好之后,发现里面都是人脸图片以及相应的pts文件。现在需要做的是将这些照片的路径集合起来生成一个文件。如图
图五Path_Images.txt的路径示意
有的说下载的人脸数据库中自带这个路径文件,不过我没有。生成也很简单。如下图命令:可对训练集的图片进行路径汇总。生成的Path_Images.txt文件也在trainset文件夹下。
图六Path_Images.txt的路径生成命令
五、修改工程中一些文件的位置
LBP.cpp中的路径需要修改为自己的路径。由于此次是TrainModel,所以根据人脸数据库会生成新的模型文件。
modelPath就是指这个模型文件的路径。自己指定一个文件夹就行。
dataPath是人脸数据库中图片路径的集合,也就是Path_Images.txt的路径。这里写的Q4文件夹是因为在TrainModel读取的时候的方式是path = dataPath +trainDataName[i] + "/trainset/Path_Images.txt"。
其实这个路径问题可以自行灵活解决,科协相对路径,也可完全写死。It’s up toyou!
图七LBP.cpp中路径设置
图八TrainModel.cpp中路径设置
六、运行成功
运行过程中会有提示说明生成的随机森林到了多少层,每一层的landmark参数等等信息。这次不关心这些数据,几分钟之后程序运行完成,在我们指定的模型文件目录下,可以看到生成的模型文件。TrainModel的程序试运行就完美结束啦!有问题可以留言!
图九训练生成的模型文件