universal-upscale / README.md
tailot's picture
Upload folder using huggingface_hub
7cf74f6 verified
|
Raw History Blame Contribute Delete
5.58 kB
---
title: Universal Upscale
emoji: 🔍
colorFrom: blue
colorTo: indigo
sdk: gradio
sdk_version: 5.20.0
app_file: app.py
pinned: false
license: cc-by-nc-4.0
tags:
- image-super-resolution
- super-resolution
- image-upscaling
- arbitrary-scale-sr
---
# Universal Upscale 🚀
Benvenuto su **Universal Upscale**, l'applicazione per l'upscaling e super-resolution di immagini a qualsiasi risoluzione o fattore di scala.
Questo Space esegue il checkpoint **LIIF v4 GAN** (4.60 M parametri): un unico modello a scala
arbitraria, esportato come `model.safetensors` + `model_scripted.pt` nel repo
[tailot/universal-upscale](https://huggingface.co/tailot/universal-upscale).
## Quale modello scegliere / Which model to pick
Il menu **Model** passa ai due pesi pubblicati dal progetto / The **Model** menu switches between
the two weights this project publishes:
| Model | Cosa è / What it is | Quando sceglierlo / Pick it when |
|---|---|---|
| 🔍 **Universal Upscale** (default) | LIIF v4 GAN, 4.60 M parametri, `model_scripted.pt` con tiled inference integrata | qualsiasi fattore 1x-9.2x o una dimensione target esatta, immagini grandi |
| ⚡ **Universal Upscale Distilled** | student knowledge-distilled, 1.30 M parametri, TorchScript `model_distilled.pt` che gira sullo stesso device del modello di default | serve 9x in un solo passaggio: più leggero e veloce |
Lo Student distillato ha una scala nativa **fissa**: sotto 9x l'output viene
ricampionato in area-downsample, sopra viene ricampionato in bicubico. Quando lo selezioni dalla UI,
però, i campi **Scale Factor** e **Target Long Side** vengono disabilitati e portati alla scala
nativa 9x, così il submit usa sempre il modello con la sua resa massima. L'output
resta soggetto al cap dello Space sul lato lungo, quindi input molto grandi possono comunque essere
ricampionati. La riga di stato indica quale modello ha girato e se l'output è stato ricampionato.
Model card:
[tailot/universal-upscale-distilled](https://huggingface.co/tailot/universal-upscale-distilled).
## Come usare lo Space / How to use this Space
1. **Carica un'immagine / Upload an image**: trascina o carica un'immagine dal tuo dispositivo.
2. **Scegli il modello / Pick the model**: lascia **Universal Upscale** (default) oppure passa a
**Universal Upscale Distilled** (nativo 9x, usa la stessa GPU del modello di default).
3. **Imposta la scala / Set the scale**:
- **Scale Factor**: scegli un fattore di scala da **1x fino a 9.2x** (passo 0.2x, es. 2x, 3.6x, 4x, 9.2x).
- **Target Long Side (px)**: in alternativa, specifica la dimensione in pixel del lato più lungo desiderato (es. 2048, 3000, 4096).
- Se selezioni **Universal Upscale Distilled**, questi campi si disabilitano automaticamente e
il modello usa la scala nativa 9x.
4. **Genera / Upscale**: clicca su **Upscale Image** per ottenere l'immagine ad alta risoluzione.
> **Limite di scala testato / Tested scale limit**: 9.2x è il valore massimo del cursore
> ed il fattore di scala più alto raccomandato per questi pesi (la tabella completa del benchmark,
> fino a 10x, si trova nel model card del modello). Richieste oltre questo valore vengono riportate
> a 9.2x dal cursore; usando "Target Long Side" puoi comunque arrivare a 4096 px sul lato
> lungo.
## Caratteristiche principali / Features
- **Scale Arbitrarie (LIIF)**: Ingrandimento continuo a qualsiasi fattore o dimensione target senza vincoli rigidi (es. solo 2x/4x).
- **Tiled Inference**: Elaborazione a tasselli sovrapposti per gestire immagini ad alta risoluzione senza esaurire la memoria (OOM).
- **ZeroGPU Acceleration**: Supporto all'accelerazione hardware dinamica su Hugging Face Spaces.
## 📓 Colab per misure da cartellone / Billboard-size outputs
**Notebook su Google Drive:** <https://drive.google.com/file/d/14B1cu8vW4MFPqzPo-C7Nb4JfxZqFtcEI/view?usp=sharing> → aprilo in Colab e scegli *Runtime → Cambia tipo di runtime → GPU (T4)*.
Il notebook usa il **modello base** pubblicato qui (`model_scripted.pt`, scaricato con `hf_hub_download`): **nessun retraining, nessun fine-tuning, nessun peso aggiuntivo**. Quello che aggiunge è il contorno: l'immagine viene divisa in una griglia **N×N di settori**, ogni settore viene ingrandito dal modello con un margine di contesto preso dai settori vicini (così le cuciture non si vedono), i settori vengono ricuciti in un'unica tela e, se la misura richiesta è ancora fuori portata, l'intero passaggio viene ripetuto sulla tela fino a raggiungere esattamente la misura voluta.
**Grazie a questa implementazione il notebook può ingrandire un'immagine di qualunque risoluzione** (misure da cartellone, non solo 4K): il limite non è il modello, ma la macchina su cui gira.
| Risorsa / Resource | Cosa limita |
|---|---|
| **GPU VRAM** | la dimensione di un singolo settore (default 4096 px per lato in uscita) |
| **GPU compute power** | il tempo totale: ogni settore è una forward pass e ogni passaggio extra riesegue l'intera griglia |
| **System RAM** | la tela ricucita tenuta in memoria (default 300 megapixel ≈ 3 byte/pixel, Colab free ≈ 12 GB) |
| **SSD storage space** | l'output salvato più i file opzionali dei singoli settori; il disco di Colab è temporaneo, scarica prima di chiudere il runtime |
> ⚠️ Oltre **9.2x** i dettagli sono in gran parte **inventati**: ogni passaggio reinterpreta il risultato del precedente, quindi l'immagine diventa più grande ma non più fedele. Controlla le anteprime intermedie.