Runway Ruby: SDR-видео в HDR — разбор модели и её форматов

Runway Ruby: SDR-видео в HDR — разбор модели и её форматов

21 августа Runway выпустила Ruby — модель, которая ничего не генерирует. Она берёт готовый SDR-ролик и раскладывает его яркость в HDR: сохраняет исходные пиксели и звук, ничего не перерисовывает, а расширяет люму и цвет в HDR-диапазон. На вход годится и свой загруженный файл, и результат любой другой модели Runway. Доступ — на тарифах Max и Enterprise, плюс отдельная ручка в API.

Публичной беты не было: модель появилась сразу в продукте и сразу в API. Основатель Runway Кристобаль Валенсуэла назвал её одной из самых ожидаемых фич почти за восемь лет существования компании — и вот с этим спорить не хочется: запрос на нормальный HDR-выход копился у всех, кто отдаёт AI-видео в реальный монтаж, а не в сторис. А вот формулировка «converts SDR video up to 16-bit HDR» звучит эффектнее, чем то, что происходит на самом деле.

Что Ruby делает на самом деле

В документации API формулировка честнее пресс-релиза: выход «сохраняет пиксели источника — люма и цвет расширяются в HDR-диапазон, ничего не пересинтезируется». То есть это не генеративная перерисовка кадра, а очень аккуратный нейросетевой inverse tone mapping: модель смотрит на яркостную структуру кадра и раскатывает 8-битный SDR в HDR headroom, стараясь не поехать по цвету.

Разница принципиальная. Генеративный апскейл придумывает детали и может придумать их неправильно — лицо поплывёт, текстура станет пластиковой. Ruby с содержимым кадра работать не должен вовсе, поэтому и ошибается иначе: не «нарисовал не то», а «неверно оценил, куда эта область должна уехать по яркости».

Абстрактная визуализация расширения яркостного диапазона: узкая полоса света раскрывается в широкий градиент

16 бит, которые не те 16 бит

Вот здесь и стоит притормозить. «До 16-bit HDR» в анонсе относится прежде всего к EXR-выходу, а EXR у Runway — half-float: 16-битное число с плавающей точкой на канал, а не 65 536 равномерных целочисленных уровней.

Float16 — это знак, 5 бит экспоненты и 10 бит мантиссы. Он даёт огромный охват по яркости и примерно постоянную относительную точность на любом уровне сигнала, поэтому в композе и грейдинге это правильный формат. Но «16 бит» тут — про представление числа, а не про количество измеренной информации.

А информации в источнике ровно столько, сколько было в 8-битном SDR. Всё, что оказалось в HDR-выходе сверх этого, модель достроила. Ruby не возвращает выбитые света: если небо в исходнике ушло в 255 и стало плоским белым, никакой inverse tone mapping не знает, что там было — облако или солнце. Он знает только, что эту область правдоподобно поднять повыше по яркости.

Отсюда и главный практический вопрос к модели: насколько правдоподобно.

Четыре формата на выходе

Ruby отдаёт четыре профиля, и они закрывают разные концы пайплайна:

  • hdr_exr_sequence — zip с последовательностью half-float OpenEXR-кадров. Внутри линейный BT.2020 в display light со шкалой «1.0 = 100 нит», рядом сайдкары colorimetry.json и provenance.json (последний прямо декларирует, что это апконверт), плюс audio.wav, если в источнике был звук. Вариант для Nuke, Fusion и Resolve, где мастеринг ты делаешь сам.
  • hdr_prores — ProRes .mov, BT.2020 + PQ, тир на выбор: 422, 422 HQ (по умолчанию) или 4444. Классический editorial mezzanine, который монтажка примет без разговоров.
  • hdr10 — HEVC Main 10, BT.2020 + PQ, .mp4. Профиль по умолчанию и почти готовый delivery для HDR-телевизора и YouTube.
  • hlg — тот же HEVC Main 10, но с HLG-кривой. Это для broadcast, где нужна обратная совместимость с SDR-приёмником.

provenance.json, который помечает файл как апконверт, — мелочь, но правильная: через полгода никто не вспомнит, откуда взялся HDR-мастер, а метаданные вспомнят.

И тут же обещанный нюанс документации. Анонс говорит про «10- и 12-bit ProRes и HEVC», но в API-схеме оба HEVC-профиля — Main 10, то есть строго 10 бит. Двенадцать бит в этом наборе живут ровно в одном месте: ProRes 4444. Так что «12-bit» — это максимальная глубина одного конкретного экспорт-профиля, а не характеристика модели.

При этом сильная сторона релиза — именно здесь: Ruby выдаёт не только «EXR для технарей», но и сразу практические master- и delivery-форматы. У генеративных видеомоделей выход обычно заканчивается 8-битным mp4, и всё, что дальше, — твои проблемы.

Лимиты и цена

По API-схеме вход — SDR-ролик не длиннее 30 секунд, тот же лимит был и в анонсе интерфейса. Ограничения по разрешению в схеме эндпоинта нет: апконверт отдаётся в разрешении источника, а вот тарификация от размера кадра зависит.

Стоит Ruby 20 кредитов за секунду выхода, и 40 кредитов за секунду, если источник больше 4 мегапикселей (примерно 4K). Кредит в девелоперском портале — $0,01, то есть 30-секундный ролик обойдётся в $6, а тот же ролик в 4K — в $12.

Цифра становится интереснее в сравнении. Генерация секунды видео в Gen-4.5 стоит 12 кредитов, в Aleph 2 — 28. Получается, перекладка готового ролика в HDR дороже, чем его генерация: 20 против 12. Формально понятно — считать приходится каждый кадр в исходном разрешении, а не в модельном. Но психологически это ломает привычную иерархию «генерация дорогая, постобработка дешёвая», и в смете на серию роликов такой множитель заметен.

По входу действуют общие лимиты API: 32 МБ для файла по ссылке, 16 МБ для data URI и 200 МБ для загрузки через Runway.

Абстрактный кадр колорист-грейдинга: тёмная сцена с яркими точечными источниками света

Первые отзывы: пока не данные, а впечатления

Содержательный негативный отклик уже появился: пользователь пишет, что в полученном EXR всё ещё видит заметный бэндинг, а в тенях и светах не возникает ожидаемого объёма информации — по его впечатлению это больше похоже на качественное расширение диапазона, чем на реконструкцию 16-битного материала.

Если это подтвердится, вывод любопытный. Бэндинг в half-float EXR не может быть артефактом квантования самого контейнера — точности float16 хватает с запасом. Значит, полосы приезжают из источника: это те самые 8-битные ступеньки, растянутые на больший диапазон. Шкалу раздвинули, промежутки между уровнями не заполнили.

Оговорюсь: это один отзыв и моё рассуждение о его механике, а не результат теста. Нормального A/B пока никто не выложил. На Reddit обсуждение Ruby только началось, и там в основном спрашивают одно и то же: кто уже сравнил его с Topaz.

Что это меняет

Ближайший конкурент у Ruby и правда есть — Topaz Hyperion 2.5, который делает то же самое: inverse tone mapping из Rec.709 в BT.2100 PQ с 10-битным ProRes и 16-битным float EXR на выходе. Topaz при этом прямым текстом пишет, что «ничего не генерирует и не добавляет разрешения», и продаётся по подписке от $9 в месяц.

Разница не в самой задаче, а в том, где она стоит. Topaz — десктопная утилита в конце пайплайна: сгенерировал где-то, скачал, прогнал. Ruby живёт внутри Runway, принимает результат генерации напрямую и вызывается одной ручкой API. Для студии, которая собирает конвейер, это меняет не качество картинки, а количество шагов и людей между генерацией и мастером.

Второй сдвиг легче не заметить. До сих пор AI-видео жило в 8 битах и по умолчанию считалось контентом для веба. Штатный выход в ProRes 4444 и EXR меняет разговор с монтажёром: это уже не «нейросетевой ролик», а исходник в формате, который принимает любой профессиональный пайплайн. Качество всё равно придётся смотреть глазами на референсном мониторе — но раньше смотреть было нечего.

Проверить это по чужим публикациям, кстати, не выйдет: страница блога, которую ты сейчас читаешь, отдаётся в SDR, и любой «пример HDR» здесь превратится в тонмапленную обратно картинку. Оценивать Ruby имеет смысл только на своём материале и своём мониторе.

Где попробовать Runway

Ruby в каталоге GPTunneL пока нет. Но задачу мы считаем правильной: SDR → HDR планируем завести отдельным шагом в воркфлоу — там, где ролик и так генерируется на холсте, конверсия в HDR логично встаёт следующим блоком, без выгрузки файла в стороннюю утилиту.

Что из Runway доступно прямо сейчас, без VPN и с оплатой в рублях:

  • Runway 4.5 — актуальное поколение генерации, 26 ₽ за секунду ролика;
  • Runway Aleph 2 — редактирование готового видео, 50 ₽ за секунду;
  • Runway Act-Two — перенос актёрской игры на персонажа, 10 ₽ за секунду.

Подписка не нужна, платишь за секунды готового видео; точный расчёт под свою длительность — в калькуляторе на странице цен.

Частые вопросы о Runway Ruby

Ruby генерирует видео? Нет. Это модель грейдинга: она принимает готовый SDR-ролик и расширяет его яркостный диапазон до HDR, сохраняя исходные пиксели и звук.

Какая максимальная длина ролика? 30 секунд по схеме API. Разрешение не ограничено — выход отдаётся в разрешении источника, но выше 4 мегапикселей тариф удваивается.

Правда ли на выходе 16 бит? В EXR — да, но это half-float: 16-битное число с плавающей точкой на канал, а не 65 536 целочисленных уровней. И информация в этих битах достроена моделью, а не измерена камерой.

Чем Ruby отличается от Topaz Hyperion? Задача та же — inverse tone mapping. Отличие в размещении: Topaz — десктопное приложение по подписке, Ruby — ручка API внутри Runway, которая принимает результат генерации без выгрузки файла.

Есть ли Ruby в GPTunneL? Пока нет: на старте модель открыта только на тарифах Max и Enterprise у Runway. Сам шаг SDR → HDR мы планируем добавить в воркфлоу, а генерация в Runway 4.5 и редактирование в Aleph 2 доступны в лаборатории уже сейчас.

Ruby стоит мерить не по слову «16-bit» в анонсе, а по тому, что он избавляет от ручного грейда на выходе из генерации. Возврата выбитых светов от него ждать не надо, честного A/B с Topaz — надо, и он рано или поздно появится.

Новые модели у нас включаются в день открытия API. Следи за блогом и телеграм-каналом.