--- tags: - compression - diffusion license: mit datasets: - uoft-cs/cifar10 - student/ImageNet-64 metrics: - bpps - psnr --- # Progressive Compression with Universally Quantized Diffusion Models Official implementation of our ICLR 2025 paper [Progressive Compression with Universally Quantized Diffusion Models](https://www.justuswill.com/uqdm/) by Yibo Yang, Justus Will, and Stephan Mandt. ## TLDR Our new form of diffusion model, UQDM, enables practical progressive compression with an unconditional diffusion model - avoiding the computational intractability of Gaussian channel simulation by using universal quantization. ## Setup ``` git clone https://github.com/mandt-lab/uqdm.git cd uqdm conda env create -f environment.yml conda activate uqdm ``` For working with ImageNet64, download from the [official website](https://image-net.org/download-images.php) the npz dataset files: - Train(64x64) part1, Train(64x64) part2, Val(64x64) and place them in `./data/imagenet64`. Our implementation removes the duplicate test images as saved in `./data/imagenet64/removed.npy` during loading. ## Usage Load pretrained models by placing the `config.json` and `checkpoint.pt` in a shared folder and load them for example via ```python from uqdm import load_checkpoint, load_data model = load_checkpoint('checkpoints/uqdm-tiny') train_iter, eval_iter = load_data('ImageNet64', model.config.data) ``` To train or evaluate call respectively via ```python model.trainer(train_iter, eval_iter) model.evaluate(eval_iter) ``` To save the compressed representation of an image and to reconstruct an image/images from their compressed representations, use ```python image = next(iter(eval_iter)) compressed = model.compress(image) reconstructions = model.decompress(compressed) ``` ## Citation ```bibtex @article{yang2025universal, title={Progressive Compression with Universally Quantized Diffusion Models}, author={Yibo Yang and Justus Will and Stephan Mandt}, journal = {International Conference on Learning Representations}, year={2025} } ```