专栏首页Urlteamface++人脸识别与人脸库匹配python实现笔记一

face++人脸识别与人脸库匹配python实现笔记一

具体的api手册请去官网学习。目标是实现刷脸签到系统。测试功能的源码可以在github上看到

https://github.com/luyishisi/The_python_code.git 文件夹是python_face++

解释基础概念:

Face++ 人脸识别系统包含五个核心概念:Image, Face, Person, Faceset 和Group。

  • Image 指用户或应用程序给Face++ API提供的图片,以供后续检测/识别使用。用户可以通过指定url或在程序中上传(通过HTTP POST提交图片的二进制文件)提供Image。
  • Face 指Image中检测出的人脸。一张Image中可能包含多个Face。
  • Person 指同一个人的Face集合。Person中的多个Face可能来源于多个Image,但必须是同一个人的多张Face。一个Face可以属于多个不同的Person。Person被用在人脸验证(verify)和人脸识别(identify)中。
  • Faceset 指一个或多个Face的集合。Faceset和Person一样,都是Face的集合,但Faceset并不要求Face来源于同一个人。一个Face可以属于多个不同的Person和Faceset。Faceset被用在人脸搜索(search)中。
  • Group 指多个Person的集合。在多数Face++人脸识别场景中,用户需指定一个Group来限定在此集合中进行识别。

ID和Name两套索引系统用来定位和访问上述所有元素, Image,Face,Person,Faceset 和 Group都有系统分配的全局唯一的ID。为便于用户使用有语义信息的名字进行开发,用户也可给Person 和 Group设置一个Name。Name由用户提供,必须在App内全局唯一。

试用说明:

首先从官网注册账号,然后注册一个产品获取api的两个关键信息。

API Key

187aa2ee8fc784972b7302f3b31becab×××

API Secret

F1czaFXaRJ5VzRcdVNZppUwJpDg4zjUY×××

然后下载下sdk文件,在目录下运行python hello.py 。

在文件中修改好api的两个全局变量就能正常运行。

源码学习与测试

hello代码中虽然很详细,但是在一系列实践的过程还是有点小疑惑,唯有步步测试。

导入face++的api类库

from facepp import API

测试零:自定义输出函数

导入库后显示判断当前的数据类型,再采用不同的输出方式,有汉字就用utf-8,字典的输出方式需要认真看看,之后在截取数据需要使用,

import time
from pprint import pformat
def print_result(hint, result):
    def encode(obj):
        if type(obj) is unicode:
            return obj.encode('utf-8')
        if type(obj) is dict:
            return {encode(k): encode(v) for (k, v) in obj.iteritems()}
        if type(obj) is list:
            return [encode(i) for i in obj]
        return obj 
    print hint
    result = encode(result)
    print '\n'.join(['  ' + i for i in pformat(result, width = 75).split('\n')])

测试一:人脸分析

首先是自定义图片路径,在hello.py,40行开始,image_dir 定义的是基础路径,这个需要用网络上的图片地址,如果是本地的图片需要转换成二进制上传再调用,定义一个persons字典。里面三个作为基础的人脸库,hello.py功能是得出target_image 是否在里面出现,存在则返回名字。

# 人名及其脸部图片
IMAGE_DIR = ''
PERSONS = [ 
    ('luyi', IMAGE_DIR + 'http://urlteam.org/wp-content/uploads/2016/01/2016-01-
]
 
# 步骤1:检测出三张输入图片中的Face,找出图片中Face的位置及属性
 
FACES = {name: api.detection.detect(url = url)
        for name, url in PERSONS}
 
for name, face in FACES.iteritems():
    print_result(name, face)

运行后返回的数值是如下图

其中每一项的含义基本看英文能懂,可以翻阅api文档 http://www.faceplusplus.com.cn/detection_detect/ 上面显示 有95.9602%的可能是男性,,年龄检测是26岁,+-26岁/。不算太离谱99.85%是亚洲人 现在考虑一个如何用python,进行数据捕捉字典。

字典读取的方式比较神奇,第一次接触到这么多重嵌套的字典。

本来多重嵌套不过是增加几个【】【】而已。但是这个字典是字典嵌套列表再嵌套字典再嵌套字典,我也是醉了,face里面是列表,列表的内容是字典,。好,不绕口令了,要想读取年龄,则

在自定义输出函数的下方增加一句话

print (result[‘face’][0][‘attribute’][‘age’][‘value’])

重点就在于那个【0】这个代表列表的第一组。别的就和普通的嵌套字典调用一个原理了。

测试二:人脸部位位置分析

/detection/landmark  api文档是:http://www.faceplusplus.com.cn/detectionlandmark/

检测给定人脸(Face)相应的面部轮廓,五官等关键点的位置,包括25点和83点两种模式。

值得注意的是需要的参数,需要用赋值的形式给予,如下

for name, face in FACES.iteritems():
    rst = api.detection.landmark(api_key=API_KEY,api_secret=API_SECRET,
            person_name = name, face_id = p['face'][0]['face_id'])
    print_result(format(name), rst)

原创文章,转载请注明: 转载自URl-team

本文链接地址: face++人脸识别与人脸库匹配python实现笔记一

  1. python_face++ 上传本地图片进行解析
  2. 人脸识别考勤系统-第二版本研发手札
  3. 学习—用 Python 和 OpenCV 检测和跟踪运动对象
  4. 使用pyaiml机器人模块快速做个和你智能对话的大脑
  5. python-opencv人脸识别与树莓派摄像头转头跟随()
  6. 人脸识别考勤机开发计划

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 人脸识别哪家强?四种API对比

    2001年,Paul Viola和Michael Jone开始了计算机视觉的革命,当时的人脸识别技术并不成熟,识别准确度较低,速度也很慢。直到提出了Viola-...

    小小詹同学
  • OpenCV4 | 如何一行代码搞定SSD模型推理与结果解析

    最新版本OpenCV4.1.2,针对深度神经网络模块,提供了三个高阶的API,通过它们,自动实现输入图像预处理与后处理,直接输出检测结果,支持图像分类、对象检测...

    OpenCV学堂
  • 国内人脸识别第一案,我们来谈谈国外法规和隐私保护技术

    一是杭州野生动物世界“为了方便消费者快速入园”,在今年 10 月将年卡系统从“指纹入园”升级为“人脸识别入园”,被消费者起诉。起诉者是浙江理工大学特聘副教授郭兵...

    数据派THU
  • OpenCV实现年龄与性别预测

    前面我写了很多篇关于OpenCV DNN应用相关的文章,这里再来一篇文章,用OpenCV DNN实现一个很有趣好玩的例子,基于Caffe的预训练模型实现年龄与性...

    小小詹同学
  • ICCV 2019 | 半监督损失函数,利用无标签数据优化人脸识别模型

    论文标题:Unknown Identity Rejection Loss: Utilizing Unlabeled Data for Face Recognit...

    小白学视觉
  • 云从科技温浩:不能为了AI而做AI,应该形成感知、认知和决策闭环

    AI企业发展应该是一个从学术研究、行业验证、商业落地、行业平台到智能生态的一层层深入过程。

    镁客网
  • CPU上跑深度学习模型,FPS也可以达100帧

    英特尔从去年推出OpenVINO开发框架,从此以后几乎每三个月就更新一个版本,最新版本2019R03,但是此版本跟之前的版本改动比较大,所以在配置Python ...

    OpenCV学堂
  • 人脸识别升级版进美国高校遭抵制!CMU “教室监视”系统连老师也不放过

    继中国高校试水人脸识别进教室后,美国高校也“享受”到了类似的待遇,甚至还加入了姿势、动作识别。

    新智元
  • 人脸识别简介(使用Python代码)

    人脸识别是计算机视觉的一个子领域,它的应用范围非常广泛,现在已经成为世界各地的企业争相竞逐的新技术之一。考虑到市场的盈利现状,未来这项技术还会有更大的需求空间,...

    小小詹同学
  • 利用OpenCV进行人脸对齐

    人脸对齐,即根据图像中人脸的几何结构对图像进行仿射变换(旋转、缩放、平移等),将人脸变换到一个统一的状态。人脸对齐是人脸识别的一个重要步骤,可以提升人脸识别的精...

    OpenCV学堂

扫码关注云+社区

领取腾讯云代金券