[ICCV 23] DLT: Joint Discrete-Continuous Diffusion Layout Transformer를 이용한 조건부 레이아웃 생성
이 저장소는 DLT 논문의 공식 구현입니다. 자세한 내용은 논문을 참조하고 일반적인 개요는 프로젝트 페이지를 참조하세요.
무조건 | 범주 | 카테고리 + 사이즈 |
---|---|---|
모든 관련 요구 사항은 Environment.yml에 나열되어 있습니다. 적절한 환경을 만들고 종속성을 설치하려면 conda를 사용하는 것이 좋습니다.
conda env create -f environment.yml
conda activate dlt
다음 웹페이지에서 공개 데이터세트를 다운로드하세요. 폴더에 넣고 그에 따라 ./dlt/configs/remote/dataset_config.yaml
업데이트하세요.
configs 폴더에 있는 구성 스크립트를 사용하여 모델을 훈련할 수 있습니다. 예를 들어, 제공된 DLT 모델을 pulaynet 데이터 세트에서 훈련하려는 경우 명령은 다음과 같습니다.
cd dlt
python main.py --config configs/remote/dlt_publaynet_config.yaml --workdir < WORKDIR >
코드가 가속기에 구애받지 않는다는 점을 확인하세요. 결과를 wandb에 기록하지 않으려면 args에 --workdir test
설정하면 됩니다.
테스트 세트에서 평가할 샘플을 생성하려면 다음 단계를 따르세요.
# 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
여기서 <COND_TYPE>
각각 (all, Whole_box, loc) - (무조건, 카테고리, 카테고리+크기)일 수 있습니다. <EPOCH>
는 평가하려는 모델의 에포크 번호이고 <WORKDIR>
은 모델 가중치가 저장되는 폴더(예: rico_final) 생성된 샘플은 save
True인 경우 logs/<WORKDIR>/samples
폴더에 저장됩니다.
출력은 생성된 샘플이 포함된 피클 파일입니다. 이를 사용하여 측정항목을 계산할 수 있습니다.
훈련 후 가중치가 포함된 폴더의 구조는 다음과 같습니다.
logs
├── magazine_final
│ ├── checkpoints
│ └── samples
├── publaynet_final
│ ├── checkpoints
│ └── samples
└── rico_final
├── checkpoints
└── samples
이 코드가 연구에 유용하다고 생각되면 다음 논문을 인용해 주세요.
@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}
}