Comparteix a través de


Especificación de un modelo de reconocimiento facial

Precaución

El acceso al servicio Face está limitado en función de los criterios de idoneidad y uso para apoyar nuestros principios de inteligencia artificial responsable. El servicio Face solo está disponible para clientes y asociados administrados por Microsoft. Use el formulario de admisión de reconocimiento facial para solicitar acceso. Para obtener más información, consulte la página Acceso limitado de Face.

En esta guía se muestra cómo especificar un modelo de reconocimiento de caras para la detección de caras, la identificación y la búsqueda de similitud con el servicio Face de Azure AI.

El servicio Face usa modelos de Machine Learning para realizar operaciones en caras humanas de imágenes. Seguimos mejorando la precisión de nuestros modelos gracias a los comentarios de los clientes y los avances en la investigación, y estas mejoras se ofrecen como actualizaciones del modelo. Los desarrolladores pueden especificar qué versión del modelo de reconocimiento de caras le gustaría usar y elegir el modelo que mejor se adapte a su caso de uso.

Compatibilidad con los modelos

El servicio Face de Azure AI tiene cuatro modelos de reconocimiento disponibles. Los modelos recognition_01 (publicado en 2017), recognition_02 (publicado en 2019) y recognition_03 (publicado en 2020) reciben soporte técnico continuo para garantizar la compatibilidad con versiones anteriores de los clientes que usan elementos FaceList o PersonGroup creados con estos modelos. Un elemento FaceList o PersonGroup siempre usa el modelo de reconocimiento con el que se ha creado, y las nuevas caras se asocian con este modelo cuando se agregan. Esto no se puede cambiar después de su creación y los clientes tienen que usar el modelo de reconocimiento adecuado con el elemento FaceList o PersonGroup correspondiente.

Puede cambiar a los modelos de reconocimiento posteriores según le convenga; sin embargo, tendrá que crear nuevos elementos FaceList y PersonGroup con el modelo de reconocimiento de su elección.

El modelo recognition_04 (publicado en 2021) es el modelo más preciso disponible actualmente. Si recién comienza a usar el servicio, se recomienda usar este modelo. Recognition_04 proporciona una precisión mejorada tanto para las comparaciones de similitudes como las de coincidencia de personas. Recognition_04 mejora el reconocimiento de los usuarios inscritos que llevan mascarillas faciales (mascarillas quirúrgicas, mascarillas n95, mascarillas de tela). Ahora, puede crear experiencias de usuario seguras y eficaces que usen el modelo más reciente detection_03 para detectar si un usuario inscrito lleva una mascarilla. A continuación, puede usar el modelo recognition_04 más reciente para reconocer su identidad. Cada modelo funciona de forma independiente de los demás y el umbral de confianza establecido para un modelo no está diseñado para compararse en todos los demás modelos de reconocimiento.

Siga leyendo para saber cómo especificar el modelo seleccionado en diferentes operaciones de Face y evitar al mismo tiempo los conflictos entre modelos. Si es un usuario avanzado y quiere determinar si debe cambiar al modelo más reciente, vaya a la sección Evaluación de modelos diferentes. Puede evaluar el nuevo modelo y comparar los resultados mediante el conjunto de datos actual.

Requisitos previos

Debe estar familiarizado con los conceptos de identificación y detección de caras de AI. Si no es así, consulte primero estas guías:

Detección de caras con el modelo especificado

La detección de caras identifica los puntos de referencia visuales de caras humanas y encuentra las ubicaciones de su cuadro delimitador. También extrae las características de la cara y las almacena temporalmente para su uso en la identificación hasta por 24 horas. Toda esta información constituye la representación de una cara.

El modelo de reconocimiento se usa cuando se extraen características faciales, por lo que puede especificar una versión de modelo al realizar la operación de detección.

Al usar la API de Detect, asigne la versión del modelo con el parámetro recognitionModel. Los valores disponibles son:

  • recognition_01
  • recognition_02
  • recognition_03
  • recognition_04

Opcionalmente, puede especificar el parámetro returnRecognitionModel (valor predeterminado false) para indicar si recognitionModel se debe devolver en la respuesta. Por lo tanto, una dirección URL de solicitud para la API de REST Detect tendrá este aspecto:

https://westus.api.cognitive.microsoft.com/face/v1.0/detect?detectionModel={detectionModel}&recognitionModel={recognitionModel}&returnFaceId={returnFaceId}&returnFaceAttributes={returnFaceAttributes}&returnFaceLandmarks={returnFaceLandmarks}&returnRecognitionModel={returnRecognitionModel}&faceIdTimeToLive={faceIdTimeToLive}

Si usa la biblioteca cliente, puede asignar el valor de recognitionModel si pasa una cadena que represente la versión. Si la deja sin asignar, se usará la versión predeterminada del modelo (recognition_01). Consulte el siguiente ejemplo de código de la biblioteca cliente .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: true, returnFaceLandmarks: true, returnRecognitionModel: true);
var faces = response.Value;

Nota

El parámetro returnFaceId debe establecerse en true para habilitar los escenarios de reconocimiento facial en pasos posteriores.

Identificación de caras con el modelo especificado

El servicio Cara puede extraer los datos de la cara de una imagen y asociarlos a un objeto Person (a través de la llamada a la API Add Person Group Person Face, por ejemplo), y varios objetos Person pueden almacenarse juntos en un PersonGroup. A continuación, se puede comparar un nuevo rostro con un PersonGroup (con la llamada Identificar a partir de grupo de personas), y se puede identificar a la persona coincidente dentro de ese grupo.

Un PersonGroup debe tener un único modelo de reconocimiento para todas las Persons, y puede especificarlo utilizando el parámetro recognitionModel cuando cree el grupo (Create Person Group o Create Large Person Group). Si no especifica este parámetro, se usa el modelo original, recognition_01. Un grupo siempre usará el modelo de reconocimiento con el que se creó, y las nuevas caras se asociarán con este modelo cuando se agreguen a él. Esto no se puede cambiar después de la creación de un grupo. Para ver con qué modelo está configurado un PersonGroup, utilice la API Get Person Group con el parámetro returnRecognitionModel configurado como true.

Consulte el ejemplo de código .NET siguiente.

// Create an empty PersonGroup with "recognition_04" 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);
}

En este código, se crea un objeto PersonGroup con el identificador mypersongroupid, y se configura para usar el modelo recognition_04 para extraer las características faciales.

En consecuencia, deberá especificar qué modelo usar al detectar caras para comparar con este objeto PersonGroup (mediante la API Detect). El modelo que use siempre debe ser coherente con la configuración de PersonGroup, o la operación generará un error debido a la incompatibilidad de los modelos.

No hay ningún cambio en la API Identify From Person Group; solo es necesario especificar la versión del modelo en detección.

Búsqueda de caras parecidas con el modelo especificado

También puede especificar un modelo de reconocimiento para la búsqueda de similitudes. Puede asignar la versión del modelo con recognitionModel al crear la FaceList con la API Create Face List o Create Large Face List. Si no especifica este parámetro, se usa el modelo recognition_01 de forma predeterminada. Un objeto FaceList siempre usará el modelo de reconocimiento con el que se creó, y las nuevas caras se asociarán con este modelo cuando se agreguen a la lista; esta acción no se puede cambiar después de la creación. Para ver con qué modelo está configurada una FaceList, utilice la API Get Face List con el parámetro returnRecognitionModel configurado como true.

Consulte el ejemplo de código .NET siguiente.

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);
}

Este código crea un objeto FaceList denominado My face collection, con el modelo recognition_04 para la extracción de características. Cuando busque en esta FaceList caras similares a una nueva cara detectada, esa cara debe haber sido detectada (Detect) utilizando el modelo recognition_04. Al igual que en la sección anterior, el modelo debe ser coherente.

No hay ningún cambio en la API Find Similar; solo se especifica la versión del modelo en la detección.

Verificación de caras con el modelo especificado

La API Verify Face To Face comprueba si dos caras pertenecen a la misma persona. Aunque no hay ningún cambio en la API de comprobación con respecto a los modelos de reconocimiento, solo se pueden comparar caras que se hayan detectado con el mismo modelo.

Evaluación de modelos diferentes

Si quiere comparar el rendimiento de distintos modelos de reconocimiento con sus datos, deberá hacer lo siguiente:

  1. Cree cuatro elementos PersonGroup mediante recognition_01, recognition_02, recognition_03 y recognition_04, respectivamente.
  2. Use los datos de la imagen para detectar las caras y registrarlas en elementos Person en estos cuatro elementos PersonGroup.
  3. Entrene sus PersonGroups utilizando la API Train Person Group.
  4. Pruebe con Identify From Person Group en los cuatro PersonGroup y compare los resultados.

Si normalmente especifica un umbral de confianza (un valor entre cero y uno que determina lo confiable que debe ser el modelo para identificar una cara), puede que deba usar diferentes umbrales para diferentes modelos. El umbral de un modelo no tiene porqué compartirse con otro y no produce necesariamente los mismos resultados.

Pasos siguientes

En este artículo, ha aprendido a especificar el modelo de reconocimiento que se debe usar con diferentes API del servicio Face. A continuación, siga un inicio rápido para empezar con la detección de caras.