Технология сжатия изображений и видео с глубоким обучением

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

Предисловие: В развитии аудио- и видеотехнологий, как минимизировать сжатие при обеспечении качества, очень важно снизить стоимость полосы пропускания и так далее! На этот раз г-н Туя расскажет вам, как использовать технологию глубокого обучения для сжатия изображений и видео! Друзья, у которых есть вопросы и интересы, приглашаем обратить внимание на tucodec в публичном аккаунте WeChat, давайте обсудим вместе!

Что касается алгоритмов сжатия изображений, то наиболее типичными из них являются JPEG, JPEG2000 и так далее.

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

Рис. 2. Блок-схема кодирования JPEG

При сжатии с потерямиОчевидным преимуществом JPEG2000 является то, что он позволяет избежать эффекта мозаичного искажения при сжатии JPEG.. Искажение JPEG2000 в основном представляет собой нечеткое искажение, а основной причиной нечеткого искажения является затухание высоких частот в процессе кодирования. В случае низкого коэффициента сжатия (например, коэффициент сжатия менее 10:1) традиционное качество изображения JPEG может быть лучше, чем JPEG2000. Преимущества JPEG2000 начинают проявляться только при высокой степени сжатия.

В целом, JPEG2000 по-прежнему имеет большие технические преимущества по сравнению с традиционным JPEG, и обычно производительность сжатия может быть улучшена более чем на 20%. Когда коэффициент сжатия достигает 100:1, изображения, сжатые в формате JPEG, сильно искажаются и становятся трудно распознаваемыми, в то время как изображения в формате JPEG2000 все еще распознаются.

Цель алгоритма сжатия дизайна технологии глубокого обучения

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

В области сжатия изображений и видео наиболее часто используемой технологией глубокого обучения является сверточная нейронная сеть (CNN), Ниже кратко представлена ​​сверточная нейронная сеть. Как показано на рисунке 3, подобно строительным блокам, сверточная нейронная сеть состоит из таких модулей, как свертка, объединение, нелинейные функции и уровни нормализации. Конечный результат зависит от приложения, например, в области распознавания лиц мы можем использовать его для извлечения строки чисел (называемых техническими терминами) для представления изображения лица. Затем выполните распознавание лиц, сравнив сходства и различия черт.

Источник схемы сверточной нейронной сетиhttp://blog.csdn.net/hjimce/article/details/47323463      

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

Схематическая диаграмма сжатия изображений с глубоким обучением

Как оценить алгоритмы сжатия

Прежде чем углубляться в технические детали, давайте посмотрим, как оцениваются алгоритмы сжатия. Есть два важных показателя для оценки качества алгоритма сжатия:Один — бит на пиксель (BPP), занимаемый каждым пикселем, а другой — PSNR.. Мы знаем, что данные хранятся в компьютере в виде битов, и чем больше требуется битов, тем больше места для хранения занимает место. BPP используется для представления количества битов, занимаемых каждым пикселем в изображении, таком как трехканальная карта RGB, что означает, что каждый пиксель должен потреблять 24 бита. PSNR используется для оценки качества восстановления декодированного изображения.Простое понимание состоит в том, что чем выше PSNR, тем лучше качество восстановления.

Давайте возьмем пример, предположив, что размер изображения с длиной и шириной 768 * 512 составляет 1M, используйте технологию глубокого обучения для его кодирования и сгенерируйте сжатые данные признаков, включая 96 * 64 * 192 единиц данных после прохождения кодирования. Если представлены все данные, единице в среднем требуется 1 бит, поэтому для кодирования всего изображения требуется 96*64*192 бита. После сжатия количество битов, необходимых для кодирования каждого пикселя, составляет (96*64*192)/(768*512)=3, поэтому значение BPP равно 3 бит/пиксель, а коэффициент сжатия равен 24:3=8:1. . Это означает, что изображение размером 1 МБ после сжатия должно занимать всего 0,125 М. Другими словами, пространство для одной фотографии теперь можно разместить 8.

Как сделать сжатие с помощью глубокого обучения

Когда дело доходит до того, как использовать глубокое обучение для сжатия, давайте прямо сейчас воспользуемся примером. В сеть кодирования отправляется трехканальная картинка размером 768*512, и после прямой обработки будут получены признаки сжатия, занимающие 96*64*192 единицы данных. Читатели со знанием компьютера могут подумать, что в этот блок данных можно поместить число с плавающей запятой, целое число или двоичное число. Вопрос в том, какой тип данных должен быть введен? С точки зрения восстановления изображения и принципа нейронной сети, если все сжатые данные признаков представляют собой числа с плавающей запятой, качество восстановленного изображения будет самым высоким. Но число с плавающей запятой занимает 32 бита, тогда формула расчета числа битов, упомянутая ранее, становится (96*64*192*32)/(768*512)=96, но после сжатия биты, занимаемые каждым пикселем изменить с 24 на 96, вместо сжатия увеличилось, что является плохим результатом,Очевидно, что числа с плавающей запятой — не лучший выбор..

Итак, чтобы разработать надежный алгоритм, мы используем метод, называемыйколичественноЕго цель состоит в том, чтобы преобразовать числа с плавающей запятой в целые или двоичные числа.Самая простая операция - удалить десятичную запятую после числа с плавающей запятой.После того, как число с плавающей запятой становится целым числом, оно занимает только 8 бит, что означает, что каждый пиксель занимает 24 бит. Соответственно, на стороне декодирования можно использоватьобратное квантованиеТехнология восстанавливает преобразованные данные признаков в числа с плавающей запятой, например, добавляя случайное десятичное число к целому числу, что может в определенной степени уменьшить влияние квантования на точность нейронной сети, тем самым улучшая качество восстановленного изображения. .

Несмотря на то, что каждое сжатое свойство занимает 1 бит, коэффициент сжатия 8:1, на наш взгляд, не является идеальным результатом. Как еще оптимизировать алгоритм? Давайте посмотрим на формулу расчета BPP. Предполагая, что каждый сжатый элемент данных объекта занимает 1 бит, формула может быть записана как: (96*64*192*1)/(768*512)=3, а результат вычисления равен 3 бит/пиксель. сжатие, Чем меньше BPP, тем лучше. В этой формуле знаменатель определяется изображением, часть, которую можно настроить, находится в числителе, а три числа 96, 64 и 192 в числителе связаны со структурой сети. Очевидно, что когда мы разработаем лучшую структуру сети, эти три числа станут меньше.

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

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

Результаты оцениваются по стандартному набору данных kodak24. Верхнее изображение — это результат PSNR, а нижнее изображение — результат MS-SSIM. 

Суммировать

 

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

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