Улучшение моделей глубокого обучения

Этот блог - часть А из серии из двух статей об увеличении изображений. Он разделен на: -

Часть A: введение в увеличение изображения, различные методы увеличения и его реализация с помощью доступных библиотек.

Часть B: построение и обучение модели PyTorch и анализ влияния использования увеличения изображения на производительность.

Если вы новичок в области глубокого обучения, в какой-то момент вы, возможно, слышали о теме увеличения изображений. В этой статье мы обсудим, что такое увеличение изображения, и реализуем его в трех разных библиотеках Python, то есть в Keras, PyTorch и дополнении (специально для увеличения изображений). Итак, возникает первый вопрос, что такое увеличение изображения или в целом увеличение данных.

Что такое увеличение изображения?

Увеличение - это действие или процесс увеличения или увеличения размера или количества.

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

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

Различные методы увеличения изображения

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

Пространственное увеличение

  • Масштабирование
  • Обрезка
  • Листать
  • Вращение
  • Перевод

Увеличение пикселей

  • Яркость
  • Контраст
  • Насыщенность
  • Оттенок

Увеличение данных в глубоком обучении

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

1. Керас.

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

Увеличение изображений с помощью ImageDataGenerator
Класс ImageDataGenerator обеспечивает получение модели новыми вариациями изображений в каждую эпоху. Но он возвращает только преобразованные изображения и не добавляет их к исходному корпусу изображений. Если бы это было действительно так, то модель могла бы видеть исходные изображения несколько раз, что определенно превосходило бы нашу модель.
Еще одно преимущество ImageDataGenerator заключается в том, что он требует меньшего использования памяти. Это потому, что без использования этого класса мы загружаем все изображения сразу. Но при его использовании мы загружаем изображения партиями, что экономит много памяти.

Поддерживается ряд методов, а также методы масштабирования пикселей. Мы сосредоточимся на пяти основных типах методов увеличения данных для данных изображения; конкретно:

  • Изображение сдвигается с помощью аргументов width_shift_range и height_shift_range.
  • Изображение переворачивается с помощью аргументов horizontal_flip и vertical_flip.
  • Поворот изображения с помощью аргумента диапазон_ вращения
  • Яркость изображения с помощью аргумента диапазон_яркости.
  • Увеличение изображения с помощью аргумента zoom_range.

Например, можно создать экземпляр класса ImageDataGenerator.

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

2. Питорч

PyTorch - это библиотека на основе Python, которая упрощает создание моделей глубокого обучения и их использование в различных приложениях. Но это больше, чем просто еще одна библиотека глубокого обучения. Это пакет для научных вычислений.

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

Начиная с импорта изображения, мы определим функцию imshow () для визуализации реального и преобразованного изображения.

Масштабирование. При масштабировании или изменении размера изображение изменяется до заданного размера (например, ширина изображения может быть увеличена вдвое).

Обрезка. При кадрировании выделяется часть изображения, например в данном примере возвращается обрезанное по центру изображение.

Переворачивание: при переворачивании изображение переворачивается по горизонтали или вертикали.

Увеличение пикселей

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

Композиции преобразований

Составляет несколько преобразований вместе. Это преобразование не поддерживает сценарий касания. Он просто объединяет все предоставленные ему преобразования. Итак, все преобразования в transforms.Compose применяются ко входу одно за другим.

3.Актуализация

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

Переворот. При переворачивании изображение можно переворачивать по горизонтали или вертикали.

ShiftScaleRotate: при переворачивании изображение можно масштабировать и произвольно поворачивать в заданном диапазоне.

Составьте аугментацию в албументациях

Compose получает список с несколькими дополнениями, например: A.RandomCrop, A.HorizontalFlip, A.RandomBrightnessContrast и т. Д., С помощью которых мы можем выполнять различные методы увеличения за один прогон. Давайте посмотрим на пример аугментации композиции с использованием библиотеки albumentations.

В приведенном выше коде мы использовали увеличение композиции с использованием случайного кадрирования и случайного дрожания цвета.

Резюме

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

В частности, мы узнали:

  • Увеличение данных изображения используется для расширения набора обучающих данных, чтобы улучшить производительность модели и способность к обобщению.
  • Увеличение графических данных поддерживается в библиотеках глубокого обучения Keras, PyTorch, Albumentation.

Спасибо Химаншу Ваг за ваш вклад.

использованная литература

  1. Https://keras.io/api/preprocessing/image/
  2. Https://machinelearningmaster.com/how-to-configure-image-data-augmentation-when-training-deep-learning-neural-networks/
  3. Https://iq.opengenus.org/data-augmentation/
  4. Https://albumentations.ai/