从零开始玩人工智能-人脸 API-03
前文我们尝试写了一个完整的人脸验证过程,从创建一个组,一个人,到为人提供照片,并训练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相关推荐
- 从零开始玩人工智能-机器人服务-03
机器人服务应该是个比较容易上手的AI服务,发展也非常的快.距离我之前写的随笔没多久吧,已经从原来的独立站点,变为Azure中的Bot Services了.而且支持的机器人种类也更加清晰和增多了. 更新 ...
- 使用Azure人脸API对图片进行人脸识别
人脸识别是人工智能机器学习比较成熟的一个领域.人脸识别已经应用到了很多生产场景.比如生物认证,人脸考勤,人流监控等场景.对于很多中小功能由于技术门槛问题很难自己实现人脸识别的算法.Azure人脸API ...
- 基于YOLO目标检测及OpenCV实现的游戏代玩人工智能体(Auto Gaming Agent) [4]
大型生存类游戏自动代玩人工智能[4] -- 自动控制 一.键鼠自动操作 1. 操作游戏角色 2. 瞄准目标 二.自动采集 1. OCR文字识别 2. 多线程运行 一.键鼠自动操作 一般电脑上的游戏操作 ...
- 非人工智能专业怎样从零开始学人工智能?
人工智能(Artificial Intelligence,AI)是指让机器具有类似人类智能的能力,包括感知.理解.推理.学习.规划.决策.创造等多个方面.人工智能研究涉及到计算机科学.数学.物理学.心 ...
- 人工智能常用 API
人工智能常用 API 转载 2016年07月13日 19:17:27 2047 机器学习与预测 1.AlchemyAPI 在把数据由非结构化向结构化的转化中运用得较多.用于社交媒体监控.商业智能 ...
- 【从零开始玩量化9】jqktrader:同花顺客户端自动化交易
前情提要 在 [从零开始玩量化7]easyTrader: 自动化(程序化)交易利器 ,有朋友反应,easytrader连接同花顺客户端,存在问题,验证码等问题,导致API不能正常使用. 研究了一下,的 ...
- 从零开始学python人工智能课程_从零开始学人工智能(12)--Python · 决策树(零)· 简介...
原标题:从零开始学人工智能(12)--Python · 决策树(零)· 简介 感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直 ...
- 【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. ...
- 从零开始玩转JMX(四)——Apache Commons Modeler Dynamic MBean
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
最新文章
- 语言模型如何为大象“称”体重?斯坦福提出“尺度探测”新思路
- 云服务收入年增长28%
- Linux调优方案,sysctl.conf的设置
- css中怎么令dt 和 dd对齐
- 微信WebView关闭后本地cookie无法清除问题
- .gitignore文件_Django项目.gitignore文件建议忽略文件清单及是否需要忽略数据库迁移文件...
- STM32采集电阻触摸贴膜
- Spring 的狭义与广义
- js前端之浅拷贝与深拷贝
- MAC 安装 Redis 客户端
- java gson解析JSON
- sklearn基础篇(三)-- 鸢尾花(iris)数据集分析和分类
- 《第一财经周刊》不一样的Startup:中国创业者喜欢时尚娱乐
- 被final修饰的变量到底能不能被修改
- android扫码二维码识别二维码
- 看了这一篇你还不理解什么是闭包——我直播吃翔!
- 如何采集需要验证码登录的网站数据
- Java---从键盘输入一位整数,当输入1-7时,输出星期一~星期日
- 关于STM32的USART_GetFlagStatus和USART_GetITStatus解析(异步通信)
- HTML入门教程(一)
热门文章
- json数组 js html标签,JS 实现创建HTML标签及解析Json
- 关于助动词和过去分词的一点见解
- 的工作空间查看_【工作推荐】裱花师、现金会计、汽车维修等热门岗位汇总!...
- 如何查看本机端口_怎样查看Mac的端口号以及占用情况
- Android 四大组件之——Acitivity(三) 深入了解Activity的启动流程
- android wear 2.0 moto360 二代,最好看的 Android Wear, 二代 Moto 360 可能就是这样了
- 2021高考成绩查询时间 新闻,教育资讯:2021高考成绩一般公布时间 多久出成绩...
- python selenium爬虫豆瓣_Python爬虫:学习selenium的正确方式
- linux 蓝牙编程,实战Linux Bluetooth编程(三) HCI层编程
- 浅谈 JavaScriptCore