由于某种不可抗力(又是它!)我写了这篇博客,主要目的是记录。
face_recognition是啥子?
face_recognition号称世界上最简单的人脸识别库,可使用 Python 和命令行进行调用。该库使用 dlib 顶尖的深度学习人脸识别技术构建,在户外脸部检测数据库基准(Labeled Faces in the Wild benchmark)上的准确率高达 99.38%。也提供了一个简单的face_recognition命令行工具,可以让你从命令行对图像文件夹进行脸部识别!
简单来说,主要实现以下几个功能:
- Find faces in pictures
- Find and manipulate facial features in pictures
- Identify faces in pictures
这里是GitHub主页及文档:
环境配置
readme有提到:
- Python 3.3+ or Python 2.7
- macOS or Linux (Windows not officially supported, but might work)
- dlib already installed with Python bindings
这里提一下第三点,意思是你的dlib库要安装Python模块。
- Python&pip环境:
Mac自带Python2.7.10,这个不管,安装Python3可以用brew install python
,默认安装Python3(带pip3)
如果用Python2的话是不会带pip的,因为后面需要用所以得安装pip2,使用sudo easy_install pip
安装,这里记住一定要用sudo权限。
Searching for pip
Reading https://pypi.python.org/simple/pip/
Best match: pip 10.0.1
pip的安装会自动匹配适合你的系统的版本,安装好之后可以查看一下pip信息:
localhost:~ mac$ pip --version
pip 10.0.1 from /Library/Python/2.7/site-packages/pip-10.0.1-py2.7.egg/pip (python 2.7)
- 安装dlib
我是用gitclone安装的:git clone https://github.com/davisking/dlib.git
下载之后按照步骤安装即可(没有cmake百度安装):
cd dlib/examples
mkdir build
cd build
cmake ..
cmake --build . --config Release
到这里只是安装好了默认的C++库,我们还需要安装Python模块:
cd dlib
sudo python setup.py install
python
import dlib
注意一定要进Python里面import:
完事之后重启一下终端。
- 安装face_recognition
用pip安装(install this module from pypi using pip3 (or pip2 for Python 2))pip2 install face_recognition
我默认环境是Python2,我就用pip2了。
然后就是等待,速度很慢,并且……
???下的慢也有错我也是无语了,这个问题的解决办法有两个:
- 加长超时时间:
pip --default-timeout=100 install -U pip
- 修改源(换成国内源):临时源,使用参数-i:
pip2 install face_recognition -i https://pypi.tuna.tsinghua.edu.cn/simple
先是使用了第一个方法,每秒几十K,还是超时了,所以建议大家直接用第二个办法,指定临时源,清华的超快!
别高兴的太早,看到红色部分的报错了吗?Permission Denied(拒绝访问),原因是在安装pillow的时候没有权限,所以我建议在安装之前使用sudo
或者再后面添加--user
(表示只是本用户安装)
看到Successfully installed Click-6.7 face-recognition-1.2.2 face-recognition-models-0.3.0
这就没错了。
check一下,使用命令行:
ENJOY!!!!
测试
下面我们来进行测试,按照readme实例,我们新建两个文件夹,一个放需要识别的人,一个放我们认识的人。
我们在命令行中输入命令:face_recognition ./known_people/ ./unknown_people/
等待几秒钟:
成功!
后面我又测试了几组,发现这个API对亚洲人种的识别并不是非常精确。