美文网首页程序员每天写1000字
centos + py3 + face-recognition

centos + py3 + face-recognition

作者: 18c3ad7caf58 | 来源:发表于2018-01-24 22:37 被阅读727次

    本次的文章记录的是,我在centos7上安装 python 开源库 face-recognition库的经历。
    face-recogition 号称是世界上最简单的人脸识别库。其基础便是dlib--C++写的一个人脸识别库,face-recognition对其进行了封装。用起来确实不错。但是对于py3,坑真的挺多。记录一下两天的爬坑日记,有时间还能自己来回顾一下。
    弱弱的说一句:感觉主流的人工智能库(人脸识别、图像组合等)对Ubuntu支持的好,基本没有centos的教程,sigh

    本次爬坑在centos7.3上进行 2c4g 腾讯云(4g以下,dlib根本装不上,洗洗睡吧)

    Step1

    安装Python3.6.x
    https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-local-programming-environment-on-centos-7

    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


    image.png

    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,大家有兴趣的去看一下吧~

    相关文章

      网友评论

        本文标题:centos + py3 + face-recognition

        本文链接:https://www.haomeiwen.com/subject/qpspaxtx.html