百度人脸识别api及face++人脸识别api测试(python)
一.百度人脸识别服务
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例子中传入的参数是有问题的)
import base64
import urllib
import urllib.request
import urllib.parse
import time
import json #所需的图片要以base64编码的形式上传二进制字符串
def image_to_base64(image_path):
image_data = open(image_path, "rb")
temp = image_data.read()
base64_data = base64.b64encode(temp)
image_data.close()
data_string = str(base64_data)
data_string = data_string.strip('\'b')
return data_string def compare(image1, image2):
url = 'http://apis.baidu.com/idl_baidu/faceverifyservice/face_compare'
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)
byte_data = reg.encode(encoding="utf-8")
req = urllib.request.Request(url, data=byte_data)
req.add_header("apikey", "你的apikey")
#请求第一次可能会出错,重新请求一次就好了
try:
resp = urllib.request.urlopen(req)
content = resp.read()
if content:
print(content)
return content
except Exception:
resp = urllib.request.urlopen(req)
content = resp.read()
if content:
print(content)
return content def compare_test():
lfw_file = open("pairs.txt")
res_file = open("res_baidu.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" content = compare(image_to_base64(register_image), image_to_base64(verify_image))
content = str(content)
content = content.strip('b\'')
content = json.loads(content) if (int(count/300)) % 2 == 0:
flag = 1
else:
flag = 0 if content['result']['_ret']['reslist']:
score = content['result']['_ret']['reslist']['name2|name1']
else:
score = "-1" res_file.write(line + '\t' + score + '\t' + str(flag) + '\n')
count += 1 lfw_file.close()
res_file.close() 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测试代码:
import urllib
import urllib.request
import urllib.parse
import json def compare(image1, image2):
url = "https://api-cn.faceplusplus.com/facepp/v3/compare"
data = {
'api_key': '你自己的apikey',
'api_secret': '你自己的apisecret',
'image_url1': image1,
'image_url2': image2
}
data = urllib.parse.urlencode(data)
data = data.encode('utf-8')
req = urllib.request.Request(url, data=data) try:
resp = urllib.request.urlopen(req)
content = resp.read()
if content:
print(content)
return content
except Exception:
resp = urllib.request.urlopen(req)
content = resp.read()
if content:
print(content)
return content def compare_test():
lfw_file = open("pairs.txt")
res_file = open("res_face.txt", "a+")
count = 0
while 1:
image_path = "http://vis-www.cs.umass.edu/lfw/images/"
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 = compare(register_image, verify_image)
content = str(content)
content = content.strip('b\'')
content = json.loads(content) if (int(count / 300)) % 2 == 0:
flag = 1
else:
flag = 0 if 'confidence' in content.keys():
score = content['confidence']
else:
score = '-1'
res_file.write(line + '\t' + str(score) + '\t' + str(flag) + '\n') count += 1 lfw_file.close()
res_file.close()
compare_test()
4.测试结果有待分析。。
百度人脸识别api及face++人脸识别api测试(python)的更多相关文章
- 转《trackingjs+websocket+百度人脸识别API,实现人脸签到》流程
先用websocket与后台建立通讯:用trackingjs在页面调用电脑摄像头,监听人脸,发现有人脸进入屏幕了,就把图片转成base64字符串,通过websocket发送到后端:后端拿到图片,调用百 ...
- trackingjs+websocket+百度人脸识别API,实现人脸签到
在公司做了个年会的签到.抽奖系统.用java web做的,用公司的办公app扫二维码码即可签到,扫完码就在大屏幕上显示这个人的照片.之后领导让我改得高大上一点,用人脸识别来签到,就把扫二维码的步骤改成 ...
- 虹软人脸识别 - Android Camera实时人脸追踪画框适配
在使用虹软人脸识别Android SDK的过程中 ,预览时一般都需要绘制人脸框,但是和PC平台相机应用不同,在Android平台相机进行应用开发还需要考虑前后置相机切换.设备横竖屏切换等情况,因此在人 ...
- C# net Emgu.CV.World 人脸识别 根据照片将人脸抠图出来。
Emgu.CV.World 人脸识别 根据照片将人脸抠图出来.效果如下: 应用范围:配合摄像头,抓取的图像,抠出人脸照片,这样人脸照片的大小会很小,传输速度快.这样识别速度也就快. 目前我正在做百度人 ...
- PHP:基于百度大脑api实现OCR文字识别
有个项目要用到文字识别,网上找了很多资料,效果不是很好,偶然的机会,接触到百度大脑.百度大脑提供了很多解决方案,其中一个就是文字识别,百度提供了三种文字识别,分别是银行卡识别.身份证识别和通用文字识别 ...
- TensorFlow环境 人脸识别 FaceNet 应用(一)验证测试集
TensorFlow环境 人脸识别 FaceNet 应用(一)验证测试集 前提是TensorFlow环境以及相关的依赖环境已经安装,可以正常运行. 一.下载FaceNet源代码工程 git clone ...
- Android打开相机进行人脸识别,使用虹软人脸识别引擎
上一张效果图,渣画质,能看就好 功能说明: 人脸识别使用的是虹软的FreeSDK,包含人脸追踪,人脸检测,人脸识别,年龄.性别检测功能,其中本demo只使用了FT和FR(人脸追踪和人脸识别),封装了开 ...
- 基于人脸识别+IMDB-WIFI+Caffe的性别识别
本文用记录基于Caffe的人脸性别识别过程.基于imdb-wiki模型做finetune,imdb-wiki数据集合模型可从这里下载:https://data.vision.ee.ethz.ch/cv ...
- paper 88:人脸检测和识别的Web服务API
本文汇总了全球范围内提供基于Web服务的人脸检测和识别的API,便于网络中快速部署和人脸相关的一些应用. 1:从How-old的火爆说起 最开始,网站的开发者只是给一个几百人的群发送email,请他们 ...
随机推荐
- springMVC文件上传优化
1. 新建web project 2. 填 jar,注意新加入两个上传文件的jar, commons-io, commons-fileupload 3. 改写web.xml <?xml vers ...
- pe and elf
http://staff.ustc.edu.cn/~sycheng/sst/exp_crack/ELF.pdf https://refspecs.linuxbase.org/elf/TIS1.1.pd ...
- YouKu iOS笔试题一
序言 最近收到某某同学将去youku的iOS笔试题的邮件,希望笔者能整理一下,并提供参考答案.笔者决定整理出来,并分享给大家.当然,与此同时,也想看看youku的笔试题到底有多难,也考考自己有多少料吧 ...
- org.springside.modules.orm中的page类自我解读
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler ...
- spark 文件系统Alluxio(之前名为Tachyon)
http://www.alluxio.org/documentation/v1.0.0/cn/ http://www.winseliu.com/blog/2016/04/15/alluxio-quic ...
- Android MulticastSocket IP组播
MulticastSocket是对等的关系,也就是他们通过IP多点组播保留的地址来相互接收在这个组的Socket发送的消息 我写了一个例子,MultiSocketB是一个service,用于先接收再发 ...
- JOptionPane的使用
最近在做swing程序中遇到使用消息提示框的,JOptionPane类其中封装了很多的方法. 很方便的,于是就简单的整理了一下. 1.1 showMessageDialog 显示一个带有OK 按钮的模 ...
- mysqldump导入导出mysql数据库
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- [iOS Animation]-CALayer 定时器动画
定时器的动画 我可以指导你,但是你必须按照我说的做. -- 骇客帝国 在第10章“缓冲”中,我们研究了CAMediaTimingFunction,它是一个通过控制动画缓冲来模拟物理效果例如加速或者减速 ...
- Spark1.3.0安装
之前在用Hadoop写ML算法的时候就隐约感觉Hadoop实在是不适合ML这些比较复杂的算法.记得当时写完kmeans后,发现每个job完成后都需要将结果放在HDFS中,然后下次迭代的时候再从文件中读 ...