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上手体验的更多相关文章

  1. Azure 认知服务 (5) 计算机视觉API - 使用C#代码实现读取图片中的文字(OCR)功能

    <Windows Azure Platform 系列文章目录> 在笔者之前的文章:Azure 认知服务 (4) 计算机视觉API - 读取图片中的文字 (OCR) 介绍了使用用户界面,在海 ...

  2. Azure 认知服务 (4) 计算机视觉API - 读取图片中的文字 (OCR)

    <Windows Azure Platform 系列文章目录> 微软Azure认知服务的计算机视觉API,还提供读取图片中的文字功能 在海外的Windows Azure认知服务的读取图片功 ...

  3. Azure 认知服务 (3) 计算机视觉API - 分析图像,使用C#代码

    <Windows Azure Platform 系列文章目录> 在上一节中Azure 认知服务 (2) 计算机视觉API - 分析图像,笔者介绍了如何使用API测试控制台进行调试. 本章将 ...

  4. Azure 认知服务 (2) 计算机视觉API - 分析图像

    <Windows Azure Platform 系列文章目录> 在上一节内容中,笔者介绍了微软认知服务的概览. 在本节中,笔者将详细介绍微软认知服务中的一种:计算机视觉 (Computer ...

  5. Azure 认知服务--计算机视觉 API - 分析图像

    在本节中,笔者将详细介绍 Azure 认知服务中的一种:计算机视觉 (Computer Vision) API. 我的一个客户有需求,他们需要消费者与自己的产品合照,然后上传到服务器并转发到朋友圈. ...

  6. Azure认知服务的实际应用-资讯采集推送

    Azure认知服务的实际应用-资讯采集推送 演示 实现的是通过使用各种azure服务,每天自动获取资讯.博客,定时推送到公众号的功能! 微信公众号搜索TechViews,或直接扫描二维码关注,每天推送 ...

  7. Azure 认知服务概述

    背景知识 近些年随着机器学习.深度学习等技术的不断发展,人工智能在越来越多的场景得到了应用,如人脸识别.图像识别.语音识别.语音生成.自然语言处理.决策分析等等,让机器拥有了听.说.看和思考的能力,很 ...

  8. 技术博客:Azure 认知服务

    Azure 认知服务 1.概述 ​ 微软认知服务(Microsoft Cognitive Services)集合了多种智能API以及知识API,使每个开发人员无需具备机器学习的专业知识就能接触到 AI ...

  9. Azure认知服务之表格识别器

    认知服务 Azure 认知服务的目标是帮助开发人员创建可以看.听.说.理解甚至开始推理的应用程序. Azure 认知服务中的服务目录可分为五大主要支柱类别:视觉.语音.语言.Web 搜索和决策.开发人 ...

随机推荐

  1. 1111. Online Map (30)

    Input our current position and a destination, an online map can recommend several paths. Now your jo ...

  2. shell知识

    shell基本的语句 一:if语句 格式: if [ #条件的判断 ];then #执行的动作 fi 操作符 + 加 - 减 * 乘 /   除[取整数商] % 余[取余数] 数值的比较 参数 说明 ...

  3. 2018年最新搜索引擎转跳JavaScript代码(竞价广告专用)

    JavaScript代码如下,请放在script标签内: eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.r ...

  4. Win7 VS2017 Boost Python入门

    闲来无事想练习下用Python作为游戏脚本绑定到C++,网上搜了下,Python文档有些例子,但是太过复杂,gayhub无意中看到有人用Boost Python绑定,简单粗暴,省时省力,记录备忘. 写 ...

  5. Notes : <Hands-on ML with Sklearn & TF> Chapter 6

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  6. STM32CubeMX HAL库串口+DMA数据发送不定长度数据接收

    参考资料:1.ST HAL库官网资料 2.https://blog.csdn.net/u014470361/article/details/79206352#comments 一.STM32CubeM ...

  7. oracle 恢复table删除数据 恢复package(使用闪回)

    好久没写东西了,今天写一篇凑个数吧,来公司一年多了,感觉自己到了一个小瓶颈期了. 以前每天很多新东西,都是忙着学,感觉没时间写博客总结一下,大部分都是写笔记,现在又是没东西可以写,每天干着95%都是重 ...

  8. 洛谷P1443 马的遍历

    https://www.luogu.org/problemnew/show/P1443 很经典的搜索题了,蒟蒻用广搜打的 不说了,上代码! #include<bits/stdc++.h> ...

  9. python之路(七)-递归算法

    递归 特点 递归算法是一种直接或者间接地调用自身算法的过程.在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解. 递归算法解决问题的特点: (1) 递归就是在 ...

  10. Vue.js——快速入门

    Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们能够快速地上手并使 ...