Качество картинки против QoE: VMAF и опыт

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

Кратко

Метрика качества картинки вроде VMAF оценивает энкод – одно число о том, насколько хорошо сжатый файл выглядит относительно мастера, – тогда как качество опыта, QoE, оценивает всю сессию, которую прожил зритель, включая то, быстро ли начался показ, были ли остановки и переключения разрешения. Эти величины живут на разных шкалах и измеряют разное, поэтому считать QoE по числу VMAF нельзя: красивая картинка, которая буферизуется, проигрывает средней картинке, которая не останавливается ни разу. В статье показаны три честных способа их связать: аддитивная цель ABR из исследований плееров, стандартизированная модель ITU-T P.1203 и исследовательская линия (SQI, KSQI, непрерывные модели), добавляющая эффекты взаимодействия и памяти. Рабочий пример доказывает суть: сессия с самой лучшей картинкой получает худшую оценку опыта, потому что оптимизация одной оси без другой бьёт по результату.

Зачем это нужно

Если вы запускаете стриминг, вы измеряете две вещи, которые редко попадают в один отчёт: оценку картинки на этапе кодирования (VMAF, SSIM, PSNR) из гейта качества и набор метрик воспроизведения (старт, ребуферинг, переключения) из аналитического стека. По отдельности они дают противоречивые советы – команда кодирования тянет качество картинки вверх, команда доставки давит остановки вниз, а опытом зрителя не владеет никто. Статья для инженера, QoE-аналитика или продакт-оунера, которому нужен один защитимый взгляд на качество, уважающий обе стороны. Она объясняет, почему два числа не складываются напрямую, и даёт конкретный метод – и калькулятор, – чтобы соединить их, не обманывая себя.

Два вопроса, два объекта

Начнём с того, что именно измеряет каждая сторона, потому что большая часть путаницы здесь – от попытки считать два разных объекта одним.

Метрика качества картинки отвечает на вопрос: насколько хорошо это сжатое видео выглядит относительно оригинала? Главный пример – VMAF (Video Multi-method Assessment Fusion), метрика Netflix, которая сливает несколько перцептивных признаков в одну оценку 0–100. VMAF – полноэталонная (full-reference): ей нужен чистый мастер для покадрового сравнения. Она работает на этапе кодирования, по файлу, и оценивает энкод – то представление, которое выдал ваш кодировщик. SSIM (структурное сходство, 0–1) и PSNR (пиковое отношение сигнал/шум, в децибелах) – объекты того же рода: полноэталонные, на этапе кодирования, только про картинку. Полный разбор каждой – в статьях VMAF: объяснение и пулинг покадровых оценок в одно число.

Качество опыта, QoE, отвечает на другой вопрос: хорошо ли зрителю? Оно измеряется на устройстве во время воспроизведения, по собственным событиям плеера – когда начался показ, когда была остановка, когда сменилось представление, – и обычно выражается средней экспертной оценкой (MOS) по шкале 1–5, где 1 – плохо, 5 – отлично. QoE не нужен эталон: у плеера никогда не было мастера, и он не сравнивает пиксели. Оно оценивает сессию, а не файл. У каждого из четырёх семейств доставки есть своя статья: ребуферинг, время старта, битрейт и переключения и метрики на стороне плеера, которые их фиксируют. QoE и QoS – тоже не одно и то же, см. QoE против QoS.

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

Рисунок 1. Два разных объекта: метрика картинки оценивает энкод (полноэталонная, на этапе кодирования, 0–100); QoE оценивает сессию (без эталона, во время воспроизведения, MOS 1–5). Мост между ними – тема этой статьи.

Почему нельзя считать QoE по числу VMAF

Есть две независимые причины, по которым высокий VMAF не обещает хорошего опыта.

Во-первых, VMAF никогда не создавался видеть доставку. Netflix говорит об этом прямо: VMAF разрабатывался под артефакты сжатия и масштабирования как две интересующие импейрменты, и как полноэталонная метрика он не учитывает долговременные эффекты вроде недавности (recency) и первичности (primacy), а также события ребуферинга («VMAF: The Journey Continues», блог Netflix Technology, 2018). Его временной признак – это простая мера движения, низкочастотно отфильтрованная разница между соседними кадрами, а не модель остановок или переключений. Поэтому VMAF может возвращать 96 на каждом представлении, пока сессия – это череда зависаний; метрика просто слепа к тому, что испортило опыт. Называть этот слепой угол – суть всего раздела, см. что метрика может и не может сказать.

Во-вторых, картинка, которую увидел зритель, – не та, которую вы оценили. Ваш гейт качества оценил верхнюю ступень лестницы – лучшее представление, которое выдал кодировщик. Но адаптивный битрейт (ABR) доставляет то представление, которое позволила сеть, секунда за секундой. Если плеер треть сессии провёл на ступени ниже, эффективное качество картинки для зрителя – это взвешенный по времени трек проигранных представлений, а не оценка верхней ступени. Разница реальна и измерима. В рабочем примере ниже кодировщик сделал представление верхней ступени на VMAF 96, но из-за того что ABR шесть раз падал к представлению VMAF 80, взвешенный по времени проигранный VMAF зрителя составил всего 91,2 – разрыв 4,8 VMAF, который доставка отдала. Считая QoE по числу верхней ступени, вы завысите то, что на самом деле получил зритель.

Проблема отображения: VMAF 0–100 – это не MOS 1–5

Прежде чем что-то складывать, убейте самый соблазнительный короткий путь: пересчитать VMAF на шкалу MOS и назвать это QoE. VMAF идёт 0–100; MOS идёт 1–5. Арифметически тривиально написать MOS = 1 + 4 × VMAF/100 и почувствовать, что готово. Не верьте этому. Реальная связь между метрикой картинки и субъективной оценкой подобрана по человеческим оценкам и нелинейна – одно и то же изменение VMAF на один пункт значит больше в середине шкалы, чем у её верха, где примерно 6 пунктов VMAF соответствуют одному едва заметному различию (1 JND). Линейный пересчёт выдумывает точность, которой у метрики нет. Именно поэтому стандартизированные модели так не делают: видеомодуль ITU-T P.1203 выдаёт перцептивную оценку качества по шкале 1–5 напрямую из битстрима и метаданных; он не берёт число VMAF и не растягивает его. Всякий раз, отображая метрику картинки на шкалу опыта, считайте отображение приближением, которое нужно проверить по субъективным оценкам – тема статьи валидация метрик по оценкам людей, – и никогда не выдавайте пересчитанное число за истину.

Три способа связать качество картинки с QoE

Единственной «благословенной» формулы нет. Есть три семейства методов, по возрастанию строгости. Выбирайте по тому, насколько число нужно защищать.

1. Аддитивное сложение – цель QoE для ABR

Простейшее честное сложение – целевая функция, которую исследования адаптивного стриминга уже оптимизируют (работы MPC и Pensieve по ABR). Это сумма по сегментам сессии:

QoE = Σ q(R_n)  −  μ · Σ T_n  −  Σ |q(R_{n+1}) − q(R_n)|
       картинка       остановки         переключения

Словами: сложите качество картинки каждого проигранного сегмента, вычтите штраф за каждую секунду ребуферинга и вычтите штраф за каждое изменение качества между сегментами. Член q(R_n) – качество представления, показанного в сегменте n; T_n – время остановки, отнесённое к этому сегменту; μ – вес штрафа за остановку. Мост к метрикам картинки – это член качества: вместо сырого битрейта для q отобразите каждое проигранное представление на его измеренный VMAF, затем поместите VMAF на шкалу качества. (Мы берём q = VMAF / 20, шкалу 0–5 пунктов, и прямо говорим, что это иллюстративное отображение, а не проверенная кривая VMAF→MOS.) Вес остановки μ = 4.3 перенесён из статьи битрейт и переключения, где одна секунда остановки стоит примерно столько же, сколько целый сегмент верхнего качества.

Рабочий пример: три стратегии, одна программа

Возьмём одну и ту же 100-секундную программу (десять 10-секундных сегментов), доставленную тремя способами. Отобразим представления на качество как q = VMAF/20, так что VMAF 96 → 4,8 пункта, 88 → 4,4, 80 → 4,0, 72 → 3,6.

Сессия A – гонка за картинкой. Агрессивная лестница целится в верхнюю ступень (VMAF 96), но сеть её не держит, поэтому ABR трижды падает к представлению VMAF 80, и поток дважды останавливается по одной секунде. Последовательность проигранного VMAF: 96, 96, 80, 96, 80, 96, 96, 80, 96, 96.

  • Сумма картинки: семь 96 и три 80 → 4,8 × 7 + 4,0 × 3 = 33,6 + 12,0 = 45,6
  • Штраф остановок: две односекундные остановки → 4,3 × 2,0 = 8,6
  • Штраф переключений: шесть переключений, каждое шаг в 0,8 пункта → 0,8 × 6 = 4,8
  • QoE = 45,6 − 8,6 − 4,8 = 32,2

Сессия B – баланс. Консервативная лестница держит стабильное представление VMAF 88 всю сессию: ни остановок, ни переключений. Проигранный VMAF: 88 десять раз.

  • Сумма картинки: 4,4 × 10 = 44,0
  • Штраф остановок: 0; штраф переключений: 0
  • QoE = 44,0

Сессия C – пережать картинку. Боясь остановок, команда фиксирует низкое представление VMAF 72: идеально гладко, но без нужды мягко. Сумма картинки 3,6 × 10 = 36,0, штрафов нет → QoE = 36,0.

Теперь читаем результат. По картинке, которую зритель на самом деле увидел, выигрывает сессия A: её взвешенный по времени проигранный VMAF равен 91,2, выше 88,0 у B и 72,0 у C. По опыту порядок переворачивается: B (44,0) обходит C (36,0) и A (32,2). Самая красивая сессия – худший опыт, потому что две короткие остановки и шесть переключений стоят A больше, чем стоило её преимущество в картинке. А C – команда, которая «починила» QoE, срезав качество, – проигрывает B, потому что отдала картинку, которую можно было не отдавать. Выигрывает сессия, уважающая обе оси. Это и есть синтез в одной таблице: оптимизация любой одной оси бьёт по результату.

Рисунок 2. Одна программа, три стратегии. У сессии A самая высокая проигранная картинка (91,2 VMAF), но самый низкий QoE; выигрывает сбалансированная сессия B. Ранжирование по картинке и по QoE расходятся.

Воспроизвести каждое число выше – и оценить свои сессии – можно калькулятором «качество картинки → QoE», который идёт со статьёй; флаг --demo печатает именно этот пример.

2. Стандартизированная модель – ITU-T P.1203

Когда число должно быть цитируемым и сопоставимым между командами, используйте стандарт. ITU-T P.1203 (2017) был первым международным стандартом QoE для HTTP-адаптивного стриминга, оценивающим сессии длиной 1–5 минут по шкале MOS 1–5. Он собран из модулей. Видеомодуль (P.1203.1) и аудиомодуль (P.1203.2) выдают краткосрочную, посекундную оценку качества. Модуль интеграции качества (P.1203.3) – та часть, что важна здесь, – сворачивает эти посегментные качества вместе с начальной задержкой загрузки, событиями остановок и переключениями качества, учитывая временные эффекты вроде недавности, из-за которой конец сессии весит сильнее. На выходе – одна оценка MOS для сессии.

P.1203 работает в четырёх режимах (0–3), определяемых тем, сколько информации вы можете ему дать. Режим 0 берёт только метаданные – кодек, битрейт, разрешение, частоту кадров и события остановок на стороне клиента. Более высокие режимы берут покадровую и битстрим-информацию для более точной посегментной оценки. Для синтеза это важно: в низких режимах член качества картинки оценивается по метаданным, а не измеряется по пикселям, так что QoE-оценка только по метаданным упустит зависящие от контента различия качества, которые поймало бы реальное измерение VMAF.

Этот разрыв и есть место, куда встают современные модели картинки. ITU-T P.1204.3 (2020) – битстрим-модель краткосрочного качества видео, валидированная для H.264, H.265 и VP9 вплоть до 4K, и она спроектирована как дополнение к P.1203.1 – может служить тем посегментным движком качества, который потребляет модуль интеграции. Есть и поддерживаемая открытая референс-реализация P.1203, с центр-кропнутым вариантом VMAF («Cencro»), который использовали при её разработке, так что связать выведенное из VMAF качество представления со стандартизированной оценкой сессии – установившаяся практика, а не мысленный эксперимент.

Рисунок 3. Стек интеграции ITU-T P.1203: посегментное качество видео и аудио входит в модуль интеграции Pq, который сворачивает начальную задержку, остановки, переключения и недавность в одну оценку MOS сессии (1–5).

В калькулятор, идущий со статьёй, включена прозрачная, явно помеченная P.1203-подобная оценка MOS сессии, чтобы почувствовать, как складываются части, – но это иллюстративное приближение, а не стандарт. Реальные коэффициенты P.1203 нормативны; для стандартизированной оценки используйте референс-реализацию, а не самодельную свёртку.

3. Исследовательский фронтир – взаимодействие и память

Аддитивная цель и стандарт в основном складывают член картинки и штрафы доставки. Академические модели QoE идут дальше, моделируя, как эти величины взаимодействуют во времени. Streaming QoE Index (SQI; Duanmu, Zeng, Ma, Rehman и Wang, IEEE JSTSP, 2017) сочетает мгновенную меру качества представления (полноэталонную метрику вроде VMAF) с опытом остановок и взаимодействием между ними – остановка сразу после падения качества бьёт сильнее, чем та же остановка после чистого отрезка. SQI построен на субъективном исследовании сжатия, начальной буферизации и остановок в середине потока и превзошёл прежние модели, использовавшие только статистику битрейта и остановок. Его преемник, KSQI, добавляет адаптацию качества (переключения) при ограничениях монотонности. Непрерывная во времени работа Bampis и Bovik (IEEE, 2017–2018) подаёт качество в стиле VMAF, ребуферинг и явный член памяти в рекуррентные и динамические модели, чтобы предсказывать QoE момент за моментом, ухватывая эффекты недавности и первичности, которые единое среднее по сессии сглаживает. Чтобы извлечь из них пользу, не обязательно их разворачивать – они говорят, какие эффекты должно уважать серьёзное число QoE: взаимодействие картинки и остановок и память зрителя.

Сравнение трёх подходов

Рисунок 4. Три способа связать качество картинки с QoE: что каждый сочетает и где каждый врёт.
ПодходЧто сочетаетРезультатЧто измеряет хорошоГде врёт / слепая зона
Цель QoE для ABR (MPC/Pensieve)Качество проигранного представления (битрейт→VMAF), секунды остановок, величину переключенийБезразмерная оценка (относительная)Быстро, прозрачно, настраиваемо; отлично для ранжирования стратегий доставкиКоэффициенты (μ) задаются вручную; линейна; игнорирует взаимодействие и память; это не MOS
ITU-T P.1203Посегментное качество видео + аудио, начальную задержку, остановки, переключения, недавностьMOS сессии 1–5 (стандарт)Цитируемо, сопоставимо, валидировано; моделирует недавностьЧлен картинки оценочный (не VMAF) в низких режимах; коэффициенты лицензируемы; сессии 1–5 мин
SQI / KSQI / непрерывные (Waterloo, UT Austin)Качество представления (VMAF) + остановки + переключения + их взаимодействие + памятьПредсказанный MOS / непрерывная оценкаМоделирует взаимодействие и память; наивысшая корреляция с глазомТяжелее разворачивать; нужна эталонная метрика картинки; уровень исследования, не развёрнутый стандарт

У всех трёх есть один вход, который надо взять правильно: член картинки должен браться из проигранных представлений, через измеренный VMAF, а не из оценки верхней ступени. И все три в конечном счёте должны быть проверены по корректно проведённому субъективному тесту – глаз есть истина, как разобрано в почему субъективное тестирование – истина. Когда модель и аккуратный просмотр расходятся, побеждает просмотр (ITU-R BT.500-15, 2023).

Частые ошибки

«Подавать VMAF как «QoE». VMAF оценивает энкод и слеп к остановкам, переключениям и старту. Дашборд, показывающий только VMAF, отчитывается о качестве картинки, а не об опыте – так и скажите и сопоставьте его с метриками доставки. Считать QoE по VMAF верхней ступени. Зритель видел проигранные представления, а не лучшее закодированное. Используйте взвешенный по времени проигранный VMAF; разрыв до верхней ступени – это качество, отданное ABR. Линейно пересчитывать VMAF 0–100 в MOS 1–5. Реальное отображение подобрано и нелинейно (~6 VMAF ≈ 1 JND). Линейная растяжка выдумывает точность; считайте любое отображение приближением, которое надо проверить. Усреднять оценки картинки и доставки с равным весом. Они не на одной шкале, а сложение нелинейно и зависит от недавности. Используйте целевую функцию или стандартизированную модель, а не смесь 50/50. Оптимизировать одну ось. Толстая лестница поднимает VMAF и вызывает ребуферинг в реальных сетях; низкий потолок убирает ребуферинг и размягчает картинку. Бьёт и то, и другое – сессии A и C в рабочем примере.»

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

Фора Софт с 2005 года строит системы видеостриминга, OTT, видеоконференций, e-learning и телемедицины, и вопрос клиентов редко звучит как «какой у нас VMAF?» – он звучит «хорошо ли зрителям?». Ответить на него значит измерять энкод (VMAF по каждому представлению, по датированному воспроизводимому методу из нашей методологии бенчмарков) и сессию (телеметрию плеера) и сводить их в один взгляд – ровно так, как описано в статье. У живого конференц- или телемедицинского потока мастера для сравнения нет, поэтому сторона картинки смещается к безэталонной оценке – тема статьи безэталонное качество для live и UGC. Дисциплина везде одна: никогда не позволяйте одному числу подменять весь опыт.

Ключевые выводы

  • Метрика картинки оценивает энкод; QoE оценивает сессию – разные объекты, разные шкалы.
  • VMAF слеп к ребуферингу, переключениям и памяти; высокий VMAF не обещает хорошего QoE.
  • Зритель видел проигранные представления; берите взвешенный проигранный VMAF, не верхнюю ступень.
  • Не пересчитывайте VMAF 0–100 в MOS 1–5 линейно – реальное отображение подобрано и нелинейно.
  • Сочетайте через цель ABR, ITU-T P.1203 или SQI/KSQI – никогда смесью 50/50.
  • Оптимизация только картинки или только доставки бьёт по результату; выигрывает баланс.

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

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

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