精华内容
下载资源
问答
  • Python人脸相似度对比

    2018-11-08 16:08:05
    Python直接使用模型,实现一个简易版的人脸对比,非常有趣!
  • python 人脸对比--百度API人脸相似度识别(超简单)

    万次阅读 多人点赞 2019-03-23 22:08:56
    说明:这篇是写使用百度人脸识别API进行人脸相似度识别对比,如 给两个人物照片,判断是否是同一个人。简单的4步完成。 1,获取百度人脸识别API的API Key和Secret Key。 使用百度账号登录百度AI平台,网址:...
    说明:这篇是写使用百度人脸识别API进行人脸相似度识别对比,如 给两个人物照片,判断是否是同一个人。简单的4步完成。
    1,获取百度人脸识别API的API Key和Secret Key。(10分钟内完成)

    使用百度账号登录百度AI平台,网址:http://ai.baidu.com/tech/face,
    若没有直接注册一个账号。登录后需要点击“创建应用”填写命名一下,完成后返回,点击“管理应用”,就可以看到已经申请的[应用名称、AppID、API Key、Secret Key].

    2,获取Access Token

    1.向授权服务地址:https://aip.baidubce.com/oauth/2.0/token?发送请求 并在此URL后带上以下参数:
    · grant_type: 必须参数,固定为client_credentials;
    · client_id: 必须参数,应用的API Key;
    · client_secret: 必须参数,应用的Secret Key;
    例如:你申请的API Key是Va5yQRHlA4Fq5eR30vV4,
    Secret Key是0rDSjzQ20XUj5itV6WRtznPQSzr5pV,进行如下拼接:

    https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR30vV4&client_secret=0rDSjzQ20XUj5itV6WRtznPQSzr5pV
    此url 为向授权服务请求的完整地址,先命名为 api1
    

    2,获取access_token的完整内容

     response=requests.get(api1)
     print( response)
     # 打印结果如下:
     { "refresh_token":   "25.b55fe1d287227ca97aab219bb249b8ab.315360000.1798284651.282335-8574074",
    "expires_in": 2592000,
    "scope": "public wise_adapt",
    "session_key": "9mzdDZXu3dENdFZQurfg0Vz8slgSgvvOAUebNFzyzcpQ5EnbxbF+hfG9DQkpUVQdh4p6HbQcAiz5RmuBAja1JJGgIdJI",
    "access_token": "24.6c5e1ff107f0e8bcef8c46d3424a0e78.2592000.1485516651.282335-8574074",
    "session_secret": "dfac94a3489fe9fca7c3221cbf7525ff"      } 
    # 我们需要其中的 access_token 
    

    3, 人脸匹配相似度的地址:“https://aip.baidubce.com/rest/2.0/face/v3/match

    # 2,获取token值,拼接API
    import requests
    def get_token():
        response=requests.get(api1)
        access_token=eval(response.text)['access_token']   #eval函数将字符串转化为字典
        api2="https://aip.baidubce.com/rest/2.0/face/v3/match"+"?access_token="+access_token
        return api2
    
    3,读取图片数据
    import base64
    import json
    def read_img(img1,img2):                        #  两个图片参数
        with open(img1,'rb') as f:                  # 读取图片数据
            pic1=base64.b64encode(f.read())         # 图片数据编码为base64格式数据
        with open(img2,'rb') as f:
            pic2=base64.b64encode(f.read())
        params=json.dumps([                          # 将字典数据转化为字符串 
            {"image":str(pic1,"utf-8"),"image_type":'BASE64',"face_type":"LIVE"},
            {"image":str(pic2,"utf-8"),"image_type":'BASE64',"face_type":"IDCARD"}
        ])
        return params`在这里插入代码片`
    
    4,发起请求拿到对比结果
    def analyse_img(file1,file2):
        params=read_img(file1,file2)                 # 调用第一个函数的结果api
        api=get_token()                              # 调用第二个函数的图片数据
        content=requests.post(api,params).text       # 获取对比详细结果
        print(content)
        
    analyse_img("zly01.jpg","zly02.jpg"):            # 找的两张 赵丽颖的照片
      
    # 打印content内容如下:
    {"error_code":0,"error_msg":"SUCCESS","log_id":1345050733350687141,"timestamp":1553335068,"cached":0,
    "result":{"score":95.51683807,"face_list",[{"face_token":"938e0c197a7f53d9eced7551c6cd6c50"},{"face_token":"81ab41769b6fc5877d944415e380e326"}]}}
    # 我们需要的是"score":95.51683807",相似度95.5,可以确认是同一个人。
    

    找的图片:赵丽颖2张(zly01.jpg,zly02.jpg),刘亦菲一张(lyf01.jpg)
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    完整代码:
    import requests
    import base64
    import json
    # 1,准备好申请的人脸识别api,API Key, Secret Key
    api1=“https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR30vV4&client_secret=0rDSjzQ20XUj5itV6WRtznPQSzr5pV”
    # api2="https://aip.baidubce.com/rest/2.0/face/v3/match"
    
    # 2,获取token值,拼接API
    def get_token():
        response=requests.get(api1)
        access_token=eval(response.text)['access_token']
        api2="https://aip.baidubce.com/rest/2.0/face/v3/match"+"?access_token="+access_token
        return api2
    
    # 3,读取图片数据
    def read_img(img1,img2):
        with open(img1,'rb') as f:
            pic1=base64.b64encode(f.read())
        with open(img2,'rb') as f:
            pic2=base64.b64encode(f.read())
        params=json.dumps([
            {"image":str(pic1,"utf-8"),"image_type":'BASE64',"face_type":"LIVE"},
            {"image":str(pic2,"utf-8"),"image_type":'BASE64',"face_type":"IDCARD"}
        ])
        return params
    
    # 4,发起请求拿到对比结果
    def analyse_img(file1,file2):
        params=read_img(file1,file2)
        api=get_token()
        content=requests.post(api,params).text
        # print(content)
        score=eval(content)['result']['score']
        if score>80:
            print('图片识别相似度度为'+str(score)+',是同一人')
        else:
            print('图片识别相似度度为'+str(score)+',不是同一人')
    
    analyse_img("zly01.jpg","zly02.jpg")
    
    # 打印执行结果:图片识别相似度度为88.23068237,是同一人
    # 换图片zly02.jpg和lyf01.jpg:图片识别相似度度为29.28668785,不是同一人
    
    
    展开全文
  • python 人脸相似度计算

    2021-08-19 19:38:08
    python 人脸相似度计算 余弦定理和欧式定理,这里我写的是余弦定理方法。 原理为向量 相似度计算 余弦相似度(cosine) pip install numpy def compute_cosine_distance(v1, v2): ''' 计算人脸特征的余弦相似度...

    python 人脸相似度计算

    • 余弦定理和欧式定理,这里我写的是余弦定理方法。
    • 原理为向量 相似度计算
    • 余弦相似度(cosine)
      在这里插入图片描述
    • pip install numpy
    def compute_cosine_distance(v1, v2):
        '''
        计算人脸特征的余弦相似度
        '''
        assert len(v1) == len(v2), "length of vector1 must equal vector2"
        v1 = np.array(v1)
        v2 = np.array(v2)
        d = v1 * v2
        v12 = sum(v1 ** 2)
        v22 = sum(v2 ** 2)
        return sum(d) / (np.sqrt(v12) * np.sqrt(v22) + 1e-5)
    
    
    if __name__ == '__main__':
        v1 = [0.072754, 0.06665, 0.032959] # 人脸往往是128或512
        v2 = [0.072754, 0.06665, 0.032959] 
        print(compute_cosine_distance(v1, v2))
    
    out:  0.9990767807048893
    
    展开全文
  • Python实现一个简单的——人脸相似度对比

    万次阅读 多人点赞 2018-11-08 15:58:58
    近几年来,兴起了一股人工智能热潮,让人们见到了AI的能力和强大,比如图像识别,语音识别,机器翻译,无人驾驶等等。...今天就和大家交流下如何实现一个简易版的人脸对比,非常有趣! 整体思路: 1、预先导入...

    近几年来,兴起了一股人工智能热潮,让人们见到了AI的能力和强大,比如图像识别,语音识别,机器翻译,无人驾驶等等。总体来说,AI的门槛还是比较高,不仅要学会使用框架实现,更重要的是,需要有一定的数学基础,如线性代数,矩阵,微积分等。

    幸庆的是,国内外许多大神都已经给我们造好“轮子”,我们可以直接来使用某些模型。今天就和大家交流下如何实现一个简易版的人脸对比,非常有趣!

    整体思路:

    1、预先导入所需要的人脸识别模型;

    2、遍历循环识别文件夹里面的图片,让模型“记住”人物的样子;

    3、输入一张新的图像,与前一步文件夹里面的图片比对,返回最接近的结果。

    使用到的第三方模块和模型:

    1、模块:os,dlib,glob,numpy;

    2、模型:人脸关键点检测器,人脸识别模型。

    第一步:导入需要的模型。

    这里解释一下两个dat文件:

    它们的本质是参数值(即神经网络的权重)。人脸识别算是深度学习的一个应用,事先需要经过大量的人脸图像来训练。所以一开始我们需要去设计一个神经网络结构,来“记住”人类的脸。

    对于神经网络来说,即便是同样的结构,不同的参数也会导致识别的东西不一样。在这里,这两个参数文件就对应了不同的功能(它们对应的神经网络结构也不同):

    shape_predictor.dat这个是为了检测人脸的关键点,比如眼睛,嘴巴等等;dlib_face_recognition.dat是在前面检测关键点的基础上,生成人脸的特征值。

    所以后面使用dlib模块的时候,其实就是相当于,调用了某个神经网络结构,再把预先训练好的参数传给我们调用的神经网络。顺便提一下,在深度学习领域中,往往动不动会训练出一个上百M的参数模型出来,是很正常的事。

    import os,dlib,glob,numpy
    from skimage import io
    
    # 人脸关键点检测器
    predictor_path = "shape_predictor.dat"
    # 人脸识别模型、提取特征值
    face_rec_model_path = "dlib_face_recognition.dat"
    # 训练图像文件夹
    faces_folder_path ='train_images' 
    
    # 加载模型
    detector = dlib.get_frontal_face_detector()
    sp = dlib.shape_predictor(predictor_path)
    facerec = dlib.face_recognition_model_v1(face_rec_model_path)

    第二步:对训练集进行识别。

    在这一步中,我们要完成的是,对图片文件夹里面的人物图像,计算他们的人脸特征,并放到一个列表里面,为了后面可以和新的图像进行一个距离计算。关键地方会加上注释,应该不难理解。

    candidate = []         # 存放训练集人物名字
    descriptors = []       #存放训练集人物特征列表
    
    for f in glob.glob(os.path.join(faces_folder_path,"*.jpg")):
        print("正在处理: {}".format(f))
        img = io.imread(f)
        candidate.append(f.split('\\')[-1].split('.')[0])
        # 人脸检测
        dets = detector(img, 1)
        for k, d in enumerate(dets): 
            shape = sp(img, d)
            # 提取特征
            face_descriptor = facerec.compute_face_descriptor(img, shape)
            v = numpy.array(face_descriptor) 
            descriptors.append(v)
    
    print('识别训练完毕!')

    当你做完这一步之后,输出列表descriptors看一下,可以看到类似这样的数组,每一个数组代表的就是每一张图片的特征量(128维)。然后我们可以使用L2范式(欧式距离),来计算两者间的距离。

    举个例子,比如经过计算后,A的特征值是[x1,x2,x3],B的特征值是[y1,y2,y3], C的特征值是[z1,z2,z3]。

    那么由于A和B更接近,所以会认为A和B更像。想象一下极端情况,如果是同一个人的两张不同照片,那么它们的特征值是不是应该会几乎接近呢?知道了这一点,就可以继续往下走了。 

    第三步:处理待对比的图片。

    其实是同样的道理,如法炮制,目的就是算出一个特征值出来,所以和第二步差不多。然后再顺便计算出新图片和第二步中每一张图片的距离,再合成一个字典类型,排个序,选出最小值,搞定收工!

    try:
    ##    test_path=input('请输入要检测的图片的路径(记得加后缀哦):')
        img = io.imread(r".\test_images\test6.jpg")
        dets = detector(img, 1)
    except:
        print('输入路径有误,请检查!')
    
    dist = []
    for k, d in enumerate(dets):
        shape = sp(img, d)
        face_descriptor = facerec.compute_face_descriptor(img, shape)
        d_test = numpy.array(face_descriptor) 
        for i in descriptors:                #计算距离
            dist_ = numpy.linalg.norm(i-d_test)
            dist.append(dist_)
    
    # 训练集人物和距离组成一个字典
    c_d = dict(zip(candidate,dist))                
    cd_sorted = sorted(c_d.items(), key=lambda d:d[1])
    print ("识别到的人物最有可能是: ",cd_sorted[0][0])

    这里我用了一张“断水流大师兄”林国斌的照片,识别的结果是,果然,是最接近黎明了(嘻嘻,我爱黎明)。但如果你事先在训练图像集里面有放入林国斌的照片,那么出来的结果就是林国斌了。 

    为什么是黎明呢?我们看一下输入图片里的人物最后与每个明星的距离,输出打印一下:

    {'刘亦菲': 0.5269014581137407,

    '刘诗诗': 0.4779630331578229,

    '唐艺昕': 0.45967444611419184,

    '杨幂': 0.4753850256188804,

    '迪丽热巴': 0.5730399094704894,

    '郑秀妍': 0.40740137304879187,

    '郑秀晶': 0.45325515192940385,

    '郭富城': 0.7624925709626963,

    '黎明': 0.8925473299225084} 

    没错,他和黎明的距离是最小的,所以和他也最像了!

    源码及模型下载:https://download.csdn.net/download/m0_38106923/10772957

    拓展项目:Python+OpenCv实现AI人脸识别身份认证系统

    展开全文
  • 利用百度开发者平台调用api将本地图片对比之后输出两张图片的相似度
  • OpenCV识别出两张图片的人脸,并比较出两张人脸相似度,并给出相似值。 包含完整的工程文件,可立即运行!!! 用facedetect功能将两张图片中的人脸检测出来 将人脸部分的图片剪切出来,存到两张只有人脸的图片...
  • 说明:这是我暑假应实习单位需求使用百度api编写的一个简单的人脸相似度对比,其间处理了十万左右的照片,主要是为了判断是否为同一人 a.获取百度人脸识别api的api key 和secret key 去哪获取呢?网址:...

    简单几步用Python实现人脸对比

    说明:这是我暑假应实习单位需求使用百度api编写的一个简单的人脸相似度对比,其间处理了十万左右的照片,主要是为了判断是否为同一人

    a.获取百度人脸识别api的api key 和secret key

    去哪获取呢?网址:http://ai.baidu.com/tech/face,创建应用

    b.获取AccessToken

    这一部分在百度的说明文档里也有教你怎么获取和拼接,在这里我就简单的说明一下。
    a.向授权服务地址:发送请求并在URL后带上一下参数:

    • grand_type :
    • client_id:应用的api key
    • client_secret:应用的secret key
      上面的参数都为必须
    api1 = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=GuZ8GCOOQbyrPwGxTmiGR5QW&client_secret=qpyP1Yju3kTyQ
    #此URL为向授权服务请求的完整地址,先命名为api1
    

    c.获取Access_Token的完整内容和拼接api

    def get_token():
        response=requests.get(api1)
        access_token=eval(response.text)['access_token']
        api2="https://aip.baidubce.com/rest/2.0/face/v3/match"+"?access_token="+access_token
        return api2
    

    上面可以打印一下response

    d.读取图片数据

    def read_img(img1,img2):
    
        with open(img1,'rb') as f:
            pic1=base64.b64encode(f.read())
        with open(img2,'rb') as f:
            pic2=base64.b64encode(f.read())
    
        params=json.dumps([
            {"image":str(pic1,"utf-8"),"image_type":'BASE64',"face_type":"LIVE"},
            {"image":str(pic2,"utf-8"),"image_type":'BASE64',"face_type":"IDCARD"}
        ])
        return params
    

    e.发起请求拿到对比结果

    def analyse_img(file1,file2):
        params=read_img(file1,file2)
        api=get_token()
        content=requests.post(api,params).text
    
        score=eval(content)['result']['score']
    
        return score
    

    完整代码请留言

    此程序对照片有一定的要求

    1. 两张照片的格式需要一致,因为我遍历了两个文件夹,文件名相同的进行比较
    2. 照片大小不能太大太小

    3. 一旦照片问题或者请求太频繁或者网络问题都会导致程序停止

    所以不得不又准备两个照片批量压缩和格式批量转换的程序
    至此,一套较为完整的简单的身份验证程序算是初步上线了,此程序前后共处理了十万张左右照片,其间不乏人工的介入。

    改进优化版(图形交互界面以及针对上述问题的优化)在一定程度上实现了完全自动化,有时间会发出来
    在这里插入图片描述

    展开全文
  • 一.设计流程 1.导入模块 ...plt模块:“plt”的设计是为了在不了解python的情况下使用matplotlib轻松绘制科学图形。当前实现将使用json配置文件。 2.网页请求 """ 你的APPID,API_KEY和SECRET_KEY """ APP_ID
  • 下方是人脸识别,还添加了画出人脸轮廓的正方形下方是人脸识别,还添加了画出人脸轮廓的正方形 import requests#网络访问控件 from json import JSONDecoder#互联网数据交换标准格式 import cv2 as cv#图像...
  • python人脸对比

    2019-10-03 03:39:52
     #人脸对比API  url = 'https://aip.baidubce.com/rest/2.0/face/v2/match?access_token='+token    params = imgdata(file1path,file2path)  #urlencode处理需提交的数据  data = parse.urlencode(params)...
  • Python编写的双2D,2DPCA,算法 使用库函数的LBP,直方图算法 余弦相似度,https://blog.csdn.net/u012505617/article/details/89191158 feret人脸库,200人,每人7张;看到大家需要,我就上传了。代码都是我整理的,...
  • CV之FC:人脸识别之判断相似度极高的国内外明星根据人工智能算法(AP云)预测判别是否为同一个人 根据美国人口调查局的估计,截至到2013年1月4日,全世界有70.57亿人。美国人口调查局的数据显示全球人口在2012年3月...
  • 引言 两个人在一起久了,由于环境因素,行为习惯,无意识的模仿对方,两个人就会...点击控制台,登录百度账号,进入控制台,进入人脸识别。 温馨提示:账号与百度搜索、百度贴吧、百度云盘、百度知道、百度文库...
  • #将人脸框出来 face_rectangle_1 = req_dict['faces1'][0]['face_rectangle'] # print(face_rectangle_1) face_rectangle_2 = req_dict['faces2'][0]['face_rectangle'] img1 = cv2.imread(faceId1) img2 = cv2....
  • python3.6+百度人脸识别API进行照片人脸对比

    万次阅读 热门讨论 2018-02-11 15:22:08
    车被划了,调了十几天的监控录像,感觉自己看太累,突然有个想法,能否弄个自动看录像,当画面出现人脸或人形时自动截图保存,这样应该能省去很多时间(有种刑侦的感觉...),既然想到了,无论能否成功都需要从识别...
  • # 对比照片 request_url = request_url + "?access_token=" + access_token request = urllib.request.Request(url=request_url, data=params) request.add_header('Content-Type', 'application/json') ...
  • face_recognition实现人脸相似度比较

    千次阅读 2021-10-29 14:54:56
    face_recognition 是github上一个非常有名气的人脸识别开源工具包,我们可以通过以下指令安装到python环境内 $ pip install face_recognition 加载人脸图片 image = face_recognition.load_image_file(src) 获取...
  • 使用PaddlePaddle实现人脸对比人脸识别

    千次阅读 多人点赞 2018-08-05 10:59:18
    原文博客:Doi技术团队 链接地址:https://blog.doiduoyi.com/authors/1584446358138 初心:记录优秀的Doi技术团队学习经历 前言 本文章我们来学习一下使用PaddlePaddle实现人脸对比人脸识别,使用的训练数据集是...
  • 【附源码】基于OpenCV的Python人脸识别

    万次阅读 多人点赞 2021-08-10 23:13:34
    原理是将摄像头下的图像人脸和存放照片的目录下的人脸依次进行对比 调用百度的API人脸识别接口 返回相似度的值进行识别 识别成功和失败均有提示 成功时能将对应的信息写入到识别记录中 并终止程序 当所有照片对比后...
  • Python实现基于人脸特征的美颜算法(20181224) https://zhuanlan.zhihu.com/p/29718304 https://github.com/BradLarson/GPUImage https://blog.csdn.net/Txiaomiao/article/details/62233244 ...
  • 前两天在网上看到了一篇博客,觉得挺好玩的,自己对于人脸识别这一块有点兴趣,因此进行了解,整理如下。 原博客链接 https://blog.csdn.net/qq_38228830/article/details/80258998 之前看到这篇文章,进行实现了...
  • python 百度AI 人脸对比 实现示例

    千次阅读 2018-07-01 16:19:03
    百度AI: from aip import AipFace   百度aip下载: cmd: pip3 install aip (适用于python3,python2 去掉3就ok了) ...人脸对比传入参数:     client.match([{参数1},{参数2}]) 功能:给出相似度,并...
  • 欧氏距离比较相似度python实现

    千次阅读 2016-07-23 20:29:04
    # -*- coding: utf-8 -*- import xlrd import xlwt import unicodedataworkbook = xlrd.open_workbook(r'C:\Users\wangqiqi\Desktop\classify.xlsx') #读取sheet1工作簿获取待分类数据 def read_sheet1(): ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,203
精华内容 881
关键字:

python人脸对比相似度

python 订阅