🎨 PosterCraft:
Rethinking High-Quality Aesthetic Poster Generation in a Unified Framework

arXiv GitHub HuggingFace Website Demo

PosterCraft Logo PosterCraft Logo

🌟 What is PosterCraft?

What is PosterCraft - Quick Prompt Demo

PosterCraft is a unified framework for high-quality aesthetic poster generation that excels in precise text rendering, seamless integration of abstract art, striking layouts, and stylistic harmony.

πŸš€ Quick Start

πŸ”§ Installation

# Clone the repository
git clone https://github.com/ephemeral182/PosterCraft.git
cd PosterCraft

# Create conda environment
conda create -n postercraft python=3.11
conda activate postercraft

# Install dependencies
pip install -r requirements.txt

πŸš€ Easy Usage

PosterCraft is designed as a unified and flexible framework. This makes it easy to use PosterCraft within your own custom workflows or other compatible frameworks.

Loading the model is straightforward:

import torch
from diffusers import FluxPipeline, FluxTransformer2DModel

# 1. Define model IDs and settings
pipeline_id = "black-forest-labs/FLUX.1-dev"
postercraft_transformer_id = "PosterCraft/PosterCraft-v1_RL" 
device = "cuda"
dtype = torch.bfloat16

# 2. Load the base pipeline
pipe = FluxPipeline.from_pretrained(pipeline_id, torch_dtype=dtype)

# 3. The key step: simply replace the original transformer with our fine-tuned PosterCraft model
pipe.transformer = FluxTransformer2DModel.from_pretrained(
    postercraft_transformer_id, 
    torch_dtype=dtype
)
pipe.to(device)

# Now, `pipe` is a standard diffusers pipeline ready for inference with your own logic.

πŸš€ Quick Generation

For the best results and to leverage our intelligent prompt rewriting feature, we recommend using the provided inference.py script. This script automatically enhances your creative ideas for optimal results.

Generate high-quality aesthetic posters from your prompt with BF16 precision, please refer to our GitHub repository :

python inference.py \
  --prompt "Urban Canvas Street Art Expo poster with bold graffiti-style lettering and dynamic colorful splashes" \
  --enable_recap \
  --num_inference_steps 28 \
  --guidance_scale 3.5 \
  --seed 42 \
  --pipeline_path "black-forest-labs/FLUX.1-dev" \
  --custom_transformer_path "PosterCraft/PosterCraft-v1_RL" \
  --qwen_model_path "Qwen/Qwen3-8B"

If you are running on a GPU with limited memory, you can use inference_offload.py to offload some components to the CPU:

python inference_offload.py \
  --prompt "Urban Canvas Street Art Expo poster with bold graffiti-style lettering and dynamic colorful splashes" \
  --enable_recap \
  --num_inference_steps 28 \
  --guidance_scale 3.5 \
  --seed 42 \
  --pipeline_path "black-forest-labs/FLUX.1-dev" \
  --custom_transformer_path "PosterCraft/PosterCraft-v1_RL" \
  --qwen_model_path "Qwen/Qwen3-8B"

πŸ’» Gradio Web UI

We provide a Gradio web UI for PosterCraft, please refer to our GitHub repository.

python demo_gradio.py

πŸ“Š Performance Benchmarks

πŸ“ˆ Quantitative Results

Method Text Recall ↑ Text F-score ↑ Text Accuracy ↑
OpenCOLE (Open) 0.082 0.076 0.061
Playground-v2.5 (Open) 0.157 0.146 0.132
SD3.5 (Open) 0.565 0.542 0.497
Flux1.dev (Open) 0.723 0.707 0.667
Ideogram-v2 (Close) 0.711 0.685 0.680
BAGEL (Open) 0.543 0.536 0.463
Gemini2.0-Flash-Gen (Close) 0.798 0.786 0.746
PosterCraft (ours) 0.787 0.774 0.735
hpc

πŸ“ Citation

If you find PosterCraft useful for your research, please cite our paper:

@article{chen2025postercraft,
  title={PosterCraft: Rethinking High-Quality Aesthetic Poster Generation in a Unified Framework},
  author={Chen, Sixiang and Lai, Jianyu and Gao, Jialin and Ye, Tian and Chen, Haoyu and Shi, Hengyu and Shao, Shitong and Lin, Yunlong and Fei, Song and Xing, Zhaohu and Jin, Yeying and Luo, Junfeng and Wei, Xiaoming and Zhu, Lei},
  journal={arXiv preprint arXiv:2506.10741},
  year={2025}
}
Downloads last month
169
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for PosterCraft/PosterCraft-v1_RL

Finetuned
(430)
this model