A tarefa Detector de rostos do MediaPipe permite detectar rostos em uma imagem ou um vídeo. Você pode usar essa tarefa para localizar rostos e características faciais em um frame. Essa tarefa usa um modelo de machine learning (ML) que funciona com imagens únicas ou um fluxo contínuo de imagens. A tarefa mostra localizações de rostos, com os seguintes pontos-chave faciais: olho esquerdo, olho direito, ponta do nariz, boca, tradição do olho esquerdo e trágico do olho direito.
Comece já
Comece a usar essa tarefa seguindo um destes guias de implementação para sua plataforma de destino. Estes guias específicos da plataforma orientam você em uma implementação básica dessa tarefa, incluindo um modelo recomendado e um exemplo de código com as 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
Nesta seção, descrevemos os recursos, as entradas, as saídas e as opções de configuração desta tarefa.
Recursos
- Processamento de imagem de entrada: o processamento inclui rotação, redimensionamento, normalização e conversão do espaço de cor da imagem.
- Limite de pontuação: filtre os resultados com base nas pontuações de previsão.
Entradas de tarefas | Saídas de tarefas |
---|---|
O detector facial 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. VIDEO: 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, o resultListener precisa ser chamado para configurar um listener para receber resultados de forma assíncrona. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
min_detection_confidence |
A pontuação de confiança mínima para que a detecção facial 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 facial 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 Face Detector está no modo de transmissão ao vivo. Só pode ser usado quando o modo de corrida está definido como LIVE_STREAM . |
N/A |
Not set |
Modelos
Os modelos de detecção facial podem variar dependendo dos casos de uso pretendidos, como detecção de curto e longo alcance. Os modelos também costumam fazer compensações entre desempenho, acurácia, resolução e requisitos de recursos e, em alguns casos, incluem outros atributos.
Os modelos listados nesta seção são variantes do BlazeFace, um detector facial leve e preciso otimizado para inferência de GPU para dispositivos móveis. Os modelos BlazeFace são adequados para aplicativos como estimativa de pontos-chave faciais em 3D, classificação de expressão e segmentação de região facial. O BlazeFace usa uma rede de extração de atributos leve semelhante à MobileNetV1/V2 (link em inglês).
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 da câmera frontal do smartphone em curto alcance. A arquitetura de modelo usa uma técnica de rede convolucional de detector de imagem única (SSD) com um codificador personalizado. Para mais informações, consulte o artigo de pesquisa sobre o Detector de caixa múltipla de disparo único.
Nome do modelo | Forma de entrada | Tipo de quantização | Card de modelo | Versions |
---|---|---|---|---|
BlazeFace (curto alcance) | 128 x 128 | ponto flutuante 16 | informações | Mais recente |
BlazeFace (full-range)
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 amplo escopo, como aquelas tiradas com imagens da câmera traseira do smartphone. A arquitetura de modelo usa uma técnica semelhante a uma rede convolucional CenterNet (em inglês) com um codificador personalizado.
Nome do modelo | Forma de entrada | Tipo de quantização | Card de modelo | Versions |
---|---|---|---|---|
BlazeFace (full-range) | 128 x 128 | ponto flutuante 16 | informações | Em breve |
BlazeFace esparsa (intervalo total)
Uma versão mais leve do modelo normal de BlazeFace normal, aproximadamente 60% menor em tamanho. O modelo é otimizado para imagens de amplo alcance, como aquelas tiradas com imagens de uma câmera de smartphone voltada para trás. A arquitetura do modelo usa uma técnica semelhante a uma rede convolucional CenterNet (em inglês) com um codificador personalizado.
Nome do modelo | Forma de entrada | Tipo de quantização | Card de modelo | Versions |
---|---|---|---|---|
BlazeFace esparsa (intervalo total) | 128 x 128 | ponto flutuante 16 | informações | Em breve |
Comparativos de mercado de tarefas
Aqui estão os comparativos de mercado de tarefas para todo o pipeline com base nos modelos pré-treinados acima. O resultado da 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 |