![[Cognitive Service之Face Api][06]人臉識別的AI服務 - 使用Verify確認兩張圖片的人臉是否為同一人.jpg](/posts/2018/09/2018-09-19-cognitive-service-face-api-06-use-face-api-verify-to-see-if-two-face-are-same-person/1b807369-0e36-40b3-b964-fc78f7d9db6a.jpg)
在上一篇([05]人臉識別的AI服務 - 使用Python框出圖像裡面人臉的部分)看完了如何在Python裡面呼叫Face Api裡面的Detect服務,并且把圖片裡面的人臉部分用紅色框起來,然後把年紀用藍色列在了頭像下面,基本上識別相關的服務就介紹到這邊。 剩下的應用就是看想象力了。
能夠識別圖片裡面的人臉只是服務的一部分,另外一個常用情景是,能不能識別人臉是不是屬於同一個人?這種類型的應用非常的多,例如環安裡面當是同一個人門要開啓就可以使用到這個服務。
這篇來看看如何使用Verify這個服務,看看如何呼叫,并且回傳的内容是什麽。
如何使用Verify
要使用之前肯定要先瞭解怎麽呼叫以及使用。因此首先去看看官方的api文件:Verify。
- Url的部分
完整的url是:
https://[location].api.cognitive.microsoft.com/face/v1.0/verify
這邊要注意的是當初建立的face api服務的地址在哪裏。以我的例子是
eastasia
,因此我的完整url是:https://eastasia.api.cognitive.microsoft.com/face/v1.0/verify
- Header
-
兩個參數要傳入:
- Content-Type:傳入的格式是
application/json
,由於格式只有一種,因此這個是一個選填欄位。 - Ocp-Apim-Subscription-Key:輸入取得的face api key
- Content-Type:傳入的格式是
- Body
-
有兩種模式:
- 傳入兩個參數:
faceId1
和faceId2
- 來看兩個是不是同一個人 - 判斷某個臉(faceId)是否和某個Person(personId)一樣 - 這個我們後面會提到,目前先有個印象就好
- 傳入兩個參數:
有了使用的概念之後,接下來就是用Postman測試看看。
使用Postman測試Verify
從上面的API reference瞭解會發現,整個的使用需要透過faceId
,這個值我們可以透過在呼叫Detect
的時候取得。因此,整個操作起來會先從Detect開始。
因此,整個的測試流程如下:
- 用Detect呼叫圖片1取得Face ID
- 用Detect呼叫圖片2取得Face ID
- 兩張圖片人物做比對
- 用Detect呼叫圖片3取得Face Id
- 把圖片2和圖片3的人物做比對
用Detect呼叫圖片1取得Face ID

使用Postman搭配Detect能夠取得Face ID:

用Detect呼叫圖片2取得Face ID

使用Postman搭配Detect能夠取得Face ID:

兩張圖片人物做比對
有了兩張圖片的FaceId之後,就可以用verify的方法做比對:

可以看到圖片1和圖片2本身不是同一個人,在比對的時候相似度只有0.25左右。
用Detect呼叫圖片3取得Face Id
這個時候用和圖片2的同一個人不同的相片來做比較。

呼叫完了Detect取得FaceId:

把圖片2和圖片3的人物做比對
有了圖片3的faceId之後,可以用來和圖片2的faceId做比較:

可以看到,系統認爲圖片2和圖片3的人物是同一個人,信心度能夠到達0.90。
結語
這篇介紹了Face Api裡面的Verify服務。透過Verify,可以比對兩張圖片裡面人物的faceId看看兩個是不是同一個人。
由於要取得faceId,因此是先從圖片透過Detect
取得了faceId之後,才會用這個faceId做比較。
透過verify也看到了一個新的概念叫做personId,這個在後面的部分會再有更加深入的介紹。
瞭解了API的呼叫方式之後,下一篇([Cognitive Service之Face Api][07]人臉識別的AI服務 - C#整合Verify驗證兩張圖片的人是否同個人)將來看看如何整合到程式裡面。