A tarefa MediaPipe Face Detector permite detectar rostos em uma imagem ou vídeo. Use essa tarefa para localizar rostos e características faciais em um frame. Essa tarefa usa um modelo de aprendizado de máquina (ML) que funciona com imagens únicas ou um fluxo contínuo de imagens. A tarefa gera locais de rostos, além dos seguintes pontos principais faciais: olho esquerdo, olho direito, ponta do nariz, boca, trago do olho esquerdo e trago do olho direito.
Começar
Comece a usar essa tarefa seguindo um destes guias de implementação para sua plataforma segmentada. Esses guias específicos da plataforma mostram uma implementação básica dessa tarefa, incluindo um modelo recomendado e um exemplo de código com opções de configuração recomendadas:
- Android - Exemplo de código - Guia
- Python: exemplo de código: guia
- Web - Exemplo de código - Guia
- iOS: exemplo de código - guia
Detalhes da tarefa
Esta seção descreve os recursos, entradas, saídas e opções de configuração dessa tarefa.
Recursos
- Processamento de imagens de entrada: inclui rotação, redimensionamento, normalização e conversão de espaço de cores.
- Limite de pontuação: filtre os resultados com base nas pontuações de previsão.
| Entradas da tarefa | Saídas de tarefas |
|---|---|
O detector de rostos aceita uma entrada de um dos seguintes tipos de dados:
|
O detector facial gera os seguintes resultados:
|
Opções de configuração
Essa tarefa tem as seguintes opções de configuração:
| Nome da opção | Descrição | Intervalo de valor | Valor padrão |
|---|---|---|---|
running_mode |
Define o modo de execução da tarefa. Há três modos: IMAGE: o modo para entradas de imagem única. VÍDEO: o modo para frames decodificados de um vídeo. LIVE_STREAM: o modo para uma transmissão ao vivo de dados de entrada, como de uma câmera. Nesse modo, "resultListener" precisa ser chamado para configurar um listener que receba resultados de forma assíncrona. |
{IMAGE, VIDEO, LIVE_STREAM} |
IMAGE |
min_detection_confidence |
A pontuação mínima de confiança para que a detecção de rosto seja considerada bem-sucedida. | Float [0,1] |
0.5 |
min_suppression_threshold |
O limite mínimo de supressão não máxima para que a detecção de rostos seja considerada sobreposta. | Float [0,1] |
0.3 |
result_callback |
Define o listener de resultados para receber os resultados da detecção
de forma assíncrona quando o detector facial está no modo
de transmissão ao vivo. Só pode ser usado quando o modo de execução está definido como LIVE_STREAM. |
N/A |
Not set |
Modelos
Os modelos de detecção de rostos podem variar dependendo dos casos de uso pretendidos, como detecção de curto e longo alcance. Os modelos também costumam fazer concessões entre desempenho, precisão, resolução e requisitos de recursos e, em alguns casos, incluem recursos adicionais.
Os modelos listados nesta seção são variantes do BlazeFace, um detector de rostos leve e preciso otimizado para inferência de GPU móvel. Os modelos BlazeFace são adequados para aplicativos como estimativa de pontos principais faciais 3D, classificação de expressões e segmentação de regiões faciais. O BlazeFace usa uma rede de extração de recursos leve semelhante ao MobileNetV1/V2.
BlazeFace (curto alcance)
Um modelo leve para detectar um ou vários rostos em imagens semelhantes a selfies de uma câmera de smartphone ou webcam. O modelo é otimizado para imagens de câmeras frontais de smartphones a curta distância. A arquitetura do modelo usa uma técnica de rede convolucional Single Shot Detector (SSD) com um codificador personalizado. Para mais informações, consulte o artigo de pesquisa sobre o Single Shot MultiBox Detector.
| Nome do modelo | Dimensão de entrada | Tipo de quantização | Card de modelo | Versões |
|---|---|---|---|---|
| BlazeFace (curto alcance) | 128 x 128 | ponto flutuante de 16 bits | informações | Mais recente |
BlazeFace (intervalo completo)
Um modelo relativamente leve para detectar um ou vários rostos em imagens de uma câmera de smartphone ou webcam. O modelo é otimizado para imagens de faixa completa, como as tiradas com uma câmera traseira de smartphone. A arquitetura do modelo usa uma técnica semelhante a uma rede convolucional CenterNet com um codificador personalizado.
| Nome do modelo | Dimensão de entrada | Tipo de quantização | Card de modelo | Versões |
|---|---|---|---|---|
| BlazeFace (intervalo completo) | 128 x 128 | ponto flutuante de 16 bits | informações | Mais recente |
BlazeFace Sparse (intervalo completo)
Uma versão mais leve do modelo BlazeFace normal de faixa completa, aproximadamente 60% menor em tamanho. O modelo é otimizado para imagens de faixa completa, como as tiradas com uma câmera traseira de smartphone. A arquitetura do modelo usa uma técnica semelhante a uma rede convolucional CenterNet com um codificador personalizado.
| Nome do modelo | Dimensão de entrada | Tipo de quantização | Card de modelo | Versões |
|---|---|---|---|---|
| BlazeFace Sparse (intervalo completo) | 128 x 128 | ponto flutuante de 16 bits | informações | Mais recente |
Comparativos de mercado sobre tarefas
Confira os comparativos de tarefas para todo o pipeline com base nos modelos pré-treinados acima. O resultado de latência é a latência média no Pixel 6 usando CPU / GPU.
| Nome do modelo | Latência da CPU | Latência da GPU |
|---|---|---|
| BlazeFace (curto alcance) | 2,94 ms | 7,41 ms |