JiT-SR: one-step pixel-space 4x super-resolution
Checkpoints of JiT-SR, a JiT-B/16 (Just image Transformer) adapted to one-step 4x real-world super-resolution that works directly on pixels (512 x 512 output, no VAE, no diffusion sampling loop). The input is the bicubic-upsampled low-resolution image and the output is the high-resolution image.
The files hold the EMA weights (model_ema1), which every reported result uses. The discriminator and optimiser are not included.
| Folder | Variant | Epoch | Params | GMACs (512 x 512) |
|---|---|---|---|---|
lrfeat_nofdl_c70_ep38 |
resize_res decoder + LR skip + LR feature pyramid, no FDL (best fidelity) | 38 (constant-LR continuation) | 136.0 M | 134.9 |
lrskip_nofdl_c70_ep38 |
resize_res decoder + LR skip, no FDL | 38 (constant-LR continuation) | 135.5 M | 127.5 |
Each folder has model.safetensors (fp32, about 0.55 GB) and config.json (the model flags and metadata).
Results (4x, 512 x 512 output, one step)
RealSR (100 images) and DRealSR (93 images). Raw is the model output; AdaIN applies a per-channel mean and standard-deviation match to the upsampled LR input (as in StableSR) and uses no ground truth. Lower is better for LPIPS, DISTS, FID; higher for the rest.
| Model | Set | Output | PSNR | SSIM | LPIPS | DISTS | FID | MUSIQ |
|---|---|---|---|---|---|---|---|---|
lrfeat_nofdl_c70_ep38 |
RealSR | raw | 25.72 | 0.737 | 0.263 | 0.206 | 112.1 | 66.6 |
| RealSR | AdaIN | 26.62 | 0.745 | 0.261 | 0.203 | 112.3 | 66.4 | |
| DRealSR | raw | 28.20 | 0.766 | 0.296 | 0.211 | 138.7 | 61.8 | |
| DRealSR | AdaIN | 29.45 | 0.781 | 0.288 | 0.207 | 137.9 | 61.5 | |
lrskip_nofdl_c70_ep38 |
RealSR | raw | 25.48 | 0.730 | 0.265 | 0.207 | 117.8 | 66.1 |
| RealSR | AdaIN | 26.47 | 0.739 | 0.261 | 0.204 | 118.0 | 66.0 | |
| DRealSR | raw | 27.93 | 0.764 | 0.294 | 0.212 | 139.5 | 61.8 | |
| DRealSR | AdaIN | 29.30 | 0.780 | 0.285 | 0.207 | 137.0 | 61.5 |
More metrics (CLIPIQA, CLIPIQA+, MANIQA, TOPIQ, NIQE, A-FINE), the DIV2K results and the comparison with other one-step methods are in the GitHub repository (docs/c70_eval.md, docs/postprocessing.md, docs/pocketsr_comparison.md). The two evaluation sets are small, so differences below about 0.1 dB PSNR or 0.002 LPIPS are within noise.
Usage
The model code is in the GitHub repository; this repo only holds weights.
git clone https://github.com/nitec427/jit-sr && cd jit-sr
pip install huggingface_hub safetensors
python scripts/load_hf_checkpoint.py --repo cetini18/jit-sr --subfolder lrfeat_nofdl_c70_ep38 # writes lrfeat_nofdl_c70_ep38/checkpoint-38.pth
The script writes a checkpoint in the format main_jit.py reads (--full_ckpt_path; the file must be named checkpoint-<epoch>.pth) and prints the model flags from config.json. Run the evaluation with those flags and --use_ema_eval (see eval_ckpt.sh for the data and metric options). Input images are 128 x 128 crops upsampled to 512 x 512 with bicubic interpolation.
Training and limitations
- Fine-tuned from the 512-px ImageNet JiT-B/16 checkpoint with pixel MSE, LPIPS, DISTS and a U-Net GAN (weight 0.05), then continued at a constant learning rate; the exact recipes are in
docs/runs/in the GitHub repository. - Trained on synthetic degradations only; no real-world paired data was used. Real-world generalisation is therefore limited by how well the degradation pipeline matches real images.
- The raw output has more local contrast than the ground truth; post-processing such as AdaIN raises PSNR and LPIPS but lowers no-reference scores (see
docs/postprocessing.md). - Evaluated at 512 x 512 only.
License and credits
MIT. Built on the PyTorch re-implementation of JiT by Tianhong Li, based on Back to Basics: Let Denoising Generative Models Denoise (Li and He, arXiv:2511.13720).