參考自: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功能期待您來挖掘和分享。