В рамках наших исследований и разработок в группе по перекодировке видео мы часто сталкиваемся с необходимостью тестирования видеокодеков стандартизированным, воспроизводимым и сопоставимым способом. Например, мы можем захотеть оценить, обеспечивает ли новая версия видеокодера значительно более высокий уровень качества, чем предыдущая, и каковы компромиссы с ее производительностью, сравнить производительность во время выполнения между различными конфигурациями или понять, как разные кодеки складываются по сравнению с одним. другой для разных типов контента. Один из инструментов, который мы используем, чтобы ответить на эти вопросы, - «Сжаты ли мы?» (или, как мы его называем, AWCY).

Что такое AWCY?

AWCY - это инструмент с открытым исходным кодом, созданный Xiph.Org Foundation, который сочетает в себе структуру распределенного кодирования и декодирования со сбором показателей производительности и качества, сравнительными представлениями и отчетами, а также управлением наборами данных. Поддерживаемые кодеки могут принимать пользовательские конфигурации и использоваться для кодирования любого предварительно настроенного набора данных с помощью заданий, распределенных по заданному количеству рабочих ядер, которые могут быть расположены локально или размещены в произвольном массиве удаленных машин. Каждое рабочее ядро ​​выполняет процесс сбора метрик кодирования-декодирования для одного видео и сообщает результаты хосту, который компилирует их в отчет после завершения всех задач. Завершенные прогоны можно сравнивать друг с другом, если набор данных один и тот же, что позволяет сравнивать перекрестные кодеки.

Что делает AWCY особенно полезным и эффективным для объективного измерения и сравнения качества, так это его реализация дельта-скорости Бьёнтегаарда, или BD-скорости. Измерения качества нельзя точно сравнивать напрямую из-за различий в битрейтах, которые при автономном кодировании видео приводят к различиям в размерах сжатых файлов. Поскольку конфигурации кодировщика меняются, меняются и результирующие скорости, и улучшение качества не имеет смысла, если оно также приводит к увеличению скорости, поэтому последнее необходимо контролировать при проведении таких сравнений. Измерения скорости BD выполняются путем выполнения нескольких кодировок в одной и той же конфигурации с различными уровнями качества (обычно с постоянными значениями квантователя). Результирующие качество и скорость могут быть нанесены на график и линейно интерполированы для оценки ожидаемого компромисса между скоростью и качеством для данного кодека в тестируемой конфигурации. Затем скорость BD может быть вычислена для двух наборов точек на основе разницы в том, насколько хорошо они оптимизируют качество при минимизации скорости, эффективно интегрируя площадь между двумя линейными графиками.

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

Эта сводка BD-rate показывает общее улучшение качества при переходе от конфигурации s10 к конфигурации s3. BD-rate выражается в процентах, и большее отрицательное значение указывает на более высокое качество. Его можно интерпретировать как количество битов, необходимое в среднем для того, чтобы второй набор результатов достиг того же уровня качества, что и первый. В этом примере конфигурации s3 требуется примерно на 30 процентов меньше битов для поддержания базового уровня качества s10.

На видео ниже показан тестовый клип Blue Sky, закодированный как часть вышеупомянутого прогона с постоянным квантователем (примерно обратный уровень качества) 172 в rav1e, кодировщике AV1, который мы используем в Vimeo для передачи высококачественного видео на Vimeo Staff Picks. . Вверху находится видео, закодированное на уровне скорости 3, а ниже - такое же видео, закодированное на уровне скорости 10. Мы можем видеть значительно больше полосатых артефактов в самом небе, а также много шума по краям листьев деревьев в последний.



В этом конкретном случае кодирование со скоростью 10 имеет значительно более высокую скорость, поэтому ясно, что конфигурация s3 работает намного лучше, чем s10. Если бы второе видео было намного меньше по размеру, мы, возможно, не смогли бы определить, какая из двух конфигураций на самом деле лучше, но поскольку AWCY вычисляет меру компромисса между скоростью и качеством, а не напрямую сравнивает закодированные файлы, мы можем выявить улучшения. или регрессии с первого взгляда. Для этого видео общее среднее повышение эффективности кодирования составляет от 35 до 50 процентов, в зависимости от показателя качества.

Примечательно, что AWCY успешно использовался Alliance of Open Media для поддержки разработки стандарта AV1, и с тех пор он регулярно используется разработчиками кодировщиков AV1 с открытым исходным кодом, включая libaom, SVT-AV1 и rav1e. Как инструмент с открытым исходным кодом AWCY может быть расширен для поддержки любого кодека, конфигурации или набора данных. Активный общедоступный экземпляр доступен по адресу https://beta.arewecompressedyet.com/, хотя организация очереди заданий ограничена из-за высокой стоимости выполнения распределенного кодирования. Мы разработали сценарии для упрощения первоначального развертывания как веб-сервера, так и рабочих узлов.

Обзор архитектуры

Система AWCY имеет модульную архитектуру, в которой веб-сервер, планировщик заданий и рабочие узлы, где происходит кодирование, могут находиться на одной или разных машинах. Эти компоненты обычно сгруппированы вместе, когда говорят о AWCY в целом, но на практике компонент AWCY охватывает только интерфейсную часть. Центральным элементом системы является rd_server, который определяет рабочие узлы, планирует задания и сообщает результаты обратно в AWCY для хранения и визуализации. rd_server также отвечает за сборку двоичных файлов кодеков перед их передачей рабочим узлам для обработки.

AWCY также может отправлять закодированные файлы в анализатор битового потока для ручной проверки решений о кодировании в потоках VP9 или AV1. Это веб-приложение может перемещаться по двум закодированным видео в покадровом сравнительном представлении и отображать разделы и параметры блочного кодирования, а также покадровую статистику, как показано на следующем изображении.

Ниже представлена ​​диаграмма развертывания системы AWCY.

Новый набор данных видео-теста: vimeo-corpus-10s

В рамках нашего вклада в AWCY мы также выпустили новый набор данных под названием vimeo-corpus-10s, который включает видео, которые сильно различаются по разрешению, частоте кадров, типу контента, качеству и визуальному оформлению. характеристики. Видео были выбраны так, чтобы их было сложно кодировать, и они включают в себя монтажные кадры. Этот набор может поддерживать исследования алгоритмов управления скоростью, обнаружения сцены для размещения ключевых кадров и других компонентов видеокодеров, которые нельзя легко оценить с помощью классических наборов данных. vimeo-corpus-10s по умолчанию включен в экземпляры AWCY, а его 15 видео находятся под лицензией Creative Commons. В следующей таблице представлены сводные визуальные характеристики видео.

В итоге

AWCY упрощает последовательное и масштабное выполнение исчерпывающих наборов тестов видеокодера, а также агрегирование, сравнение и обмен их результатами с коллегами и соавторами. Мы использовали его в Vimeo для поиска ошибок кодирования, проверки наших параметров кодирования и оценки новых версий rav1e. Мы надеемся, что другие инженеры и компании рассмотрят возможность внедрения AWCY для собственного использования и внесут свой вклад в его будущее развитие. Наконец, мы надеемся, что исследователи и инженеры в этой области сочтут набор тестов vimeo-corpus-10s полезным для оценки методов кодирования и обработки видео на практике.