zoukankan      html  css  js  c++  java
  • OpenCV3与深度学习实例:Dlib+VGG Face实现两张脸部图像相似度比较

    原文:https://my.oschina.net/wujux/blog/2221444

    实现思路:

    1、使用Dlib识别并提取脸部图像

    2、使用VGG Face模型提取脸部特征

    3、使用余弦相似度算法比较两张脸部图像的特征

    代码如下:

    import time
    import numpy as np
    import sklearn
    import sklearn.metrics.pairwise as pw
    import cv2
    import dlib
    
    prototxt = 'datas/models/caffe/vgg-face/vgg_face_caffe/vgg_face_caffe/VGG_FACE_deploy.prototxt'
    caffemodel = 'datas/models/caffe/vgg-face/vgg_face_caffe/vgg_face_caffe/VGG_FACE.caffemodel'
    dlib_model = 'datas/models/dlib/shape_predictor_68_face_landmarks.dat'
    detector = dlib.get_frontal_face_detector()
    predictor = dlib.shape_predictor(dlib_model)
    net = cv2.dnn.readNetFromCaffe(prototxt, caffemodel)
    
    faces1 = get_faces('datas/images/face-tests/fanbb/f16.jpg')
    faces2 = get_faces('datas/images/faces/fanbb.jpg')
    for i,face in enumerate(faces1):
        cv2.imshow('face1_%d' % i,face)
    
    for i,face in enumerate(faces2):
        cv2.imshow('face2_%d' % i,face)
    
    face_1 = faces1[0]
    face_2 = faces2[0]
    
    result = compare_faces(face_1,face_2)
    print('prob of similarity:',result)
    cv2.waitKey()
    cv2.destroyAllWindows()

    第一张图像与第二张图像人脸的相似度为:0.8697828

    第一张图像与第三张图像人脸的相似度为:0.998867

    第一张图像与第四张图像人脸的相似度为:0.00211427

    以上测试图像来源网络,仅作程序演示使用,如有侵权,请告知删除。

  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
  • 原文地址:https://www.cnblogs.com/Ph-one/p/12033818.html
Copyright © 2011-2022 走看看