Примеры реконструкции фрагмента видео, сжатого разными кодеками с примерно одинаковым значением BPP (бит на пиксель). Сравнительные результаты тестирования см. под катом

Исследователи из компании WaveOne утверждают, что близки к революции в области видеокомпрессии. При обработке видео высокого разрешения 1080p их новый кодек на машинном обучении сжимает видео примерно на 20%лучше, чем самые современные традиционные видеокодеки, такие как H.265 и VP9. А на видео «стандартной чёткости» (SD/VGA, 640?480) разница достигает 60%.

Разработчики называют нынешние методы видеокомпрессии, которые реализованы в H.265 и VP9, «древними» по стандартам современных технологий: «За последние 20 лет основы существующих алгоритмов сжатия видео существенно не изменились, — пишут авторы научной работы во введении своей статьи. — Хотя они очень хорошо спроектированы и тщательно настроены, но остаются жёстко запрограммированными и как таковые не могут адаптироваться к растущему спросу и всё более разностороннему спектру применения видеоматериалов, куда входят обмен в социальные СМИ, обнаружение объектов, потоковое вещание виртуальной реальности и так далее».

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

Основная идея сжатия видео заключается в удалении избыточных данных и замене их более коротким описанием, которое позволяет воспроизводить видео позже. Большая часть сжатия видео происходит в два этапа.

Первый этап — сжатие движения, когда кодек ищет движущиеся объекты и пытается предсказать, где они будут в следующем кадре. Затем вместо записи пикселей, связанных с этим движущимся объектом, в каждом кадре алгоритм кодирует только форму объекта вместе с направлением движения. Действительно, некоторые алгоритмы смотрят на будущие кадры, чтобы определить движение ещё более точно, хотя это явно не сможет работать для прямых трансляций.

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

Новый подход, который представили учёные, впервые использует машинное обучение для улучшения обоих этих методов сжатия. Так, при сжатии движения методы машинного обучения команды нашли новые избыточности на основе движения, которые обычные кодеки никогда не были в состоянии обнаружить, а тем более использовать. Например, поворот головы человека из фронтального вида в профиль всегда даёт аналогичный результат: «Традиционные кодеки не смогут предсказать профиль лица исходя из фронтального вида», — пишут авторы научной работы. Напротив, новый кодек изучает эти виды пространственно-временных шаблонов и использует их для прогнозирования будущих кадров.

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

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

Авторы обходят это путём сжатия обоих сигналов одновременно и на основе сложности кадра определяют, как распределить пропускную способность между двумя сигналами наиболее эффективным способом.

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


Примеры реконструкции фрагмента, сжатого разными кодеками с примерно одинаковым значением BPP показывает заметное преимущество кодека WaveOne


Карты оптического потока H.265 (слева) и кодека WaveOne (справа) на одинаковом битрейте

Однако новый подход не лишен некоторых недостатков, отмечает издание MIT Technology Review. Пожалуй, главным недостатком является низкая вычислительная эффективность, то есть время, необходимое для кодирования и декодирования видео. На платформе Nvidia Tesla V100 и на видео VGA-размера новый декодер работает со средней скоростью около 10 кадров в секунду, а кодер и вовсе со скоростью около 2 кадров в секунду. Такие скорости просто невозможно применить в прямых видеотрансляциях, да и при офлайновом кодировании материалов новый кодер будет иметь весьма ограниченную сферу использования.

Более того, скорости декодера недостаточно даже для просмотра видеоролика, сжатого этим кодеком, на обычном персональном компьютере. То есть для просмотра этих видеороликов даже в минимальном качестве SD в данный момент требуется целый вычислительный кластер с несколькими графическими ускорителями. А для просмотра видео в качестве HD (1080p) понадобится целая компьютерная ферма.

Остаётся надеяться только на увеличение мощности графических процессоров в будущем и на совершенствование технологии: «Текущая скорость не достаточна для развёртывания в реальном времени, но должна быть существенно улучшена в будущей работе», — пишут они.

Бенчмарки


В тестировании принимали участие все ведущие коммерческие кодеки HEVC/H.265, AVC/H.264, VP9 и HEVC HM 16.0 в эталонной реализации. Для первых трёх использовался Ffmpeg, а для последнего — официальная реализация. Все кодеки были максимально настроены, насколько позволили знания исследователей. Например, для удаления B-фреймов использовался H.264/5 с опцией bframes=0, в кодеке аналогичная процедура осуществлялась настройкой -auto-alt-ref 0 -lag-in-frames 0 и так далее. Для максимизации производительности на соответствие метрике MS-SSIM, естественно, кодеки запускались с флагом -ssim.

Все кодеки проверяли на стандартной базе видеороликов в форматах SD и HD, которые часто используются для оценки алгоритмов сжатия видео. Для SD-качества использовалась библиотека видео в разрешении VGA от e Consumer Digital Video Library (CDVL). Она содержит 34 видеоролика с общей длиной 15 650 кадров. Для HD использовался набор данных Xiph 1080p: 22 видеоролика общей длиной 11 680 кадров. Все видеоролики 1080p были обрезаны по центру до высоты 1024 (в данный подход нейросеть исследователей способна обрабатывать только измерения с размерностями, кратными 32 по каждой стороне).

Различные результаты тестирования показаны на диаграммах ниже:

  • средние значения MS-SSIM для всех видеороликов в наборе для каждого кодека;
  • сравнение размеров файла при усреднении значения MS-SSIM для всех кодеков;
  • влияние различных компонентов кодека WaveOne на качество сжатия (нижняя диаграмма).



Результаты тестирования на наборе видеороликов низкого разрешения (SD)


Результаты тестирования на наборе видеороликов высокого разрешения (HD)


Влияние различных компонентов кодека WaveOne на качество сжатия

Не стоит удивляться такому высокому уровню сжатия и кардинальному превосходству над традиционными видеокодеками. Данная работа во многом основана на предыдущих научных статьях, где описываются различные методы сжатия статичных изображений на базе машинного зрения. Все они намного превосходят по уровню и качеству сжатия традиционные алгоритмы. Например, см. работы G. Toderici, S. M. O’Malley, S. J. Hwang, D. Vincent, D. Minnen, S. Baluja, M. Covell, R. Sukthankar. Variable rate image compression with recurrent neural networks, 2015; G. Toderici, D. Vincent, N. Johnston, S. J. Hwang, D. Minnen, J. Shor, M. Covell. Full resolution image compression with recurrent neural networks, 2016; J. Balle, V. Laparra, E. P. Simoncelli. End-to-end optimized image compression, 2016; N. Johnston, D. Vincent, D. Minnen, M. Covell, S. Singh, T. Chinen, S. J. Hwang, J. Shor, G. Toderici. Improved lossy image compression with priming and spatially adaptive bit rates for recurrent networks, 2017 и другие. В этих работах показано, как обученные нейросети заново изобретают многие техники сжатия изображений, которые были изобретены человеком и раньше вручную прописывались для применения традиционными алгоритмами сжатия.

Прогресс в области ML-сжатия статических изображений неизбежно привёл к появлению первых видеокодеков, основанных на машинном обучении. С увеличением производительности графических ускорителей именно реализация видеокодеков стала первым кандидатом. До настоящего момента существовала только единственная попытка создать видеокодек на машинном обучении. Она описана в работе C.-Y. Wu, N. Singhal, and P. Krahenbuhl. Video compression through image interpolation, которая опубликована в ECCV (2018). Та система сначала кодирует ключевые кадры, а затем использует иерархическую интерполяцию кадров между ними. Она демонстрирует эффективность кодирования примерно как у традиционного кодека AVC/H.264. Как видим, сейчас исследователям удалось значительно превзойти это достижение.

Статья «Выученное сжатие видео» опубликована 16 ноября 2018 года на сайте препринтов arXiv.org (arXiv:1811.06981). Авторы научной работы — Орен Риппель (Oren Rippel), Санджей Наир (Sanjay Nair), Карисса Лью (Carissa Lew), Стив Брэнсон (Steve Branson), Александер Андерсон (Alexander G. Anderson), Любомир Бурдев (Lubomir Bourdev).



Лучший комментарий Stas911:
Altaisky: Статья про видеокодек и ни одного видео. Нечего было показать?
Stas911: Они ещё декодируют первый кадр. Проявите терпение.

Комментарии (182)


  1. qwertyk06
    28.11.2018 14:45
    +2

    Старая фраза, «чтобы фильмы смотреть можно было» обретает новую жизнь.


    1. jrthwk
      28.11.2018 19:33

      /хмыкая
      Доводилось в конце 1990х держать в руках железный ускоритель для просмотра видео, который цеплялся к разъему на видяшке и таки да, реально ускорял просмотр видео.

      История идет по спирали, бгг.


      1. viiy
        28.11.2018 20:08

        Voodoo2 от 3dfx же ) У меня была такая.
        Voodoo 3 уже самостоятельный девайс


        1. jrthwk
          28.11.2018 20:41
          +1

          Ненене.
          Это было еще до пришествия вуды, и встретилось мне только один раз. Как называлось и чье было — за давностию лет не помню совсем.
          Маленькая такая платка с большим чипом, которая втыкалась в штырьковый разъем на самой видеокарте, внутри, и использовалась не для игрушек а именно для видео. Видео которое на том компе едва шевелилось с этой платкой бодро игралось во весь экран.


          1. mambet
            28.11.2018 20:54

            Что-нибудь такое, наверное.


          1. BiW
            29.11.2018 12:35

            MPEG декодер. Сам такие вживую не видел, только в западной прессе о них читал.


          1. SRGMNV
            30.11.2018 09:44

            1. jrthwk
              30.11.2018 12:11

              О! Именно оно, сеньк за помощь склерозу. ;)


          1. DrPass
            01.12.2018 04:14

            Маленькая такая платка с большим чипом, которая втыкалась в штырьковый разъем на самой видеокарте, внутри, и использовалась не для игрушек а именно для видео.

            У меня была такая, но отнюдь не маленькая, а размером с тот же Voodoo, зато была совместима со всеми видеокартами, а не только с какой-то одной конкретной. Называлась Creative Encore Dxr3.


    1. Fracta1L
      28.11.2018 21:24
      +1

      Ну да, мой 6-летний Core i7 уже едва справляется с 4k 60 fps, а на AV1 совсем захлёбывается, сплошное дёрг-дёрг, а тут ещё хлеще кодек подвезли.


      1. true_id1
        29.11.2018 13:33

        Сдаётся мне дело не в процессоре. Мой 6 летний core i7 вполне справляется и с 8к.


        1. ValdikSS
          30.11.2018 11:08

          Если только c 8K в MPEG2.


      1. SeeN
        29.11.2018 14:54

        Дело скорее всего в видеокарте, у меня i5-2400 и gtx1060 3gb — легко запускаю 8к 60фпс на ютубе.


        1. treegross
          29.11.2018 17:16

          Всё верно — дело в видеокарте. GTX 1060 умеет в аппаратное декодирование HEVC и vp9, в результате трудится она, а процессор отдыхает.


          1. borjomi
            01.12.2018 11:38

            у меня такая же система: i5-2400, 1060 6гб, 8к 60 фпс практически не воспроизводит, 4к с подергиваением. проц нагружен на 100% видюха только на 10%. как заставить видеокарту брать задачу на себя?


            1. nidalee
              01.12.2018 11:41

              Какой браузер? Или плеер?


              1. borjomi
                01.12.2018 16:32

                браузеры: firefox, vivaldi, opera. в системе плеер от медиа плеер классик.


                1. nidalee
                  01.12.2018 16:45

                  В Firefox достаточно включить аппаратное ускорение в настройках. Попробуйте в Edge, там это ускорение выключить достаточно сложно.


                  1. borjomi
                    01.12.2018 17:13

                    попробовал аппаратку в огнелисе, выбрал в настройках Максимальное число процессов контента — 7, перезагрузил браузер и разницы не заметил, кроме возросшего потребления памяти до 8гб, в моей системе 16 гб.

                    смотрю этот ролик www.youtube.com/watch?v=ZkofUXbwGDs
                    если включаю 1440, то графический проц видеокарты нагружен на 30%, если 2160, то гп нагружен на 20-25 циклично уходя в ноль. ну а в 8к вообще спит. проблему с интернетом или с буферизацией не вижу, достаточно быстро грузит ютуб.


                    1. nidalee
                      01.12.2018 17:14

                      В Edge попробовали?


                      1. borjomi
                        01.12.2018 17:16

                        еще нет, но сейчас этим займусь.
                        эм, у меня операционка винда 7, я так понял edge под нее нет?


                        1. nidalee
                          01.12.2018 17:53

                          Да, edge под нее нет. Тогда не знаю, что вам посоветовать — можете попробовать параллельно поставить 10ку и проверить в ней, в том числе на своих стандартных браузерах. Драйвер поставить с сайта Nvidia не забудьте. На 10ке «в стоке», с драйвером, Firefox и Edge должны работать «из коробки», без каких либо настроек.


                          1. borjomi
                            01.12.2018 18:16

                            ладно, в любом случае, благодарю за помощь.


        1. ValdikSS
          30.11.2018 11:08

          Причем тут видеокарта? Аппаратного декодирования AV1 в потребительских видеокартах не будет еще года 3 минимум.


    1. vsb
      29.11.2018 11:25
      +1

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


      1. dimka11
        29.11.2018 12:06

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


      1. eigrad
        29.11.2018 15:53

        Там все вычисления уже на GPU, всё изначально векторизировано. Но как вариант для декодирования такого видео вполне можно приспособить habr.com/company/intel/blog/430492 :).


  1. SADKO
    28.11.2018 14:49
    +2

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


    1. foxyrus
      28.11.2018 15:52

      Так не поэтому ли скорость кодирования 2 кадра в секунду, что сеть каждый раз обучается?


      1. ValdikSS
        28.11.2018 23:57

        Исключено. Для высокого разрешения 2 кадра в секунду на H.265/VP9 — довольно быстро. Core i5-4570 кодирует VP9 1920?1080 примерно 2 кадра в секунду.


        1. wataru
          30.11.2018 16:59

          Тут кодируется 2 кадра в секунду в VGA на Nvidia Tesla V100. Я сильно подозреваю, что, если на тот же VP9 бросить такие же мощности, он сильно выиграет в качестве.


          1. nidalee
            01.12.2018 11:40

            VP9 не кодируется на видеокартах, к сожалению.


    1. RomanArzumanyan
      29.11.2018 09:58
      +1

      В скринах бросается в глаза блочность традиционных кодеков

      Блочность там неспроста. Именно разбиение кадра на блоки малого размера даёт приемлемую вычислительную сложность и относительную гомогенность входного изображения в пределах малого блока. Отсюда хорошее приближение исходного изображения косинусными преобразованиями и методами меж- и внутри- кадрового предсказания.

      Сравнение кодеков выглядит необъективным. Н.264/Н.265 построены вокруг В-кадров и заточены под метрику PSNR. Меж тем, В-кадры не использовались, а качество измеряли по метрике SSIM. Если авторам интересна именно эта метрика, то стоило добавить в сравнение кодек AV1. Желаю авторам удачи, но сомневаюсь что статью примут в серьёзный рецензируемый журнал.

      Заголовок статьи, конечно, жёлтый. Как минимум, не хватает сравнения с AV1.


      1. Kaigorodov
        29.11.2018 10:09

        Верно, причём современные медиа форматы очень сильно оптимизируются также под быстрое набор инструкций потребительских ПК. Создатели существующих кодеков даже не ставили такой (непрактичной) задачи, которую поставили авторы статьи.


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


    1. erlyvideo
      29.11.2018 10:45

      угу. Для начала хотелось бы услышать комментарии от Ясона Гаретта, потому что как правило он дает рекомендации по тому, что бы ultrafast настройки x264 поменять на что-то не столь радикальное


    1. 3Dvideo
      29.11.2018 16:12
      +2

      Только добрался. Посмотрели с коллегами.

      Классика жанра )))

      Для начала — результаты тестирования кодеков 2017 (ПРОШЛОГО) года:
      image

      Что можно сказать про авторов:

      • Для начала — они начисто проигнорировали наличие AV1, который сегодня (молитвами Google) развивается крайне быстро, причем в открытых исходных текстах! И в общем-то всех рвет (но мучительно медленный пока).
      • Далее, авторы пишут: «We evaluate H.264 and H.265 in both the default preset of medium, as well as slower.» Как легко заметить на графике выше — есть еще пресеты Slow, Veryslow и Placebo, причем в последнем есть варианты с 2 и 3 проходами. И это позволяет заметно больше десятка процентов наиграть! Просто за счет выбора другого пресета!
      • Ну и, наконец, забавно выглядит выбор базовой реализации для H.265. Если посмотреть на график сравнений этого года image хорошо видно, что хорошая коммерческая реализация H.265 (HW265) при высокой скорости работы обгоняет по степени сжатия, сделанные на основе базовой (UC265 и sz265) В ПОЛТОРА РАЗА!!!
        Прикол, что при этом у них волшебным образом совпали графики реализаций H.264 и H.265, т.е. кодеки, которые разделяет 13 лет развития типа работают одинаково по эффективности. Но боже, кого это смущает? )))

      Секрет успеха 1: выкидываем из сравнения сегодняшнего лидера, выбираем пресеты послабее для хороших кодеков и выбираем заведомо слабую для самого сильного аналога! И, бинго, мы первые!!! )))

      А есть еще и параметры, например, «To remove B-frames, we use H.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 режиме. При том что у них декодер работает 2 сек на кадр, то есть ни о каком low-latency даже близко говорить нельзя.

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

      Кстати — в AV1 вполне себе используются нейросети, но точечно и по делу. Но сказать «второй кодек с машинным обучением» — согласитесь, не прозвучит ), особенно если вы решили первый проигнорировать как сильного конкурента ))))

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

      Также доставляют картинки «оптического потока» H.265 и у них. У них картинка выглядит более гладкой, значит она (конечно!) более правильная и современная ))). Есть один маленький нюанс. Эту картинку надо СЖИМАТЬ. Т.е. она должна быть компактно представлена. И (внезапно!) выясняется, что компактнее вовсе не означает красивее, тем более если речь идет о технических внутренних данных, которые никто никогда кроме разработчиков не видит! Скорее наоборот — что-то квадратное великолепно сжимается, а что-то плавное — плохо. Т.е. корректно было бы привести рядом во сколько обошлось сохранение векторов движения справа и слева, во сколько обошлась межкадровая разница справа и слева. Ну и кадры, которые получились с их значениями MS-SSIM, обязательно. После этого появляется предмет обсуждения, если там есть о чем говорить, конечно.

      Секрет успеха 3: Вырываем из контекста какой-то кусок внутренних данных, который визуально выглядит красивее (как вариант — можно что-то красиво визуализировать). Показываем у нас и у них. И неважно, как оно сжимается. Люди (включая инвесторов))) реально любят красоту!

      Вообще кому интересно — вот так примерно кодеки сегодня располагаются в многомерном пространстве реальных требований:
      image
      Как видно — картинка реально многомерная и для реального успеха нужно в нескольких измерениях преуспевать.

      В качестве вишенки на торт — нет смысла сравнивать кадры. В кодеке (особенно если он пытается выдержать битрейт, он ведь у нас работает в low-latency режиме с ограниченным каналом, не правда ли?) заведомо идут осциляционные процессы. В таких режимах можно на примерах доказать, что MPEG-2 точно превосходит AV1. Главное взять последовательность подлиннее ))) (бонусный секрет)))

      Ну и публикуется все на архиве, а не в материалах Data Compression Conference ), ведь на архиве не будут задавать неприятных вопросов до публикации! )))

      Всем удачи!


      1. nidalee
        30.11.2018 05:33

        Можно вопрос по последней картинке? Каким образом у AV1 стал high encoding performance? Или я что-то не так понял? Он сейчас хоть что-то из кодеков обгоняет по скорости?


        1. batyrmastyr
          30.11.2018 08:35

          Тему статьи точно обгоняет )


          1. nidalee
            30.11.2018 09:31

            Да уж, ну это сложно не обогнать…


        1. ValdikSS
          30.11.2018 11:21

          Эта картинка из статьи, которую пишут нам из машины времени, года из 2022.
          www.streamingmedia.com/Articles/Editorial/Featured-Articles/At-the-Battle-of-the-Codecs-Answers-on-AV1-HEVC-and-VP9-128213.aspx?CategoryID=423

          In terms of decode performance, one attendee reported that a major social media company was already distributing AV1 streams to mobile viewers with efficient playback, using decoders included in the company’s iOS and Android apps. I shared my finding that Chrome and Firefox were playing 1080p video on a single-CPU HP ZBook notebook using between 15 and 20 percent of CPU resources.


          1. nidalee
            30.11.2018 12:11

            AV1 streams to mobile viewers with efficient playback, using decoders included in the company’s iOS and Android apps
            Но ведь в вашей цитате речь идет о декодинге видео, а не энкодинге. Мне кажется, что на картинке что-то кардинально неверно со шкалой «encoding performance», потому что у H264 эта производительность ниже, чем у AV1…
            Плюс почему-то свободна low-половина у следующей шкалы, декодинга. Тогда уж AV1 нужно было поставить в low (пока мы еще в 2018), а hevc — по середине, как мне кажется, иначе ерунда какая-то выходит.


            1. ValdikSS
              30.11.2018 12:44

              На картинке многое не соответствует действительности, не только encoding performance (хотя там имелось в виду complexity). А ниже, в decoding performance, вероятно, речь о производительности, а не сложности.
              В Decoder install base VVC находится не в самом левом положении, хотя для него декодер появился, ну, пару месяцев назад, и еще не установлен ни у кого, кроме как у разработчиков этого кодека.

              Я привел цитату, потому что она просто нереалистична. В цитате у человека на ноутбуке декодирование FullHD AV1 отнимает 15-20% CPU, в то время как на десктопном четырехядерном i5-4570 мой компьютер с трудом декодирует такой видеопоток чуть быстрее реалтайма (24 fps), не говоря уже о мобильных устройствах.


        1. 3Dvideo
          30.11.2018 12:32

          У слова performance — много значений. Затрудняюсь сказать, что имели ввиду коллеги, скорее перепутано направление первой оси. AV1, как я писал выше — не просто медленный, он мучительно медленный, хотя его и ускоряют сейчас довольно эффективно.
          Суммарно там в этом году в 20-100 раз ускорение (очевидно с падением эффективности) и до конца года обещают еще:
          image
          Так что чуть позднее можно будет более предметно говорить, что в итоге получилось.

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


          1. nidalee
            30.11.2018 12:43

            AV1, как я писал выше — не просто медленный, он мучительно медленный
            Знаю, вот и удивился. Хотел его попробовать, но просто не дождался окончания процесса.
            Поэтому остается ждать и смотреть, что получается по ходу.
            Ну я не могу сказать, что куда-то спешу, пока HEVC вполне справляется с задачами, которые я ему ставлю. С VP9 устал воевать с колорспейсами…


            1. 3Dvideo
              30.11.2018 12:54

              Рано, рано ещё ) image
              AV1 пока на этапе Innovators и даже о его характеристиках сложно говорить. Я уж молчу про то, что у индустрии к нему сложное отношение. Есть те, кому он сильно поможет (кто контент раздает), а железячники за голову держатся — им это в железе реализовывать… )))


  1. xeioex
    28.11.2018 15:00
    +1

    Это как сравнивать теплое с мягким.

    Текущие кодеки изначально исходят не из максимальной компрессии. А из возможной компрессии с учетом ограничений (сложности и цены) декодера (https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profiles). Поэтому в таких кодеках используются ассиметричные алгоритмы, такие что декодирование должно быть достаточно простым, легко параллелизуемым и локальным (что бы можно было создать специализированные чипы). Тогда как кодирование может быть в разы более трудоемким.


  1. johnfound
    28.11.2018 15:08

    Остаётся надеяться только на увеличение мощности графических процессоров в будущем

    Не, не будет больше увеличения мощности.


    1. KevlarBeaver
      28.11.2018 15:11
      -1

      Вы правы, ведь 640 килобайт хватит всем.


      1. johnfound
        28.11.2018 15:18
        -1

        Не поняли. Здесь не вопрос в том хватит — не хватит. Конечно не хватит. Вот мне например скорости света тоже не хватает, чтобы до Андромеды летать, а что поделать?


        1. KevlarBeaver
          28.11.2018 15:21
          -1

          Не поняли.

          Я всё понял. А вы — не умеете в сарказм.

          Вот мне например скорости света тоже не хватает, чтобы до Андромеды летать, а что поделать?

          На самом деле, может быть и хватит. Вы почему-то учитываете скорость света и расстояние, но не учитываете лоренцево сокращение длины.


          1. johnfound
            28.11.2018 15:42

            Я всё понял. А вы — не умеете в сарказм.
            На самом деле, может быть и хватит.

            Наверное сарказмы у нас разные. Мне кажется, что и вы не так умелы. :P


            1. KevlarBeaver
              28.11.2018 16:00

              У нас какой-то неудачный дуэль выходит. После каждого сообщения, вы меня минусуете. А я вас — не могу. Такое ощущение, что секундант вам выдал револьвер, а мне — палку и сказал произносить «пыщ!» при «выстреле» из неё.


              1. johnfound
                28.11.2018 17:24

                Я вас не минусовал. И вообще я очень, очень редко минусую кого нибудь. И никогда как ответ на шутку или иронию.


                1. TimsTims
                  29.11.2018 09:08
                  +2

                  Очень жаль, что ветка прервалась, а то я уже приготовил попкорн)
                  /комментарии_на_хабре_порою_интересней_поста


                  1. Kaigorodov
                    29.11.2018 10:17

                    Согласен. Просто johnfound тонко шутит и не всем понятно.


                    А шутку я объясню:
                    кодеки разрабатываются для существующих наборов вычислительных инструкций, чтобы у всех быстро проигрывалось на реальных машинах. Авторы статьи такой задачи вообще не ставят. И в результате сделали кодек в сотни раз медленнее. Зато оптимизировали какой-то другой параметр на 20%.
                    А в конце статьи пишут


                    Остаётся надеяться только на увеличение мощности графических процессоров в будущем

                    Своим ответом


                    Не, не будет больше увеличения мощности.

                    johnfound как бы намекает, что надо делать кодек для тех вычислительных устройств которые есть сейчас.


                    1. johnfound
                      29.11.2018 11:01
                      +1

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


                      … надо делать кодек для тех вычислительных устройств которые есть сейчас.

                      А вот это надо на камне вытесать и поставить на вход факультетов ИТ:


                      «Пиши программы для существующих компютеров, ибо в будущем смотреть тебе не дано!»


                      А авторы очевидно расчитывают на экспоненциальный рост производительности в будущем. А вот его и вправда уже нет и не будет в будущем. Было, да сплыло. Недолго музыка играла… Ну и так далее. :D


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


                      1. rexen
                        29.11.2018 21:54

                        авторы очевидно расчитывают на экспоненциальный рост производительности в будущем. А вот его и вправда уже нет и не будет
                        Раскрывайте карты. На чём основан прогноз? Лопнет экономический пузырь и у людей денег не будет на 11-й айфон или упрёмся в техпроцесс и тепловыделение или скорость деградации софта перевесит скорость деления ядер процессоров?


                        1. johnfound
                          29.11.2018 23:31
                          +1

                          Это не прогноз. Это простое наблюдение. Экспоненциального роста уже нет. И давно. Не заметили что ли? Производительность увеличивается в лучшем случае полиномиально. И степень полинома (мне кажется) не намного больше единицы.


                          1. nidalee
                            30.11.2018 05:37

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


                            1. batyrmastyr
                              30.11.2018 09:11

                              Упираемся в стоимость производства. С одной стороны, добавляешь ядра — цена растёт не линейно. C уменьшением техпроцесса количество брака тоже растёт и, в итоге, 10 нм могут оказаться дороже 30. TSMC оказывается рекламирует «древние» 500 нм.
                              А скорость деградации ПО не падает, увы.


                              1. nidalee
                                30.11.2018 12:15

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


                            1. johnfound
                              30.11.2018 09:56

                              Сейчас как раз увеличением их количества и занимаются

                              Но не экспоненциально же! А это важно и меняет все!


                              А кстати, люди смотрят видео не на серверах и даже не на десктопах, а на телефонах.


                              1. nidalee
                                30.11.2018 12:16

                                А кстати, люди смотрят видео не на серверах и даже не на десктопах, а на телефонах.
                                Да, есть такая проблема. Ну на телефонах можно ждать только AV1, никаких других (дельных) кодеков там не появится в ближайшие десять лет. Если, конечно, не произойдет какая-нибудь революция в сфере.


          1. doctorw
            29.11.2018 11:01

            лоренцево сокращение длины.

            И какой будет год на Земле, когда вернется с Андромеды?


            1. Deerenaros
              29.11.2018 15:04

              Почему-то меня это волнует в меньшей степени… И более того, чувства не строго негативные, а смешанные. Ну, на секунду. Я был бы не против посмотреть на человечество через 1к, 1кк, 1ккк лет.


              1. mkshma
                29.11.2018 16:56

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


  1. KevlarBeaver
    28.11.2018 15:15

    Уже далеко не первый раз читаю про такие, без преувеличения скажу, гениальные, идеи, которые, казалось бы, плавают на поверхности, прям бери да делай, — но вместо этого продолжаю бежать, как белка в колесе, занимаясь какой-то околесицей для зарабатывания денег на проживание, когда хотелось бы тоже творить историю. Недавно на Хабре была статья про передачу информации от смартфона смартфону через серию QR-like кодов и камеру. Тоже просто был в восторге, насколько просто и гениально.


    1. worldmind
      28.11.2018 15:50

      Что тут гениального? Тормозит всё, сжатие чуток лучше, в некоторых случаях, а где-нибудь вылезут артефакты когда переобучение какое-нибудь сработает и получите поломанную картинку.


      1. KvanTTT
        29.11.2018 01:58

        Да и простого тут тоже нет: чтобы это делать нужно будет потратить время на обучение. Не каждый программист сможет заниматься такими алгоритмами.


  1. DimPal
    28.11.2018 15:15

    IMHO, на примерах с утками создается впечатление что ML-сжатие потеряло шумовую составляющую. Утки стали выглядеть как размазанные пятна, растопыренные перья на конце крыла (в третьей строке) тоже размазало. А так, да, интересно получилось…


    1. foxyrus
      28.11.2018 15:54

      Да, но нужно учесть ограничение по битрейту (здесь спецом ограничили). Если его увеличить, думаю, нужные шумы тож появятся.


    1. red_andr
      28.11.2018 23:32
      +1

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


      1. Mad__Max
        29.11.2018 04:00

        Обработка шумодавом и блюром точно увеличивает сжатие, иногда вообще в разы.


        1. red_andr
          30.11.2018 09:30

          Именно. Уж точно эти самые 20% преимущества нового кодека получились бы.


  1. remzalp
    28.11.2018 15:20

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


    Так уж и до Pi сжатия можно добраться — есть определенная вероятность найти любой фрагмент чисел внутри числа Пи, так что можно просто хранить смещение и длину в качестве указателя на данные произвольного состава. Проблема только в расчете числа Пи до нужного количества знаков.


    0.001 кадр в секунду будет на среднем офисном Intel i3 без чего бы то ни было лишнего?


    1. Tsimur_S
      28.11.2018 16:10

      так что можно просто хранить смещение и длину в качестве указателя на данные произвольного состава. Проблема только в расчете числа Пи до нужного количества знаков.

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

      А с чего вы взяли что это кодек пользовательского уровня? Это всего лишь научная работа на тему которая уже лет 10 как витает в воздухе.


      1. Kaigorodov
        29.11.2018 10:21

        Чтобы это стало научной работой:
        1) надо сделать кодек в существующие выч. наборы инструкций
        2) делать оценку качества кодека на кросс-валидации, а не на тренировочных данных.


        1. Tsimur_S
          29.11.2018 13:11
          +1

          надо сделать кодек в существующие выч. наборы инструкций
          Это какое-то особое требование научности? Они сделали на несуществующих выч инструкциях?
          делать оценку качества кодека на кросс-валидации, а не на тренировочных данных.
          Оценка качества кодеков производилась на тестовом наборе:
          We benchmark all the above codecs on
          standard video test sets in SD and HD, frequently used for
          evaluation of video coding algorithms. In SD, we evaluate
          on a VGA resolution dataset from the Consumer Digital
          Video Library (CDVL)1
          . This dataset has 34 videos with a
          total of 15,650 frames. In HD, we use the Xiph 1080p video
          dataset2
          , with 22 videos and 11,680 frames. We center-crop
          all 1080p videos to height 1024 (for now, our approach requires
          each dimension to be divisible by 32)
          логично наверное использовать то что используется в индустрии для бенчмаркинга кодеков?
          Для обучения использовались видео с ютуба:
          Training data. Our training set comprises high-definition
          action scenes downloaded from YouTube. We found these
          work well due to their relatively undistorted nature, and
          higher coding complexity. We train our model on 128?128
          video crops sampled uniformly spatiotemporally, filtering
          out clips which include scene cuts


    1. DGN
      28.11.2018 22:02

      del


    1. Virviil
      29.11.2018 08:12

      Алексей, залогиньтесь!


      1. remzalp
        29.11.2018 15:17

        Научно-фантастический роман Карла Сагана "Контакт" скорей вспоминал, там вокруг послания внеземного разума внутри числа Pi строился кусок сюжета :)


        1. DjSapsan
          29.11.2018 15:51

          Я пропустил данный роман, но примерно понимаю в чем суть. Я сам хотел сделать алгоритм по сжатию данных в Пи. Но когда посчитал затраты, понял так даже хуже прямой передачи. Некоторым данным повезет оказаться вначале и их индекс будет маленьким, но основная масса данных потребует такой индекс, который будет экспоненциально превышать сами данные. Напишите, если я не прав :)


          1. Assargadon
            30.11.2018 09:44
            +2

            А для алгоритмов сжатия без ошибок это всегда так.


            Рассмотрим всевозможные последовательности длины N. И алгоритм архивации A(x), преобразующий последовательность длины N в некую другую последовательность. Выходные последовательности могут быть разной длины.


            Исходное множество (набор всевозможных последовательностей длины N) использует N*(n^N) знакомест, где n — число символов в алфавите. Из общих соображений ясно, что архивированное множество будет содержать никак не менее N*(n^N) знакомест. Могу доказать строго, если надо.


            Иными словами, любой алгоритм часть данных переведёт в более короткие последовательности ("сжав" их), а часть — в более длинные ("надув" их). Искусство состоит в том, чтобы в каком-то смысле "полезные"/"хорошие" последовательности попали в "сжимающую" часть, а "бесполезные"/"мусорные" последовательности — в "раздувающую". Поэтому, например, обычная телевизионная "статика" обычно не сжимается, а наоборот, делается больше.


            Ясно, что чем уже "сжимающая" область, тем лучшее сжатие будет в ней достигаться.


            Архиватор, основанный на числе Пи, просто имеет неудачную область сжатия. Данные, которые мы обычно считаем полезными (типа картинок, музыки и проч), будут почти всегда попадать в "раздувающую" часть.


            Зато само число Пи можно будет закодировать всего несколькими битами (а в пределе — всего одним)! Притом что само число Пи бесконечно, получается, что за счёт сверхузкости "сжимающего" диапазона, получается буквально бесконечная степень сжатия.


            1. DjSapsan
              30.11.2018 10:28

              Про проблему сжатия я знаю, элементарная комбинаторика. Мне было интересно, что придумал Карл Саган.
              Теперь про само сжатие. На самом деле нет НИ ОДНОГО различия между данными и программой. Можно представить алгоритм сжатия любых данных в 1 бит. Все будут довольны, пока не потребуется передать другие данные. Тогда для каждых новых данных потребуется создавать новый алгоритм. Чтобы принимающий знал какие данные закодированы, ему нужно передать номер алгоритма, который раскодирует 1 бит в нужные данные. Для каждого возможного случая будет свой алгоритм. Получается, что передается номер программы, а не сами данные. В итоге это вырождается в то, что программа = данные (повторять «сжатие» можно до бесконечности).
              Данные совершенно не зависят от своего отображение (дампа), данные это только программа. Так, например, можно утверждать, что два Пеинта с разными картинками это совершенно две разных программы. Рассуждать можно и дальше.


  1. alexhott
    28.11.2018 15:38
    +1

    А мне понравилось про 1080p на 20% и «видео стандартного размера» на 60%.
    Я считал 1080p тоже стандартным размером


    1. An_private
      28.11.2018 16:18
      +4

      Особенности перевода. В англоязычной среде есть определение SD и HD. SD — standard definition и HD — high definition. Имеется в виду именно это.Телевидение стандартной чёткости


  1. AVL93
    28.11.2018 15:54

    Коэффициент Вайсмана кто-нибудь уже вычислил? Подозреваю что тут он будет сильно проигрывать именно из-за скорости работы.


  1. andreymal
    28.11.2018 16:26
    +1

    Что насчёт AV1?


    1. AngReload
      28.11.2018 21:22

      AV1 на 20% эффективнее HEVC. То есть также как нейросеть.


  1. dendron
    28.11.2018 16:27

    Судя по картинкам в начале статьи, новый кодек нехило так искажает информацию. Достаточно посмотреть на воду за утками, детали не просто замылены, они заменены на что-то другое.

    То есть если раньше кодеки могли просто мылить картинку (выдавая это за качество), то тут высокочастотная информация вначале заменяется на нечто «похожее», но низкочастотное, а потом уже кодируется и мылится.

    Не хотел бы я смотреть на мыло, хоть и в 8K.


    1. Mingun
      28.11.2018 19:05
      +1

      Не знаю, где вы там замены нашли, на мой взгляд все совпадает


      1. Alexmaru
        29.11.2018 16:23

        Третья картинка: просвет между перьями на воду превратился в повтор белого пера чуть ниже кадра. У обычных кодеков там синяя вода.


    1. dipsy
      28.11.2018 19:07

      Почему сразу мыло, именно замена деталей, фантазия. Ну вот вам не всё равно какие перья на утке? А такая штука может их придумать, нарисовать, вплоть до всех ворсинок. Там, где важна именно точность (мелкий текст), можно точно кодировать, чтобы не надо было ничего додумывать от себя.


      1. chapai22
        29.11.2018 10:51

        А такая штука может их придумать, нарисовать, вплоть до всех ворсинок.

        Логично. Тогда можно и утку не снимать — пусть сам нарисует. а в видео все будет из маркеров — утка, человек, кусок булки — вообще в три байта уложится. Сценарий же типовой «кормление утки».
        был такой анекдот про давних попутчиков — что анеки друг другу просто номером рассказывали. «1024!» — и все ржут. Вот это будет супер кодек.

        PS. нам на ютубе в общем пофиг что утка, что лицо человека неизвестного. Можно заменять смело, включая ворсинки. ЧЧеерт, так и до новостей дойдет — представьте умный кодек дает 100500% на новостях! Палесы носят убиеннного на руках, нефть поднялась арабы вшоке, мы против войны, дом222 — знакомые все лица (сценарий типовой, 2й после утки).


    1. Darth_Malok
      29.11.2018 14:27

      Пока читал статью вспоминал формат djvu и его «Проблему «инь»». Для искажения информации при сжатии не нужно машинное обучение.

      Но вообще да. Лучше уж смотреть на мыло, чем «на пупки вместо глаз», поскольку «нейросети показалось, что это пупки».


  1. lingvo
    28.11.2018 16:50

    1. Было бы неплохо добавить оригинальное изображение, чтобы понять насколько сжатые изображения передают детали.
    2. По поводу скорости работы кодеков ИМХО это весьма незначительная проблема. В следующем году подтянутся аппаратные ускорители на ПЛИС, которые позволят в десятки раз повысить скорость работы нейросетей по сравнению с GPU и тогда это не будет преградой.


    1. Paskin
      28.11.2018 23:04
      +1

      Скорее сам этот алгоритм запишут в ПЛИС — потому что general-purpose ML-ускорители пока работают хорошо если в полтора раза быстрее видеокарт — и то за счет отказа от переменных (т.е. тренировать такой ускоритель не может, может только распознавать пользуясь заранее обученной сетью)


  1. dfgwer
    28.11.2018 17:10

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


    1. lingvo
      28.11.2018 17:22

      Дык вроде была уже статья здесь про японское порно, где такие "артефакты" успешно дорисовывают то, что заботливо вырезано цензурой. :-)


    1. izobr
      28.11.2018 20:01
      +1

      Похожее уже было в ксероксах.


    1. ValdikSS
      29.11.2018 00:03

      Вы ждете, а мы уже много лет наблюдаем.


    1. mmomkona
      29.11.2018 08:52

      не компрессия конечно, но уже есть такое:
      i.gifer.com/2qzN.gif


      1. dfgwer
        29.11.2018 15:10

        Ты это… О таком предупреждать надо.


  1. tretyakovpe
    28.11.2018 18:29
    +10

    С машинным обучением создали. А на блокчейне уже было?


    1. Tarik02
      29.11.2018 11:09
      +1

      С блекджеком блокчейном и нейросетями


  1. Altaisky
    28.11.2018 18:37
    +2

    Статья про видеокодек и ни одного видео. Нечего было показать?


    1. Stas911
      28.11.2018 19:43
      +9

      Они еще декодируют первый кадр. Проявите терпение.


  1. solovev_evgeny
    28.11.2018 19:19
    +7

    Pied Piper?


  1. Stas911
    28.11.2018 19:42

    В пределе это дойдет до того, что сеть просто будет строить 3Д модель сцены и всех объектов на ней, кодировать координаты и направления движений объектов и рендерить кадр рейтрейсингом?


    1. Konachan700
      28.11.2018 20:16
      +2

      Нет, лучше. Будет некое символьное описание типа «3 утки на озере, вечер, сзади лес, бла-бла-бла». И по этому программа нарисует видео. Ведь нам нет разницы в большинстве случаев до того, что общие планы будут в деталях отличны от просмотра к просмотру… Сюжетка так же кодируется, только более точно и объемно. Человеческий мозг по крайней мере так может во сне делать.


      1. Goodkat
        28.11.2018 21:57
        +3

        Вот вы правильную идею выхватили — будут просто электроды в мозг подавать сигнал удовольствия, а там хоть ковёр смотри.


      1. red_andr
        29.11.2018 00:05
        +1

        Особенно хорошо будут кодироваться новости. «Диктор номер два в костюме номер пять говорит вот это». Модель диктора будет браться из библиотеки, вместе с его мимикой и движениями. Возможно с уточнениями вроде «небритость такого то уровня» и «цвет лица после бурной ночи».


        1. basilbasilbasil
          29.11.2018 02:03

          Уточнения — это HD, за отдельные деньги


        1. unclejocker
          29.11.2018 08:29

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


        1. legolegs
          01.12.2018 12:08

          «Диктор номер два сообщает новость номер 8 про субъект номер 4»


      1. KvanTTT
        29.11.2018 02:03
        +1

        И фильмы каждый раз будут немного разными. Хотя это и хорошо, «ресмотребельность» повысится.


        1. roscomtheend
          29.11.2018 12:06

          Видеокниги, результат зависит от чтеца^Wнейросети. Или, скорее, с переводчиком сравнить. Школьники Войну и Мир чтобы не читать загрузят и посмотрять на скорости 16x, вопрос только чем эту сеть обучали перед этим…


      1. MikailBag
        29.11.2018 13:25

        Вы сейчас описали кодер "Сценарист" и декодер "Воображение"


    1. LoadRunner
      29.11.2018 09:26

      Вы сейчас описали скриптованные катсцены на движке игры.


    1. michael_vostrikov
      29.11.2018 17:49

      Ну 3D это слишком, мне вот представляется что-то между. В начале сохраняются изображения актера со всех ракурсов, потом информация кодируется в виде «актер такой-то, угол такой-то, масштаб такой-то». Плюс мимика, плюс освещение, плюс дифф для посторонних объектов/дыма/ранений, ну и плюс контур если объекты перекрываются. Нужна только нейросеть, которая сможет это распознавать. «Словарь» в начале будет неплохо сжиматься текущими кодеками.


  1. Dvlbug
    28.11.2018 20:01
    +1

    >> Разработчики называют нынешние методы видеокомпрессии, которые реализованы в H.265 и VP9, «древними» по стандартам современных технологий

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


    1. Stas911
      28.11.2018 23:15

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


      1. Ndochp
        29.11.2018 13:56

        Фракталы в эту сторону афаир уже ходили. Тоже мыло вместо квадратиков и эффективность выше по объему и ниже по произваодительности. В пром эксплуатацию с 2003 года вроде не вышли


  1. DjSapsan
    28.11.2018 20:56
    +2

    <шутка про Pied Piper>


  1. DjSapsan
    28.11.2018 21:34
    +4

    Можно представить следующий этап сжатия: нейронные сети сети распознают объекты в видео и вместо передачи каждого пикселя передают их описание. В итоге получается "(кадр 0) черная ауди, вид спереди, в позиции х, у" и т.д. Видеоплеер берет это описание и уже сам рисует пиксели.
    Затем идет еще большее сжатие: нейросети распознают сюжеты в видео и пересказывают их. Например «Едет машина, потом остановилась и с нее вышел водила. Он зашел в магаз и купил колбасы». 500 МБ сжато в ~100 Б. Сжатие в 5 000 000 раз! За этим настоящее будущее!


    1. Insty
      28.11.2018 22:06
      +1

      «Идет медведь по лесу, видит — машина горит. Сел в нее и сгорел.»


    1. Stas911
      28.11.2018 23:22

      Ну еще перед фильмом придется текстур и моделей актеров подгрузить гигабайт, но после нескольких просмотренных фильмов они все будут в кэше локально и будет побыстрее


    1. Jamdaze
      29.11.2018 09:08

      … сжато и передано в компетентные органы.


    1. vindy123
      29.11.2018 11:55

      Воскресными вечерами красно-зелено-голубые матовые стекла церковных окон вспыхивали светом и слышались голоса, поющие нумерованные церковные гимны. «А теперь споем 79. А теперь споем 94»
      (с) Рэй Бредбери «Марсианские хроники»


      1. Am0ralist
        29.11.2018 12:05

        Или вот так
        Ржевский пришел к Пьеру Безухову на вечеринку. Там кто-то говорит:
        — Шестьдесят первый!
        Взрыв смеха. Другой говорит:
        — Двенадцатый!
        Опять хохот. Ржевский и спрашивает у Пьера: что тут у вас за приколы?
        — А это мы анекдоты рассказываем. Все их уже запомнили, чтобы каждый
        раз не повторять, пронумеровали их.
        Поручик встает и грит:
        — Тридцать восьмой!
        После неловкого молчания к нему подходит Наташа Ростова и дает пощечину.
        — Но за что?!
        — Здесь при дамах неприличные анекдоты не рассказывают!


        1. DjSapsan
          29.11.2018 14:41

          11


          1. Am0ralist
            29.11.2018 14:44

            Ой, этот анекдот я ещё не слышал!


            1. DjSapsan
              29.11.2018 15:08

              11 это смех в AoE2. Есть другие числа: 1 — да, 2 — нет и тд. Удобно в реале, например разговор в магазине:
              — 3 (еду, пожалуйста)
              — 5 (золото, пожалуйста)
              — 1 (да)


  1. yadowit
    28.11.2018 21:35

    Вот у меня всегда интересовало:

    кодек ищет движущиеся объекты и пытается предсказать, где они будут в следующем кадре.
    А зачем предсказывать? Почему бы кодеку при кодировании, не «просмотреть» на несколько кадров вперёд и вместо предсказания движения (которого может и не быть, или быть но в другую сторону) зафиксировать то, которое есть на самом деле и именно это движение закодировать.
    Или играть в угадайку интереснее?


    1. atap3d
      28.11.2018 21:52

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


      1. yadowit
        28.11.2018 22:08

        Ну почему же не может. Сквозной буфер на пяток кадров в озу и вперёд. даже при прямой трансляции, это задержка, примерно в 0,2 секунды. Не критично (имхо) — на передачу сигнала по каналам связи, задержка больше.


    1. Insty
      28.11.2018 22:01

      Угадайка эффективнее. Обычно не более 1% кадров кодируется в видеопоток целиком. Остальные 99% «угадываются». Разумеется, с «подсказками».


      1. yadowit
        28.11.2018 23:01

        Насколько я понял, в видеокодировании важна каждая мелочь. Это позволит как минимум заменить «подсказки» — «шпаргалками» и может положительно сказаться на качестве изображения.


    1. ToSHiC
      29.11.2018 00:09

      Так это только в плоских мультиках объекты реально сдвигаются на экране. В фильмах плоского сдвига почти никогда нету, почти всегда присутствует либо поворот, либо приближение/отдаление от камеры, а чаще всего и то, и другое одновременно. А ещё фон под движущимся объектом на переднем плане постепенно появляется, и он тоже может двигаться по экрану, причём с другой скоростью. Поэтому самая затратная часть современных кодеков — это motion estimation, попытка угадать, какому блоку в предыдущих кадрах соответствует вот этот блок текущего кадра. Чем эффективнее работает эта часть — тем меньше разница между текущим блоком и тем, на который он ссылается, тем меньше битрейт. Собственно, по большей части пресеты veryfast-->veryslow в libx264 как раз крутят настройки motion estimation: какого размера блоки искать (от 16х16 до 4х4, кажется), нужна ли субпиксельная точность вектора движения, какой алгоритм поиска применять и т.д.


  1. Roboart
    28.11.2018 23:25

    Сразу стартап Крысолов вспомнился из сериала Силиконовая долина


  1. eugene_bb
    28.11.2018 23:46
    +1

    Непонятно только почему видеокодек, сделайте сначала замену JPEG, если всё так хорошо.

    А то сразу за видео.


    1. ToSHiC
      29.11.2018 00:11

      Webp (по сути — ключевой кадр, сделанный кодеком VP8) давно в продакшене и активно используется многими, heic (H265) в айфонах уже почти год как.


      1. eugene_bb
        29.11.2018 00:18

        Я про сжатие на основе ML


  1. NIKOSV
    29.11.2018 00:28

    Вот и ответ на вопрос тем, кто кричит: «Зачем телефонам такая мощь? ее и так хватает за глаза! Лучше бы ценники уменьшали.»

    Хотят тут огромной вопрос что проще и дешевле — доставить памяти (которая растет и дешевеет на глазах) и увеличить скорость Интернета (5G на подходе) или разработать достаточно мощный процессор для декодирования видео.


    1. ValdikSS
      29.11.2018 00:34

      На телефонах практически никогда не используется программное декодирование, слишком медленно и энергозатратно. С 2009 года во всех SoC встроены аппаратные декодеры и энкодеры. Программное декодирование применяется только для неподдерживаемых кодеков, например, для VP9 на старых устройствах.


  1. ValdikSS
    29.11.2018 00:32
    +3

    Этот кодек (пока) не поддерживает B-frames (специальный тип кадра, который может брать информацию как из предыдущих, так и из последующих кадров исходного видео), поэтому авторы сравнивали свой кодек с H.264/H.265/VP9 с отключенными B-frames, что сильно ухудшает качество видео при одинаковом битрейте. При стандартных профилях кодирования, B-фреймы всегда используются, никто их не отключает просто так, но в их публикации упор делается на low-latency-кодирование, а B-frame'ы вносят дополнительную задержку.
    Кроме того, кодирование H.264/H.265/VP9 проводилось со скоростными профилями medium и slower, в то время как более медленные профили дали бы качество выше, за счет более долгого кодирования (требуемая вычислительная мощность для декодирования изменилась бы незначительно). Их кодек выдает 10 кадров в секунду на VGA-видео (640?480) при декодировании на nVidia Tesla V100 — самой быстрой в мире видеокарте, заточенной специально под сложные вычисления (самая дешевая модель стоит 500000?), могли бы уж хоть сравнивать с максимально возможным качеством альтернативных кодеков.

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

    Пример с утками какой-то странный, будто использовали фильтр типа warpsharp. У H.264 деталей заметно больше.


    1. nidalee
      29.11.2018 05:46

      Я уже не говорю о том, что у них целая гора настроек осталась, как минимум у HEVC, которые можно подкрутить: me, psy-rd…


    1. nidalee
      29.11.2018 05:57
      -1

      не туда
      /del


  1. Mad__Max
    29.11.2018 04:55

    Судя по заботливо прикрытым /уменьшенным разработчиками началам графиков качества (средняя ошибка по сравнению с несжатым оригиналом) на типовых используемых битрейтах новый кодек вообще НЕ ДАЕТ никакого преимущества в сжатии над современными традиционными кодеками.

    Да, на битрейте скажем в 0.5 бит/пиксель и выше он конечно жмет существенно лучше (дает выше качество при том же потоке сжатых данных либо позволяет сократить поток при том же качестве). Вот только никто такие битрейты на практике сейчас не использует (а если иногда в виде исключения и использует — то с качеством тогда и так все очень хорошо, на глаз оно просто отличное — лучше уже просто некуда, отличия от несжатого оригинала там надо на компьютере выискивать и высчитывать, а на глаз при просмотре разница уже не заметна).
    0.5 бит/пиксель это потоки:
    31 Мбит/с для стандартного FHD видео
    62 Мбит/с для FHD@60fps
    125 Мбит/с для 4К
    250 Мбит/с для 4К@60fps
    + поток со звуком сверху к этому

    На практике сейчас для современных кодеков используются потоки примерно от 0.05 до 0.25 бит/пиксель, очень редко больше. Ютуб вообще частенько издевается и до 0.03-0.04 бит/пиксель ужимает.

    А на таких потоках у кодека нет вообще нет никаких преимуществ, одни недостатки: хорошо еще если традиционным кодекам работающим в десятки раз быстрее не проиграет по качеству/сжатию:
    image
    (стрелочка на ~0.14 бит/пиксель, это например 2х часовой фильм в FHD будет весом в 8-9 ГБ)
    А на потоках ниже 0.1 бит/пиксель — проиграет точно и по качеству и по скорости одновременно. Так что комментаторы выше которым не понравилась «размазня вместо утки» правы. При таких битрейтах (пример с утками 0.057 бит/пиксель) — качество хуже не только субъективно, но и объективно (при попиксельном сравнении с несжатым оригиналом и вычислении разницы).


    1. nidalee
      29.11.2018 05:58

      31 Мбит/с для стандартного FHD видео
      На Ютубе где-то в 2-3 раза меньше, фильмы «в хорошем качестве» можно скачать с трекеров с таким битрейтом, гигов 30-40 выйдет. (H.264)
      125 Мбит/с для 4К
      На Ютубе в 4 раза меньше, у фильмов — в 1.5-2. (H.265)

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


      1. Mad__Max
        30.11.2018 02:16

        Да ладно, у вас какой-то собственный особый Ютуб? Потому как на обычном Ютубе не 2-3 раза, а раз в 10 меньше битрейты используются.
        Вот для примера взял достаточно качественное (по меркам Ютуба) HD видео: www.youtube.com/watch?v=Bey4XXJAqS8

        Кодек VP9 для видео/Opus для звука (хотя может отличаться от машины и браузера — у ютуба неск. разных версий даже для одного разрешения хранится у меня в FireFox подгрузился вариант сжатый VP9)
        Померил — в FHD@30fps средний поток около 300 КБ/с (2.6 Мбит/с) причем это уже вместе со звуком.
        в 4К — около 1500 КБ/с (12 Мбит/с)
        Или порядка 0.04 бита на пиксель видеоизображения в обоих случаях.

        Тут в статье такие битрейты даже не показали (графики обрезали снизу, начинаются где-то от 0.1 бит/пиксель только), т.к. в этом случае новый кодек проигрывает в хлам даже самым старым кодекам типа AVC(H264) и по качеству картинки и по степени сжатия(битрейту/занимаемому месту), не говоря уже и проигрыше в сотни раз по скорости/используемым выч. ресурсам.


        1. nidalee
          30.11.2018 04:02

          Да ладно, у вас какой-то собственный особый Ютуб? Потому как на обычном Ютубе не 2-3 раза, а раз в 10 меньше битрейты используются.
          И действительно, аж барские 2 МБит\с. Я ориентировался на рекомендации гугла, с какими характеристиками видео заливать.


          1. Mad__Max
            01.12.2018 02:22

            А это видимо, чтобы был минимум потерь при двойном пережатии. Все-равно гугл залитые видео всегда пережимает в свои кодеки и со своими параметрами сжатия(и в разные сниженные разрешения разумеется — для подстройки под смотрящих), и получается что-то типа такого(на примере этого же видео):
            Format : WebM
            Format version : Version 4 / Version 2
            File size : 415 MiB
            Duration : 29mn 36s
            Overall bit rate : 1 958 Kbps
            Writing application : google/video-file
            Writing library : google/video-file

            Video
            ID : 1
            Format : V_VP9
            Codec ID : V_VP9
            Duration : 29mn 36s
            Bit rate : 1 873 Kbps
            Width : 1 920 pixels
            Height : 1 080 pixels
            Display aspect ratio : 16:9
            Frame rate : 29.970 fps
            Bits/(Pixel*Frame) : 0.030
            Stream size : 397 MiB (96%)
            Language : English
            Default : Yes
            Forced : No

            В AVC/H264 кодеке (поток отдаваемых для клиентов не поддерживающих VP9) поток на том же видео где-то процентов на 15-20% повыше, чтобы компенсировать меньшую эффективность сжатия и получить на выходе примерно то же визуальное качество (хотя ИМХО AVC у гугла выглядит всегда хуже чем VP9, речь причем не о детализации и артефактах, у них что-то с цветопередачей — AVC какие-то более блеклые получаются).

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

            Благодаря этому влияние подобной двойной конвертации незаметно за счет того что 2я конвертация идет с заведомо (в разы) большей степенью сжатия — тогда потерями на 1й стадии можно пренебречь. А вот если пользователь будет сразу стараться попасть примерно в тот поток, что использует Гугл — итоговое качество после 2х конвертаций окажется заметно хуже.


            1. nidalee
              01.12.2018 11:44

              и получается что-то типа такого(на примере этого же видео):
              Да, я уже посмотрел выдачу mediainfo, правда она далеко не полная — неизвестны дополнительные параметры, вроде alt-frames и прочего. Интересно было бы посмотреть.
              Что касается пережатия — тут проблемы будут всегда, качество в любом случае упадет, если не пытаться это фильтрами поправить\предотвратить. Но минимизировать можно, да.


  1. Ogra
    29.11.2018 07:06

    Дешевле винчестер купить, чем за электричество для такого кодирования и декодирования платить.


    1. Kaigorodov
      29.11.2018 10:32

      Наверное вы хотели сказать про более дорогой интернет тариф.


      1. Ogra
        29.11.2018 10:54

        По интернет-тарифу, для меня лично разницы не будет, а вот для какого-нибудь Youtube'а — может быть, сыграет роль. Им же пофиг, сколько я за электричество отдам, правда?


        1. BiW
          29.11.2018 12:46

          Вы еще храните медиафайлы локально?


          1. Ogra
            29.11.2018 13:04

            Конечно, храню, и много. Помимо этого, у меня есть подписка на Netflix.
            А еще у меня есть Kindle, но также полный шкаф книжек и абонемент в библиотеку.
            Что вас в этом удивляет?


            1. BiW
              29.11.2018 14:35

              Просто я не вижу смысла хранить что-то ниже 4К — остальное проще сразу тянуть с сети.


              1. Ogra
                29.11.2018 14:44

                Ой, то интернета нет, то сервер упал, то сайт заблокировали, то сидеров нет, то лицензия истекла… Я лучше по старинке, с винчестером ;)


                1. BiW
                  30.11.2018 10:56

                  Сейчас упорно вспоминал, когда у меня были подобные проблемы. Единственное, с чем вообще сталкивался — это сидеров нет, правда, в основном, это на всяких старых фильмах.


                  1. Ogra
                    30.11.2018 12:47

                    На этой неделе у меня отключали свет, интернета не было из-за этого полтора дня.
                    Пару лет назад смотрел видео с этого канала на Ютубе.
                    17 октября полтора часа Ютуб не работал по всему миру.

                    Всякое случается, по самым разным причинам.


                    1. BiW
                      01.12.2018 10:18

                      Я не спорю — все возможно, просто в моей деревне, почему-то, это все очень редко происходит, везет, наверное.


  1. snnrman
    29.11.2018 08:10

    Немного непонятна сноска в статье про вычислительную мощь и иронию комментариев. HEVC 4K вообще не поддерживался до 7 серии Intel (речь о процессорах), а вся обработка до этого производилась софтом, как итог — мой i7 из 2013 года не может в реальном времени показывать 4K HEVC 10b, но из 7 поколения даже Celeron способен воспроизводить без напряга этот кодек.

    К чему я всё это, если стандарт реально хороший, то через 2-3 года наверняка появится железная поддержка, какой-нибудь ускоритель машинного обучение.


    1. Kaigorodov
      29.11.2018 10:39

      Дело в том, что поддержка HEVC исправляется расширением набора инструкций. А вот сильно ускорить машинное обучение — это большая проблема. Нужно увеличивать количество ядер.


      через 2-3 года наверняка появится железная поддержка, какой-нибудь ускоритель машинного обучение

      Этот кодек в 100 раз медленнее допустимого. В 100 раз увеличить количество ядер? Именно для этого кодека?


  1. SlyFox
    29.11.2018 08:52

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


  1. Arris
    29.11.2018 09:18

    Если верить первой картинке — преимущество «их» кодека — это 0,0004 бита на пиксель. Я полагаю, это еще и на один фрейм.

    Окей, я помножил разрешение первого попавшегося видео с компа (1280x692 * 24 fps) и получил гигантскую экономию в 8500 байт/секунду.

    Конечно затраченная на кодирование электроэнергия безусловно стоит экономии этих 8500 байт. [сарказм]

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


  1. zaulan
    29.11.2018 10:34

    Непонятно в чем преимущество кодека перед традиционными? Отдельно взятая эффективность сжатия — это не преимущество. По сути, это равносильно сжатию в лабораторных условиях на дорогостоящем оборудовании, не в реальном времени, которое требует такого же дорогостоящего и не-реалтаймового расжатия. Было ли что-то достигнуто кодеком, что ранее было не достижимо? В 4К для передачи по гигабитной сети умеет сжимать и расжимать JPEG2000 в реалтайме, высокое качество достижимо при повышении битрейта и на H265. По сути это лабораторный образец, который предлагает пользователям установить ферму видеокарт в камеру, установить ферму видеокарт в сервер, где видео будет расжиматься ради ничтожного выигрыша в битрейте (экономии пропускной способности сети). И все это не в реалтайме. Пока что это неприемлемо ни для CCTV, ни для IPTV.


    1. Ogra
      29.11.2018 10:56

      Ну дожны же мы как-то оправдать бюджеты на разработку квантовых компьютеров!


    1. zaulan
      29.11.2018 10:59

      Будет забавно, если нейросеть, которая кодирует и декодирует реализована на питоне


      1. lieff
        29.11.2018 12:28

        Из того что можно найти так и есть github.com/brly/waveone
        Это их прошлый кодек для изображений (но возможно не их реализация).


      1. Sychuan
        29.11.2018 17:38

        Учитывая, что это чисто научная работа в этом не будет ни забавного ни удивительного


  1. unwrecker
    29.11.2018 11:38

    Можно пойти дальше и сразу создавать видео в таком описательном формате: «на весь кадр волны с интервалом в 20см, в середине — утка, видна по холку, смотрит влево». А дальше невообразимый простор при декомпрессии, которая уже скорее является рендерингом: и модель утки и модель волн зависит от обучения нейросети плеера.


    1. johnfound
      29.11.2018 11:44

      А люди будут обмениваться файлами обучения. И конечно появится проект "decoder34.rules" – коефициенты для сетки, декодирующую каждый фильм в порно. :D


      1. namikiri
        29.11.2018 13:18

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


  1. WondeRu
    29.11.2018 12:39

    Когда читаю подобное, то вспоминаю, как в 2002 году разрабатывали передачу видео по сети в 100 мегабит. Было что-то похожее на MJPEG. При этом видео-сервер и клиент были на одноплатниках с процессором VIA 300 МГц на Windows 2000. Естественно, с аналоговых камер не получали HD, но их было как минимум 4 для одного компа.
    Сейчас даже видео с ютуба загружает Core i7 по самые помидоры.


  1. FanFoul
    29.11.2018 13:44
    -1

    Это, конечно, здорово, что будет чем занять свежий i9, но что в итоге?!

    Предсказуемость истории удручает. Дальнейшая цифровизация кино в исполнении ИИ это лишь очередной шаг в сторону отмены как такового вида искусства. Очень скоро станет очевидно, что не надо больше снимать кино, а надо делать геймификацию. Всё придёт к ролевым постановкам с накладкой лиц, габаритов и прочих характеристик актеров на заданную сюжетную линию. Можно будет посмотреть один и тот же фильм в исполнении разных актёров, не меняя всего остального. Но будет ли уже это искусство?! И будет ли оно достаточно качественным?!
    То что проблемы будут — не сомневайтесь:
    Такое уже проходили с копировальными аппаратами
    habr.com/post/189010
    Может быть даже кто-то и посмеется, когда алгоритм ошибётся и автоматически заменит Сашу Грей на Джастина Бибера. Но может пора уже начать думать в том ли направлении движется человечество подтягивая ИИ туда, где ему нет места.


    1. Konachan700
      30.11.2018 16:27

      Всё хорошо. Медиажвачку будет клепать программа прямо в кинотеатре или на телевизоре пользователя, отправив на свалку истории бесполезную прослойку в виде контент-мейкеров и издателей. Контент массового потребления это не искусство ни разу, это просто бизнес, изготовление того же попсового кино мало отличается по трудозатратам от, например, вытачивания колес для вагонов на заводе…
      Те же, кто делает настоящее искусство, как были, так и будут существовать, им от ИИ ни жарко ни холодно. Да они даже в плюсе останутся, ибо ИИ будет отличным инструментом при творчестве, чем в свое время стал фотошоп или ваком.


  1. strvv
    29.11.2018 13:44

    аналогично фрактальному сжатию. там не было машинного обучения, но ассиметрия исполнения — более 1000, если память на измену не села, давно это было первая половина 90х.
    декодирующий поток мал, даёт возможность прерывать его, на определенном уровне детализации, и работает сразу со всем полем изображения, в отличии от остальных методов.
    Но вот кодирование, тут математики столько, что таки да, hd видео делать не стоит производить.


  1. Zhmak
    30.11.2018 09:44

    Больше мыла богу мыла!
    ИМХО с тем же успехом можно было сделать сглаживание картинки перед сжатием. Потом посжимать классическими кодеками. Какая разница, как терять детали?


  1. grey_rat
    01.12.2018 14:02

    А всего лишь нужно было сделать частичное p2p при просмотре с видеохостингов. Например ролик с DASH последовательно грузится с сервера, а с конца в начало через p2p загружаются куски без DASH. В итоге и с MPEG2 могли бы жить.