机器学习_1之dlib库
最近在捣鼓机器学习的东西,在网上找到了一篇关于使用dlib库的博客,地址:http://blog.****.net/linolzhang/article/details/54411848
第一次接触dlib,按照linolzhang博主的方法操作出现了很多问题,觉得博主写的有点不是太详细,所以就想写一篇详细一点的,适合新手学习。本文一部分框架内容是复制linolzhang的内容(希望linolzhang不会介意,如果介意请及时与我联系,谢谢),只是过程更加具体详细一些。
Dlib 是一个机器学习库,采用C++编写(提供C++和Python接口),里面包含
许多常用机器学习算法。
Dlib 目前已更新到 V19.2。下载及文档可以参见 官网地址: http://www.dlib.net/ml.html
我用的平台:win10 64位操作系统,visual studio 2017 x64,dlib ver.19.4 ,cmake-3.9.0-rc5-win64-x64
一,编译
在官网下载dlib库并解压,通过CMake进行编译,选择源码位置(source code)和 编译位置(binaries)后,再依次选择configure->Generate进行编译和生成dlib.lib
选择configure并点击时,会出现配置窗口,由于我装的是visual studio 2017 x64,所以在specify the generator for this project选项中选的是visual studio 15 2017 win64
然后点击finish,出现configuring done后,再点击Generate,然后出现generating done,完成编译和生成。
用visual studio 2017打开编译文件E:\test\dlib_building下的project文件,然后在解决方案资源管理器中,右击dlib->重新生成,
重新生成结束后,在文件夹E:\test\dlib_building\dlib\Debug下,会生成一个dlib.lib文件
二,测试
dlib 提供了丰富的算法例子,包含
3D点云、SURF特征、贝叶斯分类、SVM、深度学习、多种回归
等算法,也包含Thread、Timer、XML、Socket、Sqlite 等 底层基本工具,有时间的话大家可以仔细跑一遍例子看看。
本文采用的是 Face LandmarkDetection人脸对齐的例子进行说明
人脸对齐的代码比较简单,通过注释也能够看到其采用的是 HOG+线性分类器,人脸对齐 采用了 2014年的一篇CVPR:
One Millisecond Face Alignment with an Ensemble of Regression Trees by Vahid Kazemi and Josephine Sullivan, CVPR 2014
对应的Face Landmark Detection事例代码在解压的dlib-19.4\examples文件夹下,此文件夹里有全部的算法例子。
在附加选项中,勾选空项目,再点击完成
右击源文件,添加->新建项目,或者添加->现有项目->选择example文件里面的face_landmark_detection_ex.cpp文件项目,本文是新建项目,然后把face_landmark_detection_ex.cpp文件里的代码全部复制过来
右击源文件,添加->现有项,选择E:\test\dlib-19.4\dlib\all文件夹下的source.pp文件
结束后源文件下有两个cpp文件,一个是source.pp文件,另一个是face_landmark_detection.cpp文件
然后点击 项目->Face Landmark Detection属性,打开属性页,配置项目属性
选择VC++目录,包含目录、引用目录和库目录都选择本文开始dlib-19.4解压的文件夹E:\test\dlib-19.4
打开C/C++,选择常规,在 附加包含目录里选择E:\test\dlib-19.4\dlib\external\libpng文件夹
打开C/C++,选择预处理器,在预处理器定义里,添加一下命令
_CONSOLE
DLIB_PNG_SUPPORT
DLIB_PNG_STATIC
DLIB_JPEG_STATIC
打开C/C++,选择命令行,在其他选项里添加一下命令
/bigobj
连机器->常规,在附加库里面选择dlib.lib所在的文件夹E:\test\dlib_building\dlib\Debug
连接器->输入,在附加依赖项里添加生成的dlib.lib
连接器->系统,在子系统里面选择 控制台 (/SUBSYSTEM:CONSOLE)
然后点击确定,完成属性配置
点击生成-重新生成解决方案
编译成功后,下载训练好的 模型文件(61M):shape_predictor_68_face_landmarks.dat.bz2
文件解压后放在生成的exe根目录下E:\test\Face Landmark Detection\Face Landmark Detection\x64\Debug,将 E:\test\dlib-19.4\examples\faces 文件夹也放在exe目录下,
再次打开Face Landmark Detection属性管理器页面,点击调试
修改工作目录为:$(SolutionDir)$(Platform)\$(Configuration)\
添加命令参数shape_predictor_68_face_landmarks.dat faces/2007_007763.jpg
点击确定后,运行程序(属性-调试-开始执行),看一下检测效果: