ComfyUI-VOSR2: одношаговый апскейлер VOSR 2.0 для ComfyUI
Узлы для VOSR 2.0: одношаговая модель суперразрешения на 1.4B с VAE Qwen-Image и DINOv2, автоматической загрузкой весов и плиточным увеличением в 4 раза.
Что такое VOSR 2.0
VOSR 2.0: одношаговая модель суперразрешения, собранная из трёх фиксированных компонентов: backbone LightningDiT, Qwen-Image 2D VAE в качестве латентного пространства и энкодер изображений DINOv2-L для условия. Это генеративная модель, а не классический проход «изменить размер и повысить резкость», поэтому она способна восстанавливать структуры, которых буквально нет во входном изображении низкого разрешения: глифы текста, черты лиц и края зданий.
Сравнение из карточки модели на примерах тонких структур и мелкого текста, где, согласно статье, VOSR 2.0 показывает лучшие результаты.
Поскольку все компоненты относятся к одному обученному набору, пакет узлов рассматривает их как bundle: DiT работает только с тем Qwen 2D VAE, на котором он обучался, и энкодер изображений подбирается так же. Отдельных входов для VAE или энкодера, которые можно было бы заменить, нет.
Два узла
Оба узла находятся в image/upscaling/VOSR2:
| Узел | Класс | Назначение |
|---|---|---|
| VOSR 2.0 Model Loader | VOSR2ModelLoader | Загружает папку bundle и возвращает VOSR2_MODEL, чтобы изображения в очереди не пересобирали веса заново |
| VOSR 2.0 Upscale | VOSR2Upscale | Выполняет одношаговое суперразрешение для пакета изображений |
Узел увеличения разрешения принимает множитель upscale (по умолчанию 4, без верхнего предела), seed для латентного шума, где элемент пакета i использует seed + i, режим color_alignment (wavelet, adain или none), который выполняет постобработку относительно бикубической цели, и отдельные элементы управления плиточной обработкой для DiT и VAE.
После 512px плиточная обработка обязательна
Вот что стоит прочитать перед тем, как ставить задачу в очередь: VOSR 2.0 изначально обучался на изображениях размером до 512 px, поэтому если результат увеличения превышает 512x512, необходимо задать tile_size (в документации указано значение 512), иначе качество ухудшится. Для выходов, заметно превышающих 1024 px, также следует задать vae_tile_size, около 1024, иначе декодирование VAE всего изображения, скорее всего, исчерпает память.
![]() | ![]() |
|---|---|
| Вход низкого разрешения с мелким текстом | Выход VOSR 2.0 |
Загрузчик сверяет args.json с фиксированной архитектурой VOSR 2.0, прежде чем что-либо собирать, поэтому несовместимый checkpoint завершается понятной ошибкой вместо частичной загрузки. Любая папка bundle с args.json, помещённая в models/vosr2/, появляется в выпадающем списке моделей, но автоматически скачивается только VOSR2.
Рабочий процесс
Пример рабочего процесса: две пары «загрузчик и увеличение разрешения», благодаря чему загруженный bundle не участвует в обработке каждого изображения.
Доступность
Клонируйте ylchen333/ComfyUI-VOSR2 в ComfyUI/custom_nodes и перезапустите. Требуется ComfyUI с недавней версией PyTorch; пакет проверяет это заранее, поэтому старая среда выдаёт одну понятную ошибку вместо исчезновения из списка узлов.
При первом запуске загрузчик скачивает все отсутствующие компоненты из закреплённого репозитория CSWRY/VOSR в bundle models/vosr2/VOSR2/ и в дальнейшем пропускает загрузку. Файл DINOv2-L в этом репозитории представляет собой сырой PyTorch pickle; загрузчик автоматически конвертирует его в safetensors, а в README описана ручная конвертация для офлайн-установки.


Комментарии
Войдите через GitHub, чтобы участвовать в обсуждении.