Методы компрессии изображений |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2021-08-20 11:46 Методы компрессии изображений Большинство методов компрессии изображений с потерями следуют устоявшейся схеме -- transform coding [3]. Кодирование выглядит следующим образом.
При декодировании, все делается в обратном порядке.
Нейронные сети обычно применяются на уровне энкодера и декодера. Для кодирования без потерь нужна вероятностная модель кодируемых данных. В нашем случае в роли данных выступает квантизированное изображение y. Его вероятностная модель P(y) также реализуется при помощи нейронной сети. Формальное описание задачи Для формального описания задачи вводится две величины:
Здесь и далее мат ожидание берется по распределению изображений. Для нахождения кодировки оптимальной по качеству при максимальном сжатии можно минимизируют функцию 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/ . Особенно впечатляюще выглядит сравнение изображений сжатых при помощи алгоритма авторов и стандартного алгоритма сжатия при одинаковом размере. Заключение Конечно, присмотревшись к размеру сетей, можно понять, что применение в 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 Комментарии: |
|