一.腾讯优图

1.开发者地址:http://open.youtu.qq.com/welcome/developer

2.接入流程:按照开发者页面的接入流程接入之后,创建应用即可获得所需的AppID、SecretID和SecretKey这是进行接口调用必须的凭证

3.测试流程:

3.1.测试可以直接调用网络接口,或者下载相应语言的sdk(http://open.youtu.qq.com/welcome/developer#/tool-sdk),我采用的是下载python版本的sdk(该sdk对应的python2.x的版本)

3.2.测试的数据还是lfw的数据集,测试结果如果调用成功则获取到比对的分数,调用失败则将改组比对的分数设置为-1,以便后续的分析,直接上python代码:

  1. import TencentYoutuyun # 这是下载的python模块
  2.  
  3. appid = 'xxxxx' # 你的appid
  4. secret_id = 'xxxxx' #你的secret_id
  5. secret_key = 'xxxxx' #你的secret_key
  6. userid = 'test' # 任意字符串
  7. end_point = TencentYoutuyun.conf.API_YOUTU_END_POINT
  8. youtu = TencentYoutuyun.YouTu(appid, secret_id, secret_key, userid, end_point)
  9.  
  10. def compare_test():
  11. lfw_file = open("pairs.txt") # lfw的pair.txt 删除了第一行
  12. res_file = open("youtu.txt", "a+") # txt保存比对分数
  13. error_code = open("error_code.txt", "a+") # 测试用于保存调用出错编码
  14. count = 0
  15. while 1:
  16. image_path = "xxxxxx" # 你本地lfw数据的路径
  17. line = lfw_file.readline()
  18. if not line:
  19. break
  20. line = line.strip('\n')
  21. images = line.split('\t')
  22. if len(images) > 3:
  23. register_image = image_path + images[0] + "/" + images[0] + "_"
  24. if len(images[1]) < 2:
  25. register_image = register_image + " + images[1] + ".jpg"
  26. elif len(images[1]) < 3:
  27. register_image = register_image + " + images[1] + ".jpg"
  28. elif len(images[1]) < 4:
  29. register_image = register_image + " + images[1] + ".jpg"
  30. else:
  31. register_image = register_image + images[1] + ".jpg"
  32.  
  33. verify_image = image_path + images[2] + "/" + images[2] + "_"
  34. if len(images[3]) < 2:
  35. verify_image = verify_image + " + images[3] + ".jpg"
  36. elif len(images[3]) < 3:
  37. verify_image = verify_image + " + images[3] + ".jpg"
  38. elif len(images[3]) < 4:
  39. verify_image = verify_image + " + images[3] + ".jpg"
  40. else:
  41. verify_image = verify_image + images[3] + ".jpg"
  42. else:
  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[0] + "/" + images[0] + "_"
  54. if len(images[2]) < 2:
  55. verify_image = verify_image + " + images[2] + ".jpg"
  56. elif len(images[2]) < 3:
  57. verify_image = verify_image + " + images[2] + ".jpg"
  58. elif len(images[2]) < 4:
  59. verify_image = verify_image + " + images[2] + ".jpg"
  60. else:
  61. verify_image = verify_image + images[2] + ".jpg"
  62.  
  63. content = youtu.FaceCompare(register_image, verify_image)
  64. error_code.write(str(content['errormsg']) + '\n')
  65. if content['errorcode'] != 0:
  66. score = -1
  67. else:
  68. score = content['similarity']
  69.  
  70. print(str(count))
  71. print(register_image)
  72. print(verify_image)
  73. print(str(score) + '\n')
  74.  
  75. if (int(count / 300)) % 2 == 0:
  76. flag = 1
  77. else:
  78. flag = 0
  79.  
  80. res_file.write(line + '\t' + str(score) + '\t' + str(flag) + '\n')
  81. count += 1
  82.  
  83. lfw_file.close()
  84. res_file.close()
  85. error_code.close()
  86.  
  87. compare_test()

二.知脸(ZKfaceOnline)

1.知脸开发者中心地址:http://zkfaceonline.com:8003/developers_doc.html

2.接入流程:注册后可获取到Ocp-Apim-Subscription-Key,然后再开发者管理界面注册人脸比对数据库,记住该数据库的名称,该名称以及Ocp-Apim-Subscription-Key在后面的测试过程中都是必需的。

3.测试流程:

3.1.人脸比对分为两个步骤:先将需要比对的两张图片上传到指定接口做人脸特征的提取,如果成功则返回这两张图片在数据库中faceid,然后将返回的两个faceid提交到指定的人脸比对接口做比对,如果比对成功则会返回两张图片之间的相似值

3.2.具体测试代码,如下:

  1. # coding=utf-8
  2. import requests #该模块是第三方库,可以去网上下载
  3. import json
  4.  
  5. def get_face_id(image): #上传一张图片做人脸检测,返回faceid
  6. url = 'http://zkfaceonline.com:8003/face/v0/faceApimatch?detect&db&matchDB=你的数据库名称'
  7. headers = {
  8. 'Content-Type': 'application/octet-stream',
  9. 'Ocp-Apim-Subscription-Key': '你自己的key',
  10. }
  11. data = open(image, "rb").read()
  12. try:
  13. res = requests.post(url, headers=headers, data=data)
  14. except Exception:
  15. res = requests.post(url, headers=headers, data=data)
  16.  
  17. result = res.text.strip('this key has no database[]')
  18. try:
  19. result = json.loads(result)
  20. if len(result) == 1:
  21. res_dict = result[0]
  22. if "faceid" in res_dict.keys():
  23. print(res_dict['faceid'])
  24. return res_dict['faceid']
  25. else:
  26. return '-1'
  27. else:
  28. return '-1'
  29. except Exception:
  30. return '-1'
  31.  
  32. def face_compare(image1, image2): #两张图片做人脸比对,返回比对分数
  33. face1 = get_face_id(image1)
  34. face2 = get_face_id(image2)
  35. url = 'http://zkfaceonline.com:8003/face/v0/faceApimatch?match&db&matchDB=你的数据库名称&faceset1=' + face1 + '&faceset2=' + face2
  36.  
  37. headers = {
  38. 'Content-Type': 'application/octet-stream',
  39. 'Ocp-Apim-Subscription-Key': '你自己的key',
  40. }
  41. try:
  42. res = requests.post(url, headers=headers)
  43. except Exception:
  44. res = requests.post(url, headers=headers)
  45.  
  46. result = res.text.strip('this key has no database[]')
  47. print(res.text)
  48. try:
  49. result = json.loads(result)
  50. if len(result) == 1:
  51. res_dict = result[0]
  52. if 'similarity' in res_dict.keys():
  53. print(res_dict['similarity'])
  54. return res_dict['similarity']
  55. else:
  56. return -1
  57. else:
  58. return -1
  59. except Exception:
  60. return -1
  61.  
  62. def face_compare_test():
  63. lfw_file = open("pairs.txt")
  64. res_file = open("res_zk.txt", "a+")
  65. count = 0
  66. while 1:
  67. image_path = "你lfw数据集在本地的路径"
  68. line = lfw_file.readline()
  69. if not line:
  70. break
  71. line = line.strip('\n')
  72. images = line.split('\t')
  73. if len(images) > 3:
  74. register_image = image_path + images[0] + "/" + images[0] + "_"
  75. if len(images[1]) < 2:
  76. register_image = register_image + " + images[1] + ".jpg"
  77. elif len(images[1]) < 3:
  78. register_image = register_image + " + images[1] + ".jpg"
  79. elif len(images[1]) < 4:
  80. register_image = register_image + " + images[1] + ".jpg"
  81. else:
  82. register_image = register_image + images[1] + ".jpg"
  83.  
  84. verify_image = image_path + images[2] + "/" + images[2] + "_"
  85. if len(images[3]) < 2:
  86. verify_image = verify_image + " + images[3] + ".jpg"
  87. elif len(images[3]) < 3:
  88. verify_image = verify_image + " + images[3] + ".jpg"
  89. elif len(images[3]) < 4:
  90. verify_image = verify_image + " + images[3] + ".jpg"
  91. else:
  92. verify_image = verify_image + images[3] + ".jpg"
  93. else:
  94. register_image = image_path + images[0] + "/" + images[0] + "_"
  95. if len(images[1]) < 2:
  96. register_image = register_image + " + images[1] + ".jpg"
  97. elif len(images[1]) < 3:
  98. register_image = register_image + " + images[1] + ".jpg"
  99. elif len(images[1]) < 4:
  100. register_image = register_image + " + images[1] + ".jpg"
  101. else:
  102. register_image = register_image + images[1] + ".jpg"
  103.  
  104. verify_image = image_path + images[0] + "/" + images[0] + "_"
  105. if len(images[2]) < 2:
  106. verify_image = verify_image + " + images[2] + ".jpg"
  107. elif len(images[2]) < 3:
  108. verify_image = verify_image + " + images[2] + ".jpg"
  109. elif len(images[2]) < 4:
  110. verify_image = verify_image + " + images[2] + ".jpg"
  111. else:
  112. verify_image = verify_image + images[2] + ".jpg"
  113.  
  114. print('\n' + str(count))
  115. print(register_image)
  116. print(verify_image)
  117. score = face_compare(verify_image, register_image)
  118.  
  119. if (int(count / 300)) % 2 == 0:
  120. flag = 1
  121. else:
  122. flag = 0
  123.  
  124. res_file.write(line + '\t' + str(score) + '\t' + str(flag) + '\n')
  125. count += 1
  126.  
  127. lfw_file.close()
  128. res_file.close()
  129.  
  130. face_compare_test()

三.性能评测

建议采用画rock曲线的方式进行比较,可以将百度和face++的人脸比对结果画在一张图上进行比对

腾讯优图及知脸(ZKface)人脸比对接口测试(python)的更多相关文章

  1. 重磅!刷新两项世界纪录的腾讯优图人脸检测算法DSFD开源了!

    近日,知名开源社区Github上有个名为DSFD(Dual Shot Face Detector)的算法引起了业内关注,它正是来自于腾讯优图.目前,该算法已经被计算机视觉顶级会议CVPR 2019接收 ...

  2. 腾讯优图联手Science发布主题报告:计算机视觉的研发和应用

    近日,腾讯优图与<科学>(Science)杂志共同发布<Seeing is believing: R&D applications of computer vision> ...

  3. 腾讯优图&港科大提出一种基于深度学习的非光流 HDR 成像方法

    目前最好的高动态范围(HDR)成像方法通常是先利用光流将输入图像对齐,随后再合成 HDR 图像.然而由于输入图像存在遮挡和较大运动,这种方法生成的图像仍然有很多缺陷.最近,腾讯优图和香港科技大学的研究 ...

  4. 【腾讯优测干货分享】安卓专项测试之GPU测试探索

    本文来自于Dev Club 开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57c7ffdc0569a1191bce8a63 作者:章未哲——腾讯SNG质 ...

  5. 在腾讯云上把Laravel整合万向优图图片管理能力,打造高效图片处理服务

    推荐理由: 现如今数据爆炸性增长,人类生活产出的数据越来越多,文字信息,图片信息,视频信息:但有很多信息我们都无法直接使用,需通过一定的处理,才能够获取其中对我们有用的信息,在腾讯云上的万向优图能够对 ...

  6. 腾讯云万象优图每个账户提供50G的图片存储(支持黄图检测)

    文章由GIT博客迁移过来 程序下载地址(源码也在):点我下载 设计说明 10月20号晚上,准备写这么一个程序. 腾讯云万象优图每个账户提供50G的图片存储(支持黄图检测) 可以在截图之后,直接点击上传 ...

  7. 【腾讯云的1001种玩法】 Laravel 整合万向优图图片管理能力,打造高效图片处理服务

    版权声明:本文由白宦成原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/574549001488234358 来源:腾云阁 h ...

  8. 【腾讯优测干货分享】如何降低App的待机内存(四)——进阶:内存原理

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/3FTPFvZRqyAQnU047kmWJQ 1.4进阶:内存原理 在 ...

  9. 【腾讯优测干货】看腾讯的技术大牛如何将Crash率从2.2%降至0.2%?

    小优有话说: App Crash就像地雷. 你怕它,想当它不存在.无异于让你的用户去探雷,一旦引爆,用户就没了. 你鼓起勇气去扫雷,它却神龙见首不见尾. 你告诫自己一定开发过程中减少crash,少埋点 ...

随机推荐

  1. UISwitch——开关控件

    开关的可配置选项很少,一般用于处理布尔值. 下面给出一个小Demo,创建两个开关,开关一可以控制开关二的可用与否,两者的关系就相当于水闸与水龙头的关系. #import "ViewContr ...

  2. java 正则匹配int型

    private static Pattern DIGIT_PATTERN = Pattern.compile("=\\d++"); Matcher goodsTypeMatcher ...

  3. IOS开发-ObjC-Category的使用

    在IOS移动App开发中,经常会出现以下情况:定义好了一个类,但后来需求升级或改变之后需要对这个类增加功能,这样的话往往需要修改类的结构,这样就会导致不能预期的问题产生,所以Obj-C提供了一种叫做C ...

  4. java class加载机制及对象生成机制

    java class加载机制及对象生成机制 当使用到某个类,但该类还未初始化,未加载到内存中时会经历类加载.链接.初始化三个步骤完成类的初始化.需要注意的是类的初始化和链接的顺序有可能是互换的. Cl ...

  5. p4factory 解决“g++: internal compiler error: Killed (program cc1plus)” make error问题

    参考:解决: g++: internal compiler error: Killed (program cc1plus) 在安装p4factory的时候,执行: ./install_deps.sh ...

  6. 有限状态机(Finite-state machine)

    var menu = { // 当前状态 currentState: 'hide', // 绑定事件 initialize: function() { var self = this; self.on ...

  7. VS2010中出现无法嵌入互操作类型(转)

    针对word或excel操作时,出现VS2010中,无法嵌入互操作类型“……”,请改用适用的接口的解决方法问了度娘,解决方法如出一辙:选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型”设 ...

  8. iOS 之 导航栏按钮

    UIButton *releaseButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [releaseButton setTitle ...

  9. Voilin 之 握弓

    握弓要像拿杯子,手要圆:整个手型是左倾.

  10. iOS 开发新版 动态库framework

    0. 参考 http://www.cocoachina.com/industry/20140613/8810.html framework+xib参考 : http://blog.csdn.net/x ...