Pull to refresh

Нейросеть Google сжимает фотографии лучше JPEG

Reading time 4 min
Views 27K

Фрагмент 32×32 пикселя оригинального изображения, сжатого разными методами. Иллюстрация: Google

Разработчики из компании Google поделились очередными достижениями в применении нейросетей для практических задач. 18 августа они опубликовали на arXiv научную статью «Сжатие полноразмерных изображений с помощью рекуррентных нейронных сетей» ("Full Resolution Image Compression with Recurrent Neural Networks"). В статье описан инновационный метод сжатия фотографий с помощью нейросети, показан процесс её обучения и примеры её работы.

Разработчики информируют, что это первая нейросеть в мире, которая на большинстве битрейтов сжимает фотографии лучше JPEG, при помощи энтропийного кодирования или без его помощи.

Нейросеть для сжатия изображений Google сделана на базе свободной библиотеки машинного обучения TensorFlow. Для обучения использовались два набора данных: 1) готовый набор изображений 32×32 пикселя; 2) 6 млн фотографий из интернет-базы Kodak размером 1280×720 пикселей.

Каждое изображение 1280×720 из второй базы разбили на фрагменты 32×32 пикселя. Затем система выделяла 100 образцов с наименее эффективным сжатием, по сравнению с PNG. Идея в том, что это самые «сложные» для сжатия области изображения — именно на них нужно обучать нейросеть, а сжатие остальных областей будет гораздо проще. Этот «сложный» набор данных в таблице ниже представлен как «Набор данных с высокой энтропией».

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

Для сравнения эффективности сжатия использовались стандартные метрики для алгоритмов с потерей качества — Multi-Scale Structural Similarity (MS-SSIM, представлен в 2003 году) и более современный Peak Signal to Noise Ratio — Human Visual System (PSNR-HVS, 2011 год). Метрика MS-SSIM применялась для каждого из RGB-каналов в отдельности, результаты усреднялись. В метрике PSNR-HVS изначально учтена информация о цвете.

MS-SSIM даёт оценку по шкале от 0 до 1, а PSNR-HVS измеряется в децибеллах. В обоих случаях более высокое значение означает лучшее сходство сжатого изображения и оригинала. Для ранжирования моделей использовалась суммарная оценка, вычисленная как площадь изображения под кривой соотношения степени искажения и количества данных (area under the rate-distortion curve, AUC) суммарно по всем уровням сжатия (bpp, бит на пиксель).

Все модели прошли обучение примерно в 1 000 000 шагов. Энтропийное кодирование не использовалось. Реальный показатель AUC будет гораздо выше при использовании энтропийного кодирования. Но даже без него все модели показали результат по MS-SSIM и PSNR-HVS лучше, чем JPEG.



На диаграммах внизу видно, что все варианты нейросети работают более эффективно при использовании дополнительного слоя энтропийного кодирования. На относительно небольших изображениях 1280×720 выигрыш небольшой: между 5% на 2 bpp и 32% на 0,25 bpp. Преимущество станет намного более заметно только на действительно больших фотографиях. В модели Baseline LSTM экономия составила от 25% на 2 bpp до 57% на 0,25 bpp.

На первой диаграмме показана кривая соотношения степени искажения и количества данных (rate-distortion curve), по оси ординат отложены показатели метрики MS-SSIM, которые изменяются в зависимости от уровня компрессии — показателя бит на пиксель, отложенного по оси абсцисс. Штриховые линии соответствуют эффективности до применения энтропийного кодирования, сплошные линии — после применения энтропийного кодирования. Слева — две лучшие модели, обученные на наборе данных изображений 32×32 пикселя. Справа — две лучшие модели, обученные на наборе данных с высокой энтропией, то есть на реальных фотографиях, которые исследователи Google разбили на фрагменты 32×32 и выделили самые трудносжимаемые участки.



На следующих диаграммах то же самое для метрики PSNR-HVS.



Нейросеть всё ещё нуждается в доработке: некоторые результаты её работы выглядят не совсем привычно для человеческого глаза. Авторы научной работы признают, что статистика эффективности по RD-кривой не всегда соответствует субъективному восприятию на глаз: «Визуальная система человеческого зрения более чувствительна к определённым типам искажения, чем к другим», — пишут они.

Тем не менее, этот проект — важный шаг к разработке более эффективных алгоритмов, которые помогут ещё более качественно сжимать изображения. Разработчики уверены, что можно ещё больше повысить эффективность на больших изображениях, если использовать трюки, позаимствованные у видеокодеков, как это делает WebP, созданный на основе свободного видеокодека VP8. Это такие методы как повторное использование фрагментов, закодированных ранее. Кроме того, они планируют провести совместное обучение энтропийного кодировщика (BinaryRNN) и кодировщика по месту (patch-based) на больших изображениях, чтобы найти оптимальный баланс между эффективностью кодировщика по месту и прогностической мощностью энтропийного кодировщика.

Несколько примеров, как работает нейросеть Google в нынешнем состоянии, на сжатии реальных изображений. Как упоминалось выше, человеческий глаз более чувствителен к определённым типам искажений и менее чувствителен к другим. Поэтому даже картинка, получившая высокую оценку MS-SSIM и PSNR-HVS, иногда может выглядеть не так хорошо, как получившая низкую оценку. Это уже изъяны существующих метрик (или человеческого зрения).


Оригинальное изображение, разделённое на фрагменты 32×32 пикселя. Иллюстрация: Google


Фрагмент 32×32 пикселя оригинального изображения, сжатого разными методами. Иллюстрация: Google


Оригинальное изображение, разделённое на фрагменты 32×32 пикселя. Иллюстрация: Google


Фрагмент 32×32 пикселя оригинального изображения, сжатого разными методами. Иллюстрация: Google

TensorFlow — высокомасштабируемая система машинного обучения, способная работать как на простом смартфоне, так и на тысячах узлов в центрах обработки данных. Google использует TensorFlow для всего спектра наших задач, от распознавания речи и перевода текстов Google Translate до автоответчика в Inbox и поиска в Google Photos. Эта библиотека «быстрее, умнее и гибче, чем наша старая система, так что её намного проще приспособить к новым продуктам и исследованиям», говорила компания Google в ноябре 2015 года, когда выложила библиотеку TensorFlow во всеобщее пользование под свободной лицензией Apache 2.0.
Tags:
Hubs:
+22
Comments 20
Comments Comments 20

Articles