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


    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)
    

  • 相关阅读:
    pat 1027. Colors in Mars (20)
    pat 1035. Password (20)
    pat 1006. Sign In and Sign Out (25)
    pat 1031. Hello World for U (20)
    pat 1005. Spell It Right (20)
    pat 1002. A+B for Polynomials (25)
    pat 1008. Elevator (20)
    pat 1001. A+B Format (20)
    算法分析与设计实验四 密码算法
    Android通讯录管理(获取联系人、通话记录、短信消息)
  • 原文地址:https://www.cnblogs.com/brt2/p/14193733.html
Copyright © 2020-2023  润新知