python安裝dlib庫的大坑
「看了某篇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


※python2.7爬蟲字元及BeautifulSoup使用過程中的節點定位問題
TAG:交叉學習 |