机器学习_1之dlib库

来源:互联网 发布:知无涯者电影 百度云 编辑:程序博客网 时间:2024/05/22 05:27

最近在捣鼓机器学习的东西,在网上找到了一篇关于使用dlib库的博客,地址:http://blog.csdn.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文件夹下,此文件夹里有全部的算法例子。


打开visual studio 2017 x64,新建项目,选择建立的项目的位置E:\test\Face Landmark Detection\,项目名称:Face Landmark Detection,选择win32项目,点击确定并下一步


在附加选项中,勾选空项目,再点击完成


右击源文件,添加->新建项目,或者添加->现有项目->选择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


点击确定后,运行程序(属性-调试-开始执行),看一下检测效果:




原创粉丝点击