Хабрахабр

Уличная магия сравнения кодеков. Раскрываем секреты

За это время были проведены десятки сравнений с отчетами от 23 до 550+ страниц, количество графиков в последнем сравнении перевалило за 7000, а количество разных феерических случаев за это время окончательно превысило все разумные пределы. В этом году исполняется юбилей — 16 лет, как был запущен сайт compression.ru, на котором автор и сотоварищи организуют сравнения видеокодеков и кодеров изображений. Поскольку следующая круглая дата (32 года) наступит еще нескоро, есть желание рассказать в честь юбилея малую толику феерического.

В лучшем случае — графики грамотно делали инженеры, а маркетинг только давал добро на публикацию. Если говорить про кодеки, то не секрет, что большинство сравнений и графиков, которые видит почтеннейшая публика — это продукт отдела маркетинга. К чему тратить время этих занятых людей! В худшем случае инженеры вообще не участвовали в их подготовке.

В сериале «‎Кремниевая долина»‎ стартап главного героя разработал гениальный алгоритм, который в последней серии первого сезона показал невероятное сжатие 3D видео и в итоге теперь миллионы стартаперов (и инвесторов) мира знают, что главное — это чтобы коэффициент Вайсмана был побольше и ещё гения надо найти, а остальное — фигня-вопрос. При этом тема сжатия весьма популярна. Это естественным образом увеличивает ожидание чудес и, конечно (КОНЕЧНО!) эти чудеса радостно демонстрируются компаниями! Чудо будет! В том числе с использованием последних достижений уличной магии.

DISCLAIMER: Любые совпадения имен и названий компаний ниже с реальными именами и названиями абсолютно случайны.

Обещаем, что к концу рассказа вы сможете показывать подобные фокусы сами, как, впрочем, и раскрывать многие из них. Усаживайтесь поудобнее! Поехали!

Level 1, фокусы для начинающих

Начнем с самого простого, ибо, как ни странно, эти методы вполне в современной (не сериальной, а настоящей!) Кремниевой долине прокатывают.

Итак, почтеннейшая публика, фокусы с демонстрацией сверхсильного сжатия начинаются!

Если сравнивается сжатие, то разумно чтобы качество было максимально одинаково (в идеале совершенно одинаково), а справа было бы сжато в 2 раза лучше, например. Наверняка многие видели подобные динамические сравнения с незаметными котиками на основе JS на страницах.

Сказано — сделано!

А картинки выглядят совершенно одинаково! Компания заявляет на 30% лучшее сжатие (все совпадения случайны!). Возникает желание посмотреть детальнее. Даже профессионально наметанный взгляд не находит различий. Получаем преимущества сразу по нескольким параметрам — во-первых, идеально демонстрируется лучший результат, во-вторых, не отвлекали инженера от работы, и, наконец, это место страницы сайта грузится вдвое быстрее. Лезем в код страницы и видим, что слайдер для первой и второй картинки берет данные из одного файла! Сплошной profit!!!

Теперь вы знаете, куда стоит посмотреть! Случай, не поверите, реальный.

Заглядываем в код слайдера — грузятся разные файлы. В другом месте — тоже слайдер и опять замечательный результат. В общем — все плюсы предыдущего способа, но фокус раскрывается чуть сложнее, правда за счет замедления загрузки страницы (за все приходится чем-то платить...). Наученные горьким опытом скачиваем их — они не просто до байта одного размера, они совпадают побитно! И, главное, не нужно привлекать дорогих специалистов в сжатии.

Выкладывается слайдер — смотришь — картинки отличаются, но качество о-о-очень похоже. Впрочем, более продвинутые маркетологи этого уровня идут еще дальше. Дальше больше! Ну ок. Скачиваешь — очень неплохое преимущество у их метода, даже непонятно, как они это сделали. Демонстрируется фантастическая открытость — есть даже линки на видеофайлы. Смотрим битовый поток и видим чудную картину: Выручает то, что мы же тут все поголовно русские хакеры (уже бренд на западе).

То есть даже многие эксперты, если не будут глубоко копать и перепроверять, подтвердят, что действительно у людей отличный результат примерно вдвое превосходящий по размеру сегодняшнего лидера при сравнимом качестве. Вы не поверите, подобные методы вполне себе используются и даже в некоторых случаях позволяют получить десятки миллионов долларов инвестиций.

Их директор прямо с порога сказал: «‎Вы должны нам все сделать на совесть. Вспоминается встреча с русским стартапом 6 лет назад. Правда не все наши инвесторы такие чисто конкретные, и свои фокусники и в наших палестинах тоже находятся. У нас инвесторы из «‎Северстали»‎, и, если что, к вам выедут спортивные бритые ребята с паяльниками.»‎ Как вы понимаете, в таких суровых условиях качество исследовательской работы волшебным образом возрастает, а количество фокусов разного уровня — падает… При работе с такими кейсами у нас, на родине слонов, возникает непреодолимое чувство жалости к западным инвесторам. Но про это в другой раз... Причем регулярно.

Level 7, резонансный

Эта история не про видеокодек, а про сжатие картинок, но в ней многое было по всем законам жанра «‎честных фокусов»‎.

Чисто для комплекта, как вы понимаете. Как-то довольно известная компания М решила, что им к своим форматам Windows Media Video (WMV) и Windows Media Audio (WMA) нужно добавить Windows Media Photo (WMP).

Ну не надо так громко кричать, не вас одного осенило! Молодой человек на галёрке! Культурные люди (посмотрите на первый ряд) максимум — понимающе усмехнулись в усы…

Сказано — сделано!

Далее внимательно следим за руками:

у WMP больше деталей, чем у JPEG и JPEG 2000 при том же уровне сжатия (мягко уравниваются JPEG и JPEG 2000 и задается уровень 24 раза), а в следующем абзаце:
Т.е.

обычно только в 6 раз сжимают, а было 24. Т.е. И вообще мы лучше в 2 раза точно. Вау, пахнет тремя разами! СМИ понесли благую весть в массы (некоторые написали, что в 2 раза лучше JPEG 2000), даже на Хабре повторили эту новость.

Чуть позднее появился график из этой презентации:

Как интерпретировать такие графики?

По вертикали обычно идет качество (какая-то из метрик в зависимости от моды в этот момент времени), по горизонтали — так или иначе — размер. Обычно с увеличением размера качество растет (хотя на практике всякое бывает). По линии одинакового качества (красная горизонтальная) можно прикинуть, что «‎пурпурный»‎ кодек примерно в 2 раза проигрывает по размеру «‎синему»‎ при том же качестве на этом диапазоне битрейтов.

Мы с большим нетерпением ждали возможности поиграться с этим кодером. Преимущество по сравнению с JPEG 2000 было небольшим, при том, что они, очевидно, отобрали лучшую картинку с чудным мальчиком и дельфинами. Примерно через полгода утилиту для сжатия таки выложили.

У нас к тому моменту как раз было годичной давности сравнение 9 реализаций JPEG 2000

Как не все йогурты одинаково полезны, так и не все реализации стандарта жмут одинаково хорошо. Да-да-да! Простой пипл этого, как правило, не знает, что позволяет безнаказанно ездить ему по ушам практически на бульдозере («‎Наш видеорегистратор поддерживает новейший H. Стандарт оговаривает только битовый поток, положить в который данные (и, кстати, вынуть!) можно сильно по-разному, это порождает отдельный рынок кодеков со своей жесткой конкуренцией по доброму десятку параметров. И никто (никто!) КРАЙНЕ вероятной подставы не замечает. 265/HEVC, больше его ни у кого нет!»‎).

Получилось как-то так:
Мы радостно вставили в предыдущий отчет 3 линии для WMP.

Видно, что линии реализаций JPEG 2000 идут довольно кучно и у жирной синей (лучшая реализация WMP) результаты где-то посередине, т.е. ПРОИГРЫВАЕТ JPEG 2000. Если взять JASPER за ноль и все по вертикали относительно него показать, то видно, что WMP с худшим параметром проигрывает почти всем, кроме двух последних (одна из них KDU, запомним это), а с лучшим — лежит где-то по центру, проигрывая многим реализациям:

Поскольку сравнение было выложено публично и наделало шуму в узких кругах, то разработчик даже ответил на него в официальном блоге. Заметка была вежливая: похвалили, покритиковали, а дальше, если продраться сквозь текст, человек чистосердечно признался, что они использовали самую худшую реализацию JPEG 2000 нашего сравнения (опубликованного за полгода до того) в своем сравнении, правда «‎совершенно случайно»‎. Мы, конечно, им поверим. Компания уважаемая и все такое.

Наши коллеги пошли дальше: взяли больше картинок и показали, что HD Photo проигрывает не только JPEG 2000, но и хорошей реализации JPEG (в 7 случаях из 14). Дальше название технологии было изменено с WMP на HD Photo, впрочем в сети остался такой вердикт:

В качестве вишенки на торт. Есть основания полагать, что они подбирали картинки, но они откровенно закопали HDPhoto, ибо кому нужен формат, который в половине случаев проигрывает древнему JPEG — непонятно:
И проигрывает конкретно.

Итого, секреты этого фокуса:

  • Берем худшую реализацию основного конкурента, сравниваем с ней.
  • Создаем рекламную шумиху (в стиле «‎мы всех сильно обогнали»‎).
  • Когда шумиха отходит на второй план, делаем релиз и надеемся, что никто не проверит, что там было на самом деле.

Дети! Никогда так не делайте и не обманывайте других! Ваша компания может потерять миллионы долларов и доверие специалистов.

Level 10, свежий! С нейросетями!

Вообще подобных случаев — очень много. Даже в России я сталкиваюсь с подобными ситуациями примерно пару раз в год (к нам, как к хозяевам compression.ru, информация стекается). На западе разводят лохов инвесторов примерно ежемесячно. А сейчас еще и Китай к этому развлечению подключился. Мощность компьютеров растет, сложность и возможности алгоритмов — тоже. Разбираться в этом все сложнее. Как следствие — бурное веселье продолжается!

Абсолютно все, к чему они прикасаются, волшебным образом улучшается. В последнее время очень популярны стали нейросети. А не применить ли их к сжатию видео?

Сказано — сделано!

Создан видеокодек на основе машинного обучения, который всех порвал! В ноябре прошлого года очередная благая весть с подачи самого «Уолл Стрит Джорнал» облетела мир. Вот пруф:

Вообще я лично крайне скептически воспринимаю все новости с упоминанием нейросетей. И вам советую (ОСОБЕННО, если вы инвестор). Нейросети устроены таким образом, что грамотно подбирая обучающую выборку под тестовую можно показать любой (для непонятливых — ЛЮБОЙ!) желаемый результат. Нейросети — идеальный инструмент для постановки на поток маркетинговых чудес. Одно чудеснее другого!

Согласитесь — убедительно. В общем график есть, картинки есть. Специально для скептиков господа привели еще несколько графиков на известных тестовых наборах:


Впрочем, если предыдущий график с картинками лично для меня был еще как-то объясним (заточиться на одно видео да еще с глубокими нейросетями можно всегда), то эти два графика заставили резко насторожиться.

Вас в них ничего не смущает?

Ответ

264 до принятия H. Из них следует, что за десять лет с принятия стандарта H. Эти тупые исследователи 10 лет топтались на месте и делали более медленные кодеки, которые сжимают так же!!! 265 особого развития кодеков не происходило! 8-\ Разница — 20% максимум, а то и меньше!!!

Они даже под это подводят базу, типа классические кодеки уперлись в предел и уже особо не развиваются (и тут на сцену выходят они, все в белом). И вы знаете, такая наглая ложь прекрасно работает! Причем ладно «The Wall Street Journal» — они (хотелось бы верить) только в финансах разбираются, ладно «MIT Technology Review» — эти джентльмены джентльменам Кремниевой долины верят на слово, но как некритически воспринял новость такой уважаемый ресурс, как Хабр — ума не приложу! Чего уж говорить про массово перепечатавших новость …

Во-первых, на графике ниже, построенном нами на том же наборе видео xiph, можно увидеть, что H. В реальности картина развития кодеков, к счастью, заметно отличается. 264. 265 на 25−31% лучше, чем H. 10 лет развития кодеков таки не прошли даром! Т.е. 264, и ступенька его преимущества, прямо скажем, весьма заметна:
(Уфф, прямо от сердца отлегло...) Во-вторых, свежий AV1 показывает практически двукратное улучшение по сравнению с H.

264 на графике авторов — он покроет новый кодек как… [вырезано цензурой]. Соответственно на глаз видно, что если наложить график AV1 на 45% левее H. Потому с ним и «‎забыли»‎ сравниться. Хорошо покроет, короче. Реальный расклад выглядит как-то так (сильно менее кучно, согласитесь):

Чтобы было понятно — у кодеков есть стандартные пресеты, которые позволяют варьировать скорость в значительных пределах (часто десятки раз), но при этом достигать большего сжатия при том же качестве (часто больше 2 раз). У x265 (очень неплохой open-source реализации стандарта HEVC) они называются: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo. Если взять medium за 1, то по скорости и размеру файла при том же качестве они для конкретного файла могут располагаться, например, как на графике ниже. Можно говорить, что относительно medium можно сделать файл на 40% больше или меньше, варьируя скорость в 10 раз:

Заметим, что для некоторых видео стандартные опции не обязательно идут монотонно (в данном случае по качеству). Также иногда «‎нестандартные»‎ опции могут дать большой выигрыш по размеру, в частности на примере выше потеряв 20% по скорости по сравнению с medium можно наиграть 30% по размеру — практически как при переходе на стандарт следующего уровня, но при прежней невысокой сложности декодера. Но это уже более сложный level, о нем в другой раз.

Хорошо, что не «veryfast», ведь могли бы и его! Как легко заметить выше, господа взяли для сравнения «slower». Люди в массе своей, глядя на график, не вспоминают о том, что скорость работы кодека может на пару порядков отличаться в зависимости от параметров. ) И не важно, что у них у самих кодек феерически медленный. Хотя на нашем графике выше («Bitrate/quality...») их пачка линий была в районе красной (которая самая плохая). Поэтому такой прием вполне прокатывает. Ага-ага! Заодно оправдывая топтание на месте в развитии кодеков.

264/5 with the bframes=0 option, VP9 with -auto-alt-ref 0 -lag-in-frames 0, and use the HM encoder lowdelay P main.cfg profile.» То есть они не смогли побить обычные кодеки в честном соревновании и выбрали low-latency режим с низкой задержкой, который используется обычно для реального времени, например, для видеоконференций. Есть и более тонкие подтасовки, например, господа пишут: «To remove B-frames, we use H. При этом их декодер (про энкодер промолчим) работает 2 секунды на кадр, то есть ни о каком low-latency даже близко говорить нельзя. Результаты кодека в нем хуже, естественно. Зато еще несколько процентов наиграли.

Это не все трюки, которые были использованы господами стартаперами, но картина уже ясна.

Например, эти господа опубликовали статью на https://arxiv.org/abs/1811. Понятно, что, чтобы фокус выглядел правдоподобно, нужны еще дополнительные штрихи, которые придают реализма. Сегодня развитие алгоритмов идет настолько быстро, что ждать, пока выйдет статья в журнале становится нестерпимо, поэтому многие сильные авторы публикуют результаты сначала на arxiv.org. 06981. А про то, что, например, на 1 апреля на arxiv.org принято публиковать разного рода пародии на научные статьи, в том числе высмеивая его как место публикаций, широкая публика не знает, поэтому для широкой публики публикация там выглядит типа даже солидно. Для уличных магов этот сайт удобен тем, что там можно разместить абсолютно любой материал — в отличие от рецензируемых журналов и конференций никто не задаст неприятных вопросов и не зарубит публикацию (нет kill reviewing серьезных мест).

Статья на хабре про них называлась «‎Первый видеокодек на машинном обучении кардинально превзошел все существующие кодеки, в том числе H. Идем дальше. Очередной прикол заключается в том, что машинное обучение в сжатии не только активно исследуется, чему уже посвящаются отдельные треки конференций (то есть статей много), но и активно используется, например, в AV1 (специально привожу гугловый запрос). 265 и VP9»‎. При этом особенностью современного интернета является то, что люди не проверяют информацию, что позволяет спокойно провозглашать себя первыми много кому (начиная с известных компаний). Но, если бы они честно сказали: «‎Мы выпустили второй кодек с использованием машинного обучения, при этом проиграв первому и по скорости, и по сжатию»‎, то Wall Street Journal мог про них и не написать… И MIT TechReview не написал бы… И даже Хабр… Очевидно, не вынеся последнего, в компании чуть-чуть поправили подачу. А фактчекинг не моден. Наглость, как известно, города берет!

— Загугли!
— Это как это?
[пример запроса дан выше)))]

В далекие-далекие времена, когда дискеты были большими, а винчестеры маленькими, одним из приемов «‎уличной магии для архиваторов»‎ было сохранить часть сжимаемого файла куда-нибудь подальше в директорию со временными файлами и таким образом показать рекорд. И еще про ML/DL. Винчестеры — выросли, дискеты совсем пропали, а данные стало модно прятать вглубь нескольких сотен мегабайт коэффициентов сетки. С тех пор времена изменились. Глубокие нейросети — однозначно сила, короче! Можно сохранить «‎авторский знак»‎ в сетке, можно — пасхалку, а можно фейковый рекорд сжатия поставить.

Резюмируя данный путь к успеху:

  • Игнорируем современного лидера так, будто его вообще нет.
  • Аккуратно формулируем все так, чтобы читалось будто мы первые использовали какую-нибудь новую технологию (и даже если первый это сделал лидер — никто проверять не будет).
  • У стандартов 5− и 15−летней давности откручиваем ручки так, чтобы они работали хуже нас.
  • Побольше наглости — обосновываем то, что они легли кучно позади нас тем, что они уперлись в предел и уже не развиваются.
  • Публикуемся в «The Wall Street Journal» и на Хабре…

И… (барабанная дробь!)… вам дают еще несколько миллионов долларов! Или не дают… Я бы не давал… Инвесторы! Не спать! А то потом опять будете на воду дуть...

А теперь мастер-класс!

Как я и обещал выше, к концу этого текста вы сможете легко блистать на подмостках условного pikabu.

Т.е. Сейчас, о почтеннейшая публика, я покажу вам фокус, позволяющий сравнивать, что угодно с чем угодно с любым заранее заданным результатом. Исполним любой каприз отдела маркетинга за ваши деньги совершенно бесплатно! если надо, чтобы кодек А был лучше кодека Б — значит покажем это, если нужно, чтобы Б был лучше А, хорошо, можем показать и это.

Как говорится — не верь никому, проверь сам. Давайте сами проверим, как эти самые кодеки жмут. А то, может, и правда эти стандарты не развиваются и нас просто дурят, заставляя зря платить заработанные непосильным трудом деньги непонятно за что?

264 и MPEG-4). Возьмем «‎Аватар»‎ в формате 480p24 и сожмем его кодеком x264 c настройками "-preset superfast -x264-params «nal-hrd=cbr» -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M" и кодеком xvid с настройками "-preset superfast -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M" (две очень неплохие open-source реализации стандартов H. Почему взяты эти кодеки и настройки будет объяснено позднее.

У нас получились два файла почти одного размера:
avatar_x264_cbr1M_superfast.mkv — 1402 MB
avatar_xvid_cbr1M_superfast.mkv — 1401 MB

Внимательно следите за руками!!! А теперь, дамы и господа!

Смотрим, вот новый стандарт и старый:

А если быстрое движение?
Смотрим другой кадр:

Без комментариев!

Прогресс явный и неумолимый! Согласитесь! А жизнь — краше и веселее! Все развивается и становится все лучше и лучше!

Хотя…

Новый стандарт совсем слил… Боже, что это???

Люди! А-а-а-а! Корпорации вас обманывают!!! Знайте! Кодеки уже давно не развиваются, но вам сообщают что все идет хорошо!

Все, чему они научились за 10 лет — это размывать блочность! Вы видите? Стало хуже, чем было! Причем делают это просто отвратительно! 11 Вас водят за нос все эти годы!!!!!!!

А теперь разберемся, как это сделано.

Вот начало фильма, например — качество по классической метрике PSNR (сомнений кто лучше, кто хуже, кстати, нет, видно что зеленый xvid проигрывает в среднем):

Картинка кликается На самом деле полный кадр выглядит так:

Когда кодек работает, особенно в режиме постоянного битрейта, качество кадров достаточно сильно колеблется.

5 dB). Если вычесть один график из другого (на рисунке ниже, другое место в файле) — то видно, что в целом кодек более старого стандарта будет проигрывать, однако местами он может вполне уходить на +5 dB (PSNR удобна тем, что она обратно логарифмически пропорциональна среднеквадратичному отклонению, за счет чего, обычно, работает правило: на диапазоне средних и низких битрейтов на глаз видна разница в 1. И тут же виден кадр, где в другую сторону разница 20 dB:

Картинка кликается

Теперь вы понимаете, почему ваш покорный слуга всегда с искренним умилением смотрит на приведенные в маркетинговых материалах компаний отдельные кадры, как на доказательство более высокого качества на видео (особенно когда нет графиков)… И ведь так до сих пор иногда приводят!

Главное — взять файл подлиннее! Чтобы отбирать кадры было проще, мы больше 10 лет назад сделали режим сравнения в нашей тулзе MSU VQMT, при котором сравнивались сразу 3 файла — оригинал, кодек-1 и кодек-2 и сразу сохранялись, например, 30 лучших пар кадров в одну или в другую сторону.

А MPEG-4 с низким битрейтом был взят, чтобы с блочностью было все нагляднее.

Итого, путь к успеху:

  • Выбираем режим, при котором колебание качества у кодеков максимально (обычно, однопроходный CBR).
  • Уменьшаем разрешение исходника в 2 раза (ибо скорее всего придется увеличивать фрагменты, например выше фрагменты были увеличены в 3 раза)
  • Берем какую-нибудь метрику (PSNR, SSIM, модную в этом сезоне VMAF).
  • Берем в качестве сравнения старый стандарт с блочностью или отключаем внутренний деблокинг у конкурента опциями.
  • И последнее, не забываем взять файл подлиннее: 3 часа фильма — самое оно!

И БИНГО! У вас несколько примеров насколько вы лучше конкурента!

Пипл будет доволен. Ну или где-нибудь, где публика не слишком разборчива, можно кого-нибудь с кем-нибудь успешно сравнить.

Может хоть пореже, наконец, они будут встречаться... Теперь вы знаете, какие вопросы задавать, когда видите сравнение с кадрами в материалах компаний!

Вместо заключения

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

Самый популярный ответ в Ответы@Mail.ru на вопрос ‎«Какой самый лучший видеокодек?»‎ — «K-Lite Mega Codec Pack». А людей, обычно, интересуют простые ответы. А вы говорите — кодеки, стандарты… И это для массового зрителя действительно самый короткий, понятный и точный ответ.

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

Всем — технической грамотности! Спасибо за внимание, дамы и господа!

Благодарности

Хотелось бы сердечно поблагодарить:

  • Лабораторию Компьютерной Графики ВМК МГУ им. М.В.Ломоносова за вклад в развитие компьютерной графики в России и не только,
  • наших коллег из видеогруппы, в том числе Сергея Звездакова, Анастасию Анциферову и Романа Казанцева, чьи примеры использованы выше,
  • персонально Константина Кожемякова, который сделал очень много для того, чтобы эта статья стала лучше и нагляднее,
  • и, наконец, огромное спасибо Сергею Лаврушкину, Егору Склярову, Ивану Молодецких, Евгению Ляпустину, Дмитрию Куликову, Александре Анзиной, Виталию Людвиченко, Михаилу Ерофееву и Георгию Осипову за большое количество дельных замечаний и правок, сделавших этот текст намного лучше!
Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть