一.百度人脸识别服务

1.官方网址:http://apistore.baidu.com/apiworks/servicedetail/464.html

2.提供的接口包括:

2.1 多人脸比对:请求多个人脸图片做比对,使用前无需人脸注册过程。即同时上传多张图片,返回结果为每对图片的比对分数

2.2 人脸识别:返回指定group中所有username的注册人脸和query人脸的相似度,返回结果按照相似度排序;人脸识别需要先在group里注册username和人脸图片,您可以使用这个功能自己实现一个小规模的人脸识别系统,比如明星脸识别、家庭成员识别等等。其实就是1对n的比对,按照比对的分数返回

2.3人脸验证:验证query人脸图片是否为指定username注册的人脸,需要先在username下注册人脸图片,其实就是1对1的比对,返回比对的分数

3.测试的接口:多人脸比对接口,不需要注册的过程,所以选择这个接口,

4.测试的数据:lfw数据集上的数据,可以去官网下载数据及pairs.txt,可以先研究一下该数据集

5.测试的代码(python):(官网上python例子中传入的参数是有问题的)

  1. import base64
  2. import urllib
  3. import urllib.request
  4. import urllib.parse
  5. import time
  6. import json
  7.  
  8. #所需的图片要以base64编码的形式上传二进制字符串
  9. def image_to_base64(image_path):
  10. image_data = open(image_path, "rb")
  11. temp = image_data.read()
  12. base64_data = base64.b64encode(temp)
  13. image_data.close()
  14. data_string = str(base64_data)
  15. data_string = data_string.strip('\'b')
  16. return data_string
  17.  
  18. def compare(image1, image2):
  19. url = 'http://apis.baidu.com/idl_baidu/faceverifyservice/face_compare'
  20. reg = r'{"params": [{"cmdid": "1000", "appid": "你的apikey", "clientip": "你的ip","type": "st_groupverify", "groupid": "12345", "versionnum": "1.0.0.1", "usernames": {"name1": "name1", "name2": "name2"}, "images": {"name1": "%s", "name2": "%s"}, "cates": {"name1":"7", "name2":"7"}}], "jsonrpc": "2.0","method": "Compare"}' % (image1, image2)
  21. byte_data = reg.encode(encoding="utf-8")
  22. req = urllib.request.Request(url, data=byte_data)
  23. req.add_header("apikey", "你的apikey")
  24. #请求第一次可能会出错,重新请求一次就好了
  25. try:
  26. resp = urllib.request.urlopen(req)
  27. content = resp.read()
  28. if content:
  29. print(content)
  30. return content
  31. except Exception:
  32. resp = urllib.request.urlopen(req)
  33. content = resp.read()
  34. if content:
  35. print(content)
  36. return content
  37.  
  38. def compare_test():
  39. lfw_file = open("pairs.txt")
  40. res_file = open("res_baidu.txt", "a+")
  41. count = 0
  42. while 1:
  43. image_path = "你本地的lfw图片地址"
  44. line = lfw_file.readline()
  45. if not line:
  46. break
  47. line = line.strip('\n')
  48. images = line.split('\t')
  49. if len(images) > 3:
  50. register_image = image_path + images[0] + "\\" + images[0] + "_"
  51. if len(images[1]) < 2:
  52. register_image = register_image + "" + images[1] + ".jpg"
  53. elif len(images[1]) < 3:
  54. register_image = register_image + "" + images[1] + ".jpg"
  55. elif len(images[1]) < 4:
  56. register_image = register_image + "" + images[1] + ".jpg"
  57. else:
  58. register_image = register_image + images[1] + ".jpg"
  59.  
  60. verify_image = image_path + images[2] + "\\" + images[2] + "_"
  61. if len(images[3]) < 2:
  62. verify_image = verify_image + "" + images[3] + ".jpg"
  63. elif len(images[3]) < 3:
  64. verify_image = verify_image + "" + images[3] + ".jpg"
  65. elif len(images[3]) < 4:
  66. verify_image = verify_image + "" + images[3] + ".jpg"
  67. else:
  68. verify_image = verify_image + images[3] + ".jpg"
  69. else:
  70. register_image = image_path + images[0] + "\\" + images[0] + "_"
  71. if len(images[1]) < 2:
  72. register_image = register_image + "" + images[1] + ".jpg"
  73. elif len(images[1]) < 3:
  74. register_image = register_image + "" + images[1] + ".jpg"
  75. elif len(images[1]) < 4:
  76. register_image = register_image + "" + images[1] + ".jpg"
  77. else:
  78. register_image = register_image + images[1] + ".jpg"
  79.  
  80. verify_image = image_path + images[0] + "\\" + images[0] + "_"
  81. if len(images[2]) < 2:
  82. verify_image = verify_image + "" + images[2] + ".jpg"
  83. elif len(images[2]) < 3:
  84. verify_image = verify_image + "" + images[2] + ".jpg"
  85. elif len(images[2]) < 4:
  86. verify_image = verify_image + "" + images[2] + ".jpg"
  87. else:
  88. verify_image = verify_image + images[2] + ".jpg"
  89.  
  90. content = compare(image_to_base64(register_image), image_to_base64(verify_image))
  91. content = str(content)
  92. content = content.strip('b\'')
  93. content = json.loads(content)
  94.  
  95. if (int(count/300)) % 2 == 0:
  96. flag = 1
  97. else:
  98. flag = 0
  99.  
  100. if content['result']['_ret']['reslist']:
  101. score = content['result']['_ret']['reslist']['name2|name1']
  102. else:
  103. score = "-1"
  104.  
  105. res_file.write(line + '\t' + score + '\t' + str(flag) + '\n')
  106. count += 1
  107.  
  108. lfw_file.close()
  109. res_file.close()
  110.  
  111. compare_test()

6.比对结果中会出现很多个0.00000的情况,不了解具体的原因。。。知道的兄弟求告知!!!

二.Face++人脸识别服务

1.官方网址:https://console.faceplusplus.com.cn/documents/4887586

2.提供的接口包括Detect,Compare,Search等,只研究了一下Compare接口即1对1比对的接口,测试用的数据还是lfw,该请求直接传入图片的远程url地址即可,不需要直接上传图片文件,用之前还是要注册生成apikey和apisecret(注意用试用的apikey),直接上代码:

3.Python测试代码:

  1. import urllib
  2. import urllib.request
  3. import urllib.parse
  4. import json
  5.  
  6. def compare(image1, image2):
  7. url = "https://api-cn.faceplusplus.com/facepp/v3/compare"
  8. data = {
  9. 'api_key': '你自己的apikey',
  10. 'api_secret': '你自己的apisecret',
  11. 'image_url1': image1,
  12. 'image_url2': image2
  13. }
  14. data = urllib.parse.urlencode(data)
  15. data = data.encode('utf-8')
  16. req = urllib.request.Request(url, data=data)
  17.  
  18. try:
  19. resp = urllib.request.urlopen(req)
  20. content = resp.read()
  21. if content:
  22. print(content)
  23. return content
  24. except Exception:
  25. resp = urllib.request.urlopen(req)
  26. content = resp.read()
  27. if content:
  28. print(content)
  29. return content
  30.  
  31. def compare_test():
  32. lfw_file = open("pairs.txt")
  33. res_file = open("res_face.txt", "a+")
  34. count = 0
  35. while 1:
  36. image_path = "http://vis-www.cs.umass.edu/lfw/images/"
  37. line = lfw_file.readline()
  38. if not line:
  39. break
  40. line = line.strip('\n')
  41. images = line.split('\t')
  42. if len(images) > 3:
  43. register_image = image_path + images[0] + "/" + images[0] + "_"
  44. if len(images[1]) < 2:
  45. register_image = register_image + "" + images[1] + ".jpg"
  46. elif len(images[1]) < 3:
  47. register_image = register_image + "" + images[1] + ".jpg"
  48. elif len(images[1]) < 4:
  49. register_image = register_image + "" + images[1] + ".jpg"
  50. else:
  51. register_image = register_image + images[1] + ".jpg"
  52.  
  53. verify_image = image_path + images[2] + "/" + images[2] + "_"
  54. if len(images[3]) < 2:
  55. verify_image = verify_image + "" + images[3] + ".jpg"
  56. elif len(images[3]) < 3:
  57. verify_image = verify_image + "" + images[3] + ".jpg"
  58. elif len(images[3]) < 4:
  59. verify_image = verify_image + "" + images[3] + ".jpg"
  60. else:
  61. verify_image = verify_image + images[3] + ".jpg"
  62. else:
  63. register_image = image_path + images[0] + "/" + images[0] + "_"
  64. if len(images[1]) < 2:
  65. register_image = register_image + "" + images[1] + ".jpg"
  66. elif len(images[1]) < 3:
  67. register_image = register_image + "" + images[1] + ".jpg"
  68. elif len(images[1]) < 4:
  69. register_image = register_image + "" + images[1] + ".jpg"
  70. else:
  71. register_image = register_image + images[1] + ".jpg"
  72.  
  73. verify_image = image_path + images[0] + "/" + images[0] + "_"
  74. if len(images[2]) < 2:
  75. verify_image = verify_image + "" + images[2] + ".jpg"
  76. elif len(images[2]) < 3:
  77. verify_image = verify_image + "" + images[2] + ".jpg"
  78. elif len(images[2]) < 4:
  79. verify_image = verify_image + "" + images[2] + ".jpg"
  80. else:
  81. verify_image = verify_image + images[2] + ".jpg"
  82.  
  83. content = compare(register_image, verify_image)
  84. content = str(content)
  85. content = content.strip('b\'')
  86. content = json.loads(content)
  87.  
  88. if (int(count / 300)) % 2 == 0:
  89. flag = 1
  90. else:
  91. flag = 0
  92.  
  93. if 'confidence' in content.keys():
  94. score = content['confidence']
  95. else:
  96. score = '-1'
  97. res_file.write(line + '\t' + str(score) + '\t' + str(flag) + '\n')
  98.  
  99. count += 1
  100.  
  101. lfw_file.close()
  102. res_file.close()
  103. compare_test()

4.测试结果有待分析。。

百度人脸识别api及face++人脸识别api测试(python)的更多相关文章

  1. 转《trackingjs+websocket+百度人脸识别API,实现人脸签到》流程

    先用websocket与后台建立通讯:用trackingjs在页面调用电脑摄像头,监听人脸,发现有人脸进入屏幕了,就把图片转成base64字符串,通过websocket发送到后端:后端拿到图片,调用百 ...

  2. trackingjs+websocket+百度人脸识别API,实现人脸签到

    在公司做了个年会的签到.抽奖系统.用java web做的,用公司的办公app扫二维码码即可签到,扫完码就在大屏幕上显示这个人的照片.之后领导让我改得高大上一点,用人脸识别来签到,就把扫二维码的步骤改成 ...

  3. 虹软人脸识别 - Android Camera实时人脸追踪画框适配

    在使用虹软人脸识别Android SDK的过程中 ,预览时一般都需要绘制人脸框,但是和PC平台相机应用不同,在Android平台相机进行应用开发还需要考虑前后置相机切换.设备横竖屏切换等情况,因此在人 ...

  4. C# net Emgu.CV.World 人脸识别 根据照片将人脸抠图出来。

    Emgu.CV.World 人脸识别 根据照片将人脸抠图出来.效果如下: 应用范围:配合摄像头,抓取的图像,抠出人脸照片,这样人脸照片的大小会很小,传输速度快.这样识别速度也就快. 目前我正在做百度人 ...

  5. PHP:基于百度大脑api实现OCR文字识别

    有个项目要用到文字识别,网上找了很多资料,效果不是很好,偶然的机会,接触到百度大脑.百度大脑提供了很多解决方案,其中一个就是文字识别,百度提供了三种文字识别,分别是银行卡识别.身份证识别和通用文字识别 ...

  6. TensorFlow环境 人脸识别 FaceNet 应用(一)验证测试集

    TensorFlow环境 人脸识别 FaceNet 应用(一)验证测试集 前提是TensorFlow环境以及相关的依赖环境已经安装,可以正常运行. 一.下载FaceNet源代码工程 git clone ...

  7. Android打开相机进行人脸识别,使用虹软人脸识别引擎

    上一张效果图,渣画质,能看就好 功能说明: 人脸识别使用的是虹软的FreeSDK,包含人脸追踪,人脸检测,人脸识别,年龄.性别检测功能,其中本demo只使用了FT和FR(人脸追踪和人脸识别),封装了开 ...

  8. 基于人脸识别+IMDB-WIFI+Caffe的性别识别

    本文用记录基于Caffe的人脸性别识别过程.基于imdb-wiki模型做finetune,imdb-wiki数据集合模型可从这里下载:https://data.vision.ee.ethz.ch/cv ...

  9. paper 88:人脸检测和识别的Web服务API

    本文汇总了全球范围内提供基于Web服务的人脸检测和识别的API,便于网络中快速部署和人脸相关的一些应用. 1:从How-old的火爆说起 最开始,网站的开发者只是给一个几百人的群发送email,请他们 ...

随机推荐

  1. django 中文乱码问题

    在使用JS 发送ajax到django后台的时候,可能会出现中文乱码问题 解决方案: 所有的HTMl 和py文件都使用utf-8编码,在创建数据库的时候指定使用utf8 :create databas ...

  2. CultureInfo中重要的InvariantCulture

    CultureInfo简述 CultureInfo类位于System.Globalization命名空间内,这个类和这个命名空间许多人都不了解也认为不需要太多了解,实际上,你写的程序中会经常间接得使用 ...

  3. LVS详解

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  4. iOS关于UITabView和UIAlertController,UIAlertAction以及UINavigation,值修改的传递页面推送

    关于UITabView和UIAlertController,UIAlertAction以及UINavigation,值修改的传递 集合嵌套集合的操作 声明 两个必须的的代理 实现部分代码 - (voi ...

  5. Linux系统目录

    [root@localhost ~]# ls /bin dev home lost+found misc opt root selinux sys usrboot etc lib media net ...

  6. 【转】 完美配置Tomcat的HTTPS

    Tomcat配置HTTPS的文章到处都有,过程也比较简单,随后文中会转一段过来. 但对于启用APR情况下报异常“java.lang.Exception: Connector attribute SSL ...

  7. ListView与RadioButton组合——自定义单选列表

      标签: radiobuttonlistviewandroidlayout 2013-09-10 11:13 19396人阅读 评论(8) 收藏 举报  分类: Android(19)  版权声明: ...

  8. tp框架 使用ajax

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...

  9. iOS开发——Xcode快捷键

    1.共用的一些方法 Command + A: 全选Command + C: 复制Command + V: 粘贴Command + X: 剪切Command + Z: 撤销Shift + Command ...

  10. S3C2440看门狗解析

    个PCLK周期的复位信号 也就是说,在某些环境下,看门狗可以当做定时器使用,当他中断的时候并不发生复位,只发生中断,我看看图 看门狗的中断和复位信号是可以依靠wtcon来切断的(看门狗的时钟是无法切断 ...