Por dentro da tecnologia - Resolvendo expressões faciais de avatares - Roblox Blog

Por Dentro da Tecnologia – Resolvendo Expressões Faciais de Avatar – Roblox Blog

Nó Fonte: 3039939

Inside the Tech é uma série de blogs que acompanha nosso Podcast de palestras sobre tecnologia. No episódio 20 do podcast, Avatares e autoexpressão, o CEO da Roblox, David Baszucki, conversou com o Diretor Sênior de Engenharia Kiran Bhat, o Diretor Sênior de Produto Mahesh Ramasubramanian e a Gerente Principal de Produto Effie Goenawan, sobre o futuro da comunicação imersiva por meio de avatares e o desafios técnicos que estamos resolvendo para habilitá-lo. Nesta edição do Inside the Tech, conversamos com o Gerente de Engenharia Ian Sachs para saber mais sobre um desses desafios técnicos – habilitar expressões faciais para nossos avatares – e como o trabalho da equipe de Criação de Avatar (no grupo Engine) está ajudando os usuários a se expressarem. no Roblox.

Quais são os maiores desafios técnicos que sua equipe está enfrentando?

Quando pensamos em como um avatar representa alguém no Roblox, normalmente consideramos duas coisas: como ele se comporta e sua aparência. Portanto, um dos principais focos da minha equipe é permitir que os avatares espelhem as expressões de uma pessoa. Por exemplo, quando alguém sorri, seu avatar sorri em sincronia com ele. 

Uma das dificuldades do rastreamento de expressões faciais é ajustar a eficiência do nosso modelo para que possamos capturar essas expressões diretamente no dispositivo da pessoa em tempo real. Estamos empenhados em tornar esse recurso acessível ao maior número possível de pessoas no Roblox e precisamos oferecer suporte a uma grande variedade de dispositivos. A quantidade de poder de computação que o dispositivo de alguém pode suportar é um fator vital nisso. Queremos que todos possam se expressar, não apenas pessoas com dispositivos potentes. Portanto, estamos implantando um de nossos primeiros modelos de aprendizagem profunda para tornar isso possível. 

O segundo desafio técnico importante que estamos enfrentando é simplificar o processo que os criadores usam para desenvolver avatares dinâmicos que as pessoas podem personalizar. Criar avatares como esse é bem complicado porque você tem que modelar a cabeça e se quiser que ela seja animada, você tem que fazer coisas muito específicas para configurar o modelo, como colocar juntas e pesos para mesclar skins lineares. Queremos facilitar esse processo para os criadores, por isso estamos desenvolvendo tecnologia para simplificá-lo. Eles deveriam se concentrar apenas na construção do modelo estático. Quando isso acontecer, podemos automaticamente prendê-lo e prendê-lo. Então, o rastreamento facial e as roupas em camadas devem funcionar imediatamente. 

Quais são algumas das abordagens e soluções inovadoras que estamos usando para enfrentar esses desafios técnicos?

Fizemos algumas coisas importantes para garantir que obtemos as informações corretas sobre expressões faciais. Isso começa com o uso do FACS (Sistema de Controle de Animação Facial) padrão da indústria. Eles são a chave para tudo porque são o que usamos para controlar as expressões faciais de um avatar – qual a largura da boca, quais olhos se abrem e quanto, e assim por diante. Podemos usar cerca de 50 controles FACS diferentes para descrever uma expressão facial desejada. 

Ao construir um algoritmo de aprendizado de máquina para estimar expressões faciais a partir de imagens ou vídeos, você treina um modelo mostrando-lhe imagens de exemplo com expressões verdadeiras conhecidas (descritas com FACS). Ao mostrar ao modelo muitas imagens diferentes com expressões diferentes, o modelo aprende a estimar a expressão facial de rostos inéditos.

Normalmente, quando você está trabalhando no rastreamento facial, essas expressões são rotuladas por humanos, e o método mais fácil é usar pontos de referência – por exemplo, colocar pontos em uma imagem para marcar a localização dos pixels das características faciais, como os cantos dos olhos. 

Mas os pesos FACS são diferentes porque você não pode olhar para uma imagem e dizer: “A boca está aberta 0.9 versus 0.5”. Para resolver isso, estamos usando dados sintéticos para gerar pesos FACS diretamente que consistem em modelos 3D renderizados com poses FACS de diferentes ângulos e condições de iluminação.

Infelizmente, como o modelo precisa ser generalizado para rostos reais, não podemos treinar apenas com dados sintéticos. Portanto, pré-treinamos o modelo em uma tarefa de previsão de referência usando uma combinação de dados reais e sintéticos, permitindo que o modelo aprenda a tarefa de previsão FACS usando dados puramente sintéticos.

Queremos que o rastreamento facial funcione para todos, mas alguns dispositivos são mais poderosos que outros. Isso significa que precisávamos construir um sistema capaz de se adaptar dinamicamente ao poder de processamento de qualquer dispositivo. Conseguimos isso dividindo nosso modelo em uma fase de previsão FACS rápida e aproximada chamada BaseNet e uma fase de refinamento FACS mais precisa chamada HiFiNet. Durante o tempo de execução, o sistema mede seu desempenho e, em condições ideais, executamos ambas as fases do modelo. Mas se for detectada uma lentidão (por exemplo, devido a um dispositivo de baixo custo), o sistema executa apenas a primeira fase.

Quais são algumas das principais coisas que você aprendeu ao fazer esse trabalho técnico?

Uma delas é que fazer um recurso funcionar é uma pequena parte do que realmente é necessário para lançar algo com sucesso. Muito do trabalho está no processo de engenharia e testes unitários. Precisamos ter certeza de que temos boas maneiras de determinar se temos um bom pipeline de dados. E precisamos nos perguntar: “Ei, esse novo modelo é realmente melhor que o antigo?”

Antes mesmo de iniciarmos a engenharia principal, todos os pipelines que implementamos para rastrear experimentos, garantir que nosso conjunto de dados represente a diversidade de nossos usuários, avaliar resultados e implantar e obter feedback sobre esses novos resultados tornam o modelo suficiente. Mas essa é uma parte do processo sobre a qual não se fala muito, embora seja tão crítica. 

Com qual valor Roblox sua equipe mais se alinha?

Compreender a fase de um projeto é fundamental, por isso, durante a inovação, ter uma visão de longo prazo é muito importante, especialmente na pesquisa, quando se está tentando resolver problemas importantes. Mas respeitar a comunidade também é crucial quando você identifica os problemas nos quais vale a pena inovar, porque queremos trabalhar nos problemas que tenham mais valor para a nossa comunidade em geral. Por exemplo, optamos especificamente por trabalhar em “rastreamento facial para todos” em vez de apenas “rastreamento facial”. À medida que você atinge a marca de 90% de construção de algo, a transição de um protótipo para um recurso funcional depende da execução e da adaptação ao estágio do projeto.

O que mais te entusiasma sobre o rumo que Roblox e sua equipe estão tomando?

Sempre gostei de trabalhar em ferramentas que ajudem as pessoas a serem criativas. Criar algo é especial porque você acaba com algo que é exclusivamente seu. Trabalhei com efeitos visuais e em diversas ferramentas de edição de fotos, usando conhecimentos de matemática, ciências, pesquisa e engenharia para capacitar as pessoas a fazerem coisas realmente interessantes. Agora, no Roblox, posso levar isso a um nível totalmente novo. Roblox é uma plataforma de criatividade, não apenas uma ferramenta. E a escala em que conseguimos construir ferramentas que permitem a criatividade é muito maior do que qualquer coisa em que trabalhei antes, o que é incrivelmente emocionante.

Carimbo de hora:

Mais de Roblox