Introdução geral
O GenXD é um projeto de código aberto desenvolvido pela Universidade Nacional de Cingapura (NUS) e pela equipe da Microsoft. Ele se concentra na geração de cenas arbitrárias em 3D e 4D, resolvendo os desafios da geração de 3D e 4D no mundo real devido à insuficiência de dados e ao design complexo do modelo. O projeto cria uma estrutura de geração flexível, analisando o movimento da câmera e do objeto e combinando-o com dados reais em grande escala. O GenXD fornece o primeiro conjunto de dados 4D de código aberto, o CamVid-30K, que contém informações de pose e movimento da câmera de mais de 30.000 vídeos. Os usuários podem usá-lo para gerar vídeos ou visualizações 3D consistentes que correspondam à trajetória da câmera. O projeto foi aceito pelo ICLR 2025 em janeiro de 2025 e é amplamente seguido no GitHub por pesquisadores e desenvolvedores.
Lista de funções
- Gere cenas 3D arbitrárias e ofereça suporte à saída de visualização 3D consistente de vários pontos de vista.
- Gere cenas de movimento 4D para criar vídeos que mudam com o tempo.
- Decomponha o movimento da câmera e do objeto para garantir um fluxo natural do conteúdo gerado.
- O conjunto de dados CamVid-30K está disponível para apoiar estudos dinâmicos de missões 3D e 4D.
- Oferece suporte a várias entradas condicionais (por exemplo, imagens ou um pequeno número de visualizações) para ajustar com flexibilidade os resultados gerados.
- Converta visualizações 3D em ativos digitais editáveis.
- Módulo de tempo integrado de múltiplas visualizações para otimizar a fusão de dados 3D e 4D.
Usando a Ajuda
O GenXD é uma estrutura de pesquisa de código aberto, os usuários precisam criar o ambiente localmente para usá-lo. A seguir, um guia detalhado de instalação e operação para ajudar os usuários a começar rapidamente.
Processo de instalação
O GenXD requer suporte de ambiente de programação e é adequado para usuários com alguma base técnica. As etapas de instalação são as seguintes:
- Preparar o ambiente básico
- Certifique-se de que o Python 3.10 ou posterior esteja instalado em seu computador.
- Instale o Git para fazer download do código. Execute-o no terminal:
git clone https://github.com/HeliosZhao/GenXD.git
- Vá para o catálogo de projetos:
cd GenXD
- Instalação das dependências do núcleo
- Instale o PyTorch (versão recomendada 2.1.2 com suporte a CUDA). Execute-o:
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu118
- Instale outras dependências (por exemplo, diffusers 0.30.3). Executar:
pip install -r requirements.txt
- no caso de
requirements.txt
Não fornecido, consulte as instruções oficiais para instalar o NumPy, o OpenCV e outras bibliotecas.
- Instale o PyTorch (versão recomendada 2.1.2 com suporte a CUDA). Execute-o:
- Download do modelo pré-treinado
- Faça o download do modelo do Hugging Face:
pip install -U "huggingface_hub[cli]" huggingface-cli download Yuyang-z/genxd --local-dir ./genxd-model
- Coloque os arquivos de modelo no diretório do projeto no diretório
genxd-model
Pasta.
- Faça o download do modelo do Hugging Face:
- Baixar conjunto de dados
- O conjunto de dados CamVid-30K está disponível para download em Hugging Face:
- O subconjunto VIPSeg e o subconjunto OpenVid estão disponíveis em https://huggingface.co/datasets/Yuyang-z/CamVid-30K.
- O subconjunto WebVid-10M não está disponível devido a limitações; você precisa obtê-lo por conta própria.
- Faça o download e descompacte para
data/camvid-30k
Pasta.
- O conjunto de dados CamVid-30K está disponível para download em Hugging Face:
- Verificação do ambiente
- Certifique-se de que você tenha uma GPU NVIDIA em execução:
python -c "import torch; print(torch.cuda.is_available())"
exportações
True
Indica um ambiente normal.
- Certifique-se de que você tenha uma GPU NVIDIA em execução:
Uso das funções principais
O GenXD oferece suporte a várias tarefas de geração, e a seguir apresentamos como fazer isso.
1. personalizar imagens para gerar cenas em 3D
- Prepare-se para entrar: Coloque uma imagem (em formato PNG ou JPG) na seção
example-images
Pasta. - Configuração do modo da câmera: Suporte
forward
(Avançar) eorbit
(Surround) dois modos. - Executar comando::
DATA_ROOT="example-images"
OUTPUT_DIR="outputs/example-images"
accelerate launch --main_process_port 1223 inference.py
diffusion.pretrain_unet="./genxd-model"
diffusion.output_dir="$OUTPUT_DIR"
+evaluator.data_name="static_cam_single"
+evaluator.data_root="$DATA_ROOT"
+evaluator.camera_info.mode="forward"
+evaluator.camera_info.elevation=0.
+evaluator.camera_info.azimuth_range=[-30,30]
+evaluator.focal=1.0938
+evaluator.camera_info.radius=2.0
- Visualização de resultadosA visualização 3D de múltiplas vistas gerada é salva no arquivo
outputs/example-images
Ele pode ser aberto com ferramentas como o Blender.
2. geração de cenas 3D sem amostras
- Preparar dadosFaça o download do conjunto de dados do ReconFusion (https://huggingface.co/datasets/Yuyang-z/reconfusion-torch) e extraia-o para o arquivo
data/reconfusion-torch/re10k
. - Etapa 1: Gerar trilhas de câmera::
python tools/pose_traj_generate.py -d data/reconfusion-torch/re10k -o outputs/pose_dataset --save_data_pose -sx 0.2 0.4 -0.2 -0.4 -sz 0.2 0.4 -0.2 -0.4 -n 18
- Etapa 2: Gerar visualizações::
accelerate launch --main_process_port 1224 inference.py
diffusion.pretrain_unet="./genxd-model"
diffusion.output_dir="outputs/re10k-group"
+evaluator.data_name="reconfgroup"
+evaluator.data_root="data/reconfusion-torch/re10k"
+evaluator.pose_dir="outputs/pose_dataset/re10k"
+evaluator.num_context_views=3
+evaluator.n_views=3
+evaluator.save_target_only=True
+evaluator.pad_to_square=True
- Visualização de resultadosVisualização 3D: A visualização 3D gerada é exibida no
outputs/re10k-group
.
3. geração de cenas dinâmicas 4D
- Preparar dadosUse o vídeo no conjunto de dados CamVid-30K e coloque-o no arquivo
data/camvid-30k
. - Executar comandoObservação: Você precisa ajustar os parâmetros de acordo com a tarefa específica; consulte a atualização do GitHub para obter exemplos de comandos.
- Visualização de resultadosVídeo: O vídeo gerado é salvo no diretório de saída especificado.
Operação da função em destaque
Decomposição do movimento da câmera e do objeto
- O GenXD usa um módulo de tempo de várias visualizações para separar o movimento da câmera e do objeto.
- exemplo de execução::
python motion_decompose.py --input data/camvid-30k/sample_video --output outputs/motion_data
- usoOs dados de movimento gerados podem ser usados para ajustar a cena 4D.
Uso do conjunto de dados CamVid-30K
- estrutura de dadosDescompactado, ele contém imagens e arquivos COLMAP (por exemplo
cameras.bin
). - Carregar dados: Colocar
data/camvid-30k
Execute o script de teste:
python test_dataset.py --dataset data/camvid-30k
advertência
- A memória da GPU precisa ser de 16 GB ou mais, e a geração de tarefas 4D leva muito tempo.
- Verifique a última atualização de código para a versão oficial de 26 de março de 2025 do modelo pré-treinado.
- Em caso de dúvidas, entre em contato com .
cenário do aplicativo
- experimento de pesquisa
- Os pesquisadores usaram o GenXD para testar os algoritmos de geração 3D e 4D e validar os novos modelos.
- Criação de conteúdo virtual
- Os criadores geram cenas dinâmicas para uso em projetos de animação ou realidade virtual.
- Educação e treinamento
- Os alunos aprendem visão computacional e técnicas generativas usando o conjunto de dados CamVid-30K.
QA
- O GenXD é gratuito?
- Sim, é um projeto de código aberto sob a licença Apache-2.0.
- Preciso de uma conexão com a Internet para usá-lo?
- Não é necessário, está instalado e pronto para ser executado localmente.
- Os resultados gerados são reais?
- Não é totalmente realista, o modelo não atinge um senso perfeito de realismo e é apenas para uso em pesquisas.