ManzGPU

Reescala imágenes (Upscaler)

Hype-Generator 3000™: It's a game-changer

Aprende a utilizar upscayl-bin para reescalar y mejorar la calidad de imágenes desde la línea de comandos con modelos Real-ESRGAN.

1. Introducción

El upscaling (reescalar por super-resolución) es una técnica que permite aumentar el tamaño de una imagen inventando los detalles que faltan mediante inteligencia artificial (reconstruyendo texturas, bordes y detalles de forma mucho más natural), en lugar de limitarse a estirar los píxeles existentes como haríamos con un redimensionado tradicional (con resultados borrosos).

Redimensionar imagen con IA local

La herramienta que vamos a utilizar se llama upscayl-bin, una utilidad de línea de comandos (CLI) del proyecto Upscayl. Internamente utiliza modelos como Real-ESRGAN sobre el framework ncnn y aceleración por Vulkan, lo que le permite aprovechar la GPU (Nvidia, AMD o Intel) de forma muy eficiente y totalmente en local, sin enviar nada a la nube.

El flujo de trabajo es muy sencillo: una imagen de entrada (o una carpeta con varias), un modelo de reescalado y una imagen de salida con mayor resolución:

Imagen pequeña upscayl-bin Modelo Imagen reescalada

A lo largo de la guía nos centraremos en la utilidad de línea de comandos upscayl-bin, muy útil para crear scripts o workflows personalizados. Al final de la guía mencionaremos que también existe una aplicación gráfica (GUI) oficial de Upscayl por si prefieres una interfaz visual.

2. Instalación

El ejecutable upscayl-bin se distribuye como parte del proyecto Upscayl y se puede encontrar en el repositorio de GitHub upscayl-ncnn. En él, en la sección de releases sólo tenemos que descargar y descomprimir el fichero apropiado para nuestro sistema operativo.

En el caso de Windows se trata de un simple archivo .exe, mientras que en Mac y Linux se trata de un sólo fichero binario.

Consejo: Para no tener que escribir la ruta completa cada vez, puedes añadir la carpeta bin a tu variable de entorno PATH, o crear un alias / script que apunte al ejecutable. A partir de aquí, asumiremos que el comando upscayl-bin está disponible.

3. Descarga de modelos

Sin embargo, el fichero upscayl-bin anterior es el binario (ejecutable) para hacer el escalado. También necesitamos un modelo que será el que sabe redimensionar la imagen, y del que dependerá la calidad del reescalado.

Los modelos de reescalado son redes neuronales entrenadas para diferentes tipos de imágenes. Tienes los modelos en el repositorio custom-models y colocarlos junto a tu binario en una carpeta models/. Cada modelo se compone de dos ficheros: un .param (arquitectura) y un .bin (pesos). Para usar un modelo solo hay que indicar su nombre (sin extensión) con el parámetro -n, como veremos más adelante.

Estos son los modelos que puedes encontrar y en que situaciones son ideales:

ModeloEspecializado para...
4x_NMKD-Siax_200k Fotos y contenido general
4x_NMKD-Superscale-SP_178000_G Fotos del mundo real
4xHFA2k Anime o ilustraciones
4xLSDIR* Fotografías
4xNomos8kSC Uso general
realesr-animevideov3 Video anime
RealESRGAN_General_* Fotos y contenido general
uniscale_restore Restauración de fotos dañadas
unknown-2.0.1 Modelo experimental

Modelos personalizados

Además de los incluidos, puedes utilizar modelos propios o de terceros siempre que estén en formato .param / .bin (ncnn de Real-ESRGAN). Solo tienes que:

  1. Buscar modelos compatibles con NCNN, como HuggingFace
  2. Descargar los ficheros .param y .bin.
  3. Colocarlos en la carpeta models/ (o donde prefieras).
  4. Indicar la carpeta con -m y el nombre con -n mi-modelo.

También existen comunidades (como OpenModelDB) donde encontrarás cientos de modelos Real-ESRGAN/ncnn listos para usar, especializados en todo tipo de estilos.

4. Uso básico

La sintaxis mínima de upscayl-bin es la siguiente:

upscayl-bin -i imagen_entrada.png -o imagen_salida.png [opciones]

Aquí ya estamos utilizando parámetros básicos:

  • -i es la imagen original que queremos escalar.
  • También podemos indicar una carpeta con -i, y lo hará con todas las imágenes de su interior.
  • -o es la imagen final (o la carpeta)
  • Si no indicamos ningún modelo, buscará uno en models/ llamado realesrgan-x4plus

Por ejemplo, para reescalar una foto con el modelo por defecto, sería así:

upscayl-bin -i foto.png -o foto_4x.png

Como vimos antes, si queremos usar un modelo concreto, indicamos la carpeta de modelos y el nombre:

upscayl-bin -i foto.png -o foto_4x.png -m models/ -n 4x_NMKD-Siax_200k

Para hacerte una idea del resultado, arrastra el divisor de la siguiente demostración para comparar la imagen reescalada (izquierda) con la original de baja resolución (derecha):

Original 4x NMKD Siax 200k 4x NMKD Superscale SP 178000G 4xHFA2k 4xLSDIR 4x LSDIR Compact C3 4x LSDIR plus C 4x Nomos 8k SC realesr anime video v3 x4 RealESRGAN General WDN x4 v3 RealESRGAN General x4 v3 uniscale restore unknown 2.0.1

En la parte inferior puedes elegir los diferentes modelos, para comparar las diferencias.

5. Parámetros y opciones

A continuación tienes una referencia completa de las opciones más útiles de upscayl-bin:

ParámetroDescripciónEjemplo
-i Imagen o carpeta de entrada (jpg/png/webp). -i foto.png
-o Imagen o carpeta de salida. -o salida.png
-n Nombre del modelo a usar (sin extensión). -n realesrgan-x4plus-anime
-m Carpeta donde se encuentran los modelos. -m models/
-s Escala de salida personalizada (2, 3 o 4). -s 4
-z Escala según el modelo (2, 3 o 4, por defecto 4). -z 4
-f Formato de salida: jpg, png o webp. -f png
-c Nivel de compresión (0-100, mayor = más pequeño). -c 20
-t Tamaño de tile (>=32, 0=auto). Útil en GPUs antiguas. -t 0
-g ID de la GPU a utilizar (auto, 0, 1...). -g 0
-j Hilos de carga:proceso:guardado. -j 1:2:2
-r Redimensiona la salida a WxH:filtro. -r 1920x1080:catmullrom
-w Redimensiona la salida a un ancho concreto. -w 1920
-x Activa el modo TTA (mejor calidad, más lento). -x
-v Muestra información detallada del proceso. -v

Algunos ejemplos prácticos:

# Reescalar una ilustración 4x con el modelo anime y compresión ligera
upscayl-bin -i arte.png -o arte_4x.png -n realesrgan-x4plus-anime -f png -v

# Reescalar una foto, forzar escala 2x y dejarla en JPG con compresión 15
upscayl-bin -i foto.jpg -o foto_2x.jpg -s 2 -f jpg -c 15

# Usar una GPU concreta y un tile pequeño para ahorrar VRAM
upscayl-bin -i foto.png -o foto_4x.png -g 0 -t 64

# Modo TTA (Test Time Augmentation): más calidad, varias veces más lento
upscayl-bin -i foto.png -o foto_4x.png -x

TTA (-x): Realiza variaciones de la imagen y las combina para mejorar la calidad en zonas difíciles, pero multiplica el tiempo de procesado. Úsalo solo cuando la calidad sea prioritaria frente a la velocidad.

Observa que el parámetro -r sirve para redimensionar la imagen con post-procesamiento para obtener una resolución específica. Con esta opción se pueden hacer redimensionados tradicionales con diferentes algoritmos:

AlgoritmoIdeal para...
default Automático. Upscayl decide según el caso.
box Reducir imágenes (downscale)
triangle Upscale suave. Rápido, para previsualizaciones
cubicbspline Reducir sin aliasing, fotos con mucho ruido
catmullrom Upscale preservando detalles finos
mitchell Uso general, buen equilibrio
pointsample Pixel art, conserva dientes de sierra

6. Reescalado con sd.cpp (sd-cli)

Si ya utilizas Stable Diffusion CPP, su utilidad sd-cli también incorpora un modo de reescalado basado en ESRGAN, muy cómodo para mejorar imágenes que acabas de generar sin salir de la misma herramienta.

El modo se activa con -M upscale y se le indica el modelo ESRGAN con --upscale-model:

sd-cli -M upscale \
  -i imagen.png \
  -o imagen_4x.png \
  --upscale-model modelos/RealESRGAN_x4plus.pth \
  --upscale-repeats 1 \
  --upscale-tile-size 128

Principales parámetros relacionados:

ParámetroDescripción
--mode upscale Activa el modo de reescalado (en lugar de generar imagen).
-i / -o Imagen de entrada y de salida.
--upscale-model Ruta al modelo ESRGAN (formato .pth, de Real-ESRGAN).
--upscale-repeats Veces que se aplica el reescalado (2 = x16 con un modelo x4).
--upscale-tile-size Tamaño de tile para el procesado (por defecto, 128).

Los modelos ESRGAN para sd.cpp son los mismos de Real-ESRGAN en formato .pth, disponibles en las releases oficiales de Real-ESRGAN. Además, sd.cpp puede usar el reescalador como parte de la generación (hires fix): si cargas un modelo con --esrgan-path junto a un modelo de difusión, la imagen se reescala automáticamente al final del proceso.

Recuerda: upscayl-bin está especializado y optimizado únicamente para reescalado, con muchos más modelos y opciones (TTA, multi-GPU, formatos...). sd-cli es útil si ya generas imágenes con él y te basta con un reescalado general y prefieres no usar más herramientas.

7. Alternativas

Existen otras herramientas de reescalado por IA que puedes valorar según tus necesidades:

HerramientaTipoNotas
chaiNNer GUI por nodos Muy potente y extensible, soporta decenas de modelos y formatos.
Real-ESRGAN CLI / librería Implementación de referencia en Python. Requiere entorno Python + PyTorch.
waifu2x CLI / web Especializado en anime e ilustraciones.
ComfyUI GUI por nodos Nodos de upscale (4xUltraSharp, etc.) integrados en flujos de generación.
CupScale GUI Interfaz sencilla basada en las mismas redes ncnn.

Como mencionamos al principio, upscayl-bin es la versión de línea de comandos del proyecto Upscayl. Si en algún momento prefieres una experiencia visual, el mismo proyecto ofrece Upscayl, una aplicación gráfica (GUI) de código abierto, multiplataforma y muy sencilla de usar: seleccionas la imagen, eliges el modelo en un desplegable, pulsas un botón y obtienes el resultado.

La GUI utiliza exactamente el mismo motor (upscayl-bin) por debajo, por lo que la calidad del resultado es idéntica. Es una excelente opción para usuarios menos familiarizados con la terminal, mientras que la CLI brilla cuando necesitas automatizar procesos, procesar grandes lotes de imágenes mediante scripts o integrarlo en flujos de trabajo.