Как стать автором
Обновить

Как Яндекс применил компьютерное зрение для повышения качества видеотрансляций. Технология DeepHD

Время на прочтение7 мин
Количество просмотров71K
Всего голосов 206: ↑204 и ↓2+202
Комментарии169

Комментарии 169

Хорошая работа. Спасибо. А что со звуком? Что-то пытались улучшить, и какие были результаты? На старых записях очень часто звук глухой, есть шумы, звук может звучать как-бы в отдалении.
Спасибо за добрые слова!

Про звук много думаем, но это существенно сложнее. Для того, чтобы обучить такую нейросеть, нужно воспроизвести те деффекты, которые есть на реальном контенте низкого качества. В случае видео достаточно понизить разрешение, добавить блура и сжать одним из популярных кодеков, и результат уже получается неплохим. В случае звука нужно воспроизводить шумы и дефекты, которые возникали при записи на старые микрофоны и последующей записи на плёнку, что сложнее. Можно попробовать не воспроизводить эти шумы, а воспользоваться технологиями вроде CycleGAN, но мы пока что ещё не пробовали.
Дурацкое предложение — для микрофонных эффектов качественно воспроизводить на нормальном оборудовании, а слушать старым микрофоном — их еще достаточно на руси, по всяким районным домам культуры много этой аппаратуры.
С процессом записи на пленку сложнее.
А чего сложного, пленочные магнитофоны тоже в наличии есть. В некоторых студиях на них до сих пор пишут (для того самого звука)
Есть специальные аудиоплагины, эмулирующие старое оборудование. Не обязательно подбирать один-в-один, можно примерно. Все равно, конечно, остается проблема — узнать характеристики оборудования, на котором записывали звук. На слух подбирать — слишком много работы.
Замечательно! А когда можно будет классику японской анимации так же улучшить?)
Просто великолепно! Есть возможность пропустить свое видео через этот инструмент?
А вот и монетизация наклёвывается!..
Спасибо! Пока, к сожалению, нет — пока что это только внутренний инструмент. Прежде чем делать технологию публичной, хочется ещё побороться за качество и производительность.
Если мультфильм, то к virtualdub был в начале 2000-х неплохой плагин Cartoon с похожим результатом.

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

Как отметил ниже SADKO, следует обратить внимание на MSU фильтры — очень хорошие результаты:
www.compression.ru/video/deblocking/index.html
www.compression.ru/video/deblocking/smartdeblocking.html
Много чего было и есть, так-что я искренне не понимаю чем тут Яндекс хвастается, какой-такой супер результат получен, тем более что это отнюдь не первая, дурацкая попытка сделать нейрошарпилку, и результат не разу не удивительный для тех кто в теме…
… и мультфильмы в примерах ой, как не случайны, сравнили-бы результат с тем-же банальным warpsharp-ом по мотивам которого и апскейл можно сделать…
Про всякие поделки сумрачных отаку и MSU Cartoon Restore я вообще молчу, и автор статьи молчит, хотя понятие имеет, ведь на сайт MSUшной лабы он ходил как минимум за примерами деблока…

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

За MSU Cartoon Restore — спасибо, мы действительно не знали про них, хотя и не совсем честно сравниваться с их решением: оно работает только на мультфильмах и требует ручного выставления параметров.

А пример деблокинга — кадр из видео foreman, широко используемого для демонстрации методов обработки видео по всему миру. Вот целое видео, если интересно: www.youtube.com/watch?v=0cdM-7_xUXM
А не пробовали добавить conditioning вектор для разного типа контента? Хотя бы банально — анимация/кино.
Не пробовали, но мне кажется, что даже одного кадра более чем достаточно для того, чтобы отличить анимацию от кино, и если такой conditioning действительно полезен, то нейросеть сама справится его выучить на основе входной картинки.
Да, но есть нюансы обучения и структуры что-бы это стало реальностью…
… пока судя по видосикам, ваша сеть ведёт себя не лучше предшественников

Однако здесь я согласен с вашим подходом.
Посмотрел ваши демо-ролики.
Почему не убрали дрожание кадра?
Выровняли бы видеоряд первым этапом, потом бы обрабатывали это видео.
С одной стороны DeppHD, вроде топовые технологии, с другой видео на компьютере как на пленочном проекторе.
Да и сжатие значительно увеличится при стабилизации изображения.
НЛО прилетело и опубликовало эту надпись здесь
Посмотрел ваши демо-ролики.
Почему не убрали дрожание кадра?
Однозначно. Можно попробовать прогнать бесплатный MSU Deflicker: www.compression.ru/video/deflicker/index_en.html
Там местами видео однозначно сильно полегчает )
Последовательностей, было много разных, но не в последнюю очередь благодаря регулярным публикациям MSUшников она стала, таки стандартной :-)

Про универсальность, не надо лукавить, все примитивные алгоритмы обладают ей, можно зашить туда безопасные значения, а можно их динамически вычислять разными способами, что в коммерческих видеопроцессорах и делается…
И вот тут, ваша жесткая структура тупо проиграет корейскому телевизору, который умеет измерить превышение некоторых критичных для человеческого глаза параметров, и подкорректировать свои настройки, до социально приемлемых.
А ваша структура, как и прочие аналоги, лишь генерализует нечто среднестатистическое (дай-то бох :-) и с этой колокольни перескажет пользовательские данные. Но пользователи разные, настроения у них разные, и разные истории показывают им авторы, разным языком.
Есть Норштейновский Ёжик, а есть Соник или Губка Боб, понимаете?
А всё ещё сложнее, есть например Гамбол!
Про кино я и не заикаюсь вообще, люди про него тут написали и я могу лишь подписаться.

Корейского телевизора нет, есть смартфон Sony со встроенной улучшалкой изображения. На вид работает неплохо.
Дико бесит, что эта улучшалка туда вбита проприетарными алгоритмами и привязана к железу. То есть я сделал фото, смотрю — оно красивое. Делюсь им с друзьями — на их экранах оно страшное. Смысл?
Так что "корейский телевизор", но который можно быстро применить к файлу и результат будет доступен везде — это уже хороший продукт, имеющий право на жизнь.

Последовательностей, было много разных, но не в последнюю очередь благодаря регулярным публикациям MSUшников она стала, таки стандартной :-)
Еще раз спасибо, но мы только на русском разве что популяризировали foreman-а ), а так все, кто сжатием занимается давно с этим мужиком знакомы так же плотно, как сжимавшие картинки с леной )
Про универсальность, не надо лукавить, все примитивные алгоритмы обладают ей, можно зашить туда безопасные значения, а можно их динамически вычислять разными способами, что в коммерческих видеопроцессорах и делается…
Однозначно так!
За MSU Cartoon Restore — спасибо, мы действительно не знали про них, хотя и не совсем честно сравниваться с их решением: оно работает только на мультфильмах и требует ручного выставления параметров.
Побойтесь бога, в простом режиме там параметры минимальны:
image
Сравнивать скорее некорректно, поскольку это будет сравнение свободно доступного бесплатного плагина под бесплатную программу и закрытой коммерческой технологии. Опять же — MSU Cartoon Restore работает быстрее реального времени и почти не требует памяти, а у вас скорее всего другая история ). Но тем не менее сравнить в качестве стартовой точки можно.

А что мы известны в основном за рубежом, это увы…

Кстати! Что вы заканчивали? Это не вы часом?
graphics.cs.msu.ru/ru/node/861 )))
Про всякие поделки сумрачных отаку и MSU Cartoon Restore я вообще молчу, и автор статьи молчит, хотя понятие имеет, ведь на сайт MSUшной лабы он ходил как минимум за примерами деблока…

Спасибо за добрые слова в наш адрес! ) Очень приятно!
Справедливости ради — примеры простого деблокинга действительно похожи с теми, что у нас на www.compression.ru/video/deblocking, но автор картинку брал, похоже, тут en.wikipedia.org/wiki/File:Deblock1.JPG
А вообще жуткенько.
Берём старые семейные видеозаписи, прогоняем через эту мясорубку, и вуаля — мы помним людей не такими, какими они были, а такими, какими их представила себе нейросеть.
Привет, «Чёрное зеркало».
Ну… Вообще говоря мы их помним в разы хуже. Так что если увеличивать или ужимать качество, на воспоминаниях это никак не отразится. Да и вообще-то улучшения картинки то идут не такие глобальные, ну добавит она чёткости волосам и границам цветопереходов. Ну и что теперь такого?

Больше такие претензии нужно предъявлять к нейронкам, переводящим из ч/б в цветное. Вот там можно наврать так наврать.
Отличная статья, спасибо большое, было очень интересно!
Если бы ещё убрали мерцающие шумы во временном пространстве, стало бы совсем хорошо (можно и без нейронки обойтись ffmpeg.org/ffmpeg-filters.html#hqdn3d-1). Да и повышать чёткость у очищенных кадров проще.
Они работают со сжатым\пережатым видео, и там как правило кодировщики во времени уже поработали, причём с нюансами…
… хотя глубокой сети на вход 3D матрицу дать, может-бы что интересного и вышло бы, хотя опять же, нужно сравнивать с тупыми свёртками, и более сложными алгоритмами движения
Заявляется повышение разрешения, т.е. то, что называют Super Resolution (и у нас несколько поколений MSU Super Resolution тоже было), но по сути это скорее восстановление и именно после сжатия (вы совершенно справедливо пишите).

Проблема с восстановлением в том, что разные кодеки ухудшают картинку по-разному, причем чем они новее, тем более сложные модели нужно строить, чтобы восстановить поток. Т.е. это возможно (и простой поиск compressed video restoration выдает массу вариантов, начиная от бесплатных и заканчивая вполне коммерческими), но там все очень нетривиально.

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

Но правда и спекулировать на таком подходе проще всего ), т.е. обучиться на конкретном стандарте и потом показать, как на нем сеть все хорошо затаскивает )))
Спасибо за идею! Я попробовал, но пока с виду эффект получается своеобразным, на кадрах появляются следы предыдущих кадров, что выглядит не очень здорово. Попробуем ещё покрутить параметры.

Пример
image
image


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

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

а почему тогда кадры все плывут?
НЛО прилетело и опубликовало эту надпись здесь
… и корявых TS-рипов фильмов в прокате)

Как предлагается комментарием ниже, наснимал штук 50 разных экранок, бах, собрал blu-ray.

НЛО прилетело и опубликовало эту надпись здесь
Когда то у меня была идея — берется несколько источников плохого качества, но с разными экспозициями/настройками, у которых потеряны разные детали — где то хорошая четкость но потеряны светлые детали, где то плохая четкость но потеряны темные детали, где то вообще низкое качество картинки но высокая плавность. И натравливать алгоритм на то чтобы свести их вместе, максимально вытягивая информацию их всех источников в одну восстановленную запись
Изобрёл HDR фото, там так и делается.
Не совсем. Алгоритм должен не брать два или более изображений одного и того же вида с разной эспозицией, а сначала подбирать кадры, делать для них 3D преобразование, чтобы они наложились друг на друга (и не факт что кадр с одного видео будет найден на другом — легко источники могут иметь разную частоту кадров = необходимость интерполяции кадров), далее нормализовать яркости/цветности, которые могут иметь сложные зависимости (у разных изображений один угол может быть чернее другого, а третий отдавать фиолетовым), далее анализировать картинку на предмет наличия на одной того, чего нет на другой, используя как опорные точки уже найденные зависимости между изображениями, и собственно отсеяв с изображений шум, выводить результат. Тогда я уж изобрел HDR фото, наложенный на алгоритм формирования панорам, при условии что склейка идет не с одной точки одной камерой разных изображений, а одного изображения с разных углов и источников, и проведением сквозного анализа через множество кадров, чтобы формировалось видео, т.е. на все вышеуказанное накладываются векторы движения.
В будущем лет через 100 возможно так и будет, полная 3D реконструкция пространства из видео, с текстурами из тысяч соседних кадров, что позволит получать любую чёткость, устранять дрожание камеры, двигая камеру плавно как на кране.
Уже
habr.com/post/146157 — уже в трехмере
total3d.ru/cinema/93899 — уже в стерео, думаю половина вопросов решалась вручную, а половина с помощью разработанных алгоритмов…
Но не об этом мое было желание ) не трехмерная реконструкция (хотя именно она была бы идеальным решением), а что то типа SVP, когда наличие двух кадров позволяет получить третий. Только у SVP это разница во времени, а у меня разница в пространстве/яркости/углу поворота.
Кстати а HDR так генерить никто не пробовал? А то все автоматические решения которые я видел работают так себе. Реально качественная картинка получается только ручной работой :(
Хотя я давно не следил за темой, может сейчас стало получше.
Реальное полезное применение технологии, спасибо огромное!
Как вы добились плавности перехода между кадрами? Ведь если ваша сеть работает с отдельным кадром, то в одном кадре она дорисует волосы одним способом, а на соседнем совсем по другому и в итоге они будут мерцать при воспроизведении.
По факту такой проблемы не возникает, причин этому несколько. Во-первых, сеть добавляет только мелкие детали, которые всегда привязаны к крупным, которые движутся плавно. Во-вторых, важная стадия — деблокинг, на которой устраняются привнесённые алгоритмами сжатия артефакты, в результате все сгенерированные детали привязаны к контенту изображений, а не к квадратикам алгоритма сжатия, за счет чего результат получается более гладким.
Немного возникает, но не в мелких деталях, посмотрите как начинает мерцать фон:
Заголовок спойлера

И в Маугли и в Дюймовочке

Ну а так просто замечательно, буквально несколько месяцев назад мечтали именно об этом на хабре.
Текстуры которые домешивает сеть у вас хранятся отдельно или они получаются непосредственно в самой сети по мере обучения и от неё не отделимы?
Непосредственно в самой сети — по сути сеть «запоминает», как должны выглядеть те или иные текстуры и объекты из обучающей выборки, и переносит эти знания на целевой домен.
А пробовали продолжать улучшать изображение, подавая на вход к примеру четверти от выхода прошлой итерации?
Заголовок спойлера
image
Опередили меня с этой картинкой :)

Но подход реально классный, и статья отличная
Как вы загрузили WebP в HabraStorage?
Просто вставил картинку по внешней ссылке, а хабрастор её скачал и заменил в моем комменте.
Хабрасторадж мог бы и перекодировать в jpg для обладателей не-webkit браузеров…
А Mozilla могла бы наконец добавить хоть какой-то формат в FF. Зоопарк — это не норм, но и 30 лет между форматами — тоже не норм. Ладно, ждём avif…
НЛО прилетело и опубликовало эту надпись здесь
Технология крутая, надеюсь когда-нибудь она появиться в виде программы для домашнего использования, как для фотографий, так и для видео.
Интересно, сможет ли такое Nvidia DLSS

Технология в опенсорс отдаваться не будет? Запатентована?

Спасибо за статью, очень познавательно.
Нашёл небольшую опечатку или повтор: «Наши итоговые модели одерживают победу в более чем 70% случаев. Наши итоговые модели одерживают победу в более чем 70% случаев, что достаточно много....»
Спасибо, поправили.

А в обратную сторону эту нейросеть запустить можно?

Настораживает момент «сделать более заметными предметы, спрятанные в тени». Они ведь наверняка специально были приглушены, иначе просто подсветили бы. Ваша система нарушает режиссёрское построение кадра, разбивку на задний и передний планы. Например, в «исправленном» чёрно-белом кадре с солдатом гораздо темнее стали стальные конструкции на заднем плане, они вырвались вперёд, да и сам свет в кадре из мягкого и рассеянного стал жёстким. Увеличение чёткости деталей заднего плана тоже никогда не на пользу. Глубина резкости кадра — один из инструментов операторской работы, а вы этот аспект просто уничтожаете.
Поддерживаю. Идея правильная, но нужно быть очень аккуратным.
В последнем видео на 0:55 рак стал неестественно чётким, пропала мягкость 2d-рисунка.
В чем конкретно неестественость рака?
Звоном на краях, в прочем если внимательно приглядеться к «оригиналу», в нём уже есть этот звон, яндекс просто его раздул, ну а что ему ещё оставалось делать…
Объясните, плиз, куда смотреть. Пять раз пересматривал, никакого звона не вижу.
Белый ореол вдоль чёрной контурной линии, на желтой заливке, особенно заметно на пересечении контурных линий под острыми углами…
… в исходнике это заметно как аномальное увеличение\уменьшение люмы в тех же местах, оно не так заметно для не тренированного глаза, но именно за него цепляются все шарпилки, от простых свёрток, до глубоких уродцев.
Плюсую!

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

Помните, как на Марсе сфинкса разлядывали: взяли нечеткий снимок, и после обработки на компьютере что-то углядели, причем, чем больше обрабатывали компом, тем более «сфинксовым» был лик. Но больше информации от этого, увы, не стало, просто картинку подогнали так, чтобы человеку было нескучно смотреть на фото:

image

Улучшение видео — штука хорошая, но в лучшем случае вы вносите в картинку то, что ваш алгоритм «придумал», а не то, что автор видео хотел или мог бы снять, правильно?
Здесь источником информации является обучающая выборка. Для улучшения фильмов этого вполне достаточно. А для «уникальных» данных сеть додумает «как в кино». Для некоторых областей результат будет неприменим.
Т.е. она возьмет, предположим, человека, и дорисует его до среднестатического человека, так? Или возьмет клип Джексона, и нарисует ему кожу того же цвета, как в другом клипе, другого года (а цвет у Майкла отличался, я про это), потому что так «обучена»?

Может, просто взять качественный исходник?

Просто? Можно мне просто качественный исходник Метрополиса 27-го года? Заранее спасибо.

Может, вообще другое лицо дорисовать, смотря, как обучение проводить.

Дело скорее в отсутствии качественного исходника.
Exactly so. Если нет информации, то можно ее попробовать заменить похожей, но что получится — непонятно. Кому-то кожу без татухи заменит на кожу с татухой, кому-то лицо грустное — на лицо плачущее. Лицо черно белое, размытое, но Чарли Чаплина — на лицо резкое, высокого качества, в цвете, но — совсем другого актера. Итог будет прилично сделанным, но это будет уже не оригинал.

Машина сделает работу хорошо, главное, чтобы улучшение было нужным.
Эта аксиома — не аксиома. Если есть закономерность(формула), то информацию можно получить.
x(n+1) = x(n) + 1
И взяв изначальное значение, мы получаем сколь угодно большую последовательность. И ни какого гадания здесь нет.
Если-бы эта аксиома была верна, то не существовало алгоритмов сжатия без потерь.
… фигня то в том, что формула реальности на столько хитро деланная, что по результатам измерений с долей шумов и ограниченной точностью мы можем лишь приблизительно прикинуть некоторые её члены, но никак не все, и чем больше потеряно, тем больше возрастает неопределённость…

См. ниже шкалу е%%чxиx шакалов
Я с этим и не спорю. Меня просто возмутила «аксиома».
Именно поэтому применение 3D подходов (когда идет протягивание объекта во времени, о чем вы выше поминали) на сжатых потоках может дать реальный ощутимый прирост качества. Но и сложность алгоритма при этом кардинально возрастет. И протягивать во времени до сих пор никто на сильно пожатом видео хорошо не умеет. Т.е. целая пачка фундаметнальных проблем, которые с налета не порешаешь. Хотя всем хочется результат! )
Ну, не знаю кому хочется, ИМХО всех всё устраивает, сейчас конечно пошла волна 4к, и опять можно по конкурировать на тему, кто растянет HD краше, но у 4k на маленьких в сравнении с киношным экраном есть своя, простая, специфика :-) потягаться с таким тупым подходом конечно можно, но получить прямо таки визуальное преимущество, которое-бы клиент реально разглядел на полках магазина, это вряд ли…
… и того, ощутимого выхлопа в продажах, который был от работы с аналоговым, эфирным ТВ, уже не будет, да и если начать вспоминать то время, там тоже всё было не так просто, ибо пипл как известно, хавает, а именно массовые модели делают большую часть профита…

Что до 3D, то есть две большие разницы, работаем-ли мы с исходными данными и избыточной частотой кадров, и\или пытаемся процессить пережатку, где никаких уточняющих данных уже нет в принципе, и бороться можно разве-что за устранение артефактов и\или привидение оных в смотрибельный вид…
Однако, по хорошему, эта работа должна делаться внутри самих декодеров, ибо повторно вычислять то что уже вычислено, это знаете, да вы и сами знаете…
Ну, не знаю кому хочется, ИМХО всех всё устраивает, сейчас конечно пошла волна 4к
Именно! Продуктам компаний нужно чем-то отличаться в лучшую сторону от аналогов. Нужны красивые истории, если что-то где-то наглядно становится лучше — это радует всех. )

но получить прямо таки визуальное преимущество, которое-бы клиент реально разглядел на полках магазина, это вряд ли…
Вы забываете про рост диагоналей. Пипл покупает числа и диагональ 65 дюймов больше, чем 56, я уж 145 или 170 — так вообще! ))) И (внезапно) на таком размере «мыло» привычных алгоритмов ресэмплинга начинает конкретно напрягать пипл, который раньше хавал.

Что до 3D, то есть две большие разницы, работаем-ли мы с исходными данными и избыточной частотой кадров, и\или пытаемся процессить пережатку
Однозначно!

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

Там все не так просто, увы. Во-первых, как только возникает IPBBB, т.е. большое количество B-кадров, восстановить реальное движение становится той еще задачей. А во-вторых, очень сильно мешает то, что на выбор моушн вектора в кодеке влияет его вес, в итоге уже на средних битрейтах (которые легко возникают в трансляциях при любом резком движении) в поток часто идет вектор просто повторяющий соседа, вместо реального. И использовать такие при процессинге, а тем более восстановлении — плодить характерные артефакты (когда часть слаботекстурного фона прилипает к контрастному объекту, например). И «починить» это оказывается по вычислительной сложности сравнимо с построением карты движения с нуля.

От того счастье так легко и не наступает. )
Скорее речь о том, что у вас (пусть даже в looseless) сжат звук, скажем, стерео, а вы (пусть и с нейронками, с чем-то еще), но говорите, что после обработки получили звук аж 7.1. Понятно, что looseless, но понятно, что еще на лишние каналы можно только аппроксимировать. Или, в контексте поста, заменить похожими, но фрагментами других записей.
А если вы выведете формулу, по которой можно дорисовать нерезкий кусок картинки — так вы будете великим, человеком, который весь мир описал одной формулой. *смайлик*

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

x(n+1) = x(n) + A

и вы, не имея данных, догадаетесь о значении A, вот тут и появится новая, лишняя, исходно не дававшаяся информация.

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

Не существует алгоритма, который сожмёт любую последовательность байтов так, что она станет от этого короче, и сможет потом любой результат сжатия однозначно разжать.
LZMA, LZO, LZ4?..
Про «любую» и белый шум занудствовать не будем.

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

Не существует алгоритма, который сожмёт любую последовательность байтов
<...>
мы создаём информацию
Конечно, мы не создаём информацию. Информации в несжатом файле столько же, сколько и в сжатом.
Но последовательность байт почти всегда можно сжать, а потом разжать, этот процесс не имеет отношения к уничтожению и порождению информации. Байт — это не всегда 8 бит информации, поэтому архиватор может вместить ту же информацию в меньшее количество байт.
если подсунуть архиватору любую достаточно содержательную последовательность байтов, то он задохнётся и ничего не сожмёт.
Картинка в bmp — вполне осмысленная последовательность байт. Или текст в txt. Отлично жмутся.

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


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

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

Точно так же и тут: нейросеть «запоминает», как выглядят волосы, и дорисовывает исходя из этого знания. В этом и основная разница методов, основанных на машинном обучении, и простым шарпенингом: без знания о том, как вглядят волосы или глаза, нельзя реалистично их восстановить, см. пример с лицом из статьи. При этом отмечу, что content loss «отвечает» за то, чтобы содержимое кадров не изменилось, в результате нейросеть меняет только высокочастотные детали, не трогая ничего важного.
Ну да, на больше части задач реставрации это отлично подходит: у нас есть дворец 500-летней давности, в нем была лепнина, но ее вид утрачен. Мы ищем лепнину такого возраста и такого стиля, как остальной дворец, и делаем по подобию — туристы во дворце все равно будут рады увидеть общий вид отделки, и уж это явно лучше, чем отсутствие лепнины в каких-то частях здания.
Но здесь мы ищем не исходник, а именно нечто подобное. Для видеохостинга это как бы глупо: если речь о некачественных роликах, то ценность их такова, что улучшай — не улучшай.
ваша сеть покадрово проводит работу? в видео можно много информации получить если анализировать пачку кадров, те же волоски на 1 кадре не понятно где сколько, но если есть движение, то сравнив пачку кадров можно гораздо больше информации получить. такая технология есть например в астрофотографии, из кучи размытых картинок получается четкое детальное изображение. т.е. как мне видится ИИ должен определить из чего состоит кадр и кто куда движется, затем на пачке кадров каждый элемент сопоставить и виртуально обездвижить, затем пачку кадров условно неподвижных объектов проанализировать. и без фантазий ИИ получится четкость.
Вы правы, из отсутствия информации сделать её наличие нельзя. Но можно перенести информацию оттуда, где она есть. Подобный подход применяется, например, при обучении классификаторов
В видео подобный подход также можно применять к соседним кадрам. Такие алгоритмы появились порядка 20 лет назад и их все проще и проще делать практическими.

Главное достоинство по сравнению с вашим подходом — это именно восстановление, а не попытка найти что-то похожее. На практике это проявляется в меньшем проценте заметных артефактов.
Когда человек смотрит на размытую картинку и узнает в ней что-то, он тоже «додумывает». Причем так же в зависимости от зрителя с разным результатом. Можно пользоваться своей, аналоговой, «додумывалкой», а можно цифровой!

Приведенный вами пример со снимками планеты, это, в отличии от чисто развлекательного, ненаучного материала, тот случай, когда детали играют существенную роль. Тут, конечно, надо просто быть ответственным и понимать в каких областях можно применять такие методы, а в каких это будет недопустимо.
А не пробовали прогнать через DeepHD всю шкалу шакалов?
image
Точнее, каждый отдельный элемент. И сравнить результат :)
Поддерживаю. Хочется посмотреть на результат обработки. Натравите на картинку ИИ, пожалуйста. :-)

Шкала-то ненастоящая! Шакалы

Правильная шкала должна быть не «или» как у вас на картинке а «и» — некачественное обычно видео подразумевает И артефакты сжатия И низкое разрешение (что на вашей картинке обозвано «пикселизаций» — это просто понижение разрешения).
Мне не нравится, что цвета так заметно меняются. Не для всех видов контента подойдет.
Да, очень здорово, результат впечатляет!
Но вот если оценивать тональность изображения в Ч/Б фильмах, то помимо повышения детализации и прорисовки фактуры заметно, что некоторые участки становятся ощутимо темнее. В некоторых случаях (пока сужу только по неподвижным изображениям), это выглядит недостаточно естественно. Просто снимал на Ч/Б фотоплёнку достаточно долго и сужу о результате по своему опыту. Мне кажется, дополнительная обработка или настройка алгоритмов всё-таки нужна.
где посмотреть примеры?
ни google ни сам яндекс не выдает ничего по deephd
то что то для взрослых, то мультик deep
ссылки на кинопоиск выдают страничку без видео
пример который показан тут, отрывок из маугли дрожит. с этим что то можно сделать?
Нажимайте ссылку из статьи на кинопоиск и находите на странице оранжевую кнопку «Бесплатно». Там настройки качества доступны.
В статье есть примеры фильмов на Кинопоиске (под обложкой кнопка Смотреть), в селекторе качества надо выбрать «dHD».
Под спойлером, например, два кадра примерно одного момента из фильма «Дорогой мой человек» (второй раз взял из первого результата с YouTube).
Субъективно кадр с Кинопоиска выглядит более «четким», но влияет ли это как-то на удовольствие от просмотра — не могу определиться для себя. Когда смотришь интересное кино — в детали картинки не вглядываешься, а наблюдаешь за действием. Детали начинаешь наблюдать, когда фильм не интересный, но такой не достоин времени зрителя, как по мне…
у меня кнопка «Буду смотреть». наверно это только для России
Очень круто!
Такой бы плагин да к старым играм нарисованным от руки в 320x200VGA!
Для Дума и Еретика есть doomsday engine.
А Brutal DOOM под DoomsDay работает?
Не пробовал, я из-под этой штуки только «Еретика» запускал.
Яндекс, отлично!
Все ждут теперь этот инструмент в свободном доступе.
В идеале надо ещё сделать шаг — определять автоматически реальное разрешение видео, и предварительно сжимать до него. Или это уже есть? Например если камера выдаёт чёткость сравнимую с 540p на 720p материале, то сжимать предварительно до 540p.

Кстати, пример с OceanTV плохой, там материал вообще идёт без деитерлейсинга, и в итоге каша получается. Видел это сегодня в 13:33, если нужны таймкоды.

Сжатие и изменение разрешения ухудшает качество.

Но ведь если увеличивать замыленный кадр, то и результат будет тоже замыленным? Это видно даже по тому же letsenhance.io
Почему нет сравнения с аналогами или обычными фильтрами повышения резкости?
Потому что это будет грёбанный стыд, а хочется триумфа…
Потому что существующие решения решают более узкую задачу. Например, академические решения задачи super resolution хоть и повышют разрешения, но непригодны для решения поставленной задачи, т.к. артефакты сжатия видео начинают сильно бросаться в глаза. Обычные фильтры повышают резкость, но не увеличивают детализацию, и опять-таки делают более явными дефекты видео. Так что сравнение будет заведомо нечестным, т.к. мы решаем практическую, а не академическую задачу.

Просто для примера — вот относительно новая реализация super resolution: github.com/fperazzi/proSR. На реальных изображениях интернета, даже при условии предобработки всех изображений нашим деблокингом, по оценкам из Толоки DeepHD выигрывает в 67% случаев.
В таком случае, разумно сделать сравнение с типичным конвейером фильтров видеообработки. Насколько у вас все автоматизировано? Наверняка, у вас не полностью универсальный автоматизированный алгоритм, и все же требует настройки для каждого конкретного случая.
В мультике с раками у вас сильный антиалиасинг, с шакалами — либо минимальный, либо отсутствует.
Также интересны сравнения скорости. Мой типичный конвейер для PAL DVD-видео (720×576) обрабатывает примерно 4-8 кадров в секунду на 4-ядерном процессоре 4-летней давности.
Вы пишете:
на обработку одного телеканала в разрешении 576p требуется одна карта NVIDIA Tesla V100
Что подразумевается под телеканалом? 60 полукадров?

NVIDIA Tesla V100 стоит 600+ тысяч рублей, на эти деньги можно купить два двухсокетных сервера с 10-ядерными процессорами.
У нас полностью универсальный автоматизированный алгоритм, все примеры из статьи (и цветные, и чёрно-белые фильмы, и мультфильмы) обрабатывались одним и тем же кодом аналогом цикла for внутри вычислительной платформы Нирвана. По сути это просто нейросетевая модель, которая на вход покадрово принимает видео и выдаёт видео в два раза больше, никаких специальных настроек там нет.

Что подразумевается под телеканалом? 60 полукадров?

25 полных кадров в секунду.
Вы вообще не делаете никакой настройки и предварительной обработки? Что будет, если на выход алгоритму подать видео с телекино или обычным интерлейсом, например? Цвет тоже полностью автоматически меняется, без ручной настройки?
Да, вообще никакой. Про телекино не знаю, а интерлейс выглядит не очень хорошо (не сильно лучше, чем видео без обработки, на что уже выше указывали в комментариях), но для трансляций в интернете обычно всё равно приходится делать деинтерлейс и обрабатывать уже progressive-сигнал. Цвета тоже полностью автоматически меняются (так сетка научилась).

Мы очень ленивые люди, поэтому всё автоматизировано :)
Интересно, почему сеть дескриминатор не отсеивала варианты с цветокоррекцией не соответствующей оригиналу?
Ведь в идеале если увеличенное сеткой изображение уменьшить, то оно должно совпадать с тем, которое было исходным (изменения должны вноситься только на тех частотах которых нет в исходном изображении).
Мы очень ленивые люди, поэтому всё автоматизировано :)
Вам стоит поинтересоваться, как обрабатывает видео гугл при заливке на YouTube, например. Вы заведомо проиграете им по качеству при ленивом подходе. Ведь когда вы зарелизитесь и вас можно будет сравнить — кто-нибудь это обязательно сделает. И будут вас сравнивать не с академическими аналогами или бесплатными фильтрами, а с доступными бесплатно коммерческими системами. И как вы будете оправдываться? )
Потому что существующие решения решают более узкую задачу. Например, академические решения задачи super resolution хоть и повышют разрешения, но непригодны для решения поставленной задачи,
На данный момент ваше решение выглядит не очень далеко ушедшим от академических решений. Но даже не в этом дело, а том, что вообще video restoration люди вполне себе профессионально занимаются уже порядка 25 лет и есть коммерческие программные пакеты, наборы плагинов под популярные редакторы видео и т.п.

Вы ведь не хотите сказать, что никто до вас не решал такую задачу? )
Жаль не успел поучаствовать в Толоке. Интересно было бы. Знаете, какие нибудь дни рождения детей, снятые на плохие камеры, восстановленные этим алгоритмом будут дарить счастье. Наверное уже готовите функционал по преобразованию видео «по кнопке» из загруженных в Яндекс.Диск?
Удалось побывать как раз на презентации DeepHD на YaC 2018 — эта штука поразила больше всего. Действительно в кой это веке машинное обучение настолько близко и понятно фокусируется на вполне осязаемой цели и настолько грамотно её решает. Молодцы!
блин забивают гвозди микроскопом. Простейшая обработка в GIMP:
— shrapen + softlight, layer visibility ~ 50%
— + bump map на оригинальный слой
sharpen
хуже, но это в руках нуба.
Если написать спец. алгоритм векторизации по краям, будет не хуже всяких диплернингов
Если говорить про такие мультфильмы с не самыми качественными исходниками — да, возможно для каждого мультфильма и можно подобрать подходяшие фильтры вручную, хоть такой подход и плохо масштабируется. Однако лица вот так, например, всё же не вытянуть:

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

Это блик

Это очки с двойным пластиком (модель RX 5150 2034). Внутри он прозрачный.
Я архитектор, и занимаюсь рисованием объектов сложной формы с натуры уже более 20 лет. Такая конструкция должна давать белую полосу-толщину или справа, или слева от носа, или сверху, или снизу от самой нижней дуги оправы. Вот на этой фотке в более резком ракурсе более понятно, о чём я:
Другой ракурс
image
И если внутри очков дополительная полоса это скошенная зашлифовка края стекла, то полос с обеих сторон носа сразу и снизу очков никак не должно быть.
Простите, но на фотографии я, и это мои очки. Так получилось.
Тогда пролейте свет на вопрос, это правая фотка исправлена или левая ухудшена.
Правая получена из левой.
Оригинал для сравнения не покажете?
Выложите оригинал, пожалуйста, очень хочется проверить, артефакт эти полосы по всему периметру или нет.
У меня нет оригинала :(
Это для како-то интервью снимали, и оригинал утерян.
Но вы можете дать свою фотку и мы попробуем на ней.
А потом вы опубликуете оригинал.
У меня очки другие, не такой сильный контраст с кожей не даст белой обводки. Кстати, тут выше упоминали рака из мультика, у него тоже бело-жёлтый контур вдоль чёрных линий пошёл.

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

Точно.
И спасибо, за комплимент.
О! А вот и Александр. Ниже к вам вопрос )
Я сильно сомневаюсь что это реальный результат обработки, а не художественная интерпретация работы алгоритма.
Это вы зря, в статьях на тему можно намного более впечатляющие картинки найти:
image
На тему еще 10 лет назад уже книжки выходили:
www.amazon.com/3-D-Shape-Estimation-Image-Restoration/dp/1849965595
Другое дело, что новые подходы намного универсальнее и практичнее.
Это совсем другой тип размытия и алгоритмы для исправления таких вещей действительно давно известны.
Конечно другой. Пусть меня поправят, но выше также пример сети, обученной на лицах приводят как пример для задачи увеличения разрешения сжимавшихся файлов, т.е. несколько другая задача. Хоть и близкая. )
Ну Александр Крайнов ведь хорошо знает (и даже лекции читает) о том, какие «чудеса» можно показывать с нейросетями и какие там проблемы под капотом. В частности, насколько легко подбором тренировочной выборки получить нужный результат.

Вы можете этот же алгоритм предъявить на первой сотне картинок такого запроса:
yandex.ru/images/search?text=лицо )))
Верится с большим трудом, что так можно вывести картинку из блура.
Я попробовал через частотное разложение в фотошопе — результат близко не стоял.

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

интересно, а есть где-то софт, чтобы попробовать свои фотографии разблурить?
Яндекс всегда был одним из лидеров индустрии — так держать!
(до сих пор один из «почт» на вашем сервисе)
С видео круто, а подскажите, есть ли что-то толковое и юзабельное для апскейла картинок на локальном компе? Вот фото с бородой и бровями хорошо апскейлили, аж завидно.
Мне кажется странным, что говорили о фильмах, а показали в качестве примера мультфильм. К тому же, такой результат работы алгоритма можно было элементарными фильтрами из фотошопа получить. Отрывки указанных фильмов — в студию!
В конце статьи ещё есть примеры старых чёрно-белых фильмов, а больше можно посмотреть по запросу «фильмы в deephd» на Яндекс.Видео.
Да, намного лучше примеры. И, главное, на разных реальных текстурах. Удивительно, что они не были использованы в статье, ибо намного нагляднее.
Пример с мультиками не показательный. Там можно применять любые уже известные алгоритмы сглаживания / увеличения четкости / векторизации. Убивать нейросети на мультики вообще не целесообразно, разве что по типу призмы сконвертить стиль одного мультика в другой.
Было бы крайне интересно узнать, что из себя представляет smaller networks при дистиляции знаний. По крайней мере концептуально, является ли это тем же самым решением в уменьшенных масштабах или более тривиальная модель?
Архитектурно это практически та же сеть, что применяется на этапе деблокинга.
Вчера где-то увидел новость про мультфильмы, и невнимательно глянул на заголовки колонок кадров. Рассматривал и думал, что оригиналы — это как раз улучшенные версии.
Вот честно, как обывателю мне не совершенно не ясна польза от таких технологий.
Вот фото превращения смазанной футболки в четкую, приведенное выше, гораздо эффектнее.
Обычные стандартные пункты меню разных программ, типа «автолевел», «шарп», «автоматическое улучшение цвета» и тд, зрительно зачастую лучший эффект дают.
Насчет математики круто наверно. Но вот игра нейросетевого шахматного монстра впечатлила зримее.

Любить российские мультфильмы в HD можно только из России. Есть планы тткрыть их на весь мир?

НЛО прилетело и опубликовало эту надпись здесь
Так и не смог на яндексе найти мультфильмы посмотреть — только ютуб и вк хостинги.
Хм, вроде же прямая ссылка дана в конце статьи: мульфильмы в deepHD

Пока правда только их десяток в каталоге.
У меня открываются видосы с ютуба, а там ни о каком deep hd нет речи. Каталог перенаправляет на страницу поиска видео, а там уже, что угодно. Яндекс Видео работает в Беларуси?
Странно. Похоже отключили. Еще пару дней назад НАД результатами поиска выводился каталог от самого Яндекса, в котором была советская классика мультипликации (Снежная Королева, Маугли, Дюймовочка и т.д.), которые стримились с их же собственного хостинга (кинопоиск, принадлежащий Яндексу) через собственный же web-плеер в котором было deep HD как одна из опций настройки качества.

Сейчас и из России этого каталога больше не видно, только стандартный поиск.
В принципе оно все осталось на кинопоиске где и было выложено, например: www.kinopoisk.ru/film/29818/watch

www.kinopoisk.ru/film/44380/watch

остальные там же можно найти

Но почему-то перестало выводиться в удобном каталоге сразу в результатах поиска Яндекса.
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий