RelayVSR X2: 2x-апскейлер видео, обученный на клипах H3
Команда LightX2V переобучила RelayVSR для нативного 2x суперразрешения видео: 45 FPS на H100, подавление мерцания и два чекпойнта.
scripts/relayvsr из LightX2V, а узла ComfyUI для неё пока нет.
Клип H3 в 768x1344 чисто удваивается до 1536x2688, что является обычным финальным разрешением. RelayVSR умела только 4x, поэтому тот же клип уходил в 3072x5376 и оплачивал вчетверо больше пиксельной работы ради выхода, который большинству кадров не нужен. X2 считает на 2x вместо того, чтобы считать на 4x и затем уменьшать.
Сначала мерцание, потом резкость
Модели суперразрешения склонны усиливать слабое временное мерцание, которое уже есть в сгенерированном видео, поэтому увеличенный клип в движении может выглядеть хуже источника, даже если отдельные кадры выглядят резче. Дизайн RelayVSR нацелен именно на это: большая генеративная модель записывает референсные латенты только для разреженных ключевых кадров, а небольшая сеть VSR переносит эти референсы на каждый кадр, с ограниченным упреждением и кольцевым KV-кэшем кадров в реализации LightX2V.
Входные данные опубликованного бенчмарка сами по себе являются выходом H3: клип с дрона над крышей 1024x768 при 24 fps с небольшим уже имеющимся мерцанием. Поэтому сетка сравнения показывает именно тот случай, под который обучалась модель, а не чистую съёмку с камеры.
Два чекпойнта, один масштаб
Релиз X2 поставляется двумя файлами, которые нужно скачать в один и тот же каталог:
wan_x2.safetensors(10.1 ГБ): чекпойнт на базе Wan, который генерирует референсы для разреженных ключевых кадров.flash_x2.safetensors(127 МБ): компактный условный декодер, который повышает разрешение оставшихся кадров.
Раннер LightX2V проверяет масштаб и архитектуру и отклоняет смешанные веса 2x и 4x, вместо того чтобы загрузить несовместимую пару. Размер выхода не является пользовательской настройкой: он следует за размерами входа и sr_ratio, который для модели X2 должен быть равен 2. Старый чекпойнт 4x по-прежнему принимает sr_ratio=2, но внутри считает на 4x и затем уменьшает результат, и именно этих затрат призван избежать новый релиз.
Один и тот же кадр в размере отображения 960x720: источник H3, увеличенный в 2x бикубикой (сверху слева), RelayVSR X2 (сверху справа), FlashVSR+ Turbo (снизу слева) и Open-H3-Regenerate-2K (снизу справа). Кадры из опубликованных бенчмарк-клипов.
Замеры на одной H100
В карточке приводится один измеренный прогон на модель после прогрева на том же разрешении, последовательно на одной H100 80GB с PyTorch 2.11.0 и CUDA 13.0, на 243 кадрах 1024x768 при 24 fps:
- RelayVSR X2 (LightX2V): 5.348 с, 45.44 FPS, выход 2048x1536
- SwiftVR (LightX2V): 6.399 с, 37.98 FPS
- SwiftVR: 7.252 с, 33.51 FPS
- RelayVSR 4x (LightX2V): 19.304 с, 12.59 FPS, выход 4096x3072
- RelayVSR 4x: 26.332 с, 9.23 FPS, выход 4096x3072
- FlashVSR+ Turbo: 54.024 с, 4.50 FPS
- SeedVR2-3B: 352.820 с, 0.69 FPS
- Open-H3-Regenerate-2K: 784.954 с, 0.31 FPS
Это цифры с H100 для 10-секундного клипа. Статья об оригинальной модели 4x сообщает 29.29 FPS при 1080p на A100 с пиковым потреблением памяти 13.82 ГБ против 7.80 FPS и 24.447 ГБ у FlashVSR-Tiny, так что архитектура рассчитана на то, чтобы умещаться в одну GPU, а не на победу на бенчмарк-стенде.
Одно раннее измерение пользователя на Banodoco показывает разрыв в том же диапазоне на потребительском железе: JohnDopamine снял таймстемпы с прогона, где финальная стадия Relay заняла около 85 секунд, а FlashVSR+ показал 331 секунду (сообщение). Тот же клип, своя GPU и сетап, поэтому воспринимать это стоит как соотношение, а не как абсолютную скорость.
Как запустить
Вывод живёт в LightX2V, а не в отдельном пакете:
git clone https://github.com/ModelTC/LightX2V.git
cd LightX2V
hf download lightx2v/RelayVSR_X2 \
wan_x2.safetensors flash_x2.safetensors \
--local-dir ./models/RelayVSR_X2Укажите в scripts/relayvsr/run_relayvsr_x2_sr.sh путь к клону, весам, входному видео и GPU, оставьте --model_cls relayvsr_x2 с --config_json configs/relayvsr/relayvsr_x2.json и --sr_ratio 2, затем запустите скрипт из корня репозитория. Конфиг по умолчанию держит оба чекпойнта в памяти с включёнными компиляцией и прогревом; relayvsr_x2_block_offload.json выгружает блоки Wan для более жёсткой экономии VRAM, а relayvsr_x2_sp.json разделяет один клип между двумя GPU.
Для повторяющейся работы есть режим постоянно запущенного сервера: запустите python -m lightx2v.server --model_cls relayvsr_x2 --task sr, затем отправляйте путь входа, sr_ratio, путь выхода и seed на /v1/tasks/video/ для каждого клипа, чтобы веса загружались один раз.
Доступность
RelayVSR X2 это релиз LightX2V: Linux и GPU NVIDIA, запуск из CLI или через сервер, без опубликованного узла ComfyUI или обёртки и без пайплайна diffusers в репозитории. В changelog LightX2V указаны асинхронное кодирование и сохранение аудио источника, поэтому клип H3 сохраняет дорожку, с которой он был сгенерирован. Тем, кто хочет использовать это внутри графа, сейчас придётся самостоятельно обернуть раннер.
Комментарии
Войдите через GitHub, чтобы участвовать в обсуждении.