最近一个project要用到人脸检测(face detection),发现一个叫dlib的toolkit很好用,detect的灵敏度和marker点的准确度都比较高。
dlib在Ubuntu上安装编译比较方便,但因为我这个project的前半部分都在windows环境上,所以想要在windows上配置。
中途遇到了挺多问题,做个记录。
1、在GitHub上可以下载dlib(https://github.com/davisking/dlib);或者去dlib的主页上也可以下载(http://dlib.net/)。
2、dlib是一个C++ toolkit,包含很多machine learning的算法,我这里要用到的是里面python_examples下的face_landmark_detection.py。
3、首先要安装Boost,这是一个C++库(http://www.boost.org/users/history/),我下载的是Version 1.59.0。我电脑上已经安装了VS 2013,因此它会用VS 2013进行编译,在C:Program Files (x86)Microsoft Visual Studio 12.0Common7目录下可以找到VS2013开发人员命令提示,可以在这里编Boost。
但是双击打开后,却提示找不到安装位置:
我的VS2013安装的是64位的,安装位置在C:Program FilesMicrosoft Visual Studio 12.0,但是系统变量中的VS120COMNTOOLS值是:
而64位的Common7目录下并没有Tools的文件夹
所以即使将系统变量中的VS120COMNTOOLS的值改为Program Files路径下,仍然找不到Tools,所以我直接把Program Files (x86)目录下的Common 7中的Tools文件夹拷到了Program Files目录下的Common 7中,然后再打开VS2013开发人员命令提示就不会报错了:
然后在这个cmd界面中进入之前下载的Boost目录,执行bootstrap.bat,没有报错:
按照它的提示,运行 .2 进行编译,这一步要运行10分钟左右,没有报错,编译完成。
4、安装Python:我下载的是32位的Python 2.7.10(试过64位的Python,后面的步骤会出问题),安装完之后记得将安装路径加入到Path中:
新开一个命令行,在cmd中输入python,出现以下输出说明安装成功了。
5、按照dlib官网上的步骤,编译dlib的python接口:
接下来要运行dlib/python_examples里面的face_landmark_detection.py.
1、face_landmark_detection.py需要两个参数,“模型路径”和“图片目录路径”。
2、直接在cmd中运行的话,会出现报错:
缺少一个scikit-image的包,可以直接安装一个pip来下载。
3、安装pip:网上有get-pip.py的代码(http://download.csdn.net/detail/u012572945/8249275),直接用Python运行它就可以安装成功。
然后要记得把安装路径加到环境变量path中:
接下来新打开一个cmd,然后输入pip,出现如下结果说明配置成功:
4、然后可以直接用pip来下载scikit-image:
会有报错说缺少另一个包:numpy。
5、继续用pip安装:pip install numpy,然后又会提示缺少一个工具,并且提供了下载地址:
下载下来之后,按提示安装成功,再运行pip install numpy,这一步要等待一段时间,会出现如下输出:
说明安装成功。
6、继续pip install scikit-image:
又缺少一个scipy的python库。可以去下载一个scipy-0.10.0-win32-superpack-python2.7.exe(http://download.csdn.net/download/shiniantianlang/8007045)。
7、安装的时候会提示找不到python路径,但是环境变量中明明已经加了python路径,看到网上资料说可以先运行一个注册程序register.py(http://www.ithao123.cn/content-8406933.html):
然后再安装scipy就不会报错了。
、
8、这样就可以成功运行face_landmark_detection.py了,它会标记出68个marker点:
图片来自:http://tupian.baike.com/a0_68_18_16300001051406137869184233456_jpg.html?prd=zhengwenye_left_futu_miaoshu