Especificar um modelo de reconhecimento facial

Cautela

O acesso ao serviço facial é limitado com base nos critérios de elegibilidade e utilização para apoiar os nossos princípios de IA Responsável. O serviço Face está disponível apenas para clientes e parceiros geridos pela Microsoft. Utilize o formulário de admissão de Reconhecimento Facial para solicitar acesso. Para mais informações, consulte a página de acesso limitado do Face .

Este guia mostra-lhe como especificar um modelo de reconhecimento facial para deteção, identificação e pesquisa de similaridade facial usando o serviço Azure Face.

O serviço Face utiliza modelos de aprendizagem automática para realizar operações em rostos humanos visíveis em imagens. Continuamos a melhorar a precisão dos nossos modelos com base no feedback dos clientes e nos avanços na investigação, e entregamos estas melhorias como atualizações de modelos. Os programadores podem especificar qual a versão do modelo de reconhecimento facial que gostariam de usar, escolhendo o modelo que melhor se adequa ao seu caso de uso.

Pré-requisitos

Deve estar familiarizado com os conceitos de deteção e identificação facial por IA. Se não estiver, veja antes estes guias:

Compatibilidade de modelos

O serviço Azure Face tem quatro modelos de reconhecimento disponíveis. Os modelos recognition_01 (publicado em 2017), recognition_02 (publicado em 2019) e recognition_03 (publicado em 2020) são continuamente suportados para garantir compatibilidade retroativa para clientes que utilizam FaceLists ou PersonGroupcriados com estes modelos. Um FaceList ou PersonGroup usa sempre o modelo de reconhecimento com que foi criado, e novos rostos ficam associados a este modelo quando são adicionados. Isto não pode ser alterado após a criação e os clientes precisam de usar o modelo de reconhecimento correspondente com o FaceList ou PersonGroup correspondente.

Pode passar para modelos de reconhecimento posteriores quando lhe for conveniente; no entanto, terá de criar novas FaceLists e PersonGroups com o modelo de reconhecimento que preferir.

Recomendações de modelos

O modelo recognition_04 (publicado em 2021) é o modelo mais preciso atualmente disponível. Se és um cliente novo, usa este modelo. Recognition_04 proporciona maior precisão tanto para comparações de similaridade como para comparações de pessoas. Recognition_04 melhora o reconhecimento dos utilizadores inscritos que usam máscaras faciais (máscaras cirúrgicas, máscaras N95, máscaras de tecido). Pode criar experiências de utilizador seguras e fluidas que utilizam o modelo de detection_03 mais recente para detetar se um utilizador inscrito está a usar uma máscara facial e, depois, usar o modelo de recognition_04 mais recente para reconhecer a sua identidade. Cada modelo opera independentemente dos outros, e um limiar de confiança definido para um modelo não deve ser comparado entre os outros modelos de reconhecimento.

As secções seguintes explicam como especificar um modelo selecionado em diferentes operações de Face, evitando conflitos de modelos. Se é um utilizador avançado e quer determinar se deve mudar para o modelo mais recente, vá para a secção Avaliar diferentes modelos para avaliar o novo modelo e comparar resultados usando o seu conjunto de dados atual.

Detetar faces com um modelo especificado

A deteção facial identifica os marcos visuais dos rostos humanos e encontra as suas posições nas caixas delimitadoras. Também extrai as características do rosto e armazena-as temporariamente durante até 24 horas para uso na identificação. Toda esta informação forma a representação de uma face.

O modelo de reconhecimento é usado quando as características faciais são extraídas, por isso pode especificar uma versão do modelo ao realizar a operação Deteção.

Ao usar a API Detect , atribui 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, pode especificar o parâmetro returnRecognitionModel (falso por defeito) para indicar se recognitionModel deve ser devolvido em resposta. Assim, uma URL de pedido para a API Detect REST será assim:

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 estiveres a usar a biblioteca cliente, podes atribuir o valor de recognitionModel passando uma string que representa a versão. Se o deixar sem atribuir, será usada uma versão padrão do recognition_01 modelo. Veja o seguinte exemplo de código para a 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

O parâmetro returnFaceId deve ser definido para true permitir os cenários de reconhecimento facial nas etapas seguintes.

Identificar os rostos com o modelo especificado

O serviço Face pode extrair dados face de uma imagem e associá-los a um objeto Person (através da chamada API Add Person Group Person Face , por exemplo), e múltiplos objetos Person podem ser armazenados juntos num PersonGroup. Depois, pode-se comparar uma nova cara com um PersonGroup através da chamada Identify From Person Group, permitindo a identificação da pessoa correspondente dentro desse grupo.

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

Veja o seguinte exemplo de código .NET.

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

Neste código, é criado um PersonGroup com ID mypersongroupid , configurado para usar o modelo recognition_04 para extrair características faciais.

Correspondentemente, precisa de especificar qual modelo usar ao detetar rostos para comparar com este PersonGroup (através da API Detect ). O modelo que utiliza deve ser sempre consistente com a configuração do PersonGroup; caso contrário, a operação falhará devido a modelos incompatíveis.

Não há alterações na API Identify From Person Group; Só precisa de especificar a versão do modelo na deteção.

Encontre faces semelhantes com o modelo especificado

Também pode especificar um modelo de reconhecimento para pesquisa por similaridade. Pode atribuir a versão do modelo recognitionModel ao criar a FaceList com a API Create Face List ou Create Large Face List. Se não especificar este parâmetro, o recognition_01 modelo é usado por defeito. Uma FaceList usará sempre o modelo de reconhecimento com que foi criada, e novos rostos passarão a ser associados a este modelo quando forem adicionados à lista; Não podes mudar isto depois da criação. Para verificar com qual modelo está configurado um FaceList, utilize a API Get Face List com o parâmetro returnRecognitionModel definido como true.

Veja o seguinte exemplo de código .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);
}

Este código cria uma FaceList chamada My face collection, usando o modelo recognition_04 para extração de características. Quando procura nesta FaceList por faces semelhantes a um novo rosto reconhecido, esse rosto deve ter sido detectado (Detectar) usando o modelo recognition_04. Tal como na secção anterior, o modelo precisa de ser consistente.

Não há alterações na API Find Similar ; Só especificas a versão do modelo na deteção.

Verificar os rostos com o modelo especificado

A API Verify Face To Face verifica se duas caras pertencem à mesma pessoa. Não há alterações na API Verify relativamente a modelos de reconhecimento, mas só pode comparar rostos que foram detetados com o mesmo modelo.

Avaliar diferentes modelos

Se quiser comparar o desempenho de diferentes modelos de reconhecimento com os seus próprios dados, terá de:

  1. Crie quatro Grupos de Pessoasusando recognition_01, recognition_02, recognition_03 e recognition_04 , respetivamente.
  2. Use os seus dados de imagem para detetar rostos e registá-los na Pessoadentro destes quatro Grupos de Pessoas.
  3. Treine o(s) seu(s) PersonGroup(s) usando a API do Train Person Group.
  4. Teste com Identificar a Partir de Grupo de Pessoas em todos os quatro PersonGroups e compare os resultados.

Se normalmente especificar um limiar de confiança (um valor entre zero e um que determina a confiança do modelo para identificar uma face), poderá ser necessário usar limiares diferentes para diferentes modelos. Um limiar para um modelo não é para ser partilhado com outro e não produzirá necessariamente os mesmos resultados.

Próximo passo

Neste artigo, aprendeste a especificar o modelo de reconhecimento a usar com diferentes APIs de serviços faciais. De seguida, siga um quickstart para começar com a deteção de rostos.