指定臉部偵測模型

本指南說明如何指定 Azure AI 臉部服務的臉部偵測模型。

臉部服務會使用機器學習模型對影像中的人臉執行作業。 我們持續根據客戶意見反應和研究進展改善模型的正確性,並隨著模型更新提供這些改進。 開發人員可以選擇指定他們想要使用的臉部偵測模型版本;他們可以選擇最適合其使用案例的模型。

閱讀以瞭解如何在特定臉部作業中指定臉部偵測模型。 每當臉部服務將臉部影像轉換成某種形式的數據時,臉部服務都會使用臉部偵測。

如果您不確定是否應該使用最新的模型,請跳至 [評估不同的模型 ] 區段,以評估新的模型,並使用目前的數據集來比較結果。

必要條件

您應該熟悉 AI 臉部偵測的概念。 如果您不是,請參閱臉部偵測概念指南或操作指南:

評估不同的模型

不同的臉部偵測模型會針對不同的工作進行優化。 如需差異的概觀,請參閱下表。

模型 描述 效能注意事項 屬性 地標
detection_01 所有臉部偵測作業的預設選擇。 未針對小型、側視或模糊臉部進行優化。 如果偵測呼叫中指定了主要臉部屬性(頭部姿勢、年齡、情感等),則會傳回它們。 如果在偵測呼叫中指定特徵點,則傳回臉部地標。
detection_02 於 2019 年 5 月發行,並選擇性地在所有臉部偵測作業中提供。 改善小型、側視和模糊臉部的精確度。 不會傳回臉部屬性。 不會傳回臉部地標。
detection_03 發行於 2021 年 2 月,並選擇性地在所有臉部偵測作業中提供。 進一步改善精確度,包括較小的臉部(64x64 圖元)和旋轉臉部方向。 如果在偵測呼叫中指定遮罩和頭部姿勢屬性,則會傳回它們。 如果在偵測呼叫中指定特徵點,則傳回臉部地標。

比較偵測模型效能的最佳方式是在範例數據集上使用它們。 我們建議使用每個偵測模型,在各種影像上呼叫 臉部 - 偵測 API,特別是許多臉部或臉部難以查看的影像。 請注意每個模型傳回的臉部數目。

使用指定的模型偵測臉部

臉部偵測會尋找人臉周框的位置,並識別其視覺地標。 它會擷取臉部的功能,並加以儲存,以供稍後用於 辨識 作業。

當您使用 臉部 - 偵測 API 時,可以使用 參數來指派模型版本 detectionModel 。 可用的值為:

  • detection_01
  • detection_02
  • detection_03

臉部的要求 URL - 偵測 REST API 看起來會像這樣:

https://westus.api.cognitive.microsoft.com/face/v1.0/detect[?returnFaceId][&returnFaceLandmarks][&returnFaceAttributes][&recognitionModel][&returnRecognitionModel][&detectionModel]&subscription-key=<Subscription key>

如果您使用用戶端連結庫,您可以傳入適當的字串來指派 值 detectionModel 。 如果您將其保留為未指派,API 會使用預設模型版本 (detection_01)。 請參閱下列 .NET 用戶端連結庫的程式代碼範例。

string imageUrl = "https://news.microsoft.com/ceo/assets/photos/06_web.jpg";
var faces = await faceClient.Face.DetectWithUrlAsync(url: imageUrl, returnFaceId: false, returnFaceLandmarks: false, recognitionModel: "recognition_04", detectionModel: "detection_03");

使用指定的模型將臉部新增至 Person

臉部服務可以從影像擷取臉部數據,並透過 PersonGroup Person - 新增臉部 API 將它與 Person 物件產生關聯。 在此 API 呼叫中,您可以使用與 臉部 - 偵測相同的方式來指定偵測模型。

請參閱下列 .NET 用戶端連結庫的程式代碼範例。

// Create a PersonGroup and add a person with face detected by "detection_03" model
string personGroupId = "mypersongroupid";
await faceClient.PersonGroup.CreateAsync(personGroupId, "My Person Group Name", recognitionModel: "recognition_04");

string personId = (await faceClient.PersonGroupPerson.CreateAsync(personGroupId, "My Person Name")).PersonId;

string imageUrl = "https://news.microsoft.com/ceo/assets/photos/06_web.jpg";
await client.PersonGroupPerson.AddFaceFromUrlAsync(personGroupId, personId, imageUrl, detectionModel: "detection_03");

此程式代碼會建立標識碼為 mypersongroupid PersonGroup,並將 Person 新增至其中。 然後,它會使用detection_03模型將臉部新增至此人員。 如果您未指定 detectionModel 參數,API 會使用預設模型 detection_01

注意

您不需要針對 Person 物件中的所有臉部使用相同的偵測模型,而且在偵測新臉部時不需要使用相同的偵測模型(例如在臉部 - 識別 API 中)。

使用指定的模型將臉部新增至FaceList

當您將臉部新增至現有的 FaceList 物件時,您也可以指定偵測模型。 請參閱下列 .NET 用戶端連結庫的程式代碼範例。

await faceClient.FaceList.CreateAsync(faceListId, "My face collection", recognitionModel: "recognition_04");

string imageUrl = "https://news.microsoft.com/ceo/assets/photos/06_web.jpg";
await client.FaceList.AddFaceFromUrlAsync(faceListId, imageUrl, detectionModel: "detection_03");

此程式代碼會建立名為 My face collection 的 FaceList,並使用模型將臉部加入其中detection_03 如果您未指定 detectionModel 參數,API 會使用預設模型 detection_01

注意

您不需要針對 FaceList 物件中的所有臉部使用相同的偵測模型,而且在偵測要與 FaceList 物件比較的新臉部時,不需要使用相同的偵測模型。

下一步

在本文中,您已瞭解如何指定要搭配不同臉部 API 使用的偵測模型。 接下來,請遵循快速入門以開始使用臉部偵測和分析。