Методы компрессии изображений

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Методы компрессии изображений

Большинство методов компрессии изображений с потерями следуют устоявшейся схеме -- transform coding [3]. Кодирование выглядит следующим образом.

  1. Изображение квантизуется энкодером в некое дискретное представление y=E(x)
  2. Квантизированное изображение сжимается при помощи алгоритма кодирования. В качестве последнего могут выступить, например, коды Хаффмана.

При декодировании, все делается в обратном порядке.

  1. Квантизированное изображение восстанавливается из закодированного без потерь изображения.
  2. Используя декодировщик, восстанавливается аппроксимация исходного изображения. x’ = G(y)

Нейронные сети обычно применяются на уровне энкодера и декодера.

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

Формальное описание задачи

Для формального описания задачи вводится две величины:

  1. Мера качества восстановления исходного изображения -- функция искажения d = E[d(x,x’)] (distortion function). Часто в её роли выступает квадратичное расстояние.
  2. Мера сжатия данных или функция скорости (rate function) -- r=E[-log(P(y))]. r учитывает количество бит необходимых для передачи квантизированного сигнала (r вычисляет энтропию Шеннона по случайной величине у [1]).

Здесь и далее мат ожидание берется по распределению изображений.

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

lambda r + d,

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

Формулировка лосса

Так как алгоритм кодировки дифференцируемый, авторы напрямую оптимизируют величину L_c = lambda r + d.

Чтобы управлять степенью сжатия r авторы реализуют механизм контроля. Пускай r_{target} желаемая степень сжатия, тогда множитель lambda меняется по следующим правилам: lambda = lambda_a есть r(y) > r_{target} и lambda = lambda_b иначе, где lambda_a >> lambda_b.

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

GAN

Мотивацией к введению перцептуального лосса является добавление реалистичности к полученному изображению. Еще одна компонента добавляющая реалистичность -- дискриминатор D. Задачей дискриминатора является отличить сгенерированное изображение от оригинального.

Дискриминатор обучается вместе с основной сетью, для этого вводится специальный лосс:

L_d = E[-log(1-D(x’, y))] + E[-log(D(x, y))],

где x изначальное изображение, x’ декодированное изображение, y кодированное изображение.

D выводит единицу если источник изображение оригинальное, ноль если сгенерированное. L_d минимизирует именно это -- первое слагаемое уменьшается, когда D(x’, y) стремится к нулю, второе наоборот, когда D(x, y) устремлен к единице.

При обучении сети дискриминатор используется следующим образом:

L_g = E[-log(D(x’, y))],

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

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

В итоге авторы итеративно оптимизируют два лосса -- лосс дискриминатора L_d и лосс сети L_c + L_g.

Архитектура модели

Модель состоит из четырех основных компонент -- энкодера E, декодера G, модели энтропии P и дискриминатора D. В качестве модели энтропии авторы используют, так называемый гиперприор [2]. Его описание находится за рамками этой статьи, так-как тема является довольно объемной.

Модели энкодера, декодера и дискриминатора выглядят более-менее стандартно. Тут в основном авторы экспериментируют с нормализацией -- в отличии от предыдущих работ, где использовалась Instance-нормализация авторы предлагают заменить её на нормализацию каналов (ChannelNorm). Такая замена мотивируется тем, что Instance-нормализация результирует в затемененных изображениях.

В дискриминаторе Instance-нормализацию авторы заменяют нормализацией спектральной, это мотивируется повышением стабильности тренировки. Добавление класса y в дискриминатор реализуется путем конкатенации изображения с апскейленным вариантом y.

Тренировка

Как известно тренировка ГАН-ов довольно сложна, авторы наблюдают что в их случае важную роль играет MSE и перцептуальный лосс -- d. Его исключение приводит к коллапсу или сильным артефактам. Для большей стабильности авторы также не применяют тренировку from scratch. Вместо этого используется сеть сначала обученная минимизировав lambda r + d лосс.

Результаты

С результатами работы сети можно ознакомиться вот тут https://hific.github.io/ . Особенно впечатляюще выглядит сравнение изображений сжатых при помощи алгоритма авторов и стандартного алгоритма сжатия при одинаковом размере.

Слева изображение сжатое при помощи работы авторов до 7kb, справа тоже изображение сжатое при помощи JPEG до 8kb.

Заключение

Конечно, присмотревшись к размеру сетей, можно понять, что применение в real-time данной работы не особенно реалистично, что делает её сравнение с JPEG немного нечестным. Но как говорит один небезызвестный ютубер кажется что через пару подобных работ мы увидим реализацию работающую в реальном времени.

Ссылки

1 https://en.wikipedia.org/wiki/Entropy_(information_theory)

2. Variational image compression with a scale hyperprior https://openreview.net/forum?id=rkcQFMZRb

3. Theoretical Foundations of Transform Coding: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.8.353&rep=rep1&type=pdf


Источник: m.vk.com

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