Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 記錄軟體開發的點點滴滴 著重於微軟技術、網頁開發、DevOps、C#, Asp .net Mvc、Azure、AI、Chatbot、Docker、Data Science

[Cognitive Service之Face Api][07]人臉識別的AI服務 - C#整合Verify驗證兩張圖片的人是否同個人

[Cognitive Service之Face Api][07]人臉識別的AI服務 - C#整合Verify驗證兩張圖片的人是否同個人.jpg
圖片來源:https://pixabay.com/en/books-spine-colors-pastel-1099067/ 

在上一篇([06]人臉識別的AI服務 - 使用Verify確認兩張圖片的人臉是否為同一人)介紹了如何使用verify這個功能來驗證兩個人臉(faceId)是否為同一人。

這篇將來看看再C#裡面如何呼叫verify這個方法。

程式碼調整

這邊將延續之前在介紹detect的時候所建立出來的sample 專案繼續往下調整。

目前的程式碼會:

  1. 透過detect瞭解圖片裡面的人臉
  2. 把人臉Id、開心程度、年齡以及性別印在console上面

延續目前的程式碼繼續往下:

  1. 增加新的一組detect用來取得另外一張圖片的信息
  2. 呼叫verify把第一張和第二張的圖片人臉做比對
  3. 把結果印到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}");

實際執行出來,可以看到:

  1. 顯示是否為同一人
  2. 并且這個的信心度有多高

cmd_2018-09-21_17-08-09.png
最後執行的結果

結語

這篇介紹的是如何透過sdk的方式呼叫verify的這個功能來驗證兩張人臉是不是同一個人。

在撰寫的過程會發現,sdk包的很好,只要瞭解了底層的REST Api呼叫方式,使用起來不會有什麽太大問題。因此,暫時不會用python撰寫呼叫verify(至少這個階段不會)

在上篇介紹verify的時候有提到,還有另外一種比對方式,透過face id(人臉)和person id(某個人)做比對看看是不是同一個人,這個時候問題就來了,person(人)是一個什麽概念呢?

在下一篇([07]人臉識別的AI服務 - C#整合Verify驗證兩張圖片的人是否同個人),將介紹在face api裡面person是什麽概念,并且要建立一個person需要經過那些步奏,這個概念將在介紹verify的另外一個應用以及後面的identify將會使用到。


如果文章對您有幫助,就請我喝杯飲料吧
街口支付QR Code
街口支付QR Code
台灣 Pay QR Code
台灣 Pay QR Code
Line Pay 一卡通 QR Code
Line Pay 一卡通 QR Code
街口支付QR Code
支付寶QR Code
街口支付QR Code
微信支付QR Code
comments powered by Disqus