[ICCV 23] DLT: Geração de layout condicionado com transformador de layout de difusão discreta-contínua conjunta
Este repositório é uma implementação oficial do documento DLT. Por favor, consulte o artigo para obter mais detalhes e a página do projeto para uma visão geral.
Incondicional | Categoria | Categoria + Tamanho |
---|---|---|
Todos os requisitos relevantes estão listados em Environment.yml. Recomendamos usar conda para criar o ambiente apropriado e instalar as dependências:
conda env create -f environment.yml
conda activate dlt
Faça download dos conjuntos de dados públicos nas seguintes páginas da web. Coloque-o em sua pasta e atualize ./dlt/configs/remote/dataset_config.yaml
adequadamente.
Você pode treinar o modelo usando qualquer script de configuração na pasta configs. Por exemplo, se você deseja treinar o modelo DLT fornecido no conjunto de dados publaynet, o comando é o seguinte:
cd dlt
python main.py --config configs/remote/dlt_publaynet_config.yaml --workdir < WORKDIR >
Por favor, veja se o código é independente do acelerador. se você não quiser registrar os resultados no wandb, basta definir --workdir test
em args.
Para gerar amostras para avaliação no conjunto de testes, siga estas etapas:
# put weights in config.logs folder
DATASET = " publaynet " # or "rico" or "magazine"
python generate_samples.py --config configs/remote/dlt_{ $DATASET }_config.yaml \
--workdir < WORKDIR > --epoch < EPOCH > --cond_type < COND_TYPE > \
--save True
# get all the metrics
# update path to pickle file in dlt/evaluation/metric_comp.py
./download_fid_model.sh
python metric_comp.py
onde <COND_TYPE>
pode ser: (all, whole_box, loc) - (incondicional, categoria, categoria+tamanho) respectivamente, <EPOCH>
é o número da época do modelo que você deseja avaliar e <WORKDIR>
é o caminho para o pasta onde os pesos do modelo são salvos (ex. rico_final). As amostras geradas serão salvas na pasta logs/<WORKDIR>/samples
se save
True.
Uma saída dele é um arquivo pickle com amostras geradas. Você pode usá-lo para calcular métricas.
A pasta com pesos após o treino tem esta estrutura:
logs
├── magazine_final
│ ├── checkpoints
│ └── samples
├── publaynet_final
│ ├── checkpoints
│ └── samples
└── rico_final
├── checkpoints
└── samples
Se você achar este código útil para sua pesquisa, cite nosso artigo:
@misc{levi2023dlt,
title={DLT: Conditioned layout generation with Joint Discrete-Continuous Diffusion Layout Transformer},
author={Elad Levi and Eli Brosh and Mykola Mykhailych and Meir Perez},
year={2023},
eprint={2303.03755},
archivePrefix={arXiv},
primaryClass={cs.CV}
}