从零开始玩人工智能—人脸 API—02

简介:

    前文介绍了人脸API,但没有一个完整的功能实现,各个功能的API始终如散开的珍珠一样,不能串成珠链。到底这套API是如何工作的呢?Person、Person Group、FaceList、Face这些不同的对象是怎么发生联系的呢?

     于是,我决定写一个相对完整的简单程序,完成一个对人脸进行识别的功能。

     仔细看了看文档,琢磨了一下。为了实现人脸识别,需要实现以下几个步骤:

1、创建一个Person Group。人需要通过组来进行管理组织。每个组最多有1000个人,免费的每个订阅最多1000人,S0订阅的每个组10000人,每个订阅上限1M组、100M人。

2、创建一个Person。人是Face的拥有着。每个人最多有248张脸的图片。和人关联的脸是持久化的persistedFace,而使用detect等api读取的是非持久的Face。

3、为Person提供几张不同的Face。除了Face,还有FaceList对象,但更多用于分辨类似的脸。我估计要进行人脸识别,用Face对象就可以。

4、对提供的几张Face进行训练。人工智能需要对输入进行训练,利用认知服务进行分析并得到结果。理论上提供训练的数据越多,结果越准确。

5、提供一张用于比对的Face。上传一张图片,让人工智能判断是不是同一个人。

    开始之前我要首先熟悉一下示例代码。前文提供的示例代码和Face API的示例代码使用了不同的模块。示例代码引入了requests这个库,使用它可以更灵活的完成有关HTTP的各类方法特别是传递数据。所以:

     pip install requests

     因为有两种不同的数据headers提交方式json和octet-steam,所以分开写了两个不同的headers头部定义。为了便于使用,把订阅的Key和访问的基础链接分别使用变量进行提供。

image

    正式开干~首先是创建Person Group。和别的对象不同,PersonGroup的名字和ID都是字符串,只接受小写英文字符和‘-’、‘_’,不多于64个字符。

image

    其他对象的ID都是类似GUID的形式。通常在创建对象的时候由服务返回。由于Person Group是首先创建的,所以其ID由用户指定也很合乎情理。创建Person Group之后,就可以在组里面创建人了。

image

    每一部我都是用了print来输出获得的json数据。由于添加Face需要提供Person ID,所以在这里我从json里面取出了personId的数据。

    Python里面处理json可以用dump、dumps、load、loads不同的方法。loads能够把获得的json数据转成dict或者list,这在我踩过list的坑之后才想明白。一旦json中的数据分层了,转化出来的就是list了,这时就需要逐层处理数据。可以参考Python的手册: 18.2. json— JSON encoder and decoder:https://docs.python.org/2/library/json.html

image

    有了personId,就可以为特定的人添加Face了。官方示例代码给的是通过json传递一个图片的url。有很多人在下面问,怎么使用本地的照片呢?其实利用文件,然后使用octet-steam发送给Azure就可以了。经过一番对requests.request()参数的猜测和对文件的尝试,果然就能够把图片传上去了。persistedFaceId其实后面没有直接使用,为了学习我还是把它提取出来了。

    为了训练机器,继续传了几张我的帅照……

image

    当一个人有了几分脸面之后……哈哈,我们应该训练人工智能了。直接POST特定URL即可。

    到了关键的时候了,我们要检验认知服务的效果了。先使用Detect方法输入一张照片。

image

    这里其实不需要所有参数,只需要返回faceId就可以。所以把params里面的数据删了也无所谓。不过我想看看完整的输出是怎样的,就全写出来了。

    于是就遇到了前面说的坑,使用dict的方法,没法获得list里面的数据。要是一层一层分析…好麻烦啊,转念一想,输出的格式是固定的,因此偷了个懒,直接用list的下标获取faceId的dict,然后再get出faceId。

    最后,就是调用Verify方法,确认提供的照片是不是我们之前使用几张照片训练过的人的了。这句话好长去……

image

    为了容易体现结果,我还特意用了中文……

image

   按照文档说的,高于0.5的评分就可以视作通过,所以属性isIdentical的值为True,直接拿来做条件。

    照片是我本人吗?当然,是。

    利用Azure的Face API,完成一个人脸识别,很简单吧。



     本文转自HaoHu 51CTO博客,原文链接:http://blog.51cto.com/haohu/2072179,如需转载请自行联系原作者



相关文章
|
1月前
|
小程序 前端开发 JavaScript
视觉智能平台常见问题之抠人脸的api如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
29 3
|
1月前
|
机器学习/深度学习 API 计算机视觉
视觉智能平台常见问题之获取人脸皮肤的颜色Api如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
18 0
|
2月前
|
机器学习/深度学习 人工智能 API
人工智能应用工程师技能提升系列2、——TensorFlow2——keras高级API训练神经网络模型
人工智能应用工程师技能提升系列2、——TensorFlow2——keras高级API训练神经网络模型
33 0
|
4月前
|
人工智能 API 开发工具
【Python+百度API】实现人脸识别和颜值检测系统(包括人脸数量、年龄、颜值评分、性别、种族、表情检测)(超详细 附源码)
【Python+百度API】实现人脸识别和颜值检测系统(包括人脸数量、年龄、颜值评分、性别、种族、表情检测)(超详细 附源码)
95 0
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
通用人工智能综述 从背景介绍到API调用
通用人工智能综述 从背景介绍到API调用
80 0
|
4月前
|
人工智能 测试技术 API
软件测试/人工智能|教你如何使用ChatGPT的API
软件测试/人工智能|教你如何使用ChatGPT的API
226 0
|
10月前
|
机器学习/深度学习 监控 算法
人脸跟踪:基于人脸检测 API 的连续检测与姿态估计技术
基于人脸检测 API 的人脸跟踪技术在视频监控、虚拟现实和人机交互等领域具有广泛应用。通过连续的人脸检测与姿态估计,可以实现对人脸的跟踪和姿态分析。随着深度学习和计算机视觉技术的不断发展,人脸跟踪技术将迎来更加精确、实时和智能化的发展前景
155 0
|
10月前
|
人工智能 数据挖掘 API
人工智能在办公领域的应用及API数据返回
人工智能在办公领域的应用场景非常广泛,可以帮助企业提高效率、降低成本、改善工作质量,提高员工的工作满意度。
112 0
|
机器学习/深度学习 数据采集 人工智能
好饭不怕晚,Google基于人工智能AI大语言对话模型Bard测试和API调用(Python3.10)
谷歌(Google)作为开源过著名深度学习框架Tensorflow的超级大厂,是人工智能领域一股不可忽视的中坚力量,旗下新产品Bard已经公布测试了一段时间,毁誉参半,很多人把Google的Bard和OpenAI的ChatGPT进行对比,Google Bard在ChatGPT面前似乎有些技不如人。 事实上,Google Bard并非对标ChatGPT的产品,Bard是基于LaMDA模型对话而进行构建的,Bard旨在构建一个对话式的AI系统,使其能够更好地理解人类语言,并且具备进行多轮对话的能力。而GPT的目标是生成自然语言文本。
好饭不怕晚,Google基于人工智能AI大语言对话模型Bard测试和API调用(Python3.10)
|
人工智能 自然语言处理 API
调用百度api实现人工智能文本语义识别
调用百度api实现人工智能文本语义识别
135 0
调用百度api实现人工智能文本语义识别