Указание модели определения лиц
В этом руководстве показано, как указать модель обнаружения лиц для службы распознавания лиц Azure AI.
Служба распознавания лиц использует модели машинного обучения для выполнения операций с лицами людей на изображениях. Мы постоянно повышаем точность работы наших моделей, основываясь на отзывах клиентов и результатах исследования, а также реализуем эти улучшения в обновлениях моделей. Разработчики могут указать версию модели обнаружения лиц, которую они хотели бы использовать; они могут выбрать модель, которая лучше всего подходит для их варианта использования.
Ознакомьтесь со сведениями о том, как указать модель определения лиц в определенных операциях. Служба распознавания лиц использует определение лиц при преобразовании изображения лица в другую форму данных.
Если вы не уверены, следует ли вам использовать последнюю модель, перейдите к разделу Вычисление различных моделей, чтобы оценить новую модель и сравнить результаты, используя текущий набор данных.
Необходимые компоненты
Вы должны быть знакомы с концепцией обнаружения лиц с помощью искусственного интеллекта. Если нет, ознакомьтесь с концептуальным руководством по определению лиц или пошаговым руководством.
Оценка различных моделей
Различные модели определения лиц оптимизированы для различных задач. Общие сведения о различиях см. в следующей таблице.
Модель | Description | Заметки о производительности | Достопримечательности |
---|---|---|---|
detection_01 | Выбор по умолчанию для всех операций определения лиц. | Не оптимизирована для мелких изображений лиц, изображений лиц в профиль или размытых изображений лиц. | Возвращает ориентиры для лица, если они указаны в вызове обнаружения. |
detection_02 | Выпущена в мае 2019 года и доступна дополнительно во всех операциях определения лиц. | Улучшенная точность при обработке мелких изображений лиц, изображений лиц в профиль или размытых изображений лиц. | Не возвращает ориентиры лица. |
detection_03 | Выпущена в феврале 2021 года и доступна дополнительно во всех операциях определения лиц. | Улучшенная точность, включая определение мелких изображений лиц (64 x 64 пикселей) и лиц на повернутых изображениях. | Возвращает ориентиры для лица, если они указаны в вызове обнаружения. |
Атрибуты — это набор функций, которые могут быть обнаружены при необходимости, если они указаны в вызове обнаружения:
Модель | принадлежности | смазывать | экспозиция | очки | headPose | mask | шум | occlusion | qualityForRecognition |
---|---|---|---|---|---|---|---|---|---|
detection_01 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (для recognition_03 или 04) | |
detection_02 | |||||||||
detection_03 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (для recognition_03 или 04) |
Лучший способ сравнить производительность моделей определения — использовать их в примере набора данных. Мы рекомендуем вызывать API обнаружения на различных изображениях, особенно изображения многих лиц или лиц, которые трудно видеть, используя каждую модель обнаружения. Обратите внимание на количество лиц, возвращаемых каждой моделью.
Определение лиц с помощью указанной модели
Функция определения лиц находит границы ограничивающих прямоугольников для лиц людей и определяет их визуальные ориентиры. Она извлекает характерные черты лица и сохраняет их для последующего использования в операциях распознавания.
При использовании API обнаружения можно назначить версию модели параметром detectionModel
. Возможные значения:
detection_01
detection_02
detection_03
URL-адрес запроса для REST API обнаружения выглядит следующим образом:
https://westus.api.cognitive.microsoft.com/face/v1.0/detect?detectionModel={detectionModel}&recognitionModel={recognitionModel}&returnFaceId={returnFaceId}&returnFaceAttributes={returnFaceAttributes}&returnFaceLandmarks={returnFaceLandmarks}&returnRecognitionModel={returnRecognitionModel}&faceIdTimeToLive={faceIdTimeToLive}
Если вы используете клиентскую библиотеку, можно присвоить значение detectionModel
, передав соответствующую строку. Если вы не назначите его, API использует версию модели по умолчанию (detection_01
). См. следующий пример кода для клиентской библиотеки .NET.
string imageUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/detection1.jpg";
var response = await faceClient.DetectAsync(new Uri(imageUrl), FaceDetectionModel.Detection03, FaceRecognitionModel.Recognition04, returnFaceId: false, returnFaceLandmarks: false);
var faces = response.Value;
Сопоставление лица с объектом Person с помощью указанной модели
Служба распознавания лиц может извлечь данные лица из изображения и связать его с объектом Person с помощью API добавления лица группы лиц . В этом вызове API можно указать модель обнаружения так же, как и в функции "Обнаружение".
См. следующий пример кода .NET.
// Create a PersonGroup and add a person with face detected by "detection_03" model
string personGroupId = "mypersongroupid";
using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["name"] = "My Person Group Name", ["recognitionModel"] = "recognition_04" }))))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
await httpClient.PutAsync($"{ENDPOINT}/face/v1.0/persongroups/{personGroupId}", content);
}
string? personId = null;
using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["name"] = "My Person Name" }))))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
using (var response = await httpClient.PostAsync($"{ENDPOINT}/face/v1.0/persongroups/{personGroupId}/persons", content))
{
string contentString = await response.Content.ReadAsStringAsync();
personId = (string?)(JsonConvert.DeserializeObject<Dictionary<string, object>>(contentString)?["personId"]);
}
}
string imageUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/detection1.jpg";
using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["url"] = imageUrl }))))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
await httpClient.PostAsync($"{ENDPOINT}/face/v1.0/persongroups/{personGroupId}/persons/{personId}/persistedfaces?detectionModel=detection_03", content);
}
Этот код создает объект PersonGroup с идентификатором mypersongroupid
и добавляет в него объект Person. Затем он добавляет к этому объекту Person лицо, используя модель detection_03
. Если параметр detectionModel не указан, API использует модель detection_01
по умолчанию.
Примечание.
Вам не нужно использовать одну и ту же модель обнаружения для всех лиц в объекте Person , и вам не нужно использовать одну и ту же модель обнаружения при обнаружении новых лиц для сравнения с объектом Person (например, в API идентификации из группы лиц).
Добавление лица в объект FaceList с помощью указанной модели
Можно также указать модель определения при добавлении лица в существующий объект FaceList. См. следующий пример кода .NET.
using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["name"] = "My face collection", ["recognitionModel"] = "recognition_04" }))))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
await httpClient.PutAsync($"{ENDPOINT}/face/v1.0/facelists/{faceListId}", content);
}
string imageUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/detection1.jpg";
using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["url"] = imageUrl }))))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
await httpClient.PostAsync($"{ENDPOINT}/face/v1.0/facelists/{faceListId}/persistedfaces?detectionModel=detection_03", content);
}
Этот код создает объект FaceList с именем My face collection
и добавляет к нему лицо с помощью модели detection_03
. Если параметр detectionModel не указан, API использует модель detection_01
по умолчанию.
Примечание.
Вам не нужно использовать одну и ту же модель обнаружения для всех лиц в объекте FaceList, а также вам не требуется использовать ту же модель обнаружения при обнаружении новых лиц для сравнения с объектом FaceList.
Следующие шаги
В этой статье вы узнали, как указать модель определения для использования с различными API распознавания лиц. Далее выполните инструкции из краткого руководства, чтобы приступить к работе с определением лиц и анализом.