--- license: mit pipeline_tag: image-to-image library_name: pytorch tags: - super-resolution - image-restoration - one-step - jit - pixel-space --- # JiT-SR: one-step pixel-space 4x super-resolution Checkpoints of [JiT-SR](https://github.com/nitec427/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](https://github.com/nitec427/jit-sr) (`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. ```bash 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-.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).