【汇总】人脸识别项目集合


1. 基于OpenCV的人脸识别模型

一般安装过opencv后,配置文件的路径为: /usr/share/opencv4/haarcascades/haarcascade_frontalface_default.xml

import cv2

filepath = "test.jpg"
img = cv2.imread(filepath)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# OpenCV人脸识别分类器
# /usr/share/opencv4/haarcascades/haarcascade_frontalface_default.xml
classifier = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")

faceRects = classifier.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))
if len(faceRects):
    for faceRect in faceRects:
        x, y, w, h = faceRect
        cv2.rectangle(img, (x, y), (x + h, y + w), (0, 255, 0), 2)

cv2.imshow("image", img)
c = cv2.waitKey(10)
cv2.waitKey(0)
cv2.destroyAllWindows()

wechat: OpenCV 人脸识别简介 #代码#识别身份#训练过程

OpenCV 有三种人脸识别的算法:

  1. Eigenfaces: 是通过 PCA(主成分分析)实现的,它识别人脸数据集的主成分,并计算出待识别图像区域相对于数据集的发散程度(020k),该值越小,表示差别越小,0值表示完全匹配。低于4k5k都是相当可靠的识别。

  2. FisherFaces: 是从 PCA发展而来,采用更复杂的计算,容易得到更准确的结果。低于4k~5k都是相当可靠的识别。

  3. LBPH: 将人脸分成小单元,并将其与模型中的对应单元进行比较,对每个区域的匹配值产生一个直方图。它允许待检测人脸区域可以和数据集中图像的形状、大小不同,更方便灵活。参考值低于50则算是好的识别,高于80则认为比较差。

2. pypi: face_recognition

pypi: face_recognition

github: face_recongnition

知乎: Github开源人脸识别项目face_recognition

本项目是世界上最简洁的人脸识别库,你可以使用Python和命令行工具提取、识别、操作人脸。代码实现基于业内领先的C++开源库 dlib 中的深度学习模型,用 Labeled Faces in the Wild 人脸数据集进行测试,有高达99.38%的准确率。但对小孩和亚洲人脸的识别准确率尚待提升。

确定项目依赖:

face_recognition_models
Click>=6.0
dlib>=19.3.0
numpy
Pillow
scipy>=0.17.0

当然现在的项目在Jetson上运行效率很低,使用的是多核CPU运算,未能通过GPU提速。

2.1. 查找 & 定位人脸

import face_recognition
image = face_recognition.load_image_file("xxx.jpg")
face_locations = face_recognition.face_locations(image)

2.2. 识别人脸关键点

包括眼睛、鼻子、嘴和下巴:

import face_recognition
image = face_recognition.load_image_file("xxx.jpg")
face_landmarks_list = face_recognition.face_landmarks(image)

2.3. 识别人脸的身份

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)

posted @ 2020-12-26 18:22  brt2  阅读(536)  评论(0编辑  收藏  举报