A linguagem da cena: representando cenas com programas, palavras e incorporações
arXiv | Página do projeto
Downcodes
Este repositório implementa a Scene Language apresentada no artigo "The Scene Language: Representing Scenes with Programs, Words, and Embeddings". Ele permite a geração de cenas 3D condicionadas por texto e imagem.
Instalação
Ambiente
`bash
conda criar --name sclg python=3.11
conda ativar sclg
pip instalar mitsuba
se você encontrar uma falha de segmentação, poderá precisar de versões específicas do mitsuba
por exemplo, pip install --force-reinstall mitsuba==3.5.1 no MacOS
pip instalar unidecode Travesseiro anthropic transforms3d astor ipdb scipy jaxtyping imageio
necessário para renderizador minecraft
pip instalar espaçoso
python -m download espacial encoreweb_md
pip install --force-reinstall numpy==1.26.4 # para ser compatível com transforms3d
clone do git https://github.com/zzyunzhi/scene-language.git
linguagem de cena do CD
pip instalar -e.
`
API de modelo de linguagem
1. Obtenha sua chave API: Obtenha sua chave API Antrópica seguindo a documentação oficial.
2. Adicione a chave ao motor/key.py:
`píton
ANTHROPICAPIKEY = 'SEUANTHROPICAPI_KEY'
OPENAIAPIKEY = 'YOUROPENAIAPIKEY' # opcional, obrigatório para LLMPROVIDER='gpt'
`
3. Alternar modelos de idioma (opcional): você pode alternar para diferentes modelos de idioma modificando a configuração LLM_PROVIDER em engine/constants.py. O padrão é Soneto Claude 3.5.
Geração 3D condicionada por texto
Renderizador: Mitsuba
`bash
python scripts/run.py --tasks "um tabuleiro de xadrez com um conjunto completo de peças de xadrez"
`
As renderizações serão salvas em ${PROJROOT}/scripts/outputs/run${timestep}${uuid}/${scenename}${uuid}/${sampleindex}/renderings/*.gif.
Resultados de exemplo: resultados brutos
Renderizador: Minecraft
`bash
ENGINE_MODE=minecraft python scripts/run.py --tasks "uma torre medieval cilíndrica detalhada"
`
As cenas geradas são salvas como arquivos JSON em ${PROJROOT}/scripts/outputs/run${timestep}${uuid}/${scenename}${uuid}/${sampleindex}/renderings/*.json.
Visualização:
1. Execute o seguinte comando:
`bash
visualizadores python/minecraft/run.py
`
2. Abra http://127.0.0.1:5001 no seu navegador.
3. Arraste os arquivos JSON gerados para a página da web.
Resultados de exemplo: resultados brutos
Geração 3D com imagem condicionada
`bash
scripts python/run.py --tasks ./resources/examples/* --cond imagem --temperatura 0,8
`
Detalhes da base de código
A tabela a seguir lista funções auxiliares definidas neste repositório, alinhadas com expressões definidas na linguagem específica de domínio (DSL) (Tabelas 2 e 5 do artigo):
| Função | Expressão DSL |
|-----------------|----------------|
| ... | ... |
| ... | ... |
Melhorias na base de código
A base de código atual oferece os seguintes recursos:
1. Geração Condicionada em Texto: Gere cenas 3D com base em descrições textuais.
2. Geração Condicionada de Imagem: Gere cenas 3D com base nas imagens de entrada.
Atualizações futuras:
Suporte para tarefas e renderizadores adicionais serão adicionados em atualizações futuras.
Contribuições
Sinta-se à vontade para enviar uma solicitação pull ou entrar em contato conosco por e-mail se tiver alguma solicitação de recurso, sugestão ou quiser compartilhar seus resultados.
Citação
`
@artigo{zhang2024scenelinguagem,
title={A linguagem da cena: representando cenas com programas, palavras e incorporações},
autor={Yunzhi Zhang e Zizhang Li e Matt Zhou e Shangzhe Wu e Jiajun Wu},
ano={2024},
diário = {pré-impressão arXiv arXiv:2410.16770},
}
`
Licença: Apache-2.0