Обзор некоторых ведущих библиотек и фреймворков

Что такое сжатие изображений?

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

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

Приложения сжатия изображений включают:

  • Хранилище: сжатые данные занимают меньше места на диске, что особенно полезно для архивирования подробных изображений, например медицинских изображений.
  • Анализ основных компонентов (PCA) — методы сжатия изображений, которые извлекают наиболее важные компоненты изображения, используются для извлечения или суммирования признаков и анализа данных.
  • Стандартизация — в некоторых случаях наборы изображений должны соответствовать стандартному размеру и формату, что требует сжатия всех изображений до одинакового размера, формы и разрешения. Например, записи, которые ведутся службами безопасности и государственными учреждениями, требуют стандартизированных изображений.

Сжатие изображений с помощью глубокого обучения

Глубокое обучение (DL) используется для сжатия изображений с 1980-х годов и эволюционировало, чтобы включать такие методы, как многослойные персептроны, случайные нейронные сети, сверточные нейронные сети и генеративно-состязательные сети.

Многослойные персептроны

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

Первоначальный алгоритм MLP для сжатия изображений был обнародован в 1988 году и включал традиционные механизмы сжатия изображений, такие как преобразование пространственной области, двоичное кодирование и квантование, в интегрированную задачу оптимизации. Алгоритм опирался на нейронную сеть декомпозиции для определения оптимальной комбинации двоичного кода в выходном сжатом потоке битов, но он не мог зафиксировать параметры нейронной сети для переменной степени сжатия.

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

Сверточные нейронные сети

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

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

Первая реализация CNN для сжатия изображений была в 2016 году с алгоритмом, состоящим из модуля анализа и модуля синтеза. Модуль анализа состоит из этапов нормализации свертки, разделения и подвыборки. Каждый этап начинается с аффинной свертки, производит выходные данные с пониженной частотой дискретизации, а затем использует обобщенную делительную нормализацию (GDN) для вычисления сигналов с пониженной частотой дискретизации.

Сжатие изображений на основе CNN улучшает показатели JPEG2000, такие как пиковое отношение сигнал-шум (PSNR) и структурное сходство (SSIM). Этот алгоритм получил дальнейшее развитие с оценкой энтропии с использованием шкалы, называемой гипераприорной. Это привело к тому, что уровень производительности сжатия изображения приблизился к таким стандартам, как высокоэффективное кодирование видео (HEVC).

Генеративно-состязательные сети

Генеративно-состязательная сеть (GAN) — это глубокая нейронная сеть, состоящая из двух противоположных моделей генеративной сети. Первый алгоритм сжатия изображений на основе GAN стал доступен в 2017 году. Он создает сжатые файлы, которые в два раза меньше, чем WebP, в 2,5 раза меньше, чем JPEG или JPEG200, и в 1,7 раза меньше, чем BPG. Алгоритм также использует параллельные вычислительные ядра графического процессора для работы в режиме реального времени.

Сжатие изображений GAN включает в себя реконструкцию сжатого изображения в крошечном пространстве признаков на основе признаков входного изображения. Основным преимуществом GAN перед CNN с точки зрения сжатия изображения являются потери со стороны, что улучшает качество выходного изображения. Противоборствующие сети обучаются вместе друг против друга, повышая производительность модели генерации изображений.

Фреймворки и библиотеки для сжатия изображений на основе ИИ

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

OpenCV

Библиотека компьютерного зрения с открытым исходным кодом (OpenCV) предлагает сотни алгоритмов машинного обучения и компьютерного зрения с тысячами функций для поддержки этих алгоритмов. Это популярный выбор, поскольку он поддерживает все ведущие мобильные и настольные операционные системы с интерфейсами Java, Python и C++.

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

ТензорФлоу

TensorFlow — это платформа Google с открытым исходным кодом, которая поддерживает машинное и глубокое обучение. TensorFlow позволяет создавать и обучать модели глубокого обучения на заказ. Он предлагает несколько библиотек, некоторые из которых полезны для приложений компьютерного зрения и проектов обработки изображений. Библиотека TensorFlow Compression (TFC) предлагает инструменты сжатия данных.

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

Набор инструментов для обработки изображений MATLAB

Лаборатория матриц, или MATLAB, относится как к языку программирования, так и к популярной математической и научной платформе для решения задач. Платформа предлагает набор инструментов для обработки изображений (IPT), содержащий различные приложения и алгоритмы рабочего процесса для обработки, анализа и визуализации изображений, и может использоваться для разработки алгоритмов.

MATLAB IPT позволяет автоматизировать рабочие процессы обработки изображений с приложениями, варьирующимися от шумоподавления и улучшения изображения до сегментации изображения и обработки 3D-изображений. Функции IPT часто поддерживают создание кода C/C++ и полезны для развертывания встроенной системы машинного зрения или для создания прототипов настольных компьютеров.

Хотя MATLAB IPT не является открытым исходным кодом, он предлагает бесплатную пробную версию.

Высокоточное генеративное сжатие изображений

Это высокоточное генеративное сжатие изображений является проектом Github, который использует изученное сжатие и модели GAN для создания системы сжатия с потерями. Это привлекательно для энтузиастов кодирования, которые могут экспериментировать с кодом HiFiC на Github. Эта модель очень эффективна при восстановлении подробных текстур в сжатых изображениях.

Заключение

В этой статье я обсудил современное состояние алгоритмов сжатия изображений, основанных на глубоком обучении, включая многослойные персептроны, сверточные нейронные сети и генеративно-состязательные сети. Я также представил доступные инструменты, которые вы можете использовать для создания приложений для сжатия изображений на основе ИИ:

  • OpenCV — включает сотни моделей машинного обучения, в том числе несколько модулей, выполняющих сжатие изображений.
  • TensorFlow — позволяет создавать и настраивать модели обработки и сжатия изображений.
  • MATLAB Image Processing Toolbox — позволяет создавать рабочие процессы и алгоритмы обработки изображений, включая сегментацию изображений и обработку трехмерных изображений.
  • Высококачественное генеративное сжатие изображений — проект с открытым исходным кодом, использующий модели GAN для сжатия с потерями.

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