Especifique um modelo de deteção facial
Este guia mostra como especificar um modelo de deteção de rosto para o serviço Azure AI Face.
O serviço Face usa modelos de aprendizado de máquina para realizar operações em rostos humanos em imagens. Continuamos a melhorar a precisão de nossos modelos com base no feedback dos clientes e nos avanços na pesquisa, e fornecemos essas melhorias como atualizações de modelos. Os desenvolvedores podem especificar qual versão do modelo de deteção de rosto eles gostariam de usar; Eles podem escolher o modelo que melhor se adapta ao seu caso de uso.
Continue lendo para saber como especificar o modelo de deteção de rosto em determinadas operações faciais. O serviço Face usa a deteção de rosto sempre que converte uma imagem de um rosto em alguma outra forma de dados.
Se não tiver certeza se deve usar o modelo mais recente, vá para a seção Avaliar modelos diferentes para avaliar o novo modelo e comparar os resultados usando seu conjunto de dados atual.
Pré-requisitos
Você deve estar familiarizado com o conceito de deteção de rosto de IA. Se não estiver, consulte o guia conceitual de deteção de rosto ou o guia de instruções:
Avaliar diferentes modelos
Os diferentes modelos de deteção de rosto são otimizados para diferentes tarefas. Consulte a tabela a seguir para obter uma visão geral das diferenças.
Modelo | Description | Notas de desempenho | Pontos de referência |
---|---|---|---|
detection_01 | Escolha padrão para todas as operações de deteção de rosto. | Não otimizado para rostos pequenos, com vista lateral ou desfocados. | Retorna pontos de referência de face se eles forem especificados na chamada de deteção. |
detection_02 | Lançado em maio de 2019 e disponível opcionalmente em todas as operações de deteção de rosto. | Precisão melhorada em rostos pequenos, com vista lateral e desfocados. | Não retorna face pontos de referência. |
detection_03 | Lançado em fevereiro de 2021 e disponível opcionalmente em todas as operações de deteção de rosto. | Maior precisão, incluindo em faces menores (64x64 pixels) e orientações de rosto giradas. | Retorna pontos de referência de face se eles forem especificados na chamada de deteção. |
Os atributos são um conjunto de recursos que podem ser detetados opcionalmente se forem especificados na chamada de deteção:
Modelo | Acessórios | desfoque | Exposição | óculos | headPose | mask | ruído | oclusão | qualidadeParaReconhecimento |
---|---|---|---|---|---|---|---|---|---|
detection_01 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (para recognition_03 ou 04) | |
detection_02 | |||||||||
detection_03 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (para recognition_03 ou 04) |
A melhor maneira de comparar os desempenhos dos modelos de deteção é usá-los em um conjunto de dados de amostra. Recomendamos chamar a API de deteção em uma variedade de imagens, especialmente imagens de muitos rostos ou de rostos difíceis de ver, usando cada modelo de deteção. Preste atenção ao número de faces que cada modelo retorna.
Detetar rostos com o modelo especificado
A deteção de rostos encontra os locais das caixas delimitadoras de rostos humanos e identifica seus pontos de referência visuais. Ele extrai as características do rosto e as armazena para uso posterior em operações de reconhecimento .
Ao usar a API de deteção , você pode atribuir a versão do modelo com o detectionModel
parâmetro. Os valores disponíveis são:
detection_01
detection_02
detection_03
Uma URL de solicitação para a API Detect REST tem 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 de cliente, poderá atribuir o valor para detectionModel
passando uma cadeia de caracteres apropriada. Se você deixá-lo não atribuído, a API usará a versão padrão do modelo (detection_01
). Consulte o exemplo de código a seguir para a biblioteca de 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: false, returnFaceLandmarks: false);
var faces = response.Value;
Adicionar face a Pessoa com modelo especificado
O serviço Face pode extrair dados faciais de uma imagem e associá-los a um objeto Person por meio da API Add Person Group Person Face . Nesta chamada de API, você pode especificar o modelo de deteção da mesma forma que em Detetar.
Consulte o seguinte exemplo de código .NET.
// Create a PersonGroup and add a person with face detected by "detection_03" 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);
}
string? personId = null;
using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["name"] = "My Person Name" }))))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
using (var response = await httpClient.PostAsync($"{ENDPOINT}/face/v1.0/persongroups/{personGroupId}/persons", content))
{
string contentString = await response.Content.ReadAsStringAsync();
personId = (string?)(JsonConvert.DeserializeObject<Dictionary<string, object>>(contentString)?["personId"]);
}
}
string imageUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/detection1.jpg";
using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["url"] = imageUrl }))))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
await httpClient.PostAsync($"{ENDPOINT}/face/v1.0/persongroups/{personGroupId}/persons/{personId}/persistedfaces?detectionModel=detection_03", content);
}
Esse código cria um PersonGroup com ID mypersongroupid
e adiciona uma Person a ele. Em seguida, adiciona um rosto a essa pessoa usando o detection_03
modelo. Se você não especificar o parâmetro detectionModel , a API usará o modelo padrão, detection_01
.
Nota
Você não precisa usar o mesmo modelo de deteção para todas as faces em um objeto Person e não precisa usar o mesmo modelo de deteção ao detetar novas faces para comparar com um objeto Person (na API Identificar do Grupo de Pessoas, por exemplo).
Adicionar face à FaceList com o modelo especificado
Você também pode especificar um modelo de deteção ao adicionar um rosto a um objeto FaceList existente. Consulte 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);
}
string imageUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/detection1.jpg";
using (var content = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new Dictionary<string, object> { ["url"] = imageUrl }))))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
await httpClient.PostAsync($"{ENDPOINT}/face/v1.0/facelists/{faceListId}/persistedfaces?detectionModel=detection_03", content);
}
Esse código cria um FaceList chamado My face collection
e adiciona um Face a ele com o detection_03
modelo. Se você não especificar o parâmetro detectionModel , a API usará o modelo padrão, detection_01
.
Nota
Você não precisa usar o mesmo modelo de deteção para todos os rostos em um objeto FaceList e não precisa usar o mesmo modelo de deteção ao detetar novos rostos para comparar com um objeto FaceList .
Próximos passos
Neste artigo, você aprendeu como especificar o modelo de deteção a ser usado com diferentes APIs do Face. Em seguida, siga um guia de início rápido para começar a usar a deteção e análise de rosto.