Что такое аугментация данных и зачем она нужна?

Аугментация данных (Data Augmentation) — это метод искусственного увеличения объёма и разнообразия обучающей выборки путём создания новых примеров из уже имеющихся с помощью различных трансформаций. Особенно широко применяется в задачах компьютерного зрения, где доступ к большим размеченным датасетам может быть ограничен, а модели (особенно глубокие нейросети) требуют большого количества разнообразных данных для устойчивого и точного обучения.

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

Зачем нужна аугментация данных

  1. **Увеличение объёма обучающей выборки
    **

    • Обучение моделей требует больших датасетов. Аугментация позволяет создать десятки, сотни и даже тысячи вариантов одного изображения.
  2. **Повышение устойчивости модели
    **

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

    • За счёт разнообразия примеров модель не запоминает конкретные изображения, а учится распознавать обобщённые закономерности.
  4. **Имитирование реальных сценариев
    **

    • Например, изображения с разным углом обзора, освещением, перекрытиями, шумом — всё это может быть смоделировано через аугментацию.
  5. **Балансировка классов
    **

    • В задачах с несбалансированными классами (например, много изображений кошек и мало собак) можно сгенерировать дополнительные данные для дефицитного класса.

Основные виды аугментации изображений

Аугментация может быть геометрической, фотометрической, смешанной или на основе генеративных моделей. Ниже перечислены основные способы аугментации:

1. Геометрические преобразования

  • Поворот (Rotation)
    Поворачивает изображение на заданный угол (например, от -20° до +20°).

  • Масштабирование (Scaling/Zooming)
    Увеличение или уменьшение изображения с сохранением размера холста.

  • Сдвиг (Translation)
    Смещение изображения по осям X и Y (объект не по центру).

  • Отражение (Flipping)
    Горизонтальное (чаще) и вертикальное отражение.

  • Обрезка (Cropping)
    Случайная или центрированная вырезка части изображения.

  • Изменение перспективы (Shear/Projective)
    Искажение с поворотом под углом — имитация съёмки под наклоном.

2. Фотометрические (изменение цвета и яркости)

  • Изменение яркости (Brightness)
    Сделать изображение светлее или темнее.

  • Контраст (Contrast)
    Усиление/ослабление различий между светлым и тёмным.

  • Насыщенность (Saturation)
    Повышение или понижение насыщенности цветов.

  • Шум (Gaussian/Impulse Noise)
    Добавление случайного шума в изображение.

  • Размытие (Gaussian Blur, Motion Blur)
    Имитирует расфокусировку или движение.

  • Изменение цветового пространства (HSV, Lab)
    Модификация отдельных компонентов (Hue, Saturation, Value).

3. Пространственные и композиционные техники

  • Cutout (Random Erasing)
    Случайное зачернение или удаление прямоугольных областей.

  • Mixup / CutMix
    Создание новых примеров путём смешивания изображений и/или меток.

  • GridDistortion / ElasticTransform
    Искажение сетки изображения — имитация эластичных деформаций.

  • Random Shadows / Sun Flares / Fog
    Добавление симулированных погодных или световых эффектов.

Аугментация для разных задач

Классификация

  • Применяются базовые трансформации: поворот, отражение, масштабирование, шум.

  • Главное: не изменить класс объекта. Например, при распознавании одежды вертикальный флип может быть недопустим.

Детекция объектов (Object Detection)

  • Аугментация должна учитывать аннотации прямоугольников (bounding boxes).

  • При трансформации изображения необходимо также изменить координаты боксов.

Сегментация (Semantic/Instance Segmentation)

  • Требуется синхронно трансформировать изображение и соответствующую маску сегментации.

Распознавание текста (OCR)

  • Добавление размытия, наклонов, шумов, искажений имитирует реальные условия: сканеры, фото документов.

Медицинская визуализация

  • Чувствительность к искажениям высокая: допустимы лишь умеренные повороты, зеркалирования, шумы.

Использование в библиотеке Keras

from tensorflow.keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(
rotation_range=20,
zoom_range=0.2,
horizontal_flip=True,
width_shift_range=0.1,
height_shift_range=0.1,
brightness_range=\[0.8, 1.2\]
)
datagen.fit(x_train)

Использование библиотеки Albumentations (Python, OpenCV)

import albumentations as A
from albumentations.pytorch import ToTensorV2
transform = A.Compose(\[
A.HorizontalFlip(p=0.5),
A.RandomBrightnessContrast(p=0.2),
A.ShiftScaleRotate(shift_limit=0.05, scale_limit=0.1, rotate_limit=15, p=0.7),
A.GaussianBlur(blur_limit=3, p=0.2),
A.Normalize(mean=(0.5,), std=(0.5,)),
ToTensorV2()
\])

Генеративные подходы к аугментации

GAN (Generative Adversarial Networks)

  • Генерация новых изображений, максимально похожих на реальные.

  • Используется для:

    • Медицины (генерация редких патологий)

    • Балансировки классов

Synthetic Data (Синтетические изображения)

  • Полностью искусственно сгенерированные сцены

  • Используется в распознавании автомобилей, лиц, сцены в робототехнике

Проблемы и ограничения

  • Искажение метки — например, переворот лица может нарушить корректность в задаче "определить левый или правый профиль".

  • Избыточная аугментация может ухудшить обучение, если исказит структуру данных.

  • Не все аугментации универсальны — нужно учитывать специфику задачи.

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

Реализация онлайн и офлайн

  • Офлайн-аугментация: заранее создаются все новые изображения и сохраняются на диск.

    • Преимущество: быстрое обучение

    • Недостаток: требует много памяти

  • Онлайн-аугментация: новые изображения создаются «на лету» во время каждой эпохи обучения.

    • Преимущество: разнообразие и эффективность

    • Недостаток: требует больше ресурсов в процессе обучения

Аугментация не только в изображениях

Хотя чаще всего аугментация используется в компьютерном зрении, она применяется и в других сферах:

  • Текст (NLP): замена синонимов, удаление слов, перестановка слов, генерация парафраз

  • Аудио: шум, эхо, сдвиг по времени, изменение высоты тона

  • Временные ряды: добавление шума, масштабирование, свёртки, временные искажения

  • Табличные данные: SMOTE, генерация синтетических наблюдений

Аугментация остаётся важнейшим шагом в современном машинном обучении, особенно в условиях ограниченности или несбалансированности данных.