Especificar um modelo de reconhecimento facial

Cuidado

O acesso ao serviço de detecção facial é limitado com base nos critérios de qualificação e uso para dar suporte aos nossos princípios de IA responsável. O serviço de detecção facial só está disponível para Microsoft clientes e parceiros gerenciados. Utilize o formulário de solicitação de Reconhecimento Facial para solicitar acesso. Para obter mais informações, consulte a página Acesso Limitado Facial.

Este guia mostra como especificar um modelo de reconhecimento facial para detecção facial, identificação e pesquisa de similaridade usando o serviço Detecção Facial do Azure.

O serviço De detecção facial usa modelos de machine learning para executar operações em rostos humanos visíveis em imagens. Continuamos a melhorar a precisão de nossos modelos com base nos comentários e avanços dos clientes na pesquisa e fornecemos essas melhorias como atualizações de modelo. Os desenvolvedores podem especificar qual versão do modelo de reconhecimento facial eles gostariam de usar, escolhendo o modelo que melhor se ajusta ao seu caso de uso.

Pré-requisitos

Você deve estar familiarizado com os conceitos de detecção e identificação facial de IA. Se não estiver, consulte estes guias primeiro:

Compatibilidade de modelo

O serviço Detecção Facial do Azure tem quatro modelos de reconhecimento disponíveis. Os modelos recognition_01 (publicados em 2017), recognition_02 (publicados em 2019) e recognition_03 (publicados em 2020) têm suporte contínuo para garantir a compatibilidade com versões anteriores para clientes que usam FaceListou PersonGroupcriados com esses modelos. Um FaceList ou PersonGroup sempre usa o modelo de reconhecimento com o qual foi criado e novos rostos se tornam associados a esse modelo quando são adicionados. Isso não pode ser alterado após a criação e os clientes precisam usar o modelo de reconhecimento correspondente com a FaceList ou PersonGroup correspondentes.

Você pode migrar para modelos de reconhecimento posteriores por sua própria conveniência; no entanto, você precisará criar novos FaceLists e PersonGroups com o modelo de reconhecimento de sua escolha.

Recomendações de modelo

O modelo de recognition_04 (publicado em 2021) é o modelo mais preciso atualmente disponível. Se você for um novo cliente, use este modelo. Recognition_04 fornece precisão aprimorada para comparações de similaridade e comparações de correspondência de pessoas. Recognition_04 melhora o reconhecimento de usuários registrados usando capas faciais (máscaras cirúrgicas, máscaras N95, máscaras de pano). Você pode criar experiências de usuário seguras e perfeitas que usam o modelo de detection_03 mais recente para detectar se um usuário registrado está usando uma capa facial e, em seguida, usar o modelo de recognition_04 mais recente para reconhecer sua identidade. Cada modelo opera independentemente dos outros, e um limite de confiança definido para um modelo não deve ser comparado entre os outros modelos de reconhecimento.

As seções a seguir explicam como especificar um modelo selecionado em diferentes operações de detecção facial, evitando conflitos de modelo. Se você for um usuário avançado e quiser determinar se deve alternar para o modelo mais recente, vá para a seção Avaliar modelos diferentes para avaliar o novo modelo e comparar os resultados usando o conjunto de dados atual.

Detectar rostos com o modelo especificado

A detecção facial identifica os marcos visuais dos rostos humanos e determina as localizações de suas caixas delimitadoras. Ele também extrai as características do rosto e as armazena temporariamente por até 24 horas para uso na identificação. Todas essas informações formam a representação de um rosto.

O modelo de reconhecimento é usado quando as características faciais são extraídas, para que você possa especificar uma versão do modelo ao executar a operação Detectar.

Ao usar a API de Detecção , atribua a versão do modelo com o recognitionModel parâmetro. Os valores disponíveis são:

  • recognition_01
  • recognition_02
  • recognition_03
  • recognition_04

Opcionalmente, você pode especificar o parâmetro returnRecognitionModel ( falso padrão) para indicar se recognitionModel deve ser retornado em resposta. Portanto, uma URL de solicitação para a API REST Detect terá esta aparência:

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

Se você estiver usando a biblioteca cliente, poderá atribuir o valor para recognitionModel passando uma cadeia de caracteres que representa a versão. Se você deixá-lo sem atribuição, uma versão padrão do modelo recognition_01 será usada. Consulte o exemplo de código a seguir para a biblioteca de clientes do .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

O parâmetro returnFaceId deve ser definido para true habilitar os cenários de reconhecimento facial em etapas posteriores.

Identificar rostos com o modelo especificado

O serviço de Face pode extrair dados de face de uma imagem e associá-los a um objeto Person (por meio da chamada da API Add Person Group Person Face, por exemplo), e vários objetos Person podem ser armazenados juntos em um PersonGroup. Em seguida, um novo rosto pode ser comparado com um PersonGroup (com a chamada Identificar do Grupo de Pessoas) e a pessoa correspondente dentro desse grupo pode ser identificada.

Um PersonGroup deve ter um modelo de reconhecimento exclusivo para todas as Pessoase você pode especificar isso usando o recognitionModel parâmetro ao criar o grupo (Criar Grupo de Pessoas ou Criar Grupo de Pessoas Grandes). Se você não especificar esse parâmetro, o modelo original recognition_01 será usado. Um grupo sempre usará o modelo de reconhecimento com o qual foi criado e novos rostos se tornarão associados a esse modelo quando forem adicionados a ele. Isso não pode ser alterado após a criação de um grupo. Para ver com qual modelo um PersonGroup está configurado, use a API Get Person Group com o parâmetro returnRecognitionModel definido como true.

Consulte o exemplo de código .NET a seguir.

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

Nesse código, um PersonGroup com ID mypersongroupid é criado e ele é configurado para usar o modelo recognition_04 para extrair recursos de detecção facial.

Correspondentemente, você precisa especificar qual modelo usar ao detectar rostos a serem comparados com esse PersonGroup (por meio da API de Detecção ). O modelo que você usa sempre deve ser consistente com a configuração do PersonGroup; caso contrário, a operação falhará devido a modelos incompatíveis.

Não há nenhuma alteração na API de Identificação de Grupo de Pessoas; você só precisa especificar a versão do modelo no processo de detecção.

Localizar rostos semelhantes com o modelo especificado

Você também pode especificar um modelo de reconhecimento para pesquisa de similaridade. Você pode atribuir a versão recognitionModel do modelo ao criar a FaceList com a API Criar Lista de Rostos ou Criar Lista de Rostos Grandes. Se você não especificar esse parâmetro, o recognition_01 modelo será usado por padrão. Uma FaceList sempre usará o modelo de reconhecimento com o qual foi criado, e novos rostos se tornarão associados a esse modelo quando forem adicionados à lista; você não pode alterar isso após a criação. Para ver com qual modelo uma FaceList está configurada, use a API Get Face List com o parâmetro returnRecognitionModel definido como true.

Consulte o exemplo de código .NET a seguir.

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

Esse código cria uma FaceList chamada My face collection, usando o modelo recognition_04 para extração de recursos. Quando você pesquisa este FaceList em busca de rostos semelhantes a um novo rosto detectado, esse rosto deve ter sido detectado (Detectar) usando o modelo recognition_04 . Como na seção anterior, o modelo precisa ser consistente.

Não há nenhuma alteração na API Localizar Semelhante ; você só especifica a versão do modelo na detecção.

Verificar rostos com o modelo especificado

A API Verificar Cara a Cara verifica se dois rostos pertencem à mesma pessoa. Não há nenhuma alteração na API de Verificação em relação aos modelos de reconhecimento, mas você só pode comparar rostos detectados com o mesmo modelo.

Avaliar modelos diferentes

Se você quiser comparar os desempenhos de diferentes modelos de reconhecimento em seus próprios dados, precisará:

  1. Crie quatro PersonGroups usando recognition_01, recognition_02, recognition_03 e recognition_04, respectivamente.
  2. Use seus dados de imagem para detectar rostos e registrá-los em Persons dentro desses quatro PersonGroups.
  3. Treine seus PersonGroups usando a API Treinar Grupo de Pessoas.
  4. Teste com Identifique de Grupo de Pessoas em todos os quatro PersonGroupse compare os resultados.

Se você normalmente especificar um limite de confiança (um valor entre zero e um que determina o quão confiante o modelo deve ser para identificar um rosto), talvez seja necessário usar limites diferentes para modelos diferentes. Um limite para um modelo não deve ser compartilhado com outro e não necessariamente produzirá os mesmos resultados.

Próxima etapa

Neste artigo, você aprendeu a especificar o modelo de reconhecimento a ser usado com diferentes APIs do Serviço de Detecção Facial. Em seguida, siga um guia de início rápido para começar a detecção facial.