本次的文章記錄的是,我在centos7上安裝 python 開源庫 face-recognition庫的經歷。
face-recogition 號稱是世界上最簡單的人臉識別庫。其基礎便是dlib--C++寫的一個人臉識別庫,face-recognition對其進行了封裝。用起來確實不錯。但是對于py3,坑真的挺多。記錄一下兩天的爬坑日記,有時間還能自己來回顧一下。
弱弱的說一句:感覺主流的人工智能庫(人臉識別、圖像組合等)對Ubuntu支持的好,基本沒有centos的教程,sigh
本次爬坑在centos7.3上進行 2c4g 騰訊云(4g以下,dlib根本裝不上,洗洗睡吧)
Step1
sudo yum -y update
sudo yum -y install yum-utils
sudo yum -y groupinstall development
sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm
sudo yum -y install python36u
接下來就可以用python3.6 -V 看一下裝成功了沒。
Step2
安裝OpenBLAS
這個 搜索一下,找個tar包,解壓一下。make && make install 即可。很順利
Step3
安裝一些依賴包
sudo yum -y install boost-devel
Step4 給py3裝上face-recognition
pip3.6 install face-recognition
推薦使用pip清華源 速度杠杠的
pip3.6 install face-recognition -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn
華麗麗的坑,就來啦~~
坑1
dlib需要OpenBLAS依賴。如果你按照我的步驟來了,那么恭喜你,你不會碰到。(碰到了就來打我)
坑2
在安裝face-recognition的時候,dlib安裝耗時真的很長。當你等完這段時間以后(很開心有木有!)
在python shell里輸入:
>>> import face-recognition
.....
.....
.....
.....
ImportError: ........./python3.6/site-packages/dlib/dlib.so: undefined symbol: _ZN5boost6python6detail11init_moduleER11PyModuleDefPFvvE
這個錯誤的描述,當時看到,心就涼了半截。多年爬坑經驗告所我,谷歌也救不了我。
果然,我的判斷沒有錯。花了半小時在谷歌各種搜索,沒有得到任何答案。
只有兩個感覺:
1、為啥大家都只有ubuntu的教程!!!!
2、py3怎么了!!!說好的淘汰py2呢!!!
不過,作為一個優雅的虔誠的爬坑者,我們遇到這種事一定要優雅~
反復安裝了 18.100 和 19.x.x的多個dlib版本無果后,我不禁思考起了人生。
---------------一天后---------------
不過,天無絕人之路。
當你靜下心來看這段話:
undefined symbol: _ZN5boost6python6detail11init_moduleER11PyModuleDefPFvvE
好像并不是亂碼誒
關鍵字:boost python detail init_module ModuleDef
運行了如下命令后
ldd /project/face/lib64/python3.6/site-packages/dlib/dlib.so | grep boost
我們可以認為,其實有可能是Step3 安裝的lib_boost對應的是python2的版本(centos 默認安裝python2 有很多系統級應用需要,比如yum)
說干就干,我們去找個lib_boost的源碼包還不容易么。
解壓后,按如下步驟安裝(使用lib_boost版本1.5.3)
1、確認python 安裝路徑
whereis python
2、cd boost_1_53_0
./bootstrap.sh --with-python=/usr/bin/python --with-python-version=3.6 --with-python-root=/usr/lib/python3.6
sudo ./b2 --enable-unicode=ucs4 install
等待安裝完成后,我滿懷信心的:
import face-recognition
沒有成功!!!相同的報錯!!!
OH!!!NO!!!
我不信邪,我重新運行了一遍sudo ./b2 --enable-unicode=ucs4 install
我發現,控制臺輸出了一堆'fatal error: pyconfig.h: No such file or directory'
實際上,編譯根本沒有成功!
實際上只要添加:
export CPLUS_INCLUDE_PATH=/usr/include/python3.6m (include路徑下的)
再次運行sudo ./b2 --enable-unicode=ucs4 install
就沒有問題啦~~
兩天的坑,爬的還是很酸爽。祝大家好運~~
http://119.29.138.140/face_recognition_front/#/
這個demo,大家有興趣的去看一下吧~