About AI without the pops and fuss

 

Как улучшают видео с помощью нейросетей | Нейросети и AI | Блог | Клуб DNS

MrUSmith8-12 minutes

Многие слышали про такое понятие, как апскейлинг — увеличение разрешения  картинки или видеоролика с помощью различных алгоритмов. Большинство 4К и 8К телевизоров уже имеют встроенный  AI — «искусственный интеллект», который повышает качество картинки. Но используются ли там нейросети и как в принципе творят свою «магию» умные алгоритмы?  

Простейшие алгоритмы масштабирования

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

Если простым языком, то интерполяция — это попытка предсказать промежуточное значение на основе имеющихся. Например, мы знаем температуру в 11:00 и 13:00 — можно ли получить значение в промежутке в 12:00? Простейший метод предполагает анализ соседних значений и высчитывание результата.

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

Аналогичная задача стоит и в масштабировании. Например, картинка имеет разрешение 100х100 пикселей, а вам необходимо вывести ее на экран 200х200 — сразу же появляется проблема, чем заполнить свободное пространство? Здесь и приходит на помощь интерполяция, которая помогает высчитать значения новых  пикселей на основе имеющихся.  

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

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

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

Однако каждый подход имеет свои недостатки — ступенчатость, эффект размытия и эффект гало. Что самое важное, устранение одного дефекта приводит к нарастанию другого.

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

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

«Умное масштабирование» — использование нейросетей

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

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

Структурно любая нейросеть — это совокупность относительно простых процессоров, разделенных на слои. Каждый слой способен анализировать какую-то конкретную характеристику объекта, после чего передает результат в следующий слой. 

Так нейросетям, например, удается определять объекты и не только.

Что по поводу масштабирования видео — апскейлинга? Здесь применяется одна из самых главных характеристик нейронных сетей — возможность самообучения. Но как сеть способна определять, что правильно, а что нет? Один из способов — инженеры сами указывают на ошибки, после чего повторно прогоняют входные данные через сеть и смотрят, что выдала система. Это повторяется до тех пор, пока сеть не научится давать удовлетворительный результат.

Если говорить об апскейлинге, то здесь применяется метод обратного распространения ошибки. Чтобы каждый раз не объяснять нейронной сети, в чем ее ошибка, разработчики поступили достаточно просто. Используются два абсолютно одинаковых изображения — одно в низком разрешении, а второе в высоком. Первое «скармливают» нейросети и получают результат апскейлинга. Этот результат сравнивают с оригинальным изображением в высоком разрешении и получают результат схожести.

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

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

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

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

БрендПроцессор для апскейлинга
Sony4K X-Reality PRO
X1 Ultimate
X1 Extreme
Samsung4k AI Quantum processor
UHD Picture Engine
LGPicture Master Processor
Alpha 6 Processor
Alpha 9 Processor
PhilipsUltra Resolution
P5 Processor

Однако при попытке найти какие-либо фактические характеристики этих процессоров или узнать о принципах работы каждого фирменного алгоритма масштабирования вы, скорее всего, ничего не обнаружите. По факту это оказываются обычные ARM-процессоры с возможностью вывода 4K/8К контента. Например, Neo Quantum 8K от Samsung — это обычный 4-ядерный  MediaTek S900 (MT9950) с ядрами Cortex-A73. Такие процессоры могут использовать достаточно эффективные методы апскейлинга, но ни о каких нейросятех речи не идет.

Хочу выполнить апскейл самостоятельно

Если вы хотите побаловаться с нейросетями и сделать самостоятельный апскейл какого-либо ролика, то это вполне реально. Один из энтузиастов как раз решил провести сравнение классических методов интерполяции и нейронных сетей, изучив несколько программ:

Название ПОСтоимостьНеобходимость разложения видео на кадрыСпособ апскейла
Red Giant Shooter Instant 4KПлатныйДаНеизвестно (фирменный алгоритм)
Фильтр ЛанцошаБесплатныйНетне ИИ (разновидность интерполяции)
Adobe Photoshop Сохранение деталей 2.0ПлатныйДаНеизвестно (фирменный алгоритм)
Topaz Gigapixel AIПлатныйДаНейросеть
Waifu2x с профилем UpResNet10БесплатныйДаНейросеть

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

Согласно результатам тестов и субъективному мнению исследователя первое место занял Topaz Gigapixel AI, отличный результат также показал Instant 4K, в то время как Photoshop, Waifu2x и фильтр Ланцоша показали достаточно сильное размытие по периметру объектов.

Есть еще платный продукт специально для обработки видео —  Topaz Video Enhance AI (пробная версия бесплатная). Он предлагает эффективность Gigapixel AI, но за тем исключением, что сразу обрабатывает видеоролики, поэтому нет необходимости раскладывать видео по кадрам. Для апскейлинга ролика длиной 1:27 мин. (2098 кадров) с 720p до разрешения 2K ушло около 50 минут.

Так почему же при таких отличных результатах нейросеть не используется повсеместно? Все дело в сложности обработки по сравнению с методами интерполяции. Например, фильтр Ланцоша справился с масштабированием ролика всего за 54 секунды, в то время как продвинутому Topaz понадобилось целых 128 минут! Естественно, когда программа обрабатывает всего 0,1 кадр в секунду, ни о каком апскейлинге в режиме реального времени речи идти и не может. По крайне мере без соответствующей производительности.

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

Comments