
Nerfs: uma introdução à tecnologia de renderização de última geração com Neural Radiance Fields
Este artigo é o primeiro de uma série, na qual analisaremos os Campos de Radiância Neural - mais conhecidos como NERFs - a tecnologia de ponta usada para sintetizar volumes 3D. Nesta primeira parte, analisaremos a abordagem “clássica” e os resultados de última geração que a expandem. Tentaremos lidar com os conceitos da forma mais intuitiva possível, para que qualquer técnico com ou sem experiência em ML entenda.
O que os NERFs podem fazer?
Os NERFs apareceram pela primeira vez em 2020 e já percorreram um longo caminho desde então. Afinal, no ML, descobertas de 10 anos atrás podem aparecer como tecnologia antiga. É como anos de cachorro. Podemos considerar os NERFs tão revolucionários na tecnologia de renderização 3D quanto os GANs foram para a CV em 2016. Bem, isso pode ser um pouco exagerado, mas eles realmente propuseram uma nova perspectiva para renderizar objetos a partir de imagens que se tornou o paradigma básico para esses problemas. [incorporar] http://cseweb.ucsd.edu/~viscomp/projects/LF/papers/ECCV20/nerf/website_renders/orchid.mp4[/embed] Site da NerF Mas, na verdade, antes de entrar em todos os detalhes, provavelmente deveríamos dar um passo atrás para entender a complexidade desse problema. Por que é difícil criar uma representação volumétrica de um objeto a partir de suas imagens? Mais ainda, por que seria difícil criar uma representação volumétrica, tendo até mesmo várias imagens consecutivas do mesmo objeto a partir de vistas ligeiramente diferentes? Aqui, encontramos o argumento típico da visão computacional para tudo: enquanto os humanos podem ver duas imagens consecutivas e entender que elas foram tiradas no mesmo objeto e, ao mesmo tempo, para um computador, uma imagem nada mais é do que pixels. Em primeiro lugar, o computador em si não consegue detectar objetos em uma imagem. Em segundo lugar, mesmo que pudesse, não consegue entender, sem nenhum contexto, apenas a partir de duas imagens, que uma foi tirada consecutivamente da outra e, em terceiro lugar, não pode inferir que ambas as imagens se referem ao mesmo objeto. No entanto, se ensinarmos a eles uma maneira de seguir certas etapas para interpretar os dados de forma que possam rastrear um único objeto contínuo a partir de imagens consecutivas, poderemos sintetizar volumes.
Noções básicas sobre NERFs
A primeira coisa que devemos saber sobre os NERFs é que eles definem a arquitetura geral de uma rede neural para treinar uma única cena. Para aqueles que têm mais compreensão sobre como lidar com modelos e executar inferências, os NERFs - ou pelo menos os NerrFs clássicos - não pretendem produzir um único modelo genérico que podemos executar em qualquer conjunto de imagens para renderizar o que quisermos. O NERFs estabeleceu uma arquitetura de treinamento que podemos usar para treinar uma única cena (um conjunto de imagens que sabe para cada uma a posição da câmera) para visualizar uma representação 3D dessa cena em particular, esse processo é chamado ver síntese. [caption id="attachment_1889" align="aligncenter” width="874"]

Fonte da imagem: NerF: Representando cenas como campos de radiância neural para síntese visual (papel) [/legenda]
Terminologia chave
Antes de nos aprofundarmos, há um vocabulário específico com o qual devemos nos acostumar ao falar sobre NERFs:
- UM cena para nós será o objeto ou conceito que queremos renderizar (a bateria na última figura, por exemplo).
- UM olhar será a renderização de uma “visão” específica de uma cena, dada a posição da câmera.
- Renderização ou síntese de imagem é o processo de gerar uma imagem fotorrealista ou não fotorrealista a partir de um modelo 2D ou 3D por meio de um programa de computador.
- Posição da câmera (nível) se refere à altura da câmera em relação ao solo, enquanto o ângulo da câmera se refere ao ângulo em relação ao solo.
- Renderização de volume é uma coleção de técnicas que permitem criar uma projeção 2D de um conjunto de dados 3D com amostragem discreta.
- Exibir síntese é o oposto da renderização em volume — envolve a criação de uma visualização 3D a partir de uma série de imagens 2D
Exemplo do mundo real
Para entender melhor o processo de renderização, considere um exemplo comum: você já viu um cartaz em um canteiro de obras que ilustra como o projeto final ficaria quando a construção fosse concluída? Isso pode ser feito manualmente com o photoshop ou o arquiteto pode pegar as plantas 3D do edifício, especificar o ângulo de visão, a iluminação e outras especificações fotográficas e renderizar uma imagem a partir da planta 3D. Essa é uma aplicação de renderização a partir de objetos 3D. Agora imagine que o que queremos não é renderizar uma imagem de um objeto 3D, mas renderizar um vídeo a partir de várias visualizações. De certa forma, é isso que os NERFs fazem: tentam criar um volume suave quadro a quadro a partir das imagens de entrada em um vídeo de saída — um vídeo, porque é a maneira mais fácil de apreciar os resultados. ”
Como você faz o NerF? Abordagem clássica
“Os NerrFs são introduzidos pela primeira vez no papel: NerF: representando cenas como campos de radiância neural para síntese de visão. Isso é o que a literatura agora chama de abordagem “clássica do NerF”, e é o básico para entender o paradigma dos NERFs. Os autores têm um local na rede Internet onde eles disponibilizam o artigo, o código e, uma boa notícia para os cientistas de dados, os dados são gratuitos e estão disponíveis para qualquer pessoa baixar. Conceitualmente, os NERFs aprendem a mapear coordenadas espaciais específicas em um valor rgb. Para isso, os autores propõem um método que sintetiza visualizações de cenas complexas otimizando uma função de cena volumétrica contínua subjacente usando um conjunto de visualizações de entrada. Para sintetizar uma visão, eles usam coordenadas 5D: espaciais (x, y, z) e direção de visualização (θ, φ) que vêm dos dados do ângulo da câmera associados a essa visão. Para sintetizar uma nova visualização, você precisaria seguir estas três etapas: a) marchar os raios da câmera pela cena para gerar um conjunto amostrado de pontos 3D b) usar esses pontos e suas direções de visualização 2D correspondentes como entrada para a rede neural para produzir um conjunto de cores e densidades de saída e c) usar técnicas clássicas de renderização de volume para acumular essas cores e densidades em uma imagem 2D. Como a renderização de volume é naturalmente diferenciável (d), o gradiente descendente é usado para otimizar o modelo, minimizando o erro entre cada imagem observada e as visualizações correspondentes renderizadas a partir da representação, e a única a entrada necessária para otimizar a representação é um conjunto de imagens com poses de câmera conhecidas. Minimizar o erro de renderização em várias visualizações incentiva o modelo a aprender uma representação mais coerente da cena, alcançando uma alta fidelidade na renderização de novas visualizações. Podemos visualizar o pipeline geral na próxima figura: [caption id="attachment_1893" align="aligncenter” width="875"]

Fonte da imagem: NerF: Representando cenas como campos de radiância neural para síntese visual (papel) [/caption] Algumas ressalvas dessa abordagem: precisamos treinar um novo modelo para cada nova cena que queremos renderizar. Geralmente, é necessário ter muitas imagens com dados de coordenadas e, de acordo com os autores, o treinamento de um modelo pode levar até dois dias em uma GPU NVIDIA V100. É altamente recomendável revisar a apresentação do artigo vídeo e isso um explicando o artigo para compreender melhor o paradigma dos NERFs de forma intuitiva.
Expansão do campo NerF
O campo do NerF está se expandindo rapidamente e há pelo menos duas abordagens diferentes para isso:
- A abordagem baseada em cenas (a chamada “abordagem clássica”): requer o treinamento de um novo modelo para cada nova cena.
- A abordagem baseada em modelo: você treina um modelo usando cenas diferentes e o usa para renderizar cenas novas (geralmente semelhantes).
Aqui, revisamos algumas pesquisas de última geração que achamos muito interessantes e que resumem as formas atuais como discutimos a renderização de cenas com NERFs:
- Neróico (baseado em cenas): Uma variante do NerF que pode ser treinada com imagens do mesmo objeto em condições diferentes, como planos de fundo, iluminação, câmeras e poses diferentes.
A única anotação esperada para cada imagem é uma segmentação aproximada do primeiro plano e uma estimativa aproximada dos parâmetros da câmera, que podem ser obtidos usando ferramentas como COLMAP. As principais contribuições do artigo são:
- Um novo pipeline modular para inferir propriedades geométricas e materiais a partir de objetos capturados sob condições variadas, usando somente imagens esparsas, máscaras de primeiro plano e poses de câmera grosseiras como entrada adicional.
- Uma nova arquitetura de vários estágios em que eles primeiro extraem a geometria e refinam os parâmetros da câmera de entrada e, em seguida, inferem as propriedades do material do objeto, que mostram ser robustas a entradas irrestritas.
- Um novo método para estimar normais a partir de campos de radiância neural que permite estimar melhor as propriedades dos materiais e reiluminar objetos do que as técnicas alternativas mais padrão.
- Nerf instantâneo (baseado em cenas): O artigo apresenta um método para reduzir o custo computacional de treinar e avaliar primitivas de gráficos neurais usando uma tabela de hash de multiresolução de vetores de características treináveis, que são otimizados por meio de gradiente descendente estocástico. Esse método permite o uso de uma rede neural menor sem sacrificar a qualidade, e a arquitetura é simples de paralelizar nas GPUs modernas. Esse método pode ser usado para uma variedade de tarefas, mas, em particular, fornece uma melhoria significativa em relação à versão “clássica do NerF”, permitindo renderizar basicamente qualquer cena em até cinco minutos de treinamento.
- Pixel NERF (baseado em modelo): Neste artigo, os autores propõem uma arquitetura que usa redes neurais totalmente convolucionais para extrair características das imagens e aprender com as cenas vistas durante o treinamento.
Como esse modelo não requer supervisão 3D explícita, a entrada pode ser 1 ou várias imagens com apenas as poses relativas da câmera (que, novamente, podem ser obtidas com ferramentas como COLMAP no caso de mais de uma imagem). Não requer otimização do tempo de teste como o NerF clássico. [caption id="attachment_1899" align="aligncenter” width="875"]

Fonte da imagem: site PixelNERF (vincular) [/caption] Um caso de uso interessante mostrado no artigo foi o uso de imagens tiradas de modelos 3D de carros para fins de treinamento, mas renderizar cenas usando apenas uma imagem de um carro real com o fundo removido, obtendo resultados surpreendentes, como pode ser visto nos vídeos em local na rede Internet. Um problema com essa abordagem é que as cenas geradas são de qualidade muito baixa, principalmente 128x128 pixels.
- LoL Nerf (baseado em modelo): Neste artigo, os autores combinam duas redes: uma rede de otimização latente generativa (GLO) e uma NerF. Uma rede GLO é semelhante a um autoencoder e sua finalidade é reconstruir um conjunto de dados a partir de códigos latentes, que geralmente têm dimensões menores do que o original, exigindo que a rede se generalize aprendendo a estrutura comum nos dados. Essa combinação, ao contrário do NerF padrão, permite criar uma representação 3D de um objeto usando uma única visualização.
[caption id="attachment_1902" align="aligncenter” width="876"]

Fonte da imagem: LolNerf: Learn from One Look (local na rede Internet) [/caption] Para que os NERFs funcionem, é necessária a localização exata da câmera em relação ao objeto, mas nem sempre está disponível. Para isso, os autores estão usando um modelo para gerar pontos de referência (em particular, eles trabalham com rostos de humanos, cães e gatos) e, com essas informações, eles são capazes de extrair um conjunto canônico de localizações 3D para os pontos semânticos (pontos de referência). Outro ponto interessante deste artigo é que eles usam duas redes diferentes para o plano de fundo e o primeiro plano, permitindo que o último se concentre nos detalhes mais sutis do objeto.
Algumas considerações finais
Esta foi uma ampla visão geral das diferentes abordagens de renderização de cenas que surgiram desde a explosão do tópico no agora clássico. NerF: representando cenas como campos de radiância neural para síntese de visão papel. Como um resumo sobre o estado da arte da área, podemos dizer que há prós e contras de ambas as abordagens. Para a abordagem baseada em cenas, as cenas renderizadas têm uma qualidade muito alta em alguns casos. Mas ter que treinar um novo modelo para cada cena é uma grande limitação, e o tempo de treinamento é muito longo. Embora muito progresso tenha sido feito nessa direção, ainda leva muito tempo para gerar uma cena para alguns casos de uso. Na próxima versão desta série de blogs, abordaremos algumas ferramentas que nos ajudarão a renderizar nossas próprias cenas com essa abordagem. Para a abordagem baseada em modelos, é ótimo que os modelos possam aprender com cenas vistas anteriormente e generalizar para cenas novas e que, em alguns casos, você possa renderizar uma cena com apenas uma imagem, mas a qualidade das cenas renderizadas geralmente não é muito boa e você precisa de muitos dados “rotulados” de cenas diferentes para obter bons resultados. Esse é um assunto tão importante nos dias de hoje que você pode esperar que muitas abordagens novas apareçam nos próximos meses. Se você quiser mergulhar no mundo dos NERFs, fique atento ao nosso blog, pois em breve abordaremos os principais problemas que encontramos em termos de dados ao configurar esses modelos e falaremos sobre as melhores ferramentas disponíveis para acompanhá-lo nessa jornada.