在上一篇([06]人臉識別的AI服務 - 使用Verify確認兩張圖片的人臉是否為同一人)介紹了如何使用verify
這個功能來驗證兩個人臉(faceId)是否為同一人。
這篇將來看看再C#裡面如何呼叫verify
這個方法。
程式碼調整
這邊將延續之前在介紹detect
的時候所建立出來的sample 專案繼續往下調整。
目前的程式碼會:
- 透過detect瞭解圖片裡面的人臉
- 把人臉Id、開心程度、年齡以及性別印在console上面
延續目前的程式碼繼續往下:
- 增加新的一組detect用來取得另外一張圖片的信息
- 呼叫verify把第一張和第二張的圖片人臉做比對
- 把結果印到console
增加新的一組detect用來取得另外一張圖片的信息
雖然説複製貼上很邪惡,但是在這個sample就別計較太多啦。
從原始的detect
複製一份出來,這邊也保留了把detect
内容輸出到console。
var imageUrl2 = "https://raw.githubusercontent.com/Microsoft/" +
"Cognitive-Face-Windows/master/Data/" +
"PersonGroup/Family2-Lady/Family2-Lady2.jpg";
var faces2 = await client.DetectAsync(imageUrl2, returnFaceAttributes: faceAttr);
Console.WriteLine($"這張圖片2有以下幾個人臉被識別出來:");
foreach (var item in faces2)
{
Console.WriteLine($"\t 人物:{item.FaceId} " +
$"\t 開心程度:{item.FaceAttributes.Emotion.Happiness} " +
$"\t 年齡:{item.FaceAttributes.Age} " +
$"\t 性別:{item.FaceAttributes.Gender}");
}
呼叫verify把第一張和第二張的圖片人臉做比對
從detect
取得了兩張圖片的face id之後,接下來就是要把這兩個face id做比較:
var verifyResult = await client.VerifyAsync(faces.First().FaceId, faces2.First().FaceId);
把結果印到console
最後把比對的結果印在console上面:
Console.WriteLine($"2張圖片的第一個人臉識別結果為:{Environment.NewLine} " +
$"\n 是否同一人:{verifyResult.IsIdentical} {Environment.NewLine} " +
$"\n 信心指數:{verifyResult.Confidence}");
實際執行出來,可以看到:
- 顯示是否為同一人
- 并且這個的信心度有多高
結語
這篇介紹的是如何透過sdk的方式呼叫verify
的這個功能來驗證兩張人臉是不是同一個人。
在撰寫的過程會發現,sdk包的很好,只要瞭解了底層的REST Api呼叫方式,使用起來不會有什麽太大問題。因此,暫時不會用python撰寫呼叫verify
(至少這個階段不會)
在上篇介紹verify
的時候有提到,還有另外一種比對方式,透過face id(人臉)和person id(某個人)做比對看看是不是同一個人,這個時候問題就來了,person(人)是一個什麽概念呢?
在下一篇([07]人臉識別的AI服務 - C#整合Verify驗證兩張圖片的人是否同個人),將介紹在face api裡面person是什麽概念,并且要建立一個person需要經過那些步奏,這個概念將在介紹verify
的另外一個應用以及後面的identify
將會使用到。