“看了某篇python搞人脸检测的文章,自己也想弄一个,于是乎碰到了dlib安装这个大坑,决定讲一下自己的解决过程供大家参考”
01
—
关于dlib
下面是相关网站上对dlib库的介绍:
dlib是C++编译库文件,它包含许多机器学习算法和工具,在工业和学术领域均被广泛运用,比如机器人、嵌入式设备、移动手机以及大量高性能计算场景。
dlib提供如下内容:
一、机器学习算法
1、深度学习
2、基于传统SMO(sequential minimal optimization)算法的支持向量机做分类和回归
3、大规模分类和回归应用中的降秩方法,这个在淘宝等大型商业应用中非常广泛
4、用于分类和回归的关联向量机
5、基于通用目标的多类别分类工具(General purpose multiclass classification tools)
6、多类别支持向量机
7、解决与结构化支持向量机相关联的优化问题的一个工具
8、用于序列贴标签的结构化支持向量机
9、解决指派/分配问题的结构化支持向量机
10、用于图像目标检测的结构化支持向量机工具以及更强大但性能较慢的基于深度学习的目标检测工具
11、基于图的给节点打标签的结构化支持向量机工具
12、大规模的基于支持向量机的排序实现(这个90年代就有了,现在估计有不少新的rank lib了)
13、在线kernel RLS regression算法
14、在线SVM分类算法
15、半定矩阵学习(semidefinite metric learning)
16、在线基于核的中心估计/新奇检测(novelty detector:参考附录链接)/离线的SVM one-class 分类(参考附录链接)
17、聚类算法:线性的、基于核的k-均值、Chinese Whispers和纽曼聚类(Newman clustering)
18、RBF网络(Radial Basis Function Networks,见附录)
19、多层感知器(Multi Layer perceptrons)
二、数值算法
三、图模型接口算法
四、图片处理
五、线程
六、网络
七、图形用户接口
八、数据压缩与集成算法
九、算例测试工具
等等,内容太多,未能详细翻译,有兴趣的可以一起探讨,总体感觉功能很强大。
02
—
安装dlib(1)
在网上浏览了一下,python安装库dlib时出问题的不在少数,而且问题出奇的一致,某些人甚至被折磨了三天三夜。如下图:
针对这个错误,大多数人认为是因为dlib库依赖于cmake和boost库,并且因为dlib是基于c++编译的,还需要一个g++编译器。
一、第一次尝试
1、直接在python的terminal终端中执行python3 -m pip install boost和python3 -m pip install cmake,均提示安装成功
2、执行python3 -m pip install dlib,仍然出现上述错误,猜想可能是没安装c++编译器的原因。但因为发现了一种更直接的方式,便没有继续尝试,有兴趣的朋友可以尝试下。
二、第二次尝试
1、直接在官网上下载编译好的cmake(https://cmake.org/files/v3.10/cmake-3.10.2-win32-x86.msi)、boost的zip文件(https://sourceforge.net/projects/boost/files/latest/download)。
2、在GitHub上可以下载dlib(https://github.com/davisking/dlib);或者去dlib的主页上也可以下载(http://dlib.NET/)。
2、在boost中找到boost_python-vc120-mt-1_61.dll和boost_python-vc120-mt-gd-1_61.dll两个文件,复制到python的安装目录下。
3、运行cmake的.msi,生成如下图结构的文件
在运行.msi的过程中,注意选择add cmake to path选项,实在忘记了手动添加bin目录到path也ok。
4、使用pycharm的terminal终端,cd到dlib-master的目录下,执行python setup.py install
很不幸,弹出如下错误:
再次在dlib-master目录下执行python3 setup.py install,仍然出现同样的错误,提示Cmake必须指定使用cl compiler。
针对以上问题,在stackoverflow上发现如下解释:
意思是Cmake在windows中默认使用了NMake generator,要使用它必须从命令行赋予合适的build选项运行才行,如果安装了VS,Cmake就会自动发现并使用VS generator,看来是这个问题。
问题来了,VS安装动不动就4,5个G,我既然安装了利用MinGW Installer安装了
各种编译器,直接指定不就好了嘛。
下图提供了一种方法:
试验若干次,无奈dlib整个文件结构较多,CmakeLists.txt这个文件有好几个,不太清楚怎么配置CMAKE_CXX_COMPILER和CMAKE_C_COMPILER,以失败而告终。
03
—
安装dlib(2)
就在要摔电脑的时候,发现了一个shortcut,感谢知乎大神Snowing ST。
直接到官网上去下载:
然后直接命令行操作如下图:
搞定。
好了,现在可以开始试试人脸检测了!
总结:
1、python安装复杂的包时,有现成的whl就千万别直接联网安装,下载之后离线安装更保险,能避免不少依赖错误。
2、原来Cmake中间还有这么多窍门,光是generator的种类就五花八门,其实生成的.whl文件就是用Cmake制作的,如果有想用C或C++制作库然后再python中使用的话,可以用Cmake转成二进制文件拿来用。
3、解决安装dlib(1)中遇到的问题可以直接安装VS,不使用默认的NMake,听说很多人都解决了。
参考网址:
dlib介绍:http://dlib.net/
dlib下载地址:https://pypi.python.org/pypi/dlib/18.17.100#downloads
Cmake中generators介绍:https://cmake.org/cmake/help/v3.3/manual/cmake-generators.7.html
新奇检测(novelty detector):http://www.dataivy.cn/blog/%e6%96%b0%e5%a5%87%e6%a3%80%e6%b5%8bnovelty-detection/
RBF网络:https://en.wikipedia.org/wiki/Radial_basis_function
领取专属 10元无门槛券
私享最新 技术干货