jit-sr / README.md
cetini18's picture
Fix the usage line in the model card
722800c verified
|
Raw History Blame Contribute Delete
4.1 kB
---
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-<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).