Что такое аугментация данных и зачем она нужна?
Аугментация данных (Data Augmentation) — это метод искусственного увеличения объёма и разнообразия обучающей выборки путём создания новых примеров из уже имеющихся с помощью различных трансформаций. Особенно широко применяется в задачах компьютерного зрения, где доступ к большим размеченным датасетам может быть ограничен, а модели (особенно глубокие нейросети) требуют большого количества разнообразных данных для устойчивого и точного обучения.
Аугментация улучшает обобщающую способность моделей, снижает оверфиттинг (переобучение) и позволяет эффективно использовать даже небольшие наборы данных.
Зачем нужна аугментация данных
-
**Увеличение объёма обучающей выборки
**- Обучение моделей требует больших датасетов. Аугментация позволяет создать десятки, сотни и даже тысячи вариантов одного изображения.
-
**Повышение устойчивости модели
**- Модель становится более устойчивой к шуму, поворотам, масштабированию, изменениям освещения и другим реальным условиям.
-
**Снижение переобучения
**- За счёт разнообразия примеров модель не запоминает конкретные изображения, а учится распознавать обобщённые закономерности.
-
**Имитирование реальных сценариев
**- Например, изображения с разным углом обзора, освещением, перекрытиями, шумом — всё это может быть смоделировано через аугментацию.
-
**Балансировка классов
**- В задачах с несбалансированными классами (например, много изображений кошек и мало собак) можно сгенерировать дополнительные данные для дефицитного класса.
Основные виды аугментации изображений
Аугментация может быть геометрической, фотометрической, смешанной или на основе генеративных моделей. Ниже перечислены основные способы аугментации:
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, генерация синтетических наблюдений
Аугментация остаётся важнейшим шагом в современном машинном обучении, особенно в условиях ограниченности или несбалансированности данных.