
Desfoque e substitua o fundo com base no MediaPipe
Uma visão geral de nossa solução Web ML
Os novos recursos do Meet são fornecidos pelo MediaPipe , a plataforma de streaming de código aberto do Google. Outras soluções de ML são baseadas nesta estrutura, como rastreamento da mão , íris e posição do corpo em tempo real.
O principal requisito de qualquer tecnologia móvel é atingir alto desempenho. Para fazer isso, o pipeline da Web MediaPipe usa o formato binário de baixo nível WebAssembly.projetado especificamente para navegadores da web para acelerar tarefas de computação complexas. No tempo de execução, o navegador traduz as instruções do WebAssembly em código de máquina que é executado muito mais rápido do que o JavaScript tradicional. Além disso, o Chrome 84 implementou recentemente o suporte WebAssembly SIMD , onde cada instrução processa vários pontos de dados, o que mais do que dobra o desempenho.
Nossa solução processa primeiro cada quadro de vídeo, separando o usuário do fundo (veja abaixo para mais informações sobre o modelo de segmentação), usando a saída de ML para calcular uma máscara de baixa resolução. Se necessário, refinamos ainda mais a máscara para alinhá-la com as bordas da imagem. A máscara é então usada para renderizar a saída de vídeo por meioWebGL2 e o fundo está desfocado ou substituído.

Pipeline WebML: todas as operações computacionais são implementadas em C ++ / OpenGL e realizadas no navegador via WebAssembly.
Na versão atual, o cálculo é realizado na CPU do cliente com o menor consumo de energia e a maior cobertura de dispositivos. Para alcançar alto desempenho em tempo real, desenvolvemos modelos de ML eficientes usando a biblioteca XNNPACK para agilizar o cálculo. É o primeiro mecanismo de saída de vídeo projetado especificamente para a nova especificação WebAssembly SIMD. Ao acelerar o XNNPACK e o SIMD, o modelo de segmentação funciona em tempo real na Internet.
Com a configuração flexível do MediaPipe, a solução de desfoque / substituição do plano de fundo adapta seu processamento com base nas capacidades do dispositivo. Em dispositivos de última geração, ele executa um pipeline completo para garantir a mais alta qualidade visual, enquanto em dispositivos de baixo custo muda para modelos computacionais leves de ML sem especificar a máscara.
Modelo de segmentação
Os modelos de ML no dispositivo devem ser ultraleves para cálculos rápidos, baixo consumo de energia e tamanho pequeno. Para modelos no navegador, a resolução de entrada afeta fortemente o número de operações de ponto flutuante (FLOPS) necessárias para processar cada quadro e, portanto, deve ser pequeno também. Antes de alimentar a imagem no modelo, nós a reduzimos. Recuperar a máscara mais precisa de uma imagem de baixa resolução complica o design do modelo.
A rede de segmentação geral tem uma estrutura de codificação / decodificação simétrica. As camadas do decodificador (verde claro) são simétricas às camadas do codificador (azul claro). Em particular, canalize a atenção(atenção por canal) com agrupamento de média global é usado em blocos de codificador e decodificador, o que reduz a carga na CPU.

A arquitetura do modelo com o codificador MobileNetV3 (azul claro) e o decodificador simétrico (verde claro)
Para o codificador, modificamos a rede neural pequena MobileNetV3 , cujo design foi projetado automaticamente procurando a arquitetura de rede para obter o melhor desempenho em hardware fraco. Para reduzir pela metade o tamanho do modelo, nós o exportamos para TFLite com quantização float16, o que resultou em uma pequena perda de precisão, mas sem um impacto perceptível na qualidade. O modelo resultante tem 193 mil parâmetros e o tamanho é de apenas 400 KB.
Efeitos de renderização
Após a segmentação, usamos shaders OpenGL para processamento de vídeo e efeitos de renderização. O desafio é renderizar com eficiência sem artefatos. Na etapa de refinamento, o filtro de junta bilateral suaviza a máscara de baixa resolução.

Supressão de artefatos de renderização. Esquerda: Um filtro de dois lados comum suaviza a máscara de segmentação. Meio: Filtros separados removem artefatos fantasmas. Direita: alterar o fundo por um envoltório de luz. O
desfoque simula o efeito do bokeh , o poder de ajuste do desfoque em cada pixel é proporcional aos valores da máscara de segmentação, como a dispersão do pontoem óptica. Os pixels são ponderados pelo raio do ponto para que os pixels do primeiro plano não se misturem ao fundo. Implementamos filtros de divisão de desfoque ponderado em vez da popular pirâmide gaussiana, pois eles removem artefatos de halo em torno dos humanos. Para desempenho, o desfoque é feito em baixa resolução - e combinado com o quadro de entrada em sua resolução original.

Exemplos de desfoque de fundo
Ao substituir o fundo, uma técnica conhecida como quebra automática de luz é usada.(quebra automática de luz) para sobrepor faces segmentadas em um fundo personalizado. O envoltório de luz ajuda a suavizar as bordas da segmentação, permitindo que a luz de fundo incida sobre os elementos do primeiro plano, tornando a composição mais realista. Também ajuda a minimizar os artefatos de halo quando há muito contraste entre o primeiro plano e o fundo.

Exemplos de substituição de plano de fundo
atuação
Para otimizar o desempenho em diferentes dispositivos, oferecemos opções de modelo com vários tamanhos de imagem de entrada (por exemplo, 256x144 e 160x96 na versão atual), escolhendo automaticamente a melhor opção de acordo com os recursos de hardware disponíveis.
Avaliamos a velocidade de inferência do modelo e através do pipeline em dois dispositivos populares: o MacBook Pro 2018 com um processador Intel Core i7 de 6 núcleos de 2,2 GHz e o Acer Chromebook 11 com um processador Intel Celeron N3060. Para entrada de 720p, o MacBook Pro pode executar um modelo de qualidade superior a 120 fps e um pipeline de passagem a 70 fps, enquanto em um Chromebook o modelo funciona a 62 fps com um modelo de qualidade inferior e um pipeline de passagem produz 33 FPS.
Modelo
|
FLOPS
|
Dispositivo
|
Saída do modelo
|
Transportador
|
256x144
|
64 milhões
|
MacBook Pro 18
|
8,3 ms (120 FPS)
|
14,3 ms (70 FPS)
|
160x96
|
27 milhões
|
Acer Chromebook 11
|
16,1 ms (62 FPS)
|
30 ms (33 FPS)
|
Para quantificar a precisão do modelo usado métrica popular: coeficiente Zhakar (intersecção sobre união, IOU ) e uma medida F de limite (pontuação F de limite) ... Ambos os modelos funcionam bem, especialmente em uma rede leve:
Modelo
|
IOU
|
Medida F de limite |
256x144
|
93,58%
|
0,9024
|
160x96
|
90,79%
|
0,8542
|
Também disponibilizamos publicamente um mapa de segmentação do modelo , detalhando as especificações para a avaliação. As estimativas incluem imagens de 17 sub-regiões geográficas do mundo, anotadas por tom de pele e gênero. A análise mostrou que o modelo demonstra resultados consistentemente altos em diferentes regiões, tons de pele e gêneros, com ligeiros desvios nos escores IOU.
Conclusão
Assim, introduzimos uma nova solução baseada em navegador de ML para desfocar e substituir fundos no Google Meet. Graças a esta solução, os modelos ML e shaders OpenGL apresentam um desempenho eficiente na Internet. Os recursos desenvolvidos fornecem desempenho em tempo real com baixo consumo de energia, mesmo em dispositivos de baixo consumo.