Especificar um modelo de reconhecimento facial

Importante

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 do Azure.

O serviço de Detecção Facial usa modelos de machine learning para executar operações em rostos humanos 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 a versão do modelo de reconhecimento de rosto que desejam usar. Eles podem escolher o modelo que melhor se ajusta ao respectivo caso de uso.

O serviço de Detecção Facial 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 usará o modelo de reconhecimento com o qual foi criado, e os novos rostos serão associados a esse modelo quando forem 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 fornecerá 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 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 Face - Detect, 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 Face - Detect terá a seguinte aparência:

https://westus.api.cognitive.microsoft.com/face/v1.0/detect[?returnFaceId][&returnFaceLandmarks][&returnFaceAttributes][&recognitionModel][&returnRecognitionModel]&subscription-key=<Subscription key>

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://news.microsoft.com/ceo/assets/photos/06_web.jpg";
var faces = await faceClient.Face.DetectWithUrlAsync(imageUrl, true, true, recognitionModel: "recognition_01", returnRecognitionModel: true);

Identificar rostos com o modelo especificado

O serviço de Detecção Facial pode extrair dados de detecção facial de uma imagem e associá-los a um objeto Person (por meio da chamada à API Adicionar rosto, por exemplo), e vários objetos Person podem ser armazenados juntos em um PersonGroup. Em seguida, um novo rosto pode ser comparado a um PersonGroup (com a chamada Face - Identify) 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 (PersonGroup – Criar ou LargePersonGroup – Criar). 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 PersonGroup – Obter com o parâmetro returnRecognitionModel definido como true.

Confira o exemplo de código a seguir para a biblioteca de clientes .NET.

// Create an empty PersonGroup with "recognition_04" model
string personGroupId = "mypersongroupid";
await faceClient.PersonGroup.CreateAsync(personGroupId, "My Person Group Name", recognitionModel: "recognition_04");

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.

De maneira correspondente, você precisa especificar qual modelo usar ao detectar rostos para comparar com esse PersonGroup (por meio da API Face - Detect). 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 Face - Identify; 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 a FaceList com a API FaceList – Criar ou LargeFaceList – Criar. 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 FaceList – Obter com o parâmetro returnRecognitionModel definido como true.

Confira o exemplo de código a seguir para a biblioteca de clientes .NET.

await faceClient.FaceList.CreateAsync(faceListId, "My face collection", recognitionModel: "recognition_04");

Esse código cria uma FaceList chamada My face collection, usando o modelo recognition_04 para extração de recursos. Quando você pesquisar neste FaceList por rostos semelhantes para um novo rosto detectado, ele deve ter sido detectado (Face - Detect) usando o modelo recognition_04. Como na seção anterior, o modelo precisa ser consistente.

Não há nenhuma alteração na API Face - Find Similar; você só precisa especificar a versão do modelo na detecção.

Verificar rostos com o modelo especificado

A API Face - Verify 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. Treinar os PersonGroups usando a API PersonGroup – Treinar.
  4. Testar com Face - Identify 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.