前文我们尝试写了一个完整的人脸验证过程,从创建一个组,一个人,到为人提供照片,并训练AI,直至最后提供一张照片让 AI 利用 Face API 判断是不是这个特定的人。

另一个经常会用到的人脸识别,是在一张照片中查找认识的人。Facebook什么的挺早就能够识别照片中的人并可以让你给他们打上标签。其实,利用Face API做类似的事情也一点不复杂。不信我们用代码来看看。

为了说明在一张合影中 AI 能够找到并识别特定人,我用了去年峰会中国MVP及MVP Lead梁迪和微软CEO萨蒂亚·纳德拉(Satya Nadella)、微软全球资深副总裁沈向洋、微软全球资深副总裁潘正磊的合影来做代码范例,也算是扯虎皮做大旗吧哈哈哈。

首先,使用前文示例代码中用到的Detect方法来识别照片中的人脸。

说实话,我有点担心。这张照片里的人好多啊,AI 能够都识别出来么?

呼啦啦返回了46个faceId,我趴在照片上一顿数,还真的是一个不落都识别出来了,厉害厉害!

在这里我遇到了一个问题。如前文介绍的,Detect方法识别出来的人脸会以JSON形式返回,而两层及两层以上的数据结构在转成Python的数据时,不再是dict,而是list。多层的数据意味着多层的list对象。上一次因为数据简单,直接使用了List的下标来定位数据。这一次就要老老实实遍历进行处理了。因此,for语句和list.append()就学会使用了。

由这个问题引发的另外一个问题是,生成的List需要提供给下一步Face的Identify方法作为输入。按照API文档的说明,输入应该形如:

在“faceIds”这里,应该输入所有经由Detect识别出的人脸的ID。所以我把上一步获得的List转换成了JSON格式然后拼装这个请求的body。结果……报错了……冷静地print出来list和body,跟文档进行比较,原来多了对’’’号……

原来拼装这个JSON的时候,使用List对象facesId就可以了。使用json的dumps()把List转成json,我多此一举了。那为什么又报Error:0呢?仔细看文档,用于Identify方法的人脸数量,应该1到10之间。我们输入给AI的Face ID大大超过了这个数量,所以……报错了……那该怎么办呢?我可以分批处理,也可以裁剪照片。因为后续还要试试找不到人怎么办,所以我对照片进行了不同的裁剪。

返回的json格式形如:

如果没有对应到人,faceId对应的“condidates”就会显示为[],即空。而对应到人的faceId对应会有识别出的人的personId和相识度评分confidence。看来要把这个结果滤出来做点操作还是有点小复杂啊,一样,使用for语句逐个下标处理List。

使用两层List的下标读取,就能够成功拆分从Face API返回的json数据了。我记得人脸识别的Verify方法里,判断是否本人的参考值为0.5,因此在这里如果系统返回相识度评分大于0.5,我就继续从Face ID再去识别具体的人是谁。

果然,Face API从合影照片中认出了我~那么如果我不在照片里呢?

Face API确实没有发现通过training认识的人~

细心的你发现了吧,两次照片检测的Face ID怎么全部不一样?还记得前文我们说过的吗?Detect生成的Face ID是临时的,会在24小时之后清除,所以每次获得的ID都不同,即使是同一张脸。而关联到人的脸,其Face ID就是持久的,可以在需要的时候使用。

这么牛的合影,难道只识别我自己吗?当然不,我们要试试 AI 能不能识别多个人~

立刻上网为这三位大神各自找了三张照片。找的过程中发现,潘女士原来早在2010年就参加过MVP的Open Day,难怪上次MVP Round Table的时候觉得那么熟悉,看我这糟糕的记性…

赶紧在上次创建的person group里再创建了三个person,每人传输了上图的三张照片。

再次运行代码,这一次,AI 在合影中就识别出了四个人了,厉害厉害~

利用Azure Cognitive Services中的Face API,哪怕没有任何深入的 AI 知识,哪怕没有熟练的编程技巧,只需要简单的几十行代码,就能够实现有趣的人脸识别。

转载于:https://blog.51cto.com/haohu/2073059

从零开始玩人工智能-人脸 API-03相关推荐

  1. 从零开始玩人工智能-机器人服务-03

    机器人服务应该是个比较容易上手的AI服务,发展也非常的快.距离我之前写的随笔没多久吧,已经从原来的独立站点,变为Azure中的Bot Services了.而且支持的机器人种类也更加清晰和增多了. 更新 ...

  2. 使用Azure人脸API对图片进行人脸识别

    人脸识别是人工智能机器学习比较成熟的一个领域.人脸识别已经应用到了很多生产场景.比如生物认证,人脸考勤,人流监控等场景.对于很多中小功能由于技术门槛问题很难自己实现人脸识别的算法.Azure人脸API ...

  3. 基于YOLO目标检测及OpenCV实现的游戏代玩人工智能体(Auto Gaming Agent) [4]

    大型生存类游戏自动代玩人工智能[4] -- 自动控制 一.键鼠自动操作 1. 操作游戏角色 2. 瞄准目标 二.自动采集 1. OCR文字识别 2. 多线程运行 一.键鼠自动操作 一般电脑上的游戏操作 ...

  4. 非人工智能专业怎样从零开始学人工智能?

    人工智能(Artificial Intelligence,AI)是指让机器具有类似人类智能的能力,包括感知.理解.推理.学习.规划.决策.创造等多个方面.人工智能研究涉及到计算机科学.数学.物理学.心 ...

  5. 人工智能常用 API

    人工智能常用 API 转载  2016年07月13日 19:17:27 2047 机器学习与预测 1.AlchemyAPI   在把数据由非结构化向结构化的转化中运用得较多.用于社交媒体监控.商业智能 ...

  6. 【从零开始玩量化9】jqktrader:同花顺客户端自动化交易

    前情提要 在 [从零开始玩量化7]easyTrader: 自动化(程序化)交易利器 ,有朋友反应,easytrader连接同花顺客户端,存在问题,验证码等问题,导致API不能正常使用. 研究了一下,的 ...

  7. 从零开始学python人工智能课程_从零开始学人工智能(12)--Python · 决策树(零)· 简介...

    原标题:从零开始学人工智能(12)--Python · 决策树(零)· 简介 感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直 ...

  8. 【Python7】csv/excel/matplotlib,排序/树遍历,线/进程,文件/xml操作,百度人脸API,aiohttp/hal/restful/curl

    文章目录 1.csv 2.excel 3.matplotlib 4.时间复杂度 5.顺序表/链表 6.六种排序 6.1 选择 6.2 插入 6.3 希尔 6.4 冒泡 6.5 快排 6.6 归并 7. ...

  9. 从零开始玩转JMX(四)——Apache Commons Modeler Dynamic MBean

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

最新文章

  1. 语言模型如何为大象“称”体重?斯坦福提出“尺度探测”新思路
  2. 云服务收入年增长28%
  3. Linux调优方案,sysctl.conf的设置
  4. css中怎么令dt 和 dd对齐
  5. 微信WebView关闭后本地cookie无法清除问题
  6. .gitignore文件_Django项目.gitignore文件建议忽略文件清单及是否需要忽略数据库迁移文件...
  7. STM32采集电阻触摸贴膜
  8. Spring 的狭义与广义
  9. js前端之浅拷贝与深拷贝
  10. MAC 安装 Redis 客户端
  11. java gson解析JSON
  12. sklearn基础篇(三)-- 鸢尾花(iris)数据集分析和分类
  13. 《第一财经周刊》不一样的Startup:中国创业者喜欢时尚娱乐
  14. 被final修饰的变量到底能不能被修改
  15. android扫码二维码识别二维码
  16. 看了这一篇你还不理解什么是闭包——我直播吃翔!
  17. 如何采集需要验证码登录的网站数据
  18. Java---从键盘输入一位整数,当输入1-7时,输出星期一~星期日
  19. 关于STM32的USART_GetFlagStatus和USART_GetITStatus解析(异步通信)
  20. HTML入门教程(一)

热门文章

  1. json数组 js html标签,JS 实现创建HTML标签及解析Json
  2. 关于助动词和过去分词的一点见解
  3. 的工作空间查看_【工作推荐】裱花师、现金会计、汽车维修等热门岗位汇总!...
  4. 如何查看本机端口_怎样查看Mac的端口号以及占用情况
  5. Android 四大组件之——Acitivity(三) 深入了解Activity的启动流程
  6. android wear 2.0 moto360 二代,最好看的 Android Wear, 二代 Moto 360 可能就是这样了
  7. 2021高考成绩查询时间 新闻,教育资讯:2021高考成绩一般公布时间 多久出成绩...
  8. python selenium爬虫豆瓣_Python爬虫:学习selenium的正确方式
  9. linux 蓝牙编程,实战Linux Bluetooth编程(三) HCI层编程
  10. 浅谈 JavaScriptCore