GGT-100K: Generative Ground Truth for Generalizable Real-World Image Restoration
Python
72
46 commits
updated Jun 1, 2026
Real-world LQ–HQ pairs from MFMs to expand IR generalization boundaries.
Xiangtao Kong1,2,* | Jixin Zhao1,2,* | Lingchen Sun1,2; | Rongyuan Wu1,2; | Lei Zhang1,2,†
1 The Hong Kong Polytechnic University
2 OPPO Research Institute
* Equal contribution. † Corresponding author.
https://github.com/user-attachments/assets/010c7022-1dfd-4370-8f5c-e212d2c01fad
Demo. Comparing the LQ-GT pairs from GGT-100K. (You can slide it on the Project Page).
Overview of GGT-100K.
GGT-100K significantly improves the generalization capability of the models to real-world degradations.
f38z)The download links contain three parts:
GGT-100K: the main paired dataset.existing-dataset: external/previous datasets used in our paper. We recommend downloading and using it together with GGT-100K for training.pretrained-models: pretrained checkpoints for baseline models, including 10 models × 2 settings (20 checkpoints in total): trained on existing data only vs. trained on existing data + GGT-100K.We provide three JSONL files that list paired paths using relative file paths (relative to the dataset root), for convenient baseline usage:
train_existing.jsonltrain_existing_GGT.jsonltest_GGT_500.jsonlEach line is a pair:
{"gt":"relative/path/to/GT.png","lq":"relative/path/to/LQ.png","prompt":""}
Note: Among the baseline methods in this project, only Qwen-Image-Edit (qwen-image-edit) uses the prompt field. For other methods, prompt can be left empty.
When using these lists, you should join the relative paths with your local dataset root directory.
This dataset is released under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license: License text
GGT-100K is constructed by these four steps.
We evaluate existing MFMs and report the quantitative results below.
To demonstrate the effectiveness of GGT-100K, we train 10 restoration models with and without GGT-100K, and report quantitative and visual results.
The codes we use are all official open-source codes. The configurations for each environment can be referred to in the source project.
We also provide a minimal baseline training launcher for the following methods under GGT-100K/:
daclip-uir)FoundIR)MoCE-IR)X-Restormer): XRestormer / NAFNet / PromptIR / MPRNet / SwinIRqwen-image-edit)flux-controlnet)All baseline commands are unified in train.sh and can be configured via JSONL paths:
--train-jsonl: training pairs JSONL (each line: {"gt":"...","lq":"...","prompt":"..."}; absolute paths recommended)
qwen-image-edit) uses prompt. For other methods, prompt can be empty.Examples:
cd GGT-100K
# (1) Train WITHOUT GGT-100K (existing data only)
bash train.sh --method swinir \
--train-jsonl train_existing.jsonl
# (2) Train WITH GGT-100K (existing + GGT-100K)
bash train.sh --method swinir \
--train-jsonl train_existing_GGT.jsonl
# FoundIR (supports --meta as JSONL)
bash train.sh --method foundir \
--train-jsonl train_existing_GGT.jsonl
# MoCE-IR (paired training via --trainset paired_meta)
bash train.sh --method moce-ir \
--train-jsonl train_existing_GGT.jsonl \
--model MoCE_IR_S --epochs 120
# Qwen-Image-Edit (LoRA finetune; requires full Qwen-Image-Edit-2511 base weights + torchrun)
# train.sh auto-detects weights under qwen-image-edit/Qwen-Image-Edit-2511 or ../Edit_model/Qwen/Qwen-Image-Edit-2511
bash train.sh --method qwen-image-edit \
--train-jsonl train_existing_GGT.jsonl \
--workdir ./outputs_qwenir
--qwen-pretrained-model ../model/Qwen-Image-Edit-2511
# Flux-ControlNet (uses script defaults; override via extra args if needed)
bash train.sh --method flux-controlnet \
--train-jsonl train_existing_GGT.jsonl \
--workdir ./outputs_flux_controlnet
All baseline inference commands are unified in test.sh. Please first download the pretrained model by:
f38z)Common arguments:
--test-jsonl: paired test JSONL (each line: {"gt":"...","lq":"...","prompt":"..."}; absolute paths recommended)
qwen-image-edit) uses prompt. For other methods, prompt can be empty.--ckpt: checkpoint path (format depends on method: .pth / .pt / .ckpt / Folder)--results-dir: output directory for saving results (recommended to always set)Examples:
cd GGT-100K
# BasicSR family (SwinIR)
bash test.sh --method swinir \
--test-jsonl test_GGT_500.jsonl \
--ckpt GGT-100K-preatrained/model/SwinIR.pth \
--results-dir abs_path/results_swinir
# FoundIR
bash test.sh --method foundir \
--test-jsonl test_GGT_500.jsonl \
--ckpt GGT-100K-preatrained/model/model-2000.pt \
--results-dir abs_path/results_foundir
# MoCE-IR (paired JSONL testing)
bash test.sh --method moce-ir \
--ckpt GGT-100K-preatrained/model/last.ckpt \
--model MoCE_IR_S \
--benchmarks paired_jsonl \
--meta test_GGT_500.jsonl \
--save_results \
--results-dir abs_path/results_moceir
# Qwen-Image-Edit (inference needs base model dir + LoRA weights)
bash test.sh --method qwen-image-edit \
--test-jsonl test_GGT_500.jsonl \
--ckpt GGT-100K-preatrained/model/pytorch_lora_weights.safetensors \
--base-model ../model/Qwen-Image-Edit-2511 \
--results-dir abs_path/results_qwenir
# Flux-ControlNet (inference needs base FLUX model dir + ControlNet checkpoint)
bash test.sh --method flux-controlnet \
--test-jsonl test_GGT_500.jsonl \
--ckpt GGT-100K-preatrained/model/checkpoint-200001 \
--flux-pretrained-model ../model/FLUX.1-dev \
--results-dir abs_path/results_flux_controlnet
If you have any questions, please feel free to contact: xiangtao.kong@connect.polyu.hk
@article{kong2026GGT-100K,
title={GGT-100K: Generative Ground Truth for Generalizable Real-World Image Restoration},
author={Kong, Xiangtao and Zhao, Jixin and Sun, Lingchen and Wu, Rongyuan and Zhang, Lei},
journal={arXiv preprint arXiv:2605.31039},
year={2026}
}
46 commits
Python
98.2%
Shell
1.2%
GGT-100K: Generative Ground Truth for Generalizable Real-World Image Restoration
Python
72
46 commits
updated Jun 1, 2026
Real-world LQ–HQ pairs from MFMs to expand IR generalization boundaries.
Xiangtao Kong1,2,* | Jixin Zhao1,2,* | Lingchen Sun1,2; | Rongyuan Wu1,2; | Lei Zhang1,2,†
1 The Hong Kong Polytechnic University
2 OPPO Research Institute
* Equal contribution. † Corresponding author.
https://github.com/user-attachments/assets/010c7022-1dfd-4370-8f5c-e212d2c01fad
Demo. Comparing the LQ-GT pairs from GGT-100K. (You can slide it on the Project Page).
Overview of GGT-100K.
GGT-100K significantly improves the generalization capability of the models to real-world degradations.
f38z)The download links contain three parts:
GGT-100K: the main paired dataset.existing-dataset: external/previous datasets used in our paper. We recommend downloading and using it together with GGT-100K for training.pretrained-models: pretrained checkpoints for baseline models, including 10 models × 2 settings (20 checkpoints in total): trained on existing data only vs. trained on existing data + GGT-100K.We provide three JSONL files that list paired paths using relative file paths (relative to the dataset root), for convenient baseline usage:
train_existing.jsonltrain_existing_GGT.jsonltest_GGT_500.jsonlEach line is a pair:
{"gt":"relative/path/to/GT.png","lq":"relative/path/to/LQ.png","prompt":""}
Note: Among the baseline methods in this project, only Qwen-Image-Edit (qwen-image-edit) uses the prompt field. For other methods, prompt can be left empty.
When using these lists, you should join the relative paths with your local dataset root directory.
This dataset is released under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license: License text
GGT-100K is constructed by these four steps.
We evaluate existing MFMs and report the quantitative results below.
To demonstrate the effectiveness of GGT-100K, we train 10 restoration models with and without GGT-100K, and report quantitative and visual results.
The codes we use are all official open-source codes. The configurations for each environment can be referred to in the source project.
We also provide a minimal baseline training launcher for the following methods under GGT-100K/:
daclip-uir)FoundIR)MoCE-IR)X-Restormer): XRestormer / NAFNet / PromptIR / MPRNet / SwinIRqwen-image-edit)flux-controlnet)All baseline commands are unified in train.sh and can be configured via JSONL paths:
--train-jsonl: training pairs JSONL (each line: {"gt":"...","lq":"...","prompt":"..."}; absolute paths recommended)
qwen-image-edit) uses prompt. For other methods, prompt can be empty.Examples:
cd GGT-100K
# (1) Train WITHOUT GGT-100K (existing data only)
bash train.sh --method swinir \
--train-jsonl train_existing.jsonl
# (2) Train WITH GGT-100K (existing + GGT-100K)
bash train.sh --method swinir \
--train-jsonl train_existing_GGT.jsonl
# FoundIR (supports --meta as JSONL)
bash train.sh --method foundir \
--train-jsonl train_existing_GGT.jsonl
# MoCE-IR (paired training via --trainset paired_meta)
bash train.sh --method moce-ir \
--train-jsonl train_existing_GGT.jsonl \
--model MoCE_IR_S --epochs 120
# Qwen-Image-Edit (LoRA finetune; requires full Qwen-Image-Edit-2511 base weights + torchrun)
# train.sh auto-detects weights under qwen-image-edit/Qwen-Image-Edit-2511 or ../Edit_model/Qwen/Qwen-Image-Edit-2511
bash train.sh --method qwen-image-edit \
--train-jsonl train_existing_GGT.jsonl \
--workdir ./outputs_qwenir
--qwen-pretrained-model ../model/Qwen-Image-Edit-2511
# Flux-ControlNet (uses script defaults; override via extra args if needed)
bash train.sh --method flux-controlnet \
--train-jsonl train_existing_GGT.jsonl \
--workdir ./outputs_flux_controlnet
All baseline inference commands are unified in test.sh. Please first download the pretrained model by:
f38z)Common arguments:
--test-jsonl: paired test JSONL (each line: {"gt":"...","lq":"...","prompt":"..."}; absolute paths recommended)
qwen-image-edit) uses prompt. For other methods, prompt can be empty.--ckpt: checkpoint path (format depends on method: .pth / .pt / .ckpt / Folder)--results-dir: output directory for saving results (recommended to always set)Examples:
cd GGT-100K
# BasicSR family (SwinIR)
bash test.sh --method swinir \
--test-jsonl test_GGT_500.jsonl \
--ckpt GGT-100K-preatrained/model/SwinIR.pth \
--results-dir abs_path/results_swinir
# FoundIR
bash test.sh --method foundir \
--test-jsonl test_GGT_500.jsonl \
--ckpt GGT-100K-preatrained/model/model-2000.pt \
--results-dir abs_path/results_foundir
# MoCE-IR (paired JSONL testing)
bash test.sh --method moce-ir \
--ckpt GGT-100K-preatrained/model/last.ckpt \
--model MoCE_IR_S \
--benchmarks paired_jsonl \
--meta test_GGT_500.jsonl \
--save_results \
--results-dir abs_path/results_moceir
# Qwen-Image-Edit (inference needs base model dir + LoRA weights)
bash test.sh --method qwen-image-edit \
--test-jsonl test_GGT_500.jsonl \
--ckpt GGT-100K-preatrained/model/pytorch_lora_weights.safetensors \
--base-model ../model/Qwen-Image-Edit-2511 \
--results-dir abs_path/results_qwenir
# Flux-ControlNet (inference needs base FLUX model dir + ControlNet checkpoint)
bash test.sh --method flux-controlnet \
--test-jsonl test_GGT_500.jsonl \
--ckpt GGT-100K-preatrained/model/checkpoint-200001 \
--flux-pretrained-model ../model/FLUX.1-dev \
--results-dir abs_path/results_flux_controlnet
If you have any questions, please feel free to contact: xiangtao.kong@connect.polyu.hk
@article{kong2026GGT-100K,
title={GGT-100K: Generative Ground Truth for Generalizable Real-World Image Restoration},
author={Kong, Xiangtao and Zhao, Jixin and Sun, Lingchen and Wu, Rongyuan and Zhang, Lei},
journal={arXiv preprint arXiv:2605.31039},
year={2026}
}
46 commits
Python
98.2%
Shell
1.2%