[Azure] C# + Azure Face API 做人臉相似度比對 ( FindSimilarAsync )

2021-11-01


上一篇文章說到了 如何 Azure Face API 作臉部辨識簡單上手 ,這次基於上一篇來座相似度辨識,這主要可以做啥呢?

如果你是要做一個系統有登入功能,你可以做影像辨識判斷是本人就可以登入,或是幫自己的海量的謎片進行分類?




如果不知道如何申請 Azure Face API  或是基本的偵測照片中的人像,可以參考這篇文章 Azure Face API 作臉部辨識簡單上手 


1. 上一篇文章我主要都是本地的圖片進行上傳辨識,這次為了省下我本地傳輸時間,我都是把照片先放到 網路上,然後使用

DetectWithUrlAsync ,直接使用網址上抓下圖來辨識。


2. 主要概念,送去辨識後,你會得到一個 或是多個 faceId ,之後你要選取其中一個當做比對的母本,之後再拿其他的 faceId 進行比對

所以我當作母本的 圖片盡量都是一張臉,之後測試被比對圖片大概就可有不只一張,進行比對,所以在程式碼裡面,傳入辨識的時候,被比對的 faceIds 

是 List ,然後第一步辨識拿到 faceId ,這是有時間限制的,我目前是用預設,如果你有其他操作記得要設定時間 ( faceIdTimeToLive ),預設似乎是 24小時

測試圖片來源: https://www.pakutaso.com/ 。


C# code:

var baseImage = "https://github.com/GueiZuo/SamplePixs/blob/main/20211101/f3.jpg?raw=true"; var targetImage = "https://github.com/GueiZuo/SamplePixs/blob/main/20211101/f12.jpg?raw=true"; List<Guid?> baseFaceIds = new List<Guid?>(); List<Guid?> targetFaceIds = new List<Guid?>(); //步驟 1 拿到的 ENDPOINT , KEY var faceClient = Authenticate(ENDPOINT, SUBSCRIPTION_KEY); //送往 azure 辨識 var detectResultBase = faceClient.Face.DetectWithUrlAsync(baseImage, detectionModel: DetectionModel.Detection01).Result; if (detectResultBase.Count > 0) { baseFaceIds = detectResultBase.Select(x => x.FaceId).ToList(); Result += "BaseFaceId:" + baseFaceIds[0] + "<br>"; } var detectResultTarget = faceClient.Face.DetectWithUrlAsync(targetImage, detectionModel: DetectionModel.Detection01).Result; if (detectResultTarget.Count > 0) { targetFaceIds = detectResultTarget.Select(x => x.FaceId).ToList(); Result += "TargetFaceIds:" + string.Join(",", targetFaceIds) + "<br>"; } //尋找相似的臉 var finSimilarResult = faceClient.Face.FindSimilarAsync(baseFaceIds[0].Value, faceIds: targetFaceIds, mode: FindSimilarMatchMode.MatchFace).Result; Result += "<div><img src="&quot; + baseImage + &quot;" style="width:30%"><img src="&quot; + targetImage + &quot;" style="width:30%"></div>"; foreach (var r in finSimilarResult) { Result += "被比對的FaceId : " + r.FaceId + ", 相似度:" + r.Confidence + "<br>"; }


送回來的資料,會放在 Confidence 中,0-1 之間。這邊 列出幾張測試結果。











reference: 

https://docs.microsoft.com/zh-tw/rest/api/faceapi/face/find-similar

https://docs.microsoft.com/zh-tw/azure/cognitive-services/face/face-api-how-to-topics/specify-detection-model

https://www.nuget.org/packages/Microsoft.Azure.CognitiveServices.Vision.Face/2.7.0-preview.1

https://docs.microsoft.com/zh-tw/azure/cognitive-services/face/quickstarts/client-libraries?tabs=visual-studio&pivots=programming-language-csharp

https://azure.microsoft.com/zh-cn/pricing/details/cognitive-services/face-api/

https://github.com/azure-samples/cognitive-services-vision-face-finder/tree/master/



當麻許的超技八 2014 | Donma Hsu Design.