GDPO
Official code for GDPO-SR: Group Direct Preference Optimization for One-Step Generative Image Super-Resolution
Install / Use
/learn @Joyies/GDPOREADME
Qiaosi Yi<sup>1,2</sup> | Shuai Li<sup>1</sup> | Rongyuan Wu<sup>1,2</sup> | Lingchen Sun<sup>1,2</sup> | Zhengqiang zhang<sup>1,2</sup> | Lei Zhang<sup>1,2</sup>
<sup>1</sup>The Hong Kong Polytechnic University, <sup>2</sup>OPPO Research Institute
</div>🚩Accepted by CVPR2026
⏰ Update
- 2026.3.19: Paper is released on ArXiv.
- 2026.3.12: The training code and testing code are released.
- 2026.3.10: The repo is released.
⚙ Dependencies and Installation
## git clone this repository
git clone https://github.com/Joyies/GDPO.git
cd GDPO
# create an environment
conda create -n GDPO python=3.10
conda activate GDPO
pip install --upgrade pip
pip install -r requirements.txt
🏂 Quick Inference
Step 1: Download the pretrained models
Step 2: Prepare testing data and run testing command
You can modify input_path and output_path to run testing command. The input_path is the path of the test image and the output_path is the path where the output images are saved.
CUDA_VISIBLE_DEVICES=0, python GDPOSR/inferences/test.py \
--input_path test_LR \
--output_path experiment/GDPOSR \
--pretrained_path ckp/GDPOSR \
--pretrained_model_name_or_path stable-diffusion-2-1-base \
--ram_ft_path ckp/DAPE.pth \
--negprompt 'dotted, noise, blur, lowres, smooth' \
--prompt 'clean, high-resolution, 8k' \
--upscale 1 \
--time_step=100 \
--time_step_noise=250
or
bash scripts/test/test.sh
🚄 Training Phase
Step1: Prepare training data
Download the LSIDR dataset and FFHQ dataset and crop multiple 512×512 image patches using a sliding window with a stride of 64 pixels;
Step2: Train NAOSD.
bash scripts/train/train_NAOSD.sh
The hyperparameters in train_NAOSD.sh can be modified to suit different experimental settings. Besides, after training with NAOSD, you can use GDPOSR/mergelora.py to merge the LoRA into the UNet and VAE as base model for subsequent reinforcement learning training and inference.
Step3: Train GDPO-SR
bash scripts/train/train_GDPOSR.sh
The hyperparameters in train_GDPOSR.sh can be modified to suit different experimental settings. Besides, after training with GDPO-SR, you can use GDPOSR/mergelora.py to merge the LoRA into the UNet for subsequent inference.
🔗 Citations
@article{yi2026gdpo,
title={GDPO-SR: Group Direct Preference Optimization for One-Step Generative Image Super-Resolution},
author={Yi, Qiaosi and Li, Shuai and Wu, Rongyuan and Sun, Lingchen and Zhang, Zhengqiang and Zhang, Lei},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
year={2026}
}
©️ License
This project is released under the Apache 2.0 license.
📧 Contact
If you have any questions, please contact: qiaosiyijoyies@gmail.com
Related Skills
node-connect
351.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
