linux下安裝python dlib依賴

linux下安裝python dlib依賴

轉:https://www.cnblogs.com/freeweb/p/7699996.html

  dlib是主要用於機器學習的庫,封裝了機器學習算法,可以非常方便的實現比如人臉識別,車輛識別,物體檢測以其他很多功能,dlib默認使用C++進行開發,另外圖像識別有一部分支持python接口開發,上手非常快,因爲對於系統的安裝過程,都來自官方文檔的拼湊,網上資料很少,對新手會有一些坑,所以這裏主要說一下python依賴接口的安裝,服務器環境centos7.3,python版本2.7,下面是所有的依賴以及安裝順序:

  1. pip python模塊,下載地址:https://pypi.python.org/pypi/pip

  2. cmake編譯工具  之前文章有詳細的安裝過程

  3. Boost.Python  boost是一款非常流行的C++類庫,封裝了非常多好用的工具,Boost.Python其中一個組件,主要封裝了python和C/C++之間通信的API,比默認的python api更完善,dlib基於這個依賴進行交互,所以這裏需要編譯boost.python依賴

  4. dlib python模塊,前面環境都準備完畢,最後一步就是編譯並安裝dlib python擴展了

  dlib python模塊執行安裝時,過程是會基於cmake編譯工具和Boost.Python工具對dlib源碼進行編譯,最後將二進制模塊編譯至python庫目錄下,然後python就可以調用了,那下面開始安裝

  1. pip模塊

  pip模塊從上面網址下載下來,解壓開,直接執行python setup.py install即可,和普通模塊安裝一樣,沒什麼說的

  2. cmake編譯工具

  參考之前的文章 http://www.cnblogs.com/freeweb/p/5788729.html 安裝即可;如果沒有cmake工具,在安裝dlib時也會給出提示

  3. Boost.Python

  如果沒有boost python依賴,那麼下一步編譯dlib時,會給出明確的提示和操作步驟,如下:

  

  步驟其實都給出來了,按上面的步驟安裝即可,下面是具體過程:

  3.1.  下載boost庫

  boost官網:http://www.boost.org/,點擊右側的最新版下載即可:

  

  我這裏下載的是:boost_1_65_1.tar.bz2 大小80M左右

  3.2. 安裝boost庫

  下載之後開始安裝,首先解壓安裝包:

tar -jxvf boost_1_65_1.tar.bz2
cd boost_1_65_1/

  然後按照上面圖片的步驟和官網文檔的步驟安裝:

./bootstrap.sh --prefix=/monchickey/boost --with-libraries=python
./b2
./b2 install

  上面的參數解釋:

      1. --prefix是指定安裝的位置,如果不加默認是安裝在/usr/local和系統庫混合,這樣後面比較省事,但是手動指定目錄便於對庫進行管理,不過後期要配置一些東西,下面會說到.

      2. python支持編譯:--with-libraries=python 這裏意思是僅安裝python的庫,其餘的都不安裝,對於dlib來說就是夠用即可,但是如果需要編譯全部庫--with-libraries參數需要留空,也就是不加,文檔中具體有寫到,此時編譯python要使用--with-python參數來專門指定,python2只使用參數:--with-python=python即可,其餘的都默認,python3要使用--with-python=PYTHON3_HOME以及其他參數都指定詳細,另外有篇文章是專門編譯python3的,可以參考;

     根據上面說的,如果需要編譯boost全部依賴以及python 2.x的話,則使用下面的命令:

./bootstrap.sh --prefix=/monchickey/boost --with-python=python
./b2 && ./b2 install

     上面編譯和安裝過程需要等待挺長時間,完了之後進入安裝目錄,會看到只有兩個目錄,一個是include主要是存放頭文件和源代碼文件,另一個是lib,也就是我們編譯好的python相關依賴,如下(備註: 這裏因爲僅編譯python庫, 所以比較少):

  

  到這裏boost.python依賴就算安裝完成了

  4. 最後編譯dlib python模塊

  dlib庫官網地址:http://dlib.net/ml.html 進入後點擊左下側按鈕直接下載即可:

  

  這裏下載的是:dlib-19.7.tar.bz2,首先在指定位置解壓:

tar -jxvf dlib-19.7.tar.bz2
cd dlib-19.7/

  進入目錄後會看到setup.py,如果上面boost.python安裝到系統目錄下的話,那麼現在直接安裝應該就可以了,如果是自定義目錄,這時候安裝仍然會報錯提示找不到boost python庫,其實是cmake找不到boost,這時候先不要急着配置系統庫建軟鏈,而是要配置環境變量,目的是讓cmake找到boost即可,首先執行 vim /etc/profile 然後在最後一行加上: export BOOST_ROOT=/monchickey/boost 指定boost根目錄,如下:

  

  配置好之後,執行 source /etc/profile 使環境變量生效,接下來就可以執行安裝了:

python setup.py install --yes USE_AVX_INSTRUCTIONS

  這裏後面加這個參數是爲了支持CPU AVX指令集,這樣可以提升程序運行的性能,目前一般CPU都支持;等一會就安裝完成了,安裝完成之後運行 python 進入交互式界面,輸入 import dlib 如果正常就成功了,不過如果boost庫安裝的不是默認目錄,仍然會出問題即libboost_python.so找不到的錯誤,原因是導入編譯好的dlib模塊時,同時dlib運行時又會加載boost.python庫,這時候系統搜索不到所以會報錯,這和剛纔cmake報錯是不同的,這個時候不要將剛纔的boost庫文件放到python庫下面,只有編譯成可以被python直接調用的庫才放在python目錄下面,而基於C的python庫,運行時依賴的是系統庫搜索路徑,應該是/usr/lib,/usr/lib64這些,所以這時候解決方法有以下兩種:

  1). 將/monchickey/boost/lib中的so模塊建立軟鏈接到/usr/lib64下面

  2). 利用配置文件/etc/ld.so.conf加載新的庫搜索路徑

  這裏使用第二種方法,首先執行 vim /etc/ld.so.conf.d/boost.conf 新建配置文件,然後加入一行:/monchickey/boost/lib 保存並退出,

  然後執行命令: ldconfig 使配置生效,這樣指定的鏈接庫就被加到運行時搜索目錄了

  現在再次導入dlib模塊就正常了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章