前段时间看了看python和face_recognition,用来识别人脸和对比人脸,发现在centos上安装face_recognition还是费了点小劲挖了点小坑的,曲曲折折东拼西凑到处查资料终于鼓捣好了,特记录一下;
在centos上安装face_recognition大概分5步吧:
- 升级gcc和g++
- 升级cmake
- 安装python
- 安装dlib
- 安装face_recognition
1.升级安装gcc和g++
先查看下gcc的版本:
gcc -v
如果没有显示版本则说明centos没安装gccg++,需要安装:
yum install gcc gcc-c++
升级到gcc9版本或者11版本:
yum install centos-release-scl
yum install devtoolset-9-gcc*
(使用yum install devtoolset-11-gcc*可以升级到11)
找到gcc的安装位置(为了创建软连接,可能需要访问权限):
find /usr -name g++
find /opt -name g++
通常安装目录在/usr/bin/g++和/opt/rh/devtoolset-9/root/usr/bin/g++,如果没搜到就find / -name g++全部搜索,会比较慢;
然后备份旧的gcc并创建新的链接(我的centos上面旧的gcc版本是4.8.5):
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-9/root/usr/bin/gcc /usr/bin/gcc
ln -s /opt/rh/devtoolset-9/root/usr/bin/g++ /usr/bin/g++
备份旧的cc和c++并创建新的链接:
mv /usr/bin/cc /usr/bin/cc-4.8.5
mv /usr/bin/c++ /usr/bin/c++-4.8.5
ln -s /usr/bin/gcc /usr/bin/cc
ln -s /usr/bin/g++ /usr/bin/c++
最后可以再用 gcc -v 验证下版本,一般会显示类似 gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC);
2.安装或者升级cmake(root权限)
卸载旧版本的cmake:(可以先用cmake --version查看下旧版本)
yum remove cmake
安装EPEL软件源:
yum install epel-release
安装cmake 3.x版本:
yum install cmake3
创建链接:
ln -s /usr/bin/cmake3 /usr/bin/cmake
查看cmake版本:
cmake --version
通常会显示版本:
cmake3 version 3.17.5
CMake suite maintained and supported by Kitware (kitware.com/cmake).
(如果安装了多个版本的cmake,依旧显示其他版本的cmake,有可能是环境变量先读取了其他版本的cmake,可以修改~/.bashrc配置文件,添加export PATH=/usr/bin:$PATH,调整环境变量的读取顺序,然后执行 source ~/.bashrc 使配置生效)
也可以手动下载编译安装cmake:
yum install wget
yum install openssl-devel
使用wget下载cmake源码:
wget https://cmake.org/files/v3.23/cmake-3.23.2.tar.gz
解压源码:
tar -zxf cmake-3.23.2.tar.gz
(可能需要赋予权限chmod 755 cmake-3.23.2.tar.gz)
编译安装cmake:
cd cmake-3.23.2
./bootstrap
make && make install
3.安装python
先安装“_ctypes”模块:(重要,一定要在安装python前安装,否则需要安装完_ctypes模块重新安装python)
yum install libffi-devel -y
可能还要安装:
yum install python3-devel
使用官网下载的python源码包解压安装:
tar -zxvf Python-3.10.13.tgz
cd Python-3.10.13
./configure --prefix=/usr/local/python3
make && make install
(--prefix指定安装目录)
处理pip和python链接:(如果已经存在就先删除链接或者备份重命名)
ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
处理centos中依赖python2.7的文件:
vi /usr/bin/yum
vi /usr/libexec/urlgrabber-ext-down
将这两个文件中第一行的 #!/usr/bin/python 修改为 #!/usr/bin/python2 ,然后保存退出;
配置阿里云的pip源,在用户根目录下创建.pip/pip.conf文件夹的配置文件,并填入:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/[install]
trusted-host = mirrors.aliyun.com
4.安装dlib
可以直接用pip安装:(使用pip直接安装face_recognition的时候应该会自动安装依赖的dlib模块)
pip install dlib
也可以手动下载源码安装,先去官网下载dlib-19.24.2.tar.gz,然后解压安装:dlib C++ Library
tar -zxvf dlib-19.24.2.tar.gz
cd dlib-19.24.2
python setup.py install
5.安装face_recognition
直接用pip安装:
pip install face_recognition
或者去手动下载安装:ageitgey/face_recognition: The world's simplest facial recognition api for Python and the command line (github.com)
可能需要安装的库:
yum install libjpeg* zlib libtiff