Как выбрать метрику качества видео под вашу задачу

Автор: Николай СапуновОбновлено: август 202613 мин чтения
Содержание статьи +

Кратко

Лучшей метрики качества видео не существует – есть лучшая метрика под конкретную задачу, и именно задачу нужно выбрать первой. Регресс-гейт, сравнение энкодеров, отчёт о доставленном качестве, лайв-поток и академическая публикация хотят разных метрик или панели метрик, потому что каждый задаёт свой вопрос. Правило, которое выживает в любом случае: начните с вопроса, на который нужен ответ, решите, есть ли у вас вообще исходник для сравнения, и выберите самую дешёвую метрику, что отвечает на вопрос честно, – и читайте её с указанием модели, пулинга и доверительного интервала. Эта статья сопоставляет частые задачи с правильной метрикой, показывает компромиссы и даёт инструмент выбора, чтобы определиться меньше чем за минуту.

Почему это важно

С метриками вы уже знакомы – PSNR, SSIM и VMAF – и умеете их считать. Большинство команд спотыкается не на вопросе что такое каждая метрика, а на вопросе какую взять прямо сейчас, под решение перед глазами. Эта статья – для лида по кодированию, выбирающего кодек, для QA-инженера, строящего регресс-гейт, для стриминг-инженера, докладывающего доставленное качество, и для продукт-оунера, кому надо доверять числу на дашборде. Возьмёте не ту метрику – и оптимизируете не то: выкатите энкодер, который «победил по PSNR», но выглядит хуже, или завалите релиз, который зритель бы принял. Выбрать правильно не стоит ничего сверху и убирает целый класс дорогих ошибок.

Лучшей метрики нет – есть лучшая под вопрос

Начнём с идеи, которая всё расставляет по местам. Метрика качества – это не вердикт о видео; это ответ на один узкий вопрос. PSNR – Peak Signal-to-Noise Ratio, число, сравнивающее два кадра пиксель за пикселем и докладывающее их разницу в децибелах, – отвечает на «насколько расходятся пиксели?». SSIM – Structural Similarity Index, сравнивающий локальную яркость, контраст и структуру по шкале 0–1, – отвечает на «сохранена ли структура?». VMAF – Video Multimethod Assessment Fusion, метрика Netflix по шкале 0–100, обученная на оценках людей, – отвечает на «как оценил бы это зритель в известных условиях?». Это разные вопросы, поэтому метрики не конкуренты в одной турнирной таблице. Это разные инструменты.

Ошибка – спрашивать «какая метрика точнее?», будто точность есть одно свойство. Напольные весы точнее рулетки для веса и бесполезны для длины; ни те ни другая не «лучше». Правильный вопрос: «что мне нужно узнать и какой самый дешёвый инструмент скажет это честно?». Всё ниже – способ ответить на этот вопрос для задач, с которыми вы реально сталкиваетесь.

Рисунок 1. Единого победителя нет. Каждая метрика разменивает перцептивную точность на стоимость и на то, что ей нужно – исходник, модель или ничего. Правильный выбор зависит от задачи, а не от рейтинга.

Первая развилка: а есть ли у вас исходник?

Прежде чем важна задача, один факт решает половину вопроса: есть ли у вас чистый исходник для сравнения? Это разделение на full-reference, reduced-reference, no-reference, и это твёрдая стена, а не предпочтение.

Полнореференсной метрике – а PSNR, SSIM, MS-SSIM и VMAF все таковы – нужно исходное неискажённое видео рядом с искажённым, выровненное по кадрам, чтобы измерить разницу. Если вы кодируете мастер-файл в пайплайне, которым управляете, исходник у вас есть, и доступны все метрики. Если вы измеряете лайв-эфир, пользовательскую загрузку или поток, который видите только после доставки, исходника нет, и полнореференсная метрика просто неприменима – вычитать не из чего. Назвать VMAF на лайв-UGC без эталона – не слабое измерение, а невозможное. Для таких случаев нужна no-reference метрика, которая судит о качестве только по искажённому видео. Эту ветку целиком разбирает статья no-reference качество для лайва и UGC.

Поэтому первый вопрос никогда не «PSNR или VMAF?». Он – «есть ли у меня исходник?». Ответьте на него, и вы уже отсекли половину поля.

Задачи и метрика, которую хочет каждая

Когда вопрос с эталоном решён, метрику выбирает задача. Вот задачи, с которыми вы реально встретитесь.

Регресс-гейт – «изменилось ли что-то в пайплайне?»

Вы поменяли библиотеку, настройку или сервер и хотите знать, остался ли вывод идентичным заведомо хорошему эталону. Это задача регрессионного тестирования, и ей перцептивная метрика не нужна вовсе. Вы не спрашиваете «выглядит ли это хорошо?» – вы уже знаете, что эталон хорош, – вы спрашиваете «изменило ли это хоть что-то?». Самый дешёвый честный ответ – PSNR или даже хэш кадра. Слабость PSNR как перцептивной меры (она реагирует на любую пиксельную разницу, заметную или нет) здесь и есть её сила: она быстра, детерминирована и чувствительна к мельчайшему дрейфу. Падение с «бесконечности / идентичности» до любого конечного PSNR говорит, что вывод сдвинулся. Возьмите тут VMAF – и заплатите куда больше вычислений за ответ «да/нет», а её перцептивное сглаживание может скрыть малое, но реальное изменение.

Сравнение энкодеров или кодеков – «кто сжимает лучше при равном качестве?»

Вы сравниваете H.264 с HEVC и AV1 или x264 с SVT-AV1 и хотите знать, кто даёт то же качество за меньше бит. Это флагманский сценарий, ради которого VMAF и создавалась: она коррелирует с глазом куда лучше PSNR между кодеками и контентом. Но две оговорки решают, можно ли доверять вашему сравнению. Первая: используйте модель без выигрыша от улучшений, VMAF-NEG. Рекомендация Netflix прямая: для сравнения энкодеров NEG измеряет выигрыш от одного только сжатия и снимает выигрыш, который энкодер может «накрутить» резкостью или контрастом, иначе кодек «победит», обманув метрику (документация моделей Netflix VMAF, 2026; «Toward a Better Quality Metric», Netflix Tech Blog). VMAF-NEG включён по умолчанию в VMAF v1. Вторая: не сравнивайте одиночные оценки – сравнивайте кривые «битрейт-качество» и докладывайте экономию битрейта при равном качестве, BD-rate. А поскольку у метрик есть версии и выбор пулинга, меняющие результат, аккуратное сравнение кодеков использует панель и называет каждую настройку (Antsiferova et al., «Objective video quality metrics application to video codecs comparisons», 2021). Статья VMAF-NEG объясняет, почему модель по умолчанию обманываема, а NEG – нет.

Per-title и оптимизация лестницы – «какая лучшая точка битрейт-разрешение?»

Вы строите лестницу адаптивного битрейта и хотите разрешение и битрейт, что максимизируют качество на каждой ступени. Это тоже хочет VMAF, но используется иначе: вы считаете кривую «битрейт-качество» на каждое разрешение и оставляете точки на convex hull – внешней огибающей, где каждый лишний бит покупает больше всего качества. Задача метрики здесь – стабильно ранжировать кандидатов-энкоды, поэтому нужна одна названная модель VMAF, применённая одинаково к каждому кандидату. Механику построения лестницы разбирает раздел Video Encoding в статье про per-title кодирование; здесь же – как целевое качество ею управляет.

Отчёт о доставленном качестве – «что реально получил зритель?»

Вы хотите отчитаться о качестве, которое испытала аудитория, на классе устройств, где смотрела. Это хочет VMAF с явно названной правильной моделью: модель по умолчанию предполагает 1080p ТВ на расстоянии в три высоты экрана, телефонная модель предполагает сотовый экран и читается на несколько пунктов выше, а 4K-модель предполагает 4K ТВ на 1.5 высоты экрана (документация моделей Netflix VMAF, 2026). Доложить VMAF телефонной модели как ТВ-число – завысить качество. И поскольку зритель помнит худшие моменты, не докладывайте только среднее – пулингуйте по худшему случаю с нижним перцентилем, чтобы короткий плохой участок не спрятался. Отчёт о доставленном качестве – это «среднее 92, 5-й перцентиль 74, телефонная модель», а не голое «VMAF 92».

Лайв, UGC или что угодно без мастера – «насколько хорошо, если сравнить не с чем?»

Эталона нет – значит, нет PSNR/SSIM/VMAF. Нужна no-reference метрика, и для бэндинга конкретно CAMBI от Netflix (Contrast Aware Multiscale Banding Index) – это no-reference детектор, который можно запустить на доставленном сигнале. No-reference метрики менее зрелы, чем полнореференсные, и несут больше неопределённости, поэтому считайте их индикаторами и подтверждайте сложные случаи глазами. Дом этой ветки – статья no-reference качество для лайва и UGC.

Академическое или публикуемое сравнение – «выдержит ли это рецензию?»

Вы публикуете результат, поэтому планка – воспроизводимость и статистическая строгость, а не одно удобное число. Доложите панель объективных метрик и валидируйте их против корректно проведённого субъективного теста – глаз и есть эталон истины, который любая объективная метрика лишь приближает. Используйте признанные методы для субъективного теста (ITU-T P.910 и ITU-R BT.500) и признанную статистику для сравнения метрики с человеческими оценками: корреляции Пирсона и Спирмена и RMSE по процедуре из ITU-T P.1401. Опубликованное сравнение без субъективного якоря и этой статистики рецензию не пройдёт.

Бэндинг, зерно или тёмный контент – «главная метрика тут слепа»

Часть контента ломает метрику независимо от задачи. Плавное небо и градиенты бэндят так, что PSNR, SSIM и VMAF v0 этого едва замечают; плёночное зерно и плотная текстура путают полнореференсные метрики; тёмные и HDR-сцены прячут ошибки, которые глаз видит. Когда ваш контент из таких, добавьте специализированную проверку (CAMBI для бэндинга) или сместите субъективную выборочную проверку к сложным сценам. Полный каталог того, где врёт каждая метрика, – в статье где врут объективные метрики.

«Про звук: этот раздел измеряет качество видео. Если задача – качество звука (кодеки, громкость, речь), используйте аудио-метрики (PESQ, POLQA) из раздела Audio for Video, а не метрики с этой страницы.»

Таблица «задача → метрика»

Держите её рядом с пайплайном. Колонку «рекомендуется» читайте как отправную точку, а «осторожно» – как правило, что держит ответ честным.

ЗадачаЕсть исходник?Рекомендуемая метрикаПочемуОсторожно
Регресс-гейт по эталонуДаPSNR (или хэш кадра)Быстро, детерминированно, ловит любое изменениеНе перцептивна – про «изменилось?», не «как выглядит?»
Сравнение энкодеров / кодековДаVMAF-NEG + BD-rateСледует за глазом между кодеками; NEG не обманешьСравнивайте кривые, не оценки; указывайте модель + версию
Per-title / оптимизация лестницыДаVMAF (одна названная модель)Стабильно ранжирует кандидатов на convex hullПрименяйте одинаковую модель ко всем кандидатам
Отчёт о качестве / QoEДаVMAF (модель устройства) + худший пулСообщает, что получил класс устройства зрителяНазывайте phone/TV/4K; нижний перцентиль, не только среднее
Лайв / UGC, нет мастераНетNo-reference метрика (+ CAMBI для бэндинга)Единственный вариант без эталонаМенее зрелы; подтверждайте сложное глазами
Академическое / публикуемоеДаПанель + субъективный эталонВоспроизводимо, готово к рецензииНужен тест ITU-T P.910/BT.500 + статистика P.1401
Бэндинг / зерно / тёмный контентЛюбойДобавить CAMBI / субъективную проверкуГлавные метрики к этому слепыВысокий VMAF всё равно может скрыть бэндинг
Рисунок 2. Задача определяет метрику. Каждая строка связывает частую задачу измерения с метрикой, от которой стоит отталкиваться, и правилом, что держит ответ честным.

Разбор на примере: почему сравнению энкодеров нужно больше одного числа

Положим, вы сравниваете два энкодера на одном мастере, на 1080p, измеряя одинаковой названной моделью VMAF и одинаковым пулингом. Вы читаете две одиночные оценки:

Энкодер A : VMAF 93 при 5.0 Мбит/с
Энкодер B : VMAF 94 при 5.0 Мбит/с

Хочется объявить победителем B. Но оценка VMAF несёт доверительный интервал – модели 0.6.2 и 0.6.3 считают 95-процентный интервал бутстрэпом (документация моделей Netflix VMAF, 2026), и на типичном контенте он охватывает несколько пунктов. Если обе оценки лежат внутри интервала друг друга, «победа» в один пункт – это шум, а не результат. Честное сравнение фиксирует качество и читает вместо этого битрейт:

При равном качестве (VMAF 93):
   Энкодер A достигает его при 5.0 Мбит/с
   Энкодер B достигает его при 3.5 Мбит/с

   Экономия битрейта = (5.0 − 3.5) / 5.0
                     = 1.5 / 5.0
                     = 0.30
                     = на 30% меньше бит при том же качестве

Эти 30% – реальный, докладываемый результат: при равном качестве энкодеру B нужно на 30% меньше бит. Обобщённое на весь диапазон качества, а не на одну точку, это ровно то, что считает BD-rate. Урок для выбора метрики: для сравнения энкодеров полезная величина – экономия битрейта при равном качестве с её доверительным интервалом, а не одиночная оценка, разница в которой может быть внутри погрешности.

Рисунок 4. Сравнивайте кривые, а не одиночные числа. При равном качестве (VMAF 93) энкодер B достигает цели на 3.5 Мбит/с против 5.0 у энкодера A – экономия битрейта 30%, которую BD-rate обобщает на весь диапазон качества.

Как это всё посчитать

Выбор метрики – это решение; расчёт – одна команда. На свежей сборке FFmpeg современный фильтр libvmaf считает VMAF, VMAF-NEG, PSNR и SSIM за один проход (старые отдельные опции psnr и ssim объявлены устаревшими в пользу под-опций feature):

# Искажённое против эталона, за один проход: VMAF default + VMAF-NEG + PSNR + SSIM
ffmpeg -i distorted.mp4 -i reference.mp4 -lavfi "
  libvmaf=model='version=vmaf_v0.6.1\:name=vmaf|version=vmaf_v0.6.1neg\:name=vmaf_neg':
  feature='name=psnr|name=float_ssim':log_path=scores.json:log_fmt=json:n_threads=8
" -f null -

Полный текущий синтаксис – установка libvmaf, выбор моделей, разбор JSON-лога и построение кривых – тема статьи измерение качества с FFmpeg и libvmaf, а более широкий ландшафт инструментов охватывает VQMT и коммерческие пакеты для случаев, когда FFmpeg мало.

Частые ошибки при выборе метрики

«Ловушка «одна метрика на всё». Самая частая ошибка – выбрать любимую метрику и применять её ко всякой задаче. VMAF отлична для сравнения энкодеров и не тот инструмент для регресс-гейта; PSNR подходит для гейта и вводит в заблуждение как вердикт о качестве; ни одна полнореференсная метрика не работает на лайв-потоке без эталона. Выбирайте по задаче, а не по привычке.»

Вторая ошибка – сравнивать метрики между собой, будто у них общая шкала: «SSIM 0.95 лучше VMAF 90» бессмысленно, потому что структурное сходство 0–1 и перцептивный прогноз 0–100 – разные линейки. Третья – читать число VMAF без названной модели: «VMAF 95» может быть телефонной моделью (оптимистично) или ТВ-моделью, со средним или перцентильным пулингом, и это разные утверждения, как подробно разбирает как читать отчёт по метрикам. Четвёртая – оптимизировать энкодер против VMAF по умолчанию и обнаружить, что научили его повышать резкость, а не сохранять картинку, – ради этого и существует VMAF-NEG. В каждом случае лекарство одно: назвать метрику, модель, пулинг и задачу вслух – и правильный выбор обычно становится очевиден.

Рисунок 3. Четыре вопроса до метрики. Начните с того, есть ли исходник, затем задача, затем контент и устройство – каждая ветка заканчивается конкретной рекомендацией.

Где здесь Фора Софт

Фора Софт делает видеософт с 2005 года – стриминг, WebRTC-конференции, OTT, e-learning, телемедицину и видеонаблюдение, – и каждый из этих продуктов ставит свою задачу измерения. Пайплайн видеонаблюдения, которым мы управляем, получает полнореференсное сравнение VMAF-NEG, когда мы настраиваем его энкодер; лайв-поток конференции без мастера получает no-reference проверки и мониторинг QoE; OTT-каталог получает per-title VMAF на convex hull с худшим пулом. У нас нет домашней метрики – у нас есть домашнее правило: выбирай метрику по вопросу, называй модель и пулинг на каждой цифре и подтверждай сложные случаи глазами. Когда задача – решение по кодеку или энкодеру, мы опираемся на воспроизводимые, датированные измерения из нашей методологии бенчмарков, чтобы выбор стоял на числах, которые читатель может проверить.

Главное

  • Лучшей метрики нет – берите ту, что отвечает на ваш конкретный вопрос.
  • Сначала спросите, есть ли исходник; без него отпадают PSNR, SSIM и VMAF.
  • Регресс-гейт → PSNR; сравнение энкодеров → VMAF-NEG + BD-rate; доставленное качество → VMAF с названной моделью устройства.
  • Сравнивайте кривые, а не оценки; малый разрыв VMAF может лежать внутри доверительного интервала.
  • Лайв и UGC требуют no-reference метрик; академической работе нужен субъективный якорь и статистика P.1401.
  • Никогда не сравнивайте между шкалами метрик и всегда называйте модель, пулинг и задачу.

Что почитать дальше

Строите такую систему?

Подберём параметры кодирования под ваш контент и посчитаем стоимость доставки до старта разработки.