腾讯优图及知脸(ZKface)人脸比对接口测试(python)
一.腾讯优图
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代码:
import TencentYoutuyun # 这是下载的python模块 appid = 'xxxxx' # 你的appid secret_id = 'xxxxx' #你的secret_id secret_key = 'xxxxx' #你的secret_key userid = 'test' # 任意字符串 end_point = TencentYoutuyun.conf.API_YOUTU_END_POINT youtu = TencentYoutuyun.YouTu(appid, secret_id, secret_key, userid, end_point) def compare_test(): lfw_file = open("pairs.txt") # lfw的pair.txt 删除了第一行 res_file = open("youtu.txt", "a+") # txt保存比对分数 error_code = open("error_code.txt", "a+") # 测试用于保存调用出错编码 count = 0 while 1: image_path = "xxxxxx" # 你本地lfw数据的路径 line = lfw_file.readline() if not line: break line = line.strip('\n') images = line.split('\t') if len(images) > 3: register_image = image_path + images[0] + "/" + images[0] + "_" if len(images[1]) < 2: register_image = register_image + " + images[1] + ".jpg" elif len(images[1]) < 3: register_image = register_image + " + images[1] + ".jpg" elif len(images[1]) < 4: register_image = register_image + " + images[1] + ".jpg" else: register_image = register_image + images[1] + ".jpg" verify_image = image_path + images[2] + "/" + images[2] + "_" if len(images[3]) < 2: verify_image = verify_image + " + images[3] + ".jpg" elif len(images[3]) < 3: verify_image = verify_image + " + images[3] + ".jpg" elif len(images[3]) < 4: verify_image = verify_image + " + images[3] + ".jpg" else: verify_image = verify_image + images[3] + ".jpg" else: register_image = image_path + images[0] + "/" + images[0] + "_" if len(images[1]) < 2: register_image = register_image + " + images[1] + ".jpg" elif len(images[1]) < 3: register_image = register_image + " + images[1] + ".jpg" elif len(images[1]) < 4: register_image = register_image + " + images[1] + ".jpg" else: register_image = register_image + images[1] + ".jpg" verify_image = image_path + images[0] + "/" + images[0] + "_" if len(images[2]) < 2: verify_image = verify_image + " + images[2] + ".jpg" elif len(images[2]) < 3: verify_image = verify_image + " + images[2] + ".jpg" elif len(images[2]) < 4: verify_image = verify_image + " + images[2] + ".jpg" else: verify_image = verify_image + images[2] + ".jpg" content = youtu.FaceCompare(register_image, verify_image) error_code.write(str(content['errormsg']) + '\n') if content['errorcode'] != 0: score = -1 else: score = content['similarity'] print(str(count)) print(register_image) print(verify_image) print(str(score) + '\n') if (int(count / 300)) % 2 == 0: flag = 1 else: flag = 0 res_file.write(line + '\t' + str(score) + '\t' + str(flag) + '\n') count += 1 lfw_file.close() res_file.close() error_code.close() 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.具体测试代码,如下:
# coding=utf-8 import requests #该模块是第三方库,可以去网上下载 import json def get_face_id(image): #上传一张图片做人脸检测,返回faceid url = 'http://zkfaceonline.com:8003/face/v0/faceApimatch?detect&db&matchDB=你的数据库名称' headers = { 'Content-Type': 'application/octet-stream', 'Ocp-Apim-Subscription-Key': '你自己的key', } data = open(image, "rb").read() try: res = requests.post(url, headers=headers, data=data) except Exception: res = requests.post(url, headers=headers, data=data) result = res.text.strip('this key has no database[]') try: result = json.loads(result) if len(result) == 1: res_dict = result[0] if "faceid" in res_dict.keys(): print(res_dict['faceid']) return res_dict['faceid'] else: return '-1' else: return '-1' except Exception: return '-1' def face_compare(image1, image2): #两张图片做人脸比对,返回比对分数 face1 = get_face_id(image1) face2 = get_face_id(image2) url = 'http://zkfaceonline.com:8003/face/v0/faceApimatch?match&db&matchDB=你的数据库名称&faceset1=' + face1 + '&faceset2=' + face2 headers = { 'Content-Type': 'application/octet-stream', 'Ocp-Apim-Subscription-Key': '你自己的key', } try: res = requests.post(url, headers=headers) except Exception: res = requests.post(url, headers=headers) result = res.text.strip('this key has no database[]') print(res.text) try: result = json.loads(result) if len(result) == 1: res_dict = result[0] if 'similarity' in res_dict.keys(): print(res_dict['similarity']) return res_dict['similarity'] else: return -1 else: return -1 except Exception: return -1 def face_compare_test(): lfw_file = open("pairs.txt") res_file = open("res_zk.txt", "a+") count = 0 while 1: image_path = "你lfw数据集在本地的路径" line = lfw_file.readline() if not line: break line = line.strip('\n') images = line.split('\t') if len(images) > 3: register_image = image_path + images[0] + "/" + images[0] + "_" if len(images[1]) < 2: register_image = register_image + " + images[1] + ".jpg" elif len(images[1]) < 3: register_image = register_image + " + images[1] + ".jpg" elif len(images[1]) < 4: register_image = register_image + " + images[1] + ".jpg" else: register_image = register_image + images[1] + ".jpg" verify_image = image_path + images[2] + "/" + images[2] + "_" if len(images[3]) < 2: verify_image = verify_image + " + images[3] + ".jpg" elif len(images[3]) < 3: verify_image = verify_image + " + images[3] + ".jpg" elif len(images[3]) < 4: verify_image = verify_image + " + images[3] + ".jpg" else: verify_image = verify_image + images[3] + ".jpg" else: register_image = image_path + images[0] + "/" + images[0] + "_" if len(images[1]) < 2: register_image = register_image + " + images[1] + ".jpg" elif len(images[1]) < 3: register_image = register_image + " + images[1] + ".jpg" elif len(images[1]) < 4: register_image = register_image + " + images[1] + ".jpg" else: register_image = register_image + images[1] + ".jpg" verify_image = image_path + images[0] + "/" + images[0] + "_" if len(images[2]) < 2: verify_image = verify_image + " + images[2] + ".jpg" elif len(images[2]) < 3: verify_image = verify_image + " + images[2] + ".jpg" elif len(images[2]) < 4: verify_image = verify_image + " + images[2] + ".jpg" else: verify_image = verify_image + images[2] + ".jpg" print('\n' + str(count)) print(register_image) print(verify_image) score = face_compare(verify_image, register_image) if (int(count / 300)) % 2 == 0: flag = 1 else: flag = 0 res_file.write(line + '\t' + str(score) + '\t' + str(flag) + '\n') count += 1 lfw_file.close() res_file.close() face_compare_test()
三.性能评测
建议采用画rock曲线的方式进行比较,可以将百度和face++的人脸比对结果画在一张图上进行比对
腾讯优图及知脸(ZKface)人脸比对接口测试(python)的更多相关文章
- 重磅!刷新两项世界纪录的腾讯优图人脸检测算法DSFD开源了!
近日,知名开源社区Github上有个名为DSFD(Dual Shot Face Detector)的算法引起了业内关注,它正是来自于腾讯优图.目前,该算法已经被计算机视觉顶级会议CVPR 2019接收 ...
- 腾讯优图联手Science发布主题报告:计算机视觉的研发和应用
近日,腾讯优图与<科学>(Science)杂志共同发布<Seeing is believing: R&D applications of computer vision> ...
- 腾讯优图&港科大提出一种基于深度学习的非光流 HDR 成像方法
目前最好的高动态范围(HDR)成像方法通常是先利用光流将输入图像对齐,随后再合成 HDR 图像.然而由于输入图像存在遮挡和较大运动,这种方法生成的图像仍然有很多缺陷.最近,腾讯优图和香港科技大学的研究 ...
- 【腾讯优测干货分享】安卓专项测试之GPU测试探索
本文来自于Dev Club 开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57c7ffdc0569a1191bce8a63 作者:章未哲——腾讯SNG质 ...
- 在腾讯云上把Laravel整合万向优图图片管理能力,打造高效图片处理服务
推荐理由: 现如今数据爆炸性增长,人类生活产出的数据越来越多,文字信息,图片信息,视频信息:但有很多信息我们都无法直接使用,需通过一定的处理,才能够获取其中对我们有用的信息,在腾讯云上的万向优图能够对 ...
- 腾讯云万象优图每个账户提供50G的图片存储(支持黄图检测)
文章由GIT博客迁移过来 程序下载地址(源码也在):点我下载 设计说明 10月20号晚上,准备写这么一个程序. 腾讯云万象优图每个账户提供50G的图片存储(支持黄图检测) 可以在截图之后,直接点击上传 ...
- 【腾讯云的1001种玩法】 Laravel 整合万向优图图片管理能力,打造高效图片处理服务
版权声明:本文由白宦成原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/574549001488234358 来源:腾云阁 h ...
- 【腾讯优测干货分享】如何降低App的待机内存(四)——进阶:内存原理
本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/3FTPFvZRqyAQnU047kmWJQ 1.4进阶:内存原理 在 ...
- 【腾讯优测干货】看腾讯的技术大牛如何将Crash率从2.2%降至0.2%?
小优有话说: App Crash就像地雷. 你怕它,想当它不存在.无异于让你的用户去探雷,一旦引爆,用户就没了. 你鼓起勇气去扫雷,它却神龙见首不见尾. 你告诫自己一定开发过程中减少crash,少埋点 ...
随机推荐
- laravel5 html引用问题
1. Composer 安装 编辑 composer.json 文件, require 节点下增加: "illuminate/html": "~5.0" 然后 ...
- WeakHashMap和Java引用类型详细解析
WeakHashMap是种弱引用的HashMap,这是说,WeakHashMap里的key值如果没有外部强引用,在垃圾回收之后,WeakHashMap的对应内容也会被移除掉. 1.1 Java的引用类 ...
- XCode里的模拟器到底在哪里?我的App被放到哪里了?如何寻找真机的沙盒文件?
一. 开发iOS,必然少不了和XCode这个家伙打交道.平时我们调试自己的App的时候,最常用到的就是模拟器Simulator了,调试的时候,我们的App会自动被XCode安装到模拟器中去,不过: 你 ...
- JS 弹出层 定位至屏幕居中
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 安卓弹出对话框——AlertDialog(二)
在Android中,启动一个对话框有三种方式: 1.定义一个新的activity,并将其主题设置为对话框风格 2.使用AlertDialog类,并且显示它 3.使用 Android的Dialog类的子 ...
- 安卓弹出对话框——Alertdialog(一)
首先看各种样式的对话框: 我们看到,Dialog有很多的子类实现,所以我们要定义一个对话框,使用其子类来实例化一个即可,而不要直接使用Dialog这个父类来构造. 二.AlertDialog 今天我们 ...
- mysql配置主从数据库
1.目的 1.1 实现数据备份 1.2 项目访问时可以实现读写分离,提高访问和操作数据的速度<读写分离好处> 2.背景 这次的主从配置主要实现主库数据的改变可以实现同步到从库中: 此次试验 ...
- mobile meta iphone
<!doctype html> <html> <head> <title>iOS touch test ( Multi-touch )</titl ...
- sqlite3命令行
1.查看版本信息 sqlite3 -verion 2.创建/打开数据库 sqlite3 数据库名 例:sqlite3 test.db 如果test.db不存在就创建 如果存在,则打开3.退出 .q/. ...
- Spring 之 示例(Java之负基础实战)
接 Spring 之 配置 里面的代码. 现在要进行Controller的开发. 1.引用类 import org.springframework.web.servlet.mvc.Controller ...