從零開始玩人工智能—人臉 API—01

    說實話,邊學AI邊學Python挺酸爽的。可這阻止不了我嘗試學習AI的熱情,哈哈。並且,如果我能搞出來,看到文章的您肯定也不在話下。

    人臉API是Azure上AI及認知服務的一項,應該是從計算機視覺分出來的吧,針對人臉的特點單獨做了特定的人工智能機器學習及API封裝。由於是基於Azure的雲端服務,所以針對人臉的一些功能封裝的很好,只需要使用HTTP的幾類方法 (GET \ PUT\ POST\ PATCH\ DELETE) 提供數據然後調用即可。

     首先,在Azure訂閱中添加人臉API的服務。和其他的認知服務一樣,也有免費的定價,也是通過Key來訪問這個服務。所以,開始學習代碼之前,先複製人臉API服務的Key。

WeChat Screenshot_20180212144923

    應該說,Azure認知服務的頁面給的鏈接還是不錯的,後續大部分需要的內容,通過這些鏈接都能找到信息。最近的文檔配圖增加了,不過和其他產品的文檔一樣,感覺組織有點紛亂。這和雲轉型以及大量引入不同的開源、Linux、不同語言可能相關吧。

    我們的目標是通過示例代碼儘快的瞭解人臉API服務是如何工作的。所以文檔和不多的示例代碼非常有用。第一個快速瞭解Face API機制的示例代碼可以在這裏查看:https://docs.microsoft.com/en-us/azure/cognitive-services/face/quickstarts/python

    代碼其實不復雜。首先,按照API的要求,使用訂閱的服務Key和數據類型作爲header,按照要求和需要,提供特定的參數params和指定格式的內容body,構造特定的URL字串,然後用指定的方法通過HTTPS請求Azure上的人臉API服務。

    看看Detect這個API。通過提交一張照片,就能夠利用人工智能檢測照片中的人臉,進行分析和提取特徵。通過示例代碼,我們可以學習到挺多東西的。

image

    首先,如圖中的body,實際上是提供一張照片給AI。除了這裏的JSON模式的數據之外,也可以使用octet-stream模式的數據,比如從本地提供照片。

    對於Detect的API來說,很重要的一點是params裏面說明了人臉檢測返回的三個重要的數據:FaceID,FaceLandmarks (面部特徵) 和 FaceAttributes (面部屬性)。FaceID後面再說,先看面部屬性。面部屬性會返回AI對人臉的判斷,例如性別,年紀,戴沒戴眼鏡,什麼眼鏡,頭髮怎樣,啥顏色,什麼表情之類。需要返回哪些屬性,可以在params裏指定。原示例代碼給的是一位美女的照片,我換成了偉大的愛因斯坦的照片~ 從返回的結果看,照片裏的愛因斯坦有一點點 (0.003) 的不開心啊哈哈。七情六慾,表情屬性正好七個。

    這些屬性可以做很多的事情,例如通過表情判斷人的情緒,進而改進服務、應用或者AI的交互體驗。想象一下,每天到辦公室開機,Cortana會說,今天你不太開心啊,路上辛苦了,我給你講個笑話吧。是不是比你女朋友 (if girlfriend.get(): ) 還體貼?

    另一個很重要的返回,是面部特徵。我們國家的人臉識別技術非常領先,Azure使用的技術很多應該也來自於我們的微軟亞洲研究院。人臉API中,對人臉進行的抽象是27點面部取樣。

HowToDetectFace

    按照這27點取樣,計算各點對應關係,就能夠讓人工智能判斷人臉特點,進行識別。在這裏:https://docs.microsoft.com/en-us/azure/cognitive-services/face/face-api-how-to-topics/howtodetectfacesinimage 對這部分做了簡要說明。

    參考 API的說明:我猜由於目前還不是個Global的服務,所以構造認知服務調用的URL的時候,需要按照服務所在站點填寫。而四類不同的API調用,每個API要求的URL也不盡相同。如前文所說,實際上API的實現,都是構造這些URL然後使用不同的HTTP方法完成。

image

    API參考和其他認知服務一樣,除了說明,還給出了不同常見語言的示例。通過示例代碼能夠很快了解如何使用這些服務。此外,對輸入和輸出的數據類型、格式以及限制也給出了詳細的說明。我想說的是,即使沒有編程基礎,也真的不難。

    對於已經熟悉API的用戶,當然也可以直接使用封裝好的SDK。可以在GitHub獲得:https://github.com/Microsoft/Cognitive-Face-Python 

    而文檔也給出了使用SDK的示例代碼:https://docs.microsoft.com/en-us/azure/cognitive-services/face/tutorials/faceapiinpythontutorial


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章