ComfyUI-VOSR2 trae el upscaler VOSR 2.0 de un solo paso a ComfyUI
Nodos de la comunidad para VOSR 2.0: superresolución de 1.4B en un paso con VAE de Qwen-Image y DINOv2, descarga automática de pesos y ampliación 4x por mosaicos.
Qué es VOSR 2.0
VOSR 2.0 es un modelo de superresolución de un solo paso construido a partir de tres piezas fijas: un backbone LightningDiT, el VAE 2D de Qwen-Image como espacio latente, y un codificador de visión DINOv2-L para el acondicionamiento. Es generativo en lugar de un clásico proceso de redimensionar y enfocar, por lo que puede reconstruir estructura que no está literalmente presente en la entrada de baja resolución, como glifos de texto, rasgos faciales y bordes de edificios.
Comparación de la model card en estructuras finas y texto pequeño, donde el artículo posiciona a VOSR 2.0 como el más potente.
Como las piezas pertenecen a un único conjunto entrenado, el paquete de nodos las trata como un bundle: el DiT solo funciona con el VAE 2D de Qwen con el que fue entrenado, y el codificador de visión se empareja de la misma forma. No existe una entrada separada de VAE o codificador que se pueda intercambiar.
Los dos nodos
Ambos nodos se encuentran en image/upscaling/VOSR2:
| Nodo | Clase | Rol |
|---|---|---|
| VOSR 2.0 Model Loader | VOSR2ModelLoader | Carga una carpeta de bundle y devuelve un VOSR2_MODEL, de modo que las imágenes en cola no reconstruyen los pesos |
| VOSR 2.0 Upscale | VOSR2Upscale | Ejecuta la superresolución de un solo paso sobre un lote de imágenes |
El nodo de ampliación acepta un multiplicador upscale (por defecto 4, sin límite), una seed para el ruido latente donde el elemento i del lote usa seed + i, un modo color_alignment (wavelet, adain o none) que posprocesa con respecto al objetivo bicúbico, y controles separados de mosaico para DiT y VAE.
El mosaico no es opcional por encima de 512px
Esta es la parte que conviene leer antes de poner un trabajo en cola: VOSR 2.0 se entrenó de forma nativa hasta 512 px, así que siempre que la salida ampliada supere los 512x512 hay que establecer tile_size (512 es el valor documentado) o la calidad se degrada. Para salidas muy por encima de 1024 px, también debería establecerse vae_tile_size, en torno a 1024, de lo contrario la decodificación VAE de la imagen completa probablemente se quedará sin memoria.
![]() | ![]() |
|---|---|
| Entrada de baja resolución con texto pequeño | Salida de VOSR 2.0 |
El cargador valida args.json contra la arquitectura fija de VOSR 2.0 antes de construir nada, por lo que un checkpoint incompatible falla con un mensaje claro en lugar de cargarse parcialmente. Cualquier carpeta de bundle con un args.json situada bajo models/vosr2/ aparece en el desplegable de modelos, pero solo VOSR2 se descarga automáticamente.
Flujo de trabajo
Flujo de trabajo de ejemplo: dos pares de cargador y ampliación, manteniendo el bundle cargado fuera de la ruta por imagen.
Disponibilidad
Clona ylchen333/ComfyUI-VOSR2 en ComfyUI/custom_nodes y reinicia. Requiere ComfyUI con un PyTorch reciente, y el paquete lo comprueba de antemano para que un entorno antiguo registre un error claro en lugar de desaparecer de la lista de nodos.
En la primera ejecución, el cargador descarga cualquier pieza faltante desde el repositorio fijado CSWRY/VOSR a un bundle models/vosr2/VOSR2/ y omite la descarga después. El archivo DINOv2-L de ese repositorio es un pickle de PyTorch sin procesar; el cargador lo convierte automáticamente a safetensors, y el README documenta la conversión manual para instalaciones sin conexión.


Comentarios
Inicia sesión con GitHub para unirte a la conversación.