您還可以用中文或韓語或日語閱讀此文件的翻譯版本。
從Python或命令行中識別和操縱面孔,並使用世界上最簡單的面部識別庫。
使用Dlib的最先進的面部識別建造,建立在深度學習中。該模型在野生基準中的標記面上的精度為99.38%。
這還提供了一個簡單的face_recognition
命令行工具,可讓您在命令行的圖像文件夾上進行識別!
查找圖片中出現的所有面孔:
import face_recognition
image = face_recognition . load_image_file ( "your_file.jpg" )
face_locations = face_recognition . face_locations ( image )
獲取每個人的眼睛,鼻子,嘴和下巴的位置和輪廓。
import face_recognition
image = face_recognition . load_image_file ( "your_file.jpg" )
face_landmarks_list = face_recognition . face_landmarks ( image )
查找面部特徵對於許多重要的東西非常有用。但是,您也可以將其用於真正愚蠢的東西,例如應用數字化妝(想想“ meitu”):
認識誰出現在每張照片中。
import face_recognition
known_image = face_recognition . load_image_file ( "biden.jpg" )
unknown_image = face_recognition . load_image_file ( "unknown.jpg" )
biden_encoding = face_recognition . face_encodings ( known_image )[ 0 ]
unknown_encoding = face_recognition . face_encodings ( unknown_image )[ 0 ]
results = face_recognition . compare_faces ([ biden_encoding ], unknown_encoding )
您甚至可以將此庫與其他Python庫一起進行實時識別:
請參閱此示例以獲取代碼。
用戶限制的共享Jupyter筆記本電腦演示(不正式支持):
首先,請確保您已經安裝了Python綁定:
然後,確保安裝了CMAKE:
brew install cmake
最後,使用pip3
(或python 2的pip2
)從PYPI安裝此模塊:
pip3 install face_recognition
另外,您可以使用Docker嘗試此庫,請參閱此部分。
如果您在安裝方面遇到麻煩,也可以嘗試預先配置的VM。
pkg install graphics/py-face_recognition
雖然Windows沒有正式支持,但有用的用戶發布了有關如何安裝此庫的說明:
安裝face_recognition
時,您將獲得兩個簡單的命令行程序:
face_recognition
識別照片或文件夾中的面孔,以獲取照片。face_detection
在照片或文件夾中查找圖片的面孔。 face_recognition
命令行工具face_recognition
命令使您可以在照片或文件夾中識別圖片中的面孔。
首先,您需要提供一個文件夾,其中一張您已經認識的每個人的圖片。每個人都應該有一個圖像文件,該文件根據圖片中的誰命名的文件:
接下來,您需要第二個文件夾,其中包含要標識的文件:
然後,您只需運行命令face_recognition
,傳遞已知人員的文件夾和帶有未知人員的文件夾(或單個圖像),它告訴您每個圖像中的誰:
$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person
每個面的輸出中有一行。數據通過文件名和發現的人的名稱進行了分配。
一個unknown_person
是圖像中的一張面孔,與您的知名人士文件夾中的任何人都不匹配。
face_detection
命令行工具face_detection
命令使您可以找到圖像中任何面的位置(像素坐標)。
只需運行命令face_detection
,將圖像文件夾傳遞以檢查(或單個圖像):
$ face_detection ./folder_with_pictures/
examples/image1.jpg,65,215,169,112
examples/image2.jpg,62,394,211,244
examples/image2.jpg,95,941,244,792
它為檢測到的每張臉打印一條線。報告的坐標是面部的頂部,右,底部和左側坐標(以像素為單位)。
如果您要為同一個人獲得多次匹配,則可能是照片中的人看起來非常相似,並且需要較低的公差價值來使面部比較更加嚴格。
您可以使用--tolerance
參數來做到這一點。默認公差值為0.6,較低的數字使面部比較更加嚴格:
$ face_recognition --tolerance 0.54 ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person
如果您想查看每場比賽計算的面部距離以調整公差設置,則可以使用--show-distance true
:
$ face_recognition --show-distance true ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama,0.378542298956785
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person,None
如果您只是想知道每張照片中的人的名字,但不在乎文件名,則可以這樣做:
$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/ | cut -d ' , ' -f2
Barack Obama
unknown_person
如果您擁有具有多個CPU內核的計算機,則可以並行進行面部識別。例如,如果您的系統具有4個CPU內核,則可以通過並行使用所有CPU內核來處理相同時間的4倍。
如果您使用的是Python 3.4或更新的,請傳遞--cpus <number_of_cpu_cores_to_use>
參數:
$ face_recognition --cpus 4 ./pictures_of_people_i_know/ ./unknown_pictures/
您也可以傳遞--cpus -1
以使用系統中的所有CPU內核。
您可以導入face_recognition
模塊,然後僅使用幾行代碼輕鬆地操縱面。超級簡單!
API文檔:https://face-recognition.readthedocs.io。
import face_recognition
image = face_recognition . load_image_file ( "my_picture.jpg" )
face_locations = face_recognition . face_locations ( image )
# face_locations is now an array listing the co-ordinates of each face!
請參閱此示例嘗試一下。
您也可以選擇加入基於深度學習的面部檢測模型。
注意:GPU加速度(通過NVIDIA的CUDA庫)才能通過此模型進行良好的性能。您還需要在補充dlib
時啟用CUDA支持。
import face_recognition
image = face_recognition . load_image_file ( "my_picture.jpg" )
face_locations = face_recognition . face_locations ( image , model = "cnn" )
# face_locations is now an array listing the co-ordinates of each face!
請參閱此示例嘗試一下。
如果您有很多圖像和GPU,也可以在批處理中找到面孔。
import face_recognition
image = face_recognition . load_image_file ( "my_picture.jpg" )
face_landmarks_list = face_recognition . face_landmarks ( image )
# face_landmarks_list is now an array with the locations of each facial feature in each face.
# face_landmarks_list[0]['left_eye'] would be the location and outline of the first person's left eye.
請參閱此示例嘗試一下。
import face_recognition
picture_of_me = face_recognition . load_image_file ( "me.jpg" )
my_face_encoding = face_recognition . face_encodings ( picture_of_me )[ 0 ]
# my_face_encoding now contains a universal 'encoding' of my facial features that can be compared to any other picture of a face!
unknown_picture = face_recognition . load_image_file ( "unknown.jpg" )
unknown_face_encoding = face_recognition . face_encodings ( unknown_picture )[ 0 ]
# Now we can see the two face encodings are of the same person with `compare_faces`!
results = face_recognition . compare_faces ([ my_face_encoding ], unknown_face_encoding )
if results [ 0 ] == True :
print ( "It's a picture of me!" )
else :
print ( "It's not a picture of me!" )
請參閱此示例嘗試一下。
所有示例都可以在此處找到。
如果您想創建一個獨立的可執行文件,該可執行文件可以運行而無需安裝python
或face_recognition
,則可以使用pyinstaller。但是,它需要一些自定義配置才能與此庫一起使用。請參閱此問題的問題。
face_recognition
的文章和指南如果您想了解面對面的位置和識別方式,而不是依賴黑匣子庫,請閱讀我的文章。
由於face_recognition
取決於用C ++編寫的dlib
,因此將其使用應用到Heroku或AWS等雲託管提供商的應用程序可能很棘手。
為了使事情變得更容易,此存儲庫中有一個Dockerfile的示例,該示例顯示瞭如何運行Docker容器中使用face_recognition
構建的應用程序。因此,您應該能夠部署到支持Docker圖像的任何服務。
您可以通過運行: docker-compose up --build
還有幾個預製的碼頭圖像。
Linux用戶使用GPU(驅動程序> = 384.81)和已安裝的NVIDIA-DOCKER可以在GPU上運行示例:打開Docker-compose.yml文件,並取消dockerfile: Dockerfile.gpu
和runtime and runtime: nvidia
lines:nvidia lines。
如果遇到問題,請在提交GitHub問題之前閱讀Wiki的常見錯誤部分。