Compartilhar via


Especificar um modelo de reconhecimento facial

Cuidado

O acesso ao serviço de Detecção Facial é limitado com base em 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 clientes e parceiros gerenciados da Microsoft. Use o Formulário de admissã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 de Detecção Facial da IA 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 aprimorando a precisão de nossos modelos com base no feedback do cliente e nos avanços na pesquisa e oferecemos esses aprimoramentos como atualizações de modelo. Os desenvolvedores podem especificar qual versão do modelo de reconhecimento facial gostaria de usar; escolhendo o modelo que melhor se adapta ao caso de uso deles.

Compatibilidade de modelo

O serviço de Detecção Facial da IA do Azure 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) têm suporte contínuo para garantir a compatibilidade com versões anteriores para clientes que usam FaceLists ou PersonGroups criados com esses modelos. Uma FaceList ou um PersonGroup sempre usa o modelo de reconhecimento com o qual foi criado, e os novos rostos são associados a esse modelo quando são adicionados. Isso não poderá ser alterado após a criação, e os clientes precisarão usar o modelo de reconhecimento correspondente com uma FaceList ou um PersonGroup correspondente.

Você pode migrar para modelos de reconhecimento posteriores de acordo com sua conveniência. No entanto, precisará criar FaceLists e PersonGroups com o modelo de reconhecimento de sua escolha.

O modelo recognition_04 (publicado em 2021) é o modelo mais preciso disponível no momento. Se você é um novo cliente, recomendamos usar esse modelo. O recognition_04 fornece precisão aprimorada para comparações de semelhanças e comparações de correspondência de pessoas. O recognition_04 aprimora o reconhecimento de usuários inscritos com coberturas faciais (máscaras cirúrgicas, máscaras N95, máscaras de tecido). Agora você pode criar experiências de usuário seguras e perfeitas que usam o modelo detection_03 mais recente para detectar se um usuário registrado está usando uma máscara. Em seguida, você pode usar o modelo recognition_04 mais recente para reconhecer a identidade dele. 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.

Continue lendo para saber como especificar um modelo selecionado em diversas operações de Detecção Facial enquanto evita conflitos de modelo. Se você é um usuário avançado e deseja determinar se deve mudar para o modelo mais recente, vá para a seção Avaliar diferentes modelos. Você pode avaliar o novo modelo e comparar os resultados usando o conjunto de dados atual.

Pré-requisitos

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

Detectar rostos com o modelo especificado

A detecção facial identifica os pontos de referência visuais de rostos humanos e encontra as localizações da caixa delimitadora. Ele também extrai os recursos de detecção facial e os 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 os recursos de detecção facial são extraídos, para que você possa especificar uma versão de modelo ao executar a operação de Detecção.

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

  • recognition_01
  • recognition_02
  • recognition_03
  • recognition_04

Opcionalmente, você pode especificar o parâmetro returnRecognitionModel (padrão false) para indicar se recognitionModel deve ser retornado em resposta. Portanto, uma URL de solicitação para a API REST Detectar terá a seguinte 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 de clientes, poderá atribuir o valor para recognitionModel transmitindo uma cadeia de caracteres que representa a versão. Se você o deixar sem atribuição, uma versão de modelo padrão do recognition_01 será usada. Confira o exemplo de código a seguir para a biblioteca de clientes .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;

Observação

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

Identificar rostos com o modelo especificado

O serviço Detecção Facial pode extrair dados do rosto de uma imagem e associá-los a um objeto Pessoa (por meio da chamada de API Adicionar Rosto de Pessoa ao Grupo de Pessoas, por exemplo), e várias Pessoa objetos podem ser armazenados juntos em um PersonGroup. Em seguida, um novo rosto pode ser comparado com um PersonGroup (com a chamada Identificar a partir 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 Pessoas, e você pode especificar isso usando o parâmetro recognitionModel ao criar o grupo (Criar Grupo de Pessoas ou Criar um Grande Grupo de Pessoas). Se você não especificar esse parâmetro, o modelo recognition_01 original será usado. Um grupo sempre usará o modelo de reconhecimento com o qual foi criado, e os novos rostos serão associados a esse modelo quando forem adicionados a ele. Isso não poderá ser alterado após a criação de um grupo. Para ver com qual modelo um PersonGroup está configurado, use a API Obter o Grupo de Pessoas com o parâmetro returnRecognitionModel definido como verdadeiro.

Confira o seguinte exemplo de código do .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, um PersonGroup com a ID mypersongroupid é criado e configurado para usar o modelo recognition_04 a fim de extrair os recursos de detecção facial.

Da mesma forma, você precisa especificar qual modelo usar ao detectar rostos para comparar com esse PersonGroup (por meio da API Detectar). O modelo usado deve sempre 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 Identificar a partir de um Grupo de Pessoas você só precisa especificar a versão do modelo na 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 do modelo com recognitionModel ao criar FaceList com a API Criar Lista de Rostos API ou Criar uma Grande Lista de Rostos. Se você não especificar esse parâmetro, o modelo recognition_01 será usado por padrão. Uma FaceList sempre usará o modelo de reconhecimento com o qual foi criada, e os novos rostos serão associados a esse modelo quando forem adicionados à lista. Não é possível alterar isso após a criação. Para ver com qual modelo um FaceList está configurado, use a API Obter Lista de Rostos com o parâmetro returnRecognitionModel definido como verdadeiro.

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

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

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

Verificar rostos com o modelo especificado

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

Avaliar diversos modelos

Se você desejar comparar os desempenhos de diferentes modelos de reconhecimento nos próprios dados, precisará:

  1. Criar quatro PersonGroups usando recognition_01, recognition_02, recognition_03 e recognition_04, respectivamente.
  2. Usar os dados de imagem para detectar rostos e registrá-los nas Pessoas dentro desses quatro PersonGroups.
  3. Treine seus PersonGroups usando a API Treinar Grupo de Pessoas.
  4. Teste com Identificar a partir do Grupo de Pessoas em todos os quatro PersonGroups e compare os resultados.

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

Próximas etapas

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