参考自:https://docs.microsoft.com/en-us/azure/cognitive-services/Face/face-how-to-install-containers html
和https://github.com/Azure/OCPOpenHack/tree/master/Cognitive_Service_Face_on_Container ios
Azure人脸API 服务是一项认知服务,其提供的算法可用于检测、识别和分析图像中的人脸。处理人脸信息的功能在许多不一样的软件方案中很重要,这些方案包括安全性、天然用户界面、图像内容分析和管理、移动应用和机器人。 git
目前Azure人脸API已经支持容器部署,意味着Azure人脸功能能够部署到用户自建机房或边缘设备中。本实验主要实践容器化Azure人脸的部署与使用。该实验将包括如下内容: github
准备Docker环境 算法
1 . 在https://docs.docker.com/docker-for-windows/install/ 安装Docker for Windows docker
等待安装完成 windows
安装完成后会要求注销从新登陆,登陆会提示 api
等待一会后自动安装本机Hyper-V功能并重启2次完成Hyper-V安装,而且已经自动建立了一个虚拟交换机以及一台虚拟机运行 浏览器
接着就能够打开桌面的Docker Desktop,在托盘处右键Docker Desktop图标在菜单里选择Settings 安全
2 . 确保本地磁盘能够被docker访问
建立人脸服务
1 . 登录Azure Portal,找到人脸服务
2 . 填入名称,订阅等后,点击建立。
关因而选择S0仍是F0区别以下:
目前国内版的认知服务已经有以下(截图于2019年5月23日):
针对于人脸识别的国内版收费以下:
其余的认知服务收费能够参见:https://www.azure.cn/zh-cn/pricing/details/cognitive-services/
3 . 在建立好的人脸服务Overview页面,找到API端点。
4 . 在建立好的人脸服务Keys页面,找到调用服务所须要的密钥。
API端点和密钥将在下一节被用到。
启动人脸容器
1 . 启动cmd命令行窗口,执行如下命令登录到人脸容器的私有镜像仓库。其中用户名和密码能够从Cognitive Services Vision Containers Request form申请得到
命令示例:
docker login containerpreview.azurecr.io -u <useraccount> -p <key>
2 . 执行如下命令将最新的人脸容器镜像拉取到本地
docker pull openhackreg.azurecr.io/openhack/face:latest
完成
3 . 执行如下命令启动人脸容器
命令示例:
docker run --rm -it -p 5000:5000 --memory 6g --cpus 2 containerpreview.azurecr.io/microsoft/cognitive-services-face Eula=accept Billing=<API Endpoint> ApiKey=<API Key>
执行:
docker run --rm -it -p 5000:5000 --memory 6g --cpus 2 openhackreg.azurecr.io/openhack/face Eula=accept Billing=https://eastasia.api.cognitive.microsoft.com/face/v1.0 ApiKey=6************23de
执行后显示申请开始,意味着开始提供服务了
测试人脸功能
1 . 在浏览器访问http://localhost:5000/swagger/index.html ,若是人脸API的说明能够正常显示,说明人脸服务已经正常运行。
2 . 访问https://www.microsoft.com/zh-cn/p/intelligent-kiosk/9nblggh5qd84#activetab=pivot:overviewtab 安装Windows Store 应用Intellight Kiosk
安装完成并启动它
3 . 点击左下角按钮,按照下图进行设置(注意点击Click here for extra setup ... 按照提示完成设置)
复制红色框柱部分去执行
以管理员身份新开一个cmd粘贴执行
4 . 在Intelligent Kiosk内找到Face API Explorer并进行测试。该测试支持从摄像头或本地文件获取照片,返回年龄,人脸特征等。
选择获取图片的方式
利用本身笔记本电脑的摄像头拍摄一张本身的照片测算下本身年龄或测试一张图片
人脸信息持久化
本身创建一个组,在这个组里创建分类,好比张三建一类把张三的照片放一块儿,李四建一类把李四的照片放一块儿,这叫分类打标签,认知服务会根据我创建的分类来学习就叫机器学习,最后我再随意找一张张三和李四的合影让认知服务识别,就会自动判别张三李四的年龄以及合影照片里谁是张三,谁是李四,并标记出来。
使用人脸API进行人脸分组以及识别时,人脸容器须要对人脸索引信息进行持久化,该持久化能力须要借助到Azure的存储服务和Cosmos Db服务。
1 . 建立存储帐号服务,确保帐户类型选择的是general purpose v2
存储帐户须要注意检查防火墙和虚拟网络是否设置全部网络访问,不然链接会失败
2 . 待存储帐号建立好后,在Access keys页面得到链接字符串
3 . 建立Cosmos DB服务,确保API类型选择的是Azure Cosmos DB for MongoDB API
须要注意Cosmos DB的防火墙和虚拟网络要容许全部网络的访问,不然链接会失败
4 . 待Cosmos帐号建立好后,在Connection String页面得到链接字符串
5 . 关掉正在运行的人脸容器服务,执行如下命令从新启动人脸容器
命令示例:
docker run --rm -it -p 5000:5000 --memory 6g --cpus 2 containerpreview.azurecr.io/microsoft/cognitive-services-face Eula=accept Billing=<API Endpoint> ApiKey=<API Key> CloudAI:Storage:StorageScenario=Azure CloudAI:Storage:ConnectionStringOfCosmosMongo="<CosmosConnectionString>" CloudAI:Storage:ConnectionStringOfAzureStorage="<StorageConnectionString>"
执行:
docker run --rm -it -p 5000:5000 --memory 6g --cpus 2 openhackreg.azurecr.io/openhack/face Eula=accept Billing=https://eastasia.api.cognitive.microsoft.com/face/v1.0 ApiKey=61*******************Scenario=Azure CloudAI:Storage:ConnectionStringOfCosmosMongo=“mo**************@facedemo.documents.azure.com:10255/?ssl=true&replicaSet=globaldb" CloudAI:Storage:ConnectionStringOfAzureStorage="DefaultEndpointsProtocol=https;AccountName=facedemostorages;AccountKey=********************;EndpointSuffix=core.windows.net"
在setting里生成一个workspace Name
6 . 在Intelligent Kiosk的Face Identification Setup页面建立人脸组,并上传分类,好比一我的一个类别上传他本身的照片成为特征标签
完成后切换回以前的脸部API资源管理器,会提示你是否进行模型训练,点击Yes
此时人脸组索引信息已被持久化,重启人脸容器和Intelligent Kiosk,人脸组仍然能被再次显示。
再次测试能够识别年龄和谁是谁了,百分比表示和我以前创建的人物库中的类别类似度
总结
容器化的人脸服务无需把人脸图片直接上传到Azure,能够大大提升人脸服务的部署灵活性和访问速度。
除此以外还有其余人脸识别的Demo:
表情匹配(PS:我用本身笔记本的摄像头拍的,给你们看我仍是模糊下本身丑陋的面孔吧)
实时面部效果:
看起来更像那个名人?(PS:我用本身笔记本的摄像头拍的,给你们看我仍是模糊下本身丑陋的面孔吧)
百万级人脸搜索:(PS:我用本身笔记本的摄像头拍的,给你们看我仍是模糊下本身丑陋的面孔吧)
实时人群看法:(PS:我用本身笔记本的摄像头拍的,给你们看我仍是模糊下本身丑陋的面孔吧)
情感识别:
视频索引分析:分析视频中出现过多少张人脸,而且出如今视频的几分几秒,男女数量统计以及面部表情等信息
还好比这个能够实时动态监测到人的性别,评估年龄和识别表情,并统计当前镜头人数的实时人群看法,动态抓捕人脸所在位置,面孔数等信息
人脸识别只是微软AI能力的其中之一,还有语音识别,文字转语音,语音转文字等,更多人脸识别,物体识别等好AI功能期待您来挖掘和分享。