NeRF: Representando Cenas como Campos de Radiância Neural para Síntese de Visão (Pesquisa em ML Explicada)
Esta nota de insights do YouTube foi criada com a LilysAI. Cadastre‑se grátis e obtenha insights 10× mais rápidos e profundos dos vídeos.
Q: O que são Neural Radiance Fields (NeRF)?
Q: Como funciona?
O que é NeRF e como ele funciona? NeRF representa cenas como campos de radiação neural que podem sintetizar novas vistas de objetos a partir de um conjunto esparso de imagens, superando as limitações dos métodos tradicionais.
1. Introdução ao NeRF e Síntese de Vistas
NeRF (Neural Radiance Fields) é uma técnica que permite sintetizar novas vistas de objetos a partir de um conjunto limitado de imagens, superando as limitações dos métodos tradicionais.1.1. O Desafio da Síntese de Vistas
- A tarefa de gerar uma imagem de um objeto a partir de qualquer direção, usando apenas algumas fotos de entrada, é complexa .
- Detalhes intrincados, como as especularidades na água ao redor de um navio ou a estrutura de um microfone em uma bateria, só aparecem de ângulos específicos, tornando a tarefa não trivial .
- Esses detalhes intrincados são importantes não apenas para dados de brinquedo, mas também para cenas do mundo real .
- O objetivo final é inserir algumas fotos e ser capaz de sintetizar qualquer tipo de vista .
1.2. NeRF: Campos de Radiância Neural para Síntese de Vistas
- O artigo introduz o NeRF, que significa Neural Radiance Fields, para síntese de vistas .
- O NeRF foi desenvolvido por Ben Mildenhall, Pratul P. Srinivasan, Matthew Tancik, Jonathan T. Barron, Ravi Ramamoorthi e Ren Ng .
- A técnica de síntese de vistas do NeRF leva em consideração a direção de visualização, o que proporciona uma impressão muito mais realista .
- Por exemplo, uma cena pode parecer diferente dependendo da direção de visualização, e o NeRF pode capturar essas variações .
- O sistema NeRF gera automaticamente mapas de profundidade, que são difíceis de obter para cenas complexas .
- Isso permite aplicações como realidade aumentada, pois o sistema fornece informações sobre a distância de cada objeto .
- Também é possível obter malhas 3D e preencher voxels, o que é uma tarefa ligeiramente diferente da síntese de vistas .
- Com imagens de todos os lados, o NeRF pode sintetizar qualquer vista intermediária .
1.3. Abordagem Inovadora do NeRF
- O NeRF utiliza o deep learning de uma maneira diferente da convencional, otimizando uma função de cena volumétrica contínua subjacente .
- A tarefa é a síntese de vistas, ou seja, sintetizar novas vistas a partir de um conjunto esparso de vistas de entrada .
- Por exemplo, dadas cerca de 20 imagens de uma árvore tiradas de diferentes ângulos, o sistema deve ser capaz de gerar qualquer vista da árvore de qualquer lugar .
- A abordagem do NeRF envolve superajustar uma rede neural a um único ponto de dados, o que é diferente do deep learning clássico .
- Em vez de usar um grande conjunto de dados com muitas cenas, o NeRF usa uma rede neural para representar uma única cena .
- A rede neural é treinada para se superajustar completamente a essa cena específica usando as imagens de entrada (por exemplo, 30 imagens) .
- Os pesos da rede neural armazenam a cena inteira, o que oferece uma representação mais compacta e eficiente do que métodos como o armazenamento em voxels .
2. Funcionamento Interno do NeRF
O NeRF utiliza uma rede neural que recebe uma posição 3D e uma direção de visualização 2D como entrada, e produz uma cor e uma densidade volumétrica como saída, permitindo a renderização de imagens através da integração de raios.
2.1. Entradas e Saídas da Rede Neural
- A rede neural do NeRF recebe duas entradas principais :
- Uma posição no sistema de coordenadas (x, y, z), que é um vetor tridimensional .
- Uma direção de visualização (d), que pode ser descrita por dois ângulos .
- As saídas da rede neural são :
- Uma cor (C) para aquela localização específica .
- Uma densidade (σ), que indica se há algo naquela localização .
- Essa abordagem é uma maneira diferente de usar redes neurais, pois não há imagens de entrada e saída, mas sim posições e direções .
2.2. Geração de Imagens e Captura de Efeitos
- Para gerar uma imagem, um raio é enviado através da cena para cada pixel .
- A rede neural é consultada em cada ponto ao longo do raio para determinar a densidade e a cor .
- A densidade indica a probabilidade de o raio atingir algo, e a cor é o que seria visto se algo fosse atingido .
- O pixel final é renderizado com a cor do primeiro objeto atingido pelo raio .
- A rede neural é poderosa o suficiente para produzir resultados diferentes para a mesma localização, dependendo da direção de visualização .
- Isso permite capturar efeitos de iluminação, reflexos e transparência .
- Por exemplo, se um raio passa por um objeto transparente, a integração ponderada pela densidade resultará em uma mistura de cores, permitindo a transparência .
- O modelo NeRF não requer um conjunto de dados além dos dados da cena que está sendo renderizada .
- No futuro, em vez de armazenar malhas ou grades de voxels para aplicações de realidade aumentada ou jogos, será possível armazenar uma rede neural que pode ser consultada para renderizar a cena de qualquer ângulo .
2.3. O Processo de Treinamento do NeRF
- O processo começa com um conjunto de imagens de entrada, e a posição e direção da câmera para cada imagem devem ser determinadas .
- Métodos clássicos como Structure from Motion (SfM) ou SLAM podem ser usados para determinar as posições da câmera .
- A cena é representada como uma função contínua de 5D (3D para localização e 2D para direção de visualização) .
- Essa função é implementada por uma rede neural MLP (Multi-Layer Perceptron) .
- A rede neural é otimizada para mapear cada coordenada de entrada 5D para sua densidade volumétrica e cor direcional correspondentes .
- O treinamento da rede neural é feito através de um processo diferenciável .
- Para cada pixel de uma imagem de entrada, um raio é enviado e amostrado ao longo da cena .
- A rede neural prevê a cor e a densidade ao longo do raio, e essas previsões são usadas para renderizar uma imagem .
- Uma função de perda é calculada comparando a imagem renderizada com a imagem de entrada real .
- Como todo o processo é diferenciável, a rede neural pode ser treinada para minimizar essa perda, superajustando-se às imagens de entrada .
- Os pesos da rede neural, após o treinamento, representam a cena .
2.4. Engenharia e Renderização Volumétrica
- Para garantir a consistência multi-vista, a rede é projetada para prever a densidade volumétrica apenas como uma função da localização (x), enquanto a cor RGB é uma função tanto da localização quanto da direção de visualização .
- A densidade volumétrica não depende da direção de visualização, pois a transparência de um objeto é geralmente a mesma de diferentes direções .
- A cor RGB, no entanto, depende da direção de visualização para capturar efeitos de material e iluminação .
- A arquitetura da rede neural separa essas funções: a localização (x) é processada para produzir a densidade e uma representação oculta, que é então concatenada com a direção de visualização para produzir a cor .
- A renderização no NeRF utiliza uma técnica chamada renderização volumétrica com campos de radiância .
- Um campo de radiância é uma função que descreve o que se vê de um determinado ponto em uma determinada direção .
- Para renderizar, um raio é enviado através da cena, e a cor final do pixel é obtida integrando a densidade e a cor ao longo do raio .
- A fórmula de renderização considera a probabilidade de o raio não atingir nada (transmissão) e a densidade e cor em cada ponto, permitindo lidar com transparência e oclusão .
3. Otimizações e Desempenho do NeRF
O NeRF utiliza codificação posicional e amostragem volumétrica hierárquica para melhorar a capacidade da rede neural de representar detalhes finos e otimizar o processo de amostragem, resultando em alta qualidade visual e eficiência de armazenamento, embora o treinamento seja demorado.
3.1. Codificação Posicional
- O NeRF emprega uma técnica de codificação posicional para mapear as coordenadas de entrada de baixa dimensão (posição 3D e direção de visualização 2D) para um espaço de maior dimensão .
- Isso permite que a rede neural capture tanto estruturas finas quanto grosseiras na cena .
- A codificação posicional constrói uma hierarquia de ondas senoidais (ou senoidais e cossenoidais) de diferentes frequências .
- Pequenas mudanças na entrada resultam em grandes mudanças nas características de alta frequência, permitindo que a rede se concentre em detalhes .
- Para estruturas grosseiras, a rede pode olhar para as escalas de baixa frequência, onde é preciso mover-se mais para ver uma mudança .
- Essa técnica é diferente da codificação posicional usada em Transformers, que serve para fornecer representações discretas para entradas de arquitetura .
- No NeRF, a codificação posicional mapeia coordenadas de entrada contínuas para um espaço de maior dimensão, permitindo que a rede neural aproxime funções de alta frequência mais facilmente .
3.2. Amostragem Volumétrica Hierárquica
- Para otimizar o processo de amostragem ao longo dos raios, o NeRF utiliza duas redes neurais: uma rede grosseira e uma rede fina .
- A rede grosseira amostra em locais mais amplos .
- Com base nas densidades estimadas pela rede grosseira, a rede fina amostra mais intensamente nas áreas onde a densidade é alta, ou seja, onde há mais probabilidade de haver um objeto .
- Ambas as redes são otimizadas simultaneamente .
- A função de perda combina as perdas da rede grosseira e da rede fina .
- Embora a vista final seja gerada apenas pela rede fina, a rede grosseira é crucial para identificar as regiões importantes da cena .
3.3. Resultados e Limitações
- O NeRF alcança resultados de alta qualidade, capturando estruturas finas, como as de um microfone, que outros métodos não conseguem .
- Uma rede neural para uma única cena ocupa apenas alguns megabytes (cerca de 5 MB), o que é significativamente menor do que as representações de grade de voxels (que podem usar mais de 15 GB para a mesma cena) .
- Isso é ainda mais eficiente em termos de memória do que as próprias imagens de entrada para uma única cena .
- A principal desvantagem do NeRF é o tempo de treinamento .
- A otimização para uma única cena geralmente leva de 100.000 a 300.000 iterações para convergir em uma única GPU NVIDIA V100, o que equivale a cerca de um a dois dias .
- No entanto, o treinamento só precisa ser feito uma vez, e depois novas vistas podem ser renderizadas rapidamente .
- A ideia é que, em aplicações como videogames, a rede neural treinada pode ser transmitida para os clientes, que então podem renderizar as vistas localmente .
- Estudos de ablação mostram a importância da codificação posicional e da dependência da vista .
- Sem codificação posicional, a qualidade da imagem é significativamente reduzida .
- Sem dependência da vista, a rede não consegue capturar efeitos de iluminação e reflexos, pois produz a mesma cor para todas as direções .
Entenda materiais massivos como um gênio — com a LilysAI
Mais de 1.000.000 de buscadores de conhecimento usam a Lilys AI.
