怎樣用3分鐘搭建 Python 人臉識別系統
最近更新時間 2021-01-05 14:01:04
Face Recognition 使用的是 C++ 開源庫 dlib 通過深度學習模型構建的先進人臉識別系統,可通過 Python 接口或命令行工具對圖片中的人臉進行識別。在 Labeled Faces in the Wild 人臉數據集中進行測試,準確率高達99.38%。可以使用 Face Recognition 軟件包快速搭建人臉識別系統。
安裝
使用 pip 命令安裝 face_recognition 軟件包,官方支持 Mac 和 Linux 系統,另外也支持在樹莓派上安裝。如果系統中沒有 CMake 安裝時可能報錯,按錯誤提示解決即可。
pip install face_recognition
Successfully built dlib face-recognition-models Installing collected packages: Pillow, numpy, face-recognition-models, dlib, Click, face-recognition Successfully installed Click-7.1.2 Pillow-8.1.0 dlib-19.21.1 face-recognition-1.3.0 face-recognition-models-0.3.0 numpy-1.19.4
示例一:識別圖片中的人臉
下面的示例中使用 face_locations 方法獲取圖片中人臉的位置,再根據位置在原圖上畫框。
# coding=utf-8
"""
測試識別圖片中的人臉
"""
from PIL import Image, ImageDraw
import face_recognition
# 加載圖片
image = face_recognition.load_image_file("unknown.jpg")
# 識別人臉,返回位置座標
# 返回結果為列表,座標數據 (top, right, bottom, left)
face_locations = face_recognition.face_locations(image)
# 創建圖片用於顯示識別效果
pil_image = Image.fromarray(image)
d = ImageDraw.Draw(pil_image)
for face_location in face_locations:
# 根據人臉識別的座標畫框
top, right, bottom, left = face_location
d.rectangle(((left, top), (right, bottom)), outline=(255, 0, 0), width=3)
# 顯示圖片
pil_image.show()
# 保存為新文件
# pil_image.save("output.jpg")
輸出結果如下下圖所示:
示例二:提取面部關鍵點
下面的示例使用 face_landmarks 函數獲取圖片中面部特徵位置(如眼睛、鼻子等)信息。
# coding=utf-8
"""
測試識別面部關鍵點
"""
from PIL import Image, ImageDraw
import face_recognition
# 加載圖片
image = face_recognition.load_image_file("unknown.jpg")
# 獲取圖片中面部特徵位置
face_landmarks_list = face_recognition.face_landmarks(image)
# 創建圖片用於顯示識別效果
pil_image = Image.fromarray(image)
d = ImageDraw.Draw(pil_image)
for face_landmarks in face_landmarks_list:
# 根據特徵位置在原圖上畫線
for facial_feature in face_landmarks.keys():
d.line(face_landmarks[facial_feature], width=5)
# 顯示圖片
# pil_image.show()
# 保存為新文件
pil_image.save("output.jpg")
輸出結果如下下圖所示:
Face Recognition 還可用於人臉比對,視頻人臉識別等。