python3.7下安装dlib模块(神坑)
最近在学python的机器学习,深度学习,打算往人工智能方面发展,工欲善其事必先利其器,学习之前就需要用到很多机器学习的库,像什么Tensorflow,OpenCV,matplotlib,numpy,tqdm等等,常用的基本就这些,如果有特别的就用的时候现安。值得说的一点,上面这些包基本都可以正常通过
1 | pip install 包名 |
来安装,接下来就要说一个比较特别的库了,dlib。
一、dlib简介
dlib是一个包含机器学习算法的C++开源工具包。Dlib可以帮助您创建很多复杂的机器学习方面的软件来帮助解决实际问题。目前Dlib已经被广泛的用在行业和学术领域,包括机器人,嵌入式设备,移动电话和大型高性能计算环境。
Dlib是开源的、免费的;官网和git地址:
1 | # 官网 |
Dlib的主要特点:
1.文档齐全
不像很多其他的开源库一样,Dlib为每一个类和函数提供了完整的文档说明。同时,还提供了debug模式;打开debug模式后,用户可以调试代码,查看变量和对象的值,快速定位错误点。另外,Dlib还提供了大量的实例。
2.高质量的可移植代码
Dlib不依赖第三方库,无须安装和配置,这部分可参照(官网左侧树形目录的how to compile的介绍)。Dlib可用在window、Mac OS、Linux系统上。
3.提供大量的机器学习 / 图像处理算法
- 深度学习
- 基于SVM的分类和递归算法
- 针对大规模分类和递归的降维方法
- 相关向量机(relevance vector machine);是与支持向量机相同的函数形式稀疏概率模型,对未知函数进行预测或分类。其训练是在贝叶斯框架下进行的,与SVM相比,不需要估计正则化参数,其核函数也不需要满足Mercer条件,需要更少的相关向量,训练时间长,测试时间短。
- 聚类: linear or kernel k-means, Chinese Whispers, and Newman clustering. Radial Basis Function Networks
- 多层感知机
二、dlib安装
1.python3.6安装dlib(如果是这个版本的python,你就会很舒服…)
- 直接在pycharm中的settings->Project Interpreter点击+号选择19.6版本点击安装。
- cmd中输入正常安装低版本的均可成功
1
pip install dlib==19.6.1
2.python3.7安装dlib(艰难繁琐,耗时长)
1)首先介绍正常按完整步骤流程走下来的方法(亲自尝试)
I.安装VS,全称visualStudio,2015版本以上的均可,我下载的是2019最新版
下载vs后安装注意事项,有很多模块,我最开始是为了c#作业才安装的vs,故只安装了.net和通用windows平台开发,但从dlib介绍也能看出,要想用dlib需要的是c++编译环境,所以要安装c++的模块,而且可以修改安装位置(但还是会在系统盘里安装一些东西,由于后续如果你要安装其他的新模块也还会在你设置的位置,所以要找一个空间足够的硬盘):
编译boolst需要cl运行环境,我的是在E:\vs\VC\Tools\MSVC\14.22.27812\bin\Hostx64\x64,路径下是64,64的cl,上一级还有64,32,32,64,32,32一共四个cl网上说把根目录加入环境变量,为了后续的boost安装,效果类似于以下图片:
但我尝试了,32,64都用了cl环境正常,编译boost未成功。到安得那一步我详细说明下。
II.安装CMake
- 使用pip install cmake 安装 cmake 插件
- 或者直接在CMake官网下载 .msi 直接安装 或.zip解压安装,注意不要下上面带有(has \r\n line feeds)的压缩包,别问为什么,因为我就下的是那个,然后如果你感兴趣可以自己试试。
最后把cmake的bin路径配置到环境变量,.msi安装的过程中会有选框提示让你加入环境变量,在下一步下一步的时候注意一下即可,pip安装后路径在你python环境的Lib\site-packages中找到对应的cmake\bin对应添加环境变量
III.安装Boost(坑所在)
- 使用pip install boost 安装(如果不想踩坑推荐使用)
- 到Boost官网下载压缩包,然后解压到你要安装的位置。
踩坑开始:
进入boost根目录,然后运行bootstrap.bat文件(如果配置了cl.exe)可能就会生成b2.exe、bjam.exe以及project-config.jam。反正我是没成功,而且bat是闪退的还看不清什么报错,但所幸他提供了一个log文件可以看到错误原因。
如果你cl环境没问题的话大概的错误就是类似于这种什么什么不包括路径集1
main.cpp(8) : fatal error C1034: windows.h: 不包括路径集。
其实官方运行cl的方法是在运行cl之前执行了一个bat脚本D:\EEProgram\vsdesktop\Common7\Tools\VsDevCmd.bat,这个脚本设置了一些环境变量,除了path,重要的环境变量是INCLUDE和LIB。INCLUDE中的路径是编译时需要的.h文件的路径,具体原因可参见从”fatal error C1034: 不包括路径集“学到的内容
说一下我的解决办法,既然系统执行机制跟我们不一样,那就在vs命令窗口中运行吧,打开vs->工具->命令行->开发者命令提示,然后cd到Boost的目录,在命令行中运行bootstrap.bat文件,发现依旧会出错,
Failed to build Boost.Build engine.
Please consult bootstrap.log for further diagnostics.
查看bootstrap.log日志文件
日志文件里写道:Unknown toolset: vcunk
查看了一下bootstrap.bat的代码,发现有这么一行
所以要添加一个参数使用bootstrap.bat vc14或者vc141
然后即可成功生成b2.exe、bjam.exe以及project-config.jam
然后当前目录命令行(还是在vs的命令行窗口下)运行 b2 install(这个过程要等待很长时间才能完成,大约要2小时,确保电脑电量可以支撑)
中间会出现一些waring警告,类似什么编码不符,建议保存Unicode什么的,不用管。
然后漫长的等待之后 成功
最后执行然后几分钟结束后会在最后两行提示你将两个环境变量加入系统环境变量配置1
b2 -a --with-python address-model=64 toolset=msvc runtime-link=static
我发现说到底也就是要这几个东西,甚至我觉得都不用b2 install,直接执行第二个命令即可1
2set BOOST_ROOT=D:\boost_1_70_0
set BOOST_LIBRARYDIR=D:\boost_1_70_0\stage\lib
IV.安装dlib
- 先在python官网下载好dlib压缩包由于没有cp37的.whl文件,所以手动下载,然后解压cmd进入解压后的目录,Ctrl+F找到CMakeCache.txt,如果没有不用理会,有就删掉
接着输入pyhton setup.py install进行安装 - 直接在pycharm中点击+号添加或者pip install dlib安装
2)介绍三步走流程安装dlib包
I.同样需要安装vs
II.pip install CMake 然后添加入环境变量
III.pip install Boost
最后直接安装pip install dlib,会卡一段时间大概20分钟左右,然后,然后就successful了…
最后,我看了一眼我的Anaconda,脏话#¥%&@!^