Содержание статьи +
- Кратко
- Почему это важно
- Метрика – это модель, и у каждой модели есть область применимости
- Главная мысль: метрика докладывает совпадение, а не внешний вид
- Каталог слепых зон
- Каталог одним взглядом
- Метрики бок о бок: что каждая мерит и где врёт
- Почему заголовочная корреляция метрики не переносится на ваш контент
- Что делать вместо этого: измерение, которое не обмануть
- Где здесь Фора Софт
- Ключевые выводы
- Что почитать дальше
Кратко
Объективная метрика качества – PSNR, SSIM или VMAF – это модель человеческого мнения, обученная и проверенная на определённом контенте, и на контенте, который выглядит иначе, чем её обучающая выборка, она тихо докладывает неверное число. Сбои систематические, а не случайные: плёночное зерно и текстура, быстрое движение и высокий FPS, тёмные сцены, плавные градиенты с бандингом, ошибки цвета и экранный контент или анимация – каждый ломает конкретное допущение метрики. Эта статья – каталог слепых зон: для каждого типа контента она называет, почему оценка вводит в заблуждение, какие метрики затронуты и что измерять вместо этого. Лекарство – никогда не «доверять числу побольше», а измерять на своём контенте, читать набор метрик вместо одной, добавлять специализированный детектор там, где главная метрика слепа, и подтверждать глазами или небольшим субъективным тестом.
Почему это важно
С метриками вы уже знакомы – PSNR простыми словами, SSIM простыми словами и VMAF простыми словами – и умеете их считать. Эта статья нужна следующей: знать, где каждая из них врёт, чтобы не выкатить изменение энкодера, которое «подняло VMAF», но выглядит хуже, и не завалить релиз, который зритель бы принял. Она для лида по кодированию, стриминг-инженера или QA-инженера, кто уже докладывает числа качества и теперь должен доверять им на реальном, разном контенте. Самая дорогая ошибка в измерении – оптимизировать метрику на контенте, для которого она не создавалась, и именно этого помогает избежать этот каталог.
Метрика – это модель, и у каждой модели есть область применимости
Начнём с одной идеи, которая объясняет каждый сбой в статье. Полнореференсная метрика качества – та, что сравнивает сжатое видео с исходным эталоном, схема разобрана в трёх схемах измерения – это не закон физики. Это модель: формула, а в случае VMAF – небольшая модель машинного обучения, настроенная так, чтобы её выход совпадал с оценками реальных людей в субъективном тесте. PSNR выведена из инженерии сигналов, SSIM – из теории того, как глаз читает структуру, а VMAF буквально обучена на оценках людей для набора клипов.
У каждой модели есть область применимости – диапазон входов, на котором её строили и проверяли. Внутри этого диапазона она хорошо предсказывает мнение человека. Вне его модель всё равно выдаёт число, уверенно, но число больше не значит того, что вы думаете. Стандартная модель VMAF, к примеру, предполагает зрителя перед дисплеем 1920×1080 на расстоянии примерно в три высоты экрана, что даёт около 60 пикселей на градус зрения (документация Netflix VMAF, 2026). Подайте ей 4K на телефоне или запись экрана с текстом – и вы вышли за пределы области.
Поэтому «метрика врёт» – краткая запись для точной вещи: контент сломал допущение, на котором метрика построена, поэтому её оценка больше не отслеживает то, что сказал бы зритель. Остальная часть статьи – обход допущений, которые ломаются чаще всего, и что делать у каждого. Помните повсюду: глаз – правильно проведённый субъективный тест – это эталон истины, а метрика всегда лишь его приближение.
Главная мысль: метрика докладывает совпадение, а не внешний вид
Перед каталогом – одна демонстрация того, почему даже безупречная метрика не есть истина. Старейшая метрика, PSNR – Peak Signal-to-Noise Ratio, число, сравнивающее два кадра пиксель за пикселем и докладывающее их разницу в децибелах, – построена на среднеквадратичной ошибке: усредните квадрат разности каждого пикселя и переведите в дБ. Её роковое свойство в том, что она считает каждую пиксельную ошибку одинаково важной, неважно, куда та попала и как выглядит.
Смотрите, что это позволяет. Возьмём плоский серый участок и исказим его двумя способами, каждый подогнан под одну и ту же среднеквадратичную ошибку 100 (по шкале 0–255):
Искажение A — прибавить 10 к каждому пикселю (слабый общий сдвиг яркости)
квадрат ошибки на пиксель = 10² = 100
MSE = 100
Искажение B — испортить 1% пикселей на ±100 (редкая чёрно-белая «соль с перцем»)
вклад квадрата ошибки = 0,01 × 100² = 100
MSE = 100
PSNR (оба) = 10 × log10(255² / 100)
= 10 × log10(650,25)
= 10 × 2,813
= 28,13 дБОба искажения дают одинаковые 28,13 дБ. Но зритель едва замечает общий сдвиг яркости в A, тогда как редкая «соль с перцем» в B бросается в глаза. Одно число – противоположный опыт, и не потому, что PSNR посчитана неверно, а потому, что PSNR отвечает на вопрос «насколько расходятся пиксели?», а не «насколько плохо это выглядит?». Это классический результат, стоящий за двумя десятилетиями более совершенных метрик (Wang, Bovik, «Mean Squared Error: Love It or Leave It?», IEEE Signal Processing Magazine, 2009). SSIM и VMAF и были придуманы, чтобы закрыть этот разрыв, и во многом закрывают – но они тоже модели со своей областью, и дальше статья показывает, где и они отходят от глаза.
Каталог слепых зон
Каждый раздел ниже называет тип контента, ломаемое допущение, какие метрики смещаются и что делать вместо этого. Это не экзотические крайние случаи; это повседневный контент, который заполняет ленты видеонаблюдения, спортивные трансляции, OTT-каталоги, конференц-звонки и игровые стримы.
Плёночное зерно и плотная текстура
Плёночное зерно – мелкий случайный шум, который операторы и колористы намеренно сохраняют ради «киношного» вида, – самый чистый пример того, как метрика измеряет не то. Зерно случайно по природе, поэтому два его воспроизведения не совпадают пиксель в пиксель. Полнореференсная метрика, которая вознаграждает совпадение пикселей и признаков с оригиналом, видит это расхождение как ошибку, даже когда зерно выглядит для зрителя безупречно.
Современные кодеки усугубляют это с пользой. AV1 и более новые кодеки могут снять зерно перед кодированием, а на воспроизведении синтезировать свежее того же характера – приём, экономящий до 50% битрейта на сильно зернистом контенте (Chen et al., «An Overview of Coding Tools in AV1», APSIPA, 2020). Синтезированное зерно выглядит правильно, но сидит в других позициях пикселей, поэтому объективные метрики сильно его штрафуют; работу по зерну AV1 оценивали неформальным субъективным тестом именно потому, что объективные метрики «здесь плохо работают» (Norkin, Birkbeck, «Film Grain Synthesis for AV1», IEEE DCC, 2018). Собственная рекомендация Netflix прямая: синтезированное зерно мешает VMAF, и при расчёте VMAF синтез зерна стоит отключать (Netflix/vmaf, issue #1192, 2026). Та же логика касается любого высокотекстурного контента – листва, вода, конфетти, толпа, – где деталь статистически похожа, но не идентична по пикселям.
Что делать: при измерении энкодов с синтезом зерна отключайте синтез на декодировании и меряйте сигнал без зерна, либо сравнивайте на исходнике без зерна – так вы меряете кодек, а не несовпадение зерна. Падение VMAF на зернистом контенте считайте подозрительным, пока не подтвердите глазами.
Быстрое движение и ловушка высокого FPS
Быстрое движение ломает метрики в двух противоположных направлениях, и история самого VMAF показывает обе. Во-первых, человеческий глаз маскирует мелкую деталь при быстром движении – на резкой панораме или спортивном проводе камеры вы просто не различаете текстуру, – поэтому ошибки, которые покадровая метрика считает в полном объёме, частично невидимы зрителю. VMAF v0 был недообучен на высокодинамичных сценах и при неограниченном признаке движения склонялся завышать качество на очень быстрых сценах (блог Netflix VMAF v1, 2026). Во-вторых, в обратную сторону: v0 мерил движение между соседними кадрами, поэтому при 60 кадрах в секунду покадровое изменение казалось малым и v0 занижал качество относительно контента 24 или 30 FPS. VMAF v1 решает оба случая жёстким порогом на признак движения и опцией мерить движение в более широком временном окне, но урок остаётся: движение – там, где проявляются временные допущения метрики.
Что делать: держите частоту кадров постоянной в любом сравнении и никогда не сравнивайте оценку 60 FPS с оценкой 30 FPS как на одной шкале. Если меряете высокодинамичный или высокочастотный контент, берите актуальную модель VMAF, а не старую, и проверяйте самые быстрые сцены глазом.
Тёмные сцены и детали в тенях
Тёмные сцены перцептивно коварны, и метрики справляются с ними плохо. Глаз очень чувствителен к малым ступеням у границы чёрного, где раньше всего проявляются бандинг и блочность, но PSNR и SSIM, посчитанные по стандартной яркости, дают тёмному кадру мало ярких пикселей, по которым «расходиться», поэтому большая видимая ошибка в тенях может почти не сдвинуть оценку. Проблема усиливается в HDR, где расширенный диапазон яркости помещает больше значимой детали в тени и света; широко применяемой публичной модели VMAF для HDR пока нет, а метрики для стандартного диапазона известны меньшей чувствительностью к искажениям в тёмных областях (блог Netflix VMAF v1, 2026; исследование субъективного качества HDR/SDR, 2025).
Что делать: для тёмного или HDR-контента не полагайтесь на одну яркостную метрику. Осматривайте области теней напрямую, смещайте субъективные проверки к тёмным сценам и следите конкретно за бандингом (следующий раздел). Любое число качества HDR от модели для стандартного диапазона считайте ориентировочным, а не финальным.
Бандинг: артефакт, который главные метрики не видят
Бандинг – лестница видимых ступеней там, где плавный градиент вроде неба или затемнения должен быть непрерывным, – хрестоматийная слепая зона. Netflix говорит прямо: «традиционные метрики качества видео, такие как PSNR, SSIM или VMAF, не предназначены для выявления бандинга» (документация Netflix CAMBI, 2026). Причина структурная: бандинг заменяет плавный наклон несколькими плоскими ступенями, что почти не меняет статистику пикселей, которую отслеживают эти метрики, поэтому оценка остаётся высокой, пока небо заметно ступенчатит.
Лекарство – специализированный детектор. Netflix построил CAMBI – Contrast Aware Multiscale Banding Index – именно потому, что главные метрики бандинг пропускают. CAMBI – это no-reference-детектор, оценивающий бандинг покадрово: 0 значит нет, около 5 – там, где бандинг начинает раздражать, а 24 – невыносимо, причём видимость растёт тем сильнее, чем ярче дисплей и темнее комната (документация Netflix CAMBI, 2026). VMAF v1 теперь включает CAMBI как один из признаков, что само по себе яснейшее признание того, что v0 здесь был слеп (блог Netflix VMAF v1, 2026).
Что делать: на любом контенте с небом, градиентами, затемнениями или плоским цветом – и на агрессивных низкобитрейтных энкодах – запускайте детектор бандинга вроде CAMBI рядом с VMAF и ставьте на него отдельный порог. Высокий VMAF и высокий CAMBI вместе означают чистую картинку; высокий VMAF при CAMBI 5+ означает полосатую, которую главное число спрятало.
Цвет и хрома-артефакты
Большинство чисел качества, что вы видели, описывают только яркость. Стандартный PSNR обычно докладывают по каналу яркости, SSIM считают по яркости, а VMAF v0 извлекал только яркостные признаки, поэтому был «не осведомлён о хрома-артефактах» вовсе (блог Netflix VMAF v1, 2026). Но кодирование и субдискретизация цветности вносят реальные ошибки цвета – растекание красного, сдвиг оттенков кожи, смазанные насыщенные края, – которые яркостная метрика увидеть не может. VMAF v1 добавил признак хромы именно поэтому; старые оценки цвет просто не учитывают.
Что делать: когда важна точность цвета – фирменные цвета, оттенки кожи, графика, – меряйте хрому явно (хрома-PSNR по каналам U и V – дешёвое начало) или используйте версию метрики с цветом и подтверждайте насыщенные области глазом.
Экранный контент, текст и игры
Метрики выучили статистику натурального, снятого камерой видео, потому что именно на нём их обучали и проверяли. Экранный контент – слайды, документы, код, интерфейс, карты – и синтетический вывод игр имеют другую статистику: большие плоские области, резкие высококонтрастные края текста, повторяющиеся узоры, движение курсора. На таком контенте перцептивные веса, которые метрика выучила, больше не совпадают с глазом; размытая буква, убивающая читаемость, может сдвинуть метрику натурального контента куда меньше, чем заслуживает её влияние. Создатели VMAF называют «прямые трансляции и облачные игры» нарождающимися сценариями, под которые метрику ещё адаптируют, – молчаливое признание, что стандартная модель не под них строилась (блог Netflix VMAF v1, 2026).
Что делать: для экранного, насыщенного текстом или игрового контента не доверяйте одной метрике натурального контента. Проверяйте читаемость напрямую, а где задача – экранный контент, предпочтите метод теста, который ставит реальный контент перед реальными зрителями – как именно, разбирает блок про субъективное тестирование.
Анимация и плоская синтетика
Анимация, моушн-графика и мультфильмы сидят между натуральным видео и экранным контентом: большие области плоского цвета, чёткие векторные края, мало текстуры. Действует то же несовпадение области – выученное метрикой чувство «насколько плохо это искажение» откалибровано на фотографическом контенте, поэтому она может неверно упорядочить два анимационных энкода, которые зритель упорядочил бы чётко. Плоские области – ещё и там, где появляется бандинг, что усугубляет проблему.
Что делать: при сравнении энкодов на анимации подкрепляйте сравнение хотя бы небольшой субъективной проверкой и следите за бандингом в плоских областях, а не доверяйте агрегатной оценке.
Игра на усиление: когда более высокая оценка – это худшая картинка
Одна слепая зона – самонанесённая. Поскольку полнореференсная метрика вознаграждает отличие от деградированного энкода, резкость или трюки с контрастом могут поднять оценку VMAF без улучшения – иногда вредя – реальной верности оригиналу. Это проблема «обмана метрики», и лекарство – модель No Enhancement Gain, VMAF-NEG, теперь включённая по умолчанию в VMAF v1 (блог Netflix VMAF v1, 2026). У неё свой глубокий разбор в VMAF-NEG простыми словами; запись каталога – напоминание, что метрику, под которую оптимизируешь, рано или поздно обманут, твоим энкодером, если не тобой.
Что делать: если настройка энкодера поднимает VMAF, сверьте её с VMAF-NEG; прирост, исчезающий под NEG, был усилением, а не верностью.
Каталог одним взглядом
Одна таблица – держать рядом с измерениями. Последний столбец читайте как действие, а не как вердикт метрики.
| Контент / случай | Почему оценка врёт | Кого затрагивает | Что измерять вместо этого |
|---|---|---|---|
| Плёночное зерно, текстура | Случайная деталь не совпадает пиксель-в-пиксель; синтез смещает позиции зёрен | PSNR, SSIM, VMAF | Отключить синтез зерна при измерении; мерить без зерна; проверять глазами |
| Быстрое движение | Глаз маскирует деталь в движении; признак движения v0 не ограничен → завышение | VMAF (особенно v0), PSNR | Актуальная модель; фиксированный FPS; смотреть быстрые сцены |
| Высокий FPS (60 кадр/с) | Движение между соседними кадрами кажется малым → занижение против 30 | VMAF v0 | Не сравнивать разные FPS; брать v1; указывать FPS |
| Тёмные сцены, HDR | Мало ярких пикселей для «расхождения»; публичной HDR-модели VMAF нет | PSNR, SSIM, VMAF | Смотреть тени; смещать субъективные проверки к тёмным сценам; HDR-числа – ориентир |
| Бандинг (небо, затемнения) | Плавный наклон → плоские ступени почти не меняют статистику пикселей | PSNR, SSIM, VMAF v0 | Запускать CAMBI; ставить отдельный порог на бандинг |
| Цвет / хрома | Расчёт только по яркости игнорирует цветовые каналы | luma PSNR, SSIM, VMAF v0 | Мерить хрому (U/V) или модель с цветом; проверять насыщенные области |
| Экранный контент, текст, игры | Обучены на натуральном видео; другая статистика и края | PSNR, SSIM, VMAF | Проверять читаемость; субъективный тест на реальном контенте |
| Анимация, плоская синтетика | Несовпадение домена с фотообучением; плоские зоны дают бандинг | PSNR, SSIM, VMAF | Небольшая субъективная проверка; следить за бандингом в плоских зонах |
| Усиление (резкость) | Метрика поощряет отличие, а не верность → обманываема | VMAF (стандарт) | Сверять с VMAF-NEG |
Метрики бок о бок: что каждая мерит и где врёт
Отойдём от контента к самим метрикам. Два важнейших столбца – последние два.
| Метрика | Шкала / ед. | Что мерит | Где врёт |
|---|---|---|---|
| PSNR | дБ (больше – лучше) | Попиксельную ошибку к оригиналу, по яркости | Взвешивает все ошибки одинаково; игнорирует где и что; слепа к бандингу, хроме, восприятию |
| SSIM | 0–1 | Совпадение яркости, контраста, структуры локально | Только яркость; пропускает бандинг и хрому; локальные дефекты усредняются |
| MS-SSIM | 0–1 | SSIM на нескольких масштабах | Те же слепые зоны, что у SSIM; лучше между разрешениями, но всё ещё яркость и структура |
| VMAF v0 | 0–100 | Слитые перцептивные признаки, обучена на оценках людей | Слепа к бандингу и хроме; завышает быстрое движение; занижает 60 FPS; обманываема резкостью |
| VMAF v1 | 0–100 | Добавляет бандинг (CAMBI), хрому, NEG по умолчанию, модель расстояния просмотра | Всё ещё в работе: зерно, высокий FPS; остаётся моделью натурального контента со своей областью |
Из этой таблицы следуют два правила чтения. Первое: число без названия метрики, версии модели и пулинга – не измерение; «VMAF 95» может быть v0 или v1, default или phone, пулингом по среднему или по перцентилю, и это разные утверждения, как разбирает как читать отчёт о качестве. Второе: никогда не сравнивайте оценки разных метрик так, будто 90 SSIM и 90 VMAF – одно и то же; это разные шкалы, измеряющие разное.
Почему заголовочная корреляция метрики не переносится на ваш контент
Каждую метрику продают с числом корреляции – насколько близко она отслеживала оценки людей при проверке, измеренной коэффициентами Пирсона и Спирмена и разобранной в как метрики проверяют. Это число заработано на конкретной тестовой базе, и международная методология оценки метрики предполагает, что вы докладываете его для репрезентативного для вашего применения контента (ITU-T P.1401, стандарт оценки объективных метрик). Метрика, набравшая корреляцию 0,95 на профессионально снятых киноклипах, не сказала вам ничего о том, как она ведёт себя на вашей ленте видеонаблюдения, ваших слайдах или вашем анимационном объяснителе.
Это мета-урок под всем каталогом. Слепые зоны выше – попросту места, где разрыв между «корреляцией на проверочной выборке» и «корреляцией на вашем контенте» шире всего. Защита везде одна: измеряйте на своём контенте, а не на чужом бенчмарке.
«Частая ошибка: выкатить настройку энкодера, которая «подняла VMAF». Изменение, поднявшее среднее VMAF на общем тестовом наборе, может потерять качество на вашем контенте – бандинг, который метрика не видит, хрома, которую игнорирует, или усиление, которое её обманывает. Прежде чем выкатывать, переизмерьте на выборке своего реального контента, читайте VMAF рядом с детектором бандинга и пулингом по худшему случаю, сверьте с VMAF-NEG и посмотрите на самые трудные кадры. Одно растущее число – это гипотеза, а не результат.»
Что делать вместо этого: измерение, которое не обмануть
Совет каталога сворачивается в один план. Читайте набор метрик, а не одно число: перцептивную (VMAF с названной актуальной моделью) плюс структурную (SSIM/MS-SSIM) плюс специализированный детектор там, где известна слепая зона (CAMBI для бандинга, хрома-метрика для цвета). Пульте по худшему случаю, а не только по среднему, чтобы короткий плохой отрезок не спрятался – как, показывает статья про пулинг. Измеряйте на своём контенте, выбирая жанры, которые реально отдаёте, потому что корреляция не переносится. Держите каждое сравнение сопоставимым – то же разрешение, кадры, эталон, модель и пулинг. И замыкайте петлю глазом: проверяйте худшие кадры, а для решения с высокой ставкой проводите небольшой субъективный тест – единственный эталон истины, который метрика лишь приближает.
Где здесь Фора Софт
Фора Софт делает видеопрограммы с 2005 года – стриминг, WebRTC-конференции, OTT, e-learning, телемедицина и видеонаблюдение, – и контент, который отдают наши клиенты, ровно тот, что ломает наивную метрику. Видеонаблюдение – это тёмные сцены и зерно; конференции и e-learning – это шаринг экрана и текст; OTT и спорт – это быстрое движение и небо с бандингом. Поэтому мы никогда не ставим ворота пайплайна на одно число VMAF: мы меряем на собственных записях клиента, читаем VMAF рядом с детектором бандинга и пулингом по худшему случаю, называем модель и версию у каждой цифры и подтверждаем трудные случаи глазом. Когда мы докладываем, что изменение кодирования безопасно, это потому, что метрику применяли внутри её области и проверяли там, где она слепнет, – дисциплина, которую мы описываем в методологии наших бенчмарков.
Ключевые выводы
- Метрика – модель со своей областью; вне её число врёт уверенно.
- Одинаковый PSNR может выглядеть совершенно по-разному – метрики докладывают совпадение, а не вид.
- PSNR, SSIM и VMAF v0 слепы к бандингу; используйте детектор вроде CAMBI.
- Яркостные метрики игнорируют хрому; зерно, тёмные сцены и экранный контент ломают каждое своё допущение.
- Заголовочная корреляция заработана на бенчмарке; на ваш контент она не переносится.
- Читайте набор метрик, пульте по худшему случаю, меряйте на своём контенте, подтверждайте глазом.