Início rápido
Saber mais
Recursos suportados
É tão simples quanto plug and play com o nerfstudio!
Nerfstudio fornece uma API simples que permite um processo simplificado de ponta a ponta de criação, treinamento e teste de NeRFs. A biblioteca oferece suporte a uma implementação mais interpretável de NeRFs, modularizando cada componente. Com NeRFs mais modulares, esperamos criar uma experiência mais fácil de usar na exploração da tecnologia.
Este é um repositório amigável para contribuidores com o objetivo de construir uma comunidade onde os usuários possam aproveitar mais facilmente as contribuições uns dos outros. Nerfstudio foi lançado inicialmente como um projeto de código aberto por alunos de Berkeley no laboratório KAIR da Berkeley AI Research (BAIR) em outubro de 2022 como parte de um projeto de pesquisa (artigo). Atualmente é desenvolvido por estudantes de Berkeley e colaboradores da comunidade.
Temos o compromisso de fornecer recursos de aprendizagem para ajudá-lo a entender o básico (se você estiver apenas começando) e manter-se atualizado (se você for um veterano experiente) sobre tudo relacionado ao NeRF. Como pesquisadores, sabemos o quão difícil é integrar-se a esta tecnologia de última geração. Então estamos aqui para ajudar com tutoriais, documentação e muito mais!
Tem solicitações de recursos? Quer adicionar seu novo modelo NeRF? Tem um novo conjunto de dados? Aceitamos contribuições! Não hesite em entrar em contato com a equipe do nerfstudio caso tenha alguma dúvida via Discord.
Tem feedback? Adoraríamos que você preenchesse nosso Formulário de Feedback do Nerfstudio se quiser nos informar quem você é, por que está interessado no Nerfstudio ou fornecer algum comentário!
Esperamos que o nerfstudio permita que você construa mais rápido. aprender juntos? e contribuir para nossa comunidade NeRF?.
Os patrocinadores deste trabalho incluem Luma AI e BAIR Commons.
O início rápido irá ajudá-lo a começar com o NeRF vanilla padrão treinado na cena clássica do Blender Lego. Para alterações mais complexas (por exemplo, executar com seus próprios dados/configurar um novo gráfico NeRF), consulte nossas referências.
Você deve ter uma placa de vídeo NVIDIA com CUDA instalada no sistema. Esta biblioteca foi testada com a versão 11.8 do CUDA. Você pode encontrar mais informações sobre como instalar o CUDA aqui
Nerfstudio requer python >= 3.8
. Recomendamos usar conda para gerenciar dependências. Certifique-se de instalar o Conda antes de continuar.
conda criar --name nerfstudio -y python=3.8 conda ativar nerfstudio pip instalar --atualizar pip
Instale PyTorch com CUDA (este repositório foi testado com CUDA 11.7 e CUDA 11.8) e tiny-cuda-nn. cuda-toolkit
é necessário para construir tiny-cuda-nn
.
Para CUDA 11.8:
pip instalar tocha==2.1.2+cu118 torchvision==0.16.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118 conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit pip instalar ninja git + https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
Consulte Dependências na documentação de instalação para obter mais informações.
Opção fácil:
pip instalar nerfstudio
OU se você quiser o que há de melhor e mais recente:
clone do git https://github.com/nerfstudio-project/nerfstudio.gitcd nerfstudio pip install --upgrade pip setuptools pip instalar -e.
OU se você quiser pular todas as etapas de instalação e começar a usar o nerfstudio diretamente, use a imagem docker:
Consulte Instalação - Usar imagem docker .
A seguir treinaremos um modelo nerfacto , nosso modelo recomendado para cenas do mundo real.
# Baixe alguns dados de teste:ns-download-data nerfstudio --capture-name=poster# Treine modelns-train nerfacto --data data/nerfstudio/poster
Se tudo funcionar, você deverá ver o progresso do treinamento como este:
Navegar até o link no final do terminal carregará o webviewer. Se você estiver executando em uma máquina remota, precisará encaminhar a porta do websocket (o padrão é 7007).
É possível carregar um modelo pré-treinado executando
ns-train nerfacto --data data/nerfstudio/poster --load-dir {outputs/.../nerfstudio_models}
Dado um ponto de verificação de modelo pré-treinado, você pode iniciar o visualizador executando
ns-viewer --load-config {outputs/.../config.yml}
Depois de ter um modelo NeRF, você pode renderizar um vídeo ou exportar uma nuvem de pontos.
Primeiro devemos criar um caminho para a câmera seguir. Isso pode ser feito no visualizador na aba "RENDER". Oriente sua visualização 3D para o local onde deseja que o vídeo comece e pressione "ADICIONAR CÂMERA". Isso definirá o primeiro quadro-chave da câmera. Continue para novos pontos de vista adicionando câmeras adicionais para criar o caminho da câmera. Fornecemos outros parâmetros para refinar ainda mais o caminho da sua câmera. Quando estiver satisfeito, pressione “RENDER” que exibirá um modal que contém o comando necessário para renderizar o vídeo. Elimine o trabalho de treinamento (ou crie um novo terminal se você tiver muita computação) e execute o comando para gerar o vídeo.
Outras opções de exportação de vídeo estão disponíveis, saiba mais executando
ns-render --help
Embora os modelos NeRF não sejam projetados para gerar nuvens de pontos, isso ainda é possível. Navegue até a guia "EXPORTAR" no visualizador 3D e selecione "NUVEM DE PONTOS". Se a opção de corte estiver selecionada, tudo que estiver no quadrado amarelo será exportado para uma nuvem de pontos. Modifique as configurações conforme desejado e execute o comando na parte inferior do painel em sua linha de comando.
Alternativamente, você pode usar a CLI sem o visualizador. Aprenda sobre as opções de exportação executando
ns-exportar pointcloud --help
Usar um conjunto de dados existente é ótimo, mas provavelmente você deseja usar seus próprios dados! Apoiamos vários métodos para usar seus próprios dados. Antes de poder ser usado no nerfstudio, a localização e as orientações da câmera devem ser determinadas e depois convertidas em nosso formato usando ns-process-data
. Contamos com ferramentas externas para isso, instruções e informações podem ser encontradas na documentação.
Dados | Dispositivo de captura | Requisitos | Velocidade ns-process-data |
---|---|---|---|
Imagens | Qualquer | COLMAP | |
Vídeo | Qualquer | COLMAP | |
Dados 360 | Qualquer | COLMAP | |
Policâmara | IOS com LiDAR | Aplicativo Polycam | |
Gravar3D | IOS com LiDAR | Aplicativo Record3D | |
Metaforma | Qualquer | Metaforma | |
ODM | Qualquer | ODM | |
Ária | Óculos Ária | Projeto Ária | |
Personalizado | Qualquer | Poses de câmera |
Fornecemos outros modelos além do nerfacto, por exemplo, se você quiser treinar o modelo nerf original, use o seguinte comando
ns-train vanilla-nerf --data DATA_PATH
Para obter uma lista completa dos modelos incluídos, execute ns-train --help
.
Cada modelo contém muitos parâmetros que podem ser alterados, muitos para serem listados aqui. Use o comando --help
para ver a lista completa de opções de configuração.
ns-train nerfacto --help
Oferecemos suporte a quatro métodos diferentes para monitorar o progresso do treinamento, usando o viewertensorboard, Weights and Biases e Comet. Você pode especificar qual visualizador usar anexando --vis {viewer, tensorboard, wandb, comet viewer+wandb, viewer+tensorboard, viewer+comet}
ao comando de treinamento. A utilização simultânea do visualizador junto com o wandb ou o tensorboard pode causar problemas de gagueira durante as etapas de avaliação. O visualizador funciona apenas para métodos rápidos (ou seja, nerfacto, instant-ngp), para métodos mais lentos como NeRF, use os outros loggers.
E é isso para começar com o básico do nerfstudio.
Se você estiver interessado em aprender mais sobre como criar seus próprios pipelines, desenvolver com o visualizador, executar benchmarks e muito mais, confira alguns dos links rápidos abaixo ou visite nossa documentação diretamente.
Seção | Descrição |
---|---|
Documentação | Documentação completa da API e tutoriais |
Visualizador | Página inicial do nosso visualizador da web |
Educacional | |
Descrições do modelo | Descrição de todos os modelos suportados pelo nerfstudio e explicações dos componentes. |
Descrições dos componentes | Cadernos interativos que explicam módulos notáveis/comumente usados em vários modelos. |
Tutoriais | |
Começando | Um guia mais aprofundado sobre como começar a usar o nerfstudio, desde a instalação até a contribuição. |
Usando o visualizador | Um rápido vídeo de demonstração sobre como navegar no visualizador. |
Usando Record3D | Vídeo de demonstração sobre como executar o nerfstudio sem usar COLMAP. |
Para desenvolvedores | |
Criando pipelines | Aprenda como construir facilmente novos pipelines de renderização neural usando e/ou implementando novos módulos. |
Criando conjuntos de dados | Tem um novo conjunto de dados? Aprenda como executá-lo com o nerfstudio. |
Contribuindo | Passo a passo sobre como você pode começar a contribuir agora. |
Discórdia | Junte-se à nossa comunidade para discutir mais. Adoraríamos ouvir de você! |
Siga-nos no Twitter @nerfstudioteam para ver atualizações e anúncios interessantes | |
Formulário de comentários | Agradecemos qualquer feedback! Esta é a nossa chance de saber para que todos vocês estão usando o Nerfstudio. |
Fornecemos as seguintes estruturas de suporte para facilitar a vida de introdução aos NeRFs.
Se você estiver procurando por um recurso que não é suportado atualmente, não hesite em entrar em contato com a equipe Nerfstudio no Discord!
Visualizador baseado na Web que permite:
Visualize o treinamento em tempo real + interaja com a cena
Crie e renderize cenas com trajetórias de câmera personalizadas
Veja diferentes tipos de saída
E mais!
Suporte para múltiplas interfaces de registro (Tensorboard, Wandb), criação de perfil de código e outras ferramentas de depuração integradas
Scripts de benchmarking fáceis de usar no conjunto de dados do Blender
Suporte completo a pipeline (com Colmap, Polycam ou Record3D) para passar de um vídeo em seu telefone para uma renderização 3D completa.
Sistema de configuração fácil de usar
Desenvolvido por Brent Yi
Biblioteca para acelerar renderizações NeRF
Desenvolvido por Ruilong Li
Você pode encontrar um artigo escrito sobre a estrutura no arXiv.
Se você usa esta biblioteca ou acha a documentação útil para sua pesquisa, considere citar:
@inproceedings{nerfstudio, title = {Nerfstudio: A Modular Framework for Neural Radiance Field Development}, author = { Tancik, Matthew and Weber, Ethan and Ng, Evonne and Li, Ruilong and Yi, Brent and Kerr, Justin and Wang, Terrance and Kristoffersen, Alexander and Austin, Jake and Salahi, Kamyar and Ahuja, Abhik and McAllister, David and Kanazawa, Angjoo }, year = 2023, booktitle = {ACM SIGGRAPH 2023 Conference Proceedings}, series = {SIGGRAPH '23} }