Azure认知服务之Face API上手体验
Azure认知服务:Face API
Face API是Azure认知服务之一,Face API有两个主要功能:
人脸检测
Face API可在图像中以高精度人脸位置检测多达64个人脸。图像可以通过文件以字节或有效的URL指定。面部检测提取一系列与面部相关的属性,例如姿势,性别,年龄,头部姿势,面部毛发和眼镜。
人脸识别
人脸识别广泛用于许多场景,包括安全性,自然用户界面,图像内容分析和管理,移动应用程序和机器人。Face API提供了四种人脸识别功能:人脸验证,查找相似的人脸,脸部分组和人物识别。
申请密钥
Azure Face API的国际站访问地址,点击试用按钮,进入申请界面能够获取到API地址和密钥。
以下是中国站访问地址,登录门户网站创建认知服务订阅,同样也能获取到API地址和密钥。
样本素材和示例项目
打开Github地址:https://github.com/Microsoft/Cognitive-Face-Windows,clone或者下载该项目,"/data"
就是照片样本目录,其中"/Data/\PersonGroup"
是一家人的照片目录,注意它的存放要求,每个人按身份命名还有独立的子目录。
代码片段
授权API调用
faceServiceClient = new FaceServiceClient("<Subscription Key>");
定义PersonGroup
// Create an empty PersonGroup
string personGroupId = "myfamily";
await faceServiceClient.CreatePersonGroupAsync(personGroupId, "My Family");
// Define Dad
CreatePersonResult dad = await faceServiceClient.CreatePersonAsync(
// Id of the PersonGroup that the person belonged to
personGroupId,
// Name of the person
"Dad"
);
// Define Mom, Son and Daughter in the same way
检测人脸并将每一张脸进行注册
// Directory contains image files of Anna
const string DadImageDir = @"D:\Data\PersonGroup\Family1-Dad\";
foreach (string imagePath in Directory.GetFiles(DadImageDir, "*.jpg"))
{
using (Stream s = File.OpenRead(imagePath))
{
// Detect faces in the image and add to Dad
await faceServiceClient.AddPersonFaceAsync(
personGroupId, dad.PersonId, s);
}
}
// Define Mom, Son and Daughter in the same way
训练PersonGroup模型
await faceServiceClient.TrainPersonGroupAsync(personGroupId);
TrainingStatus trainingStatus = null;
while(true)
{
trainingStatus = await faceServiceClient.GetPersonGroupTrainingStatusAsync(personGroupId);
if (trainingStatus.Status != Status.Running)
{
break;
}
await Task.Delay(1000);
}
根据定义的PersonGroup识别每一张脸
string testImageFile = @"D:\Data\\identification1.jpg";
using (Stream s = File.OpenRead(testImageFile))
{
var faces = await faceServiceClient.DetectAsync(s);
var faceIds = faces.Select(face => face.FaceId).ToArray();
var results = await faceServiceClient.IdentifyAsync(personGroupId, faceIds);
foreach (var identifyResult in results)
{
Console.WriteLine("Result of face: {0}", identifyResult.FaceId);
if (identifyResult.Candidates.Length == 0)
{
Console.WriteLine("No one identified");
}
else
{
// Get top 1 among all candidates returned
var candidateId = identifyResult.Candidates[0].PersonId;
var person = await faceServiceClient.GetPersonAsync(personGroupId, candidateId);
Console.WriteLine("Identified as {0}", person.Name);
}
}
}
效果展示
示例项目
示例项目是一个Windows客户端的应用,Face API的每个功能进行了展示,如果一开始不想编写代码,可以使用这个项目进行体验。效果如下:
可以看到,不论是单人还是多人,不论是检测还是识别,Azure Face API都给出了极好的结果。运用好它,可以实现丰富的应用,你也来试试吧!
Face API文档:https://docs.microsoft.com/zh-cn/azure/cognitive-services/Face/overview
Azure认知服务之Face API上手体验的更多相关文章
- Azure 认知服务 (5) 计算机视觉API - 使用C#代码实现读取图片中的文字(OCR)功能
<Windows Azure Platform 系列文章目录> 在笔者之前的文章:Azure 认知服务 (4) 计算机视觉API - 读取图片中的文字 (OCR) 介绍了使用用户界面,在海 ...
- Azure 认知服务 (4) 计算机视觉API - 读取图片中的文字 (OCR)
<Windows Azure Platform 系列文章目录> 微软Azure认知服务的计算机视觉API,还提供读取图片中的文字功能 在海外的Windows Azure认知服务的读取图片功 ...
- Azure 认知服务 (3) 计算机视觉API - 分析图像,使用C#代码
<Windows Azure Platform 系列文章目录> 在上一节中Azure 认知服务 (2) 计算机视觉API - 分析图像,笔者介绍了如何使用API测试控制台进行调试. 本章将 ...
- Azure 认知服务 (2) 计算机视觉API - 分析图像
<Windows Azure Platform 系列文章目录> 在上一节内容中,笔者介绍了微软认知服务的概览. 在本节中,笔者将详细介绍微软认知服务中的一种:计算机视觉 (Computer ...
- Azure 认知服务--计算机视觉 API - 分析图像
在本节中,笔者将详细介绍 Azure 认知服务中的一种:计算机视觉 (Computer Vision) API. 我的一个客户有需求,他们需要消费者与自己的产品合照,然后上传到服务器并转发到朋友圈. ...
- Azure认知服务的实际应用-资讯采集推送
Azure认知服务的实际应用-资讯采集推送 演示 实现的是通过使用各种azure服务,每天自动获取资讯.博客,定时推送到公众号的功能! 微信公众号搜索TechViews,或直接扫描二维码关注,每天推送 ...
- Azure 认知服务概述
背景知识 近些年随着机器学习.深度学习等技术的不断发展,人工智能在越来越多的场景得到了应用,如人脸识别.图像识别.语音识别.语音生成.自然语言处理.决策分析等等,让机器拥有了听.说.看和思考的能力,很 ...
- 技术博客:Azure 认知服务
Azure 认知服务 1.概述 微软认知服务(Microsoft Cognitive Services)集合了多种智能API以及知识API,使每个开发人员无需具备机器学习的专业知识就能接触到 AI ...
- Azure认知服务之表格识别器
认知服务 Azure 认知服务的目标是帮助开发人员创建可以看.听.说.理解甚至开始推理的应用程序. Azure 认知服务中的服务目录可分为五大主要支柱类别:视觉.语音.语言.Web 搜索和决策.开发人 ...
随机推荐
- VMware Workstation 虚拟机使用无线wifi上网配置
VMware Workstation 虚拟机使用无线wifi上网配置 参考文档: 转载/VMware Workstation环境下的Linux网络设置/适用于无线网络 VMware Workstati ...
- 获取window.location.href中传的值,并且转换成json数据使用
做个记录保存一下,以免以后再次用到忘记了. function locVal(){ var url=window.location.href; if (url.indexOf('?')==-1)retu ...
- 使用EasyUI的Datagrid的Editor进行行编辑,Enter回车结束编辑,并开启新的一行。
//新增数据function add() { if (Index == undefined) { row = { move_date: '', start_time: '', end_time: '' ...
- ORM创建多表以及多表的增删改查
一. 多表的创建 1. 一对一 在哪个表中设置都行,但是添加数据的时候需要现在没有外键的表中添加数据 models.OneToOneField(to="表名",to_field=& ...
- Win7 VS2017编译Godot3.0.2和2.1.4
千呼万唤屎出来,Godot终于发布3.0版本的源码了,今天是2018年3月17日,自去年接触过后,一直没事就刷刷Gayhub,看看3.0什么时候更新,刷了一年也没结果. 今天上Youtube无意中搜了 ...
- LCD调试
(1) 液晶显示模式 并行:MCU接口.RGB接口.Vysnc接口 串行:SPI接口.MDDI接口 (2) 屏幕颜色 实质上即为色阶的概念.色阶是表示手机液晶显示屏亮度强弱的指数标准,也就是通常所说的 ...
- MySql技术内幕之MySQL入门(1)
目录 MySql技术内幕之MySQL入门(1) 安装 关于注释 执行SQL语句 关于命令大小写 创建数据库 查看表的信息 查看更加详细的信息 查看与给定模式相匹配的列 插入数据 利用insert添加行 ...
- javascript小括号、中括号、大括号学习总结
作为一名编程人员,和括号打交道是必不可少的.你可知道在不同的上下文中,括号的作用是不一样的,今天就让我们简单总结下javascript小括号.中括号.大括号的用法. 总的来说,JavaScript中小 ...
- ES6中的箭头函数和普通函数有什么区别?
1.普通函数中的this总是指向调用它的那个对象, 箭头函数没有自己的this,他的this永远指向其定义环境,任何方法都改变不了其指向,如call().bind().apply().(正是因为它没有 ...
- RabbitMQ 分发到多Consumer(Publish/Subscribe)
上篇文章中,我们把每个Message都是deliver到某个Consumer.在这篇文章中,我们将会将同一个Message deliver到多个Consumer中.这个模式也被成为 "pub ...