由於某種不可抗力(又是它!)我寫了這篇博客,主要目的是記錄。
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對亞洲人種的識別並不是非常精確。