如何制作人脸识别(身份验证)程序?

How to make a face recognition(identification and verification) program?

因此,我使用 OpenCV2 在 Python 中为网络摄像头制作了人脸 检测 程序。但这只是 检测到 人脸,并没有 recognise/identify 它是谁。那么,如何训练我的程序识别是不是我?
到目前为止我的代码:


video = cv2.VideoCapture(0)

while True:
    check, frame = video.read()
    faces = face_cascade.detectMultiScale(frame,
                                          scaleFactor=1.1, minNeighbors=5)
    for x,y,w,h in faces:
        frame = cv2.rectangle(frame, (x,y), (x+w,y+h), (0,255,0), 3)

    cv2.imshow('Face Detector', frame)

    key = cv2.waitKey(1)

    if key == ord('q'):
        break

video.release()
cv2.destroyAllWindows()

我还想知道程序是否有办法告诉它如何检测 多张面孔?

您可以使用预训练的 openface 模型和 opencv 的 dnn 模块,从裁剪的人脸图像中获取特征向量,这可以很容易地与 L2 或余弦距离进行比较

从这里获取模型: https://storage.cmusatyalab.org/openface-models/nn4.small2.v1.t7

net = cv2.dnn.readNetFromTorch("nn4.small2.v1.t7")

# then, for each image:
blob = cv2.dnn.blobFromImage(img, 1./255, (96,96), (0,0,0), True, False)
net.setInput(blob)
feature = net.forward() # 128 floats

if cv2.norm(f1,f2) < 0.5:
    # SAME !!!