†Corresponding Author
ShanghaiTech University
- [2025/08/05] 🔥 We release the source code and checkpoints.
- [2025/04/30] 🔥 We release the project page.
- [2025/04/27] 📄 Paper accepted to ACM Transactions on Graphics (SIGGRAPH 2025).
We propose a Generative Order Learner (GOL) that learns optimal element ordering strategies for graphic design generation. Our approach consists of:
- Design Generator: A Transformer-based autoregressive model that generates design sequences
- Ordering Network: A neural network that learns content-adaptive element ordering
- Joint Training: Both networks are trained simultaneously for mutual improvement
The key insight is that the order in which design elements are generated significantly impacts the quality of the final design. Our neural order outperforms random and raster ordering strategies.
conda env create -f requirements.yml
conda activate ordergol
pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt-
Download the Crello Dataset
Download crello.zip from the provided link and place it in your project directory.
-
Extract Dataset
unzip crello.zip mv crello data/
The dataset should be organized as:
data/ └── crello/ ├── cache/ # Preprocessed .pt files (auto-generated) ├── weights/ # Clustering information for preprocessing └── ... # Other dataset files
Note: The CrelloDataset class will prioritize loading preprocessed .pt files from data/cache/. If these files are not found, it will automatically preprocess the data based on pre-computed clustering information in data/weights/.
For detailed training instructions, see TRAIN.md.
For detailed evaluation instructions, see EVAL.md.
OrderGOL/
├── configs/ # YAML Configuration files
├── data/ # Dataset directory
├── ckpt/ # Model checkpoints
├── src/ # Source code
│ ├── model/ # Design Generator implementations
│ │ ├── design_transformer.py
│ │ ├── layout_transformer.py
│ │ ├── codebook.py
│ │ └── ...
│ ├── scorer.py # Ordering Network (main component)
│ ├── sort.py # Neural sorting algorithms
│ ├── dataset/ # Data load, preprocess and rendering
│ │ ├── crello_dataset.py
│ │ ├── helpers/
│ │ └── ...
│ ├── fid/ # FID computation (seq/visual embedding space)
│ │ ├── seq/ # Sequential embeddings
│ │ └── visual/ # Visual embeddings
│ ├── configs.py # Experiment configurations (non-YAML args)
│ ├── trainer.py # Training pipeline
│ ├── sampling.py # Sampling strategies
│ ├── metric.py # Evaluation metrics
│ ├── preprocess.py # Data preprocessing utilities
│ ├── saliency/ # Saliency-related utilities
│ └── utils.py # Helper functions
├── train.sh # Training script
├── eval.sh # Evaluation script
├── main.py # Entry point
├── assets/ # Repo figures
├── requirements.txt/yml # Python dependencies
└── README.md # This file
This project is built upon several excellent open-source projects:
- LayoutDM: main hydra-based training pipe, DM-based design generator.
- LayoutTransformer: dataset utilities, AR-based design generator.
We thank the authors of these projects for their contributions to the open-source community.
If your have any comments or questions, feel free to contact borisyang326@gmail.com
If our work helps your research or applications, please consider citing our paper:
@article{yang2025order,
author = {Yang, Bo and Cao, Ying},
title = {Order Matters: Learning Element Ordering for Graphic Design Generation},
year = {2025},
issue_date = {August 2025},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {44},
number = {4},
issn = {0730-0301},
url = {https://doi.org/10.1145/3730858},
doi = {10.1145/3730858},
journal = {ACM Trans. Graph.},
articleno = {34},
numpages = {16}
}This project is licensed under the MIT License - see the LICENSE file for details.

