Аугментация данных (data augmentation) — это набор приёмов, которые искусственно увеличивают разнообразие обучающей выборки с помощью случайных, но реалистичных преобразований. Иначе говоря, вы создаёте новые варианты уже имеющихся примеров, а не собираете новые данные с нуля, чтобы модель видела больше ситуаций во время обучения.
Английский термин: data augmentation. Также встречается: аугментация, расширение данных, augmentation. В этой статье мы опираемся на актуальные официальные источники по computer vision, поэтому примеры и ограничения прежде всего относятся к изображениям, видео и связанным CV-пайплайнам.
Простыми словами
Можно представить это как тренировку на одном и том же снимке, но в нескольких честных дублях: кадр чуть повернули, отразили, обрезали или слегка изменили масштаб. Смысл объекта не меняется, зато модель перестаёт запоминать единственный ракурс и лучше узнаёт объект в реальных условиях.
Важно именно слово «честных»: если преобразование меняет смысл метки, это уже не полезная аугментация, а испорченный пример. Поэтому аналогия работает только там, где преобразование сохраняет смысл.
Как это работает
Технически augmentation встраивают в training pipeline. Сначала берут исходный пример, затем применяют одно или несколько случайных преобразований, после чего подают результат в модель. Для каждого нового прохода по данным модель может увидеть тот же объект в другой форме, а метка остаётся прежней, если преобразование не ломает семантику.
исходный пример ↓ случайное, но допустимое преобразование аугментированный пример ↓ модель ↓ loss → backpropagation
В TensorFlow рекомендуют реализовывать это через Keras preprocessing layers или через tf.image. В Keras есть отдельные image augmentation layers и Pipeline layer для их композиции. Например, RandomFlip применяется только во время обучения и совместим с tf.data и grain pipeline. В PyTorch экосистеме TorchVision transforms.v2 умеет работать не только с изображениями, но и с видео, bounding boxes, masks и keypoints.
На практике это означает, что augmentation можно держать рядом с данными, а не вручную генерировать отдельный расширенный датасет на диске. Это удобнее для итераций: вы меняете policy, заново прогоняете обучение и сразу видите эффект на валидации.
Где применяется
Где это реально используется:
- Классификация изображений. Повороты, отражения и кропы помогают модели не переобучаться на маленьком наборе фото.
- Детекция, сегментация и pose estimation. Здесь особенно важна поддержка нескольких типов разметки одновременно; именно поэтому
TorchVision transforms.v2полезен для объектов, масок и keypoints. - TensorFlow/Keras-пайплайны. Когда augmentation живёт внутри обучения, вы проще контролируете, что на train данные меняются, а на validation — нет.
- Автоматизированный подбор политик. AutoAugment ищет policies из данных, RandAugment сокращает пространство поиска, а mixup обучает на выпуклых комбинациях пар примеров и их меток.
- Выбор библиотеки. Если вы работаете вне TensorFlow, посмотрите на AlbumentationsX, но проверьте текущие условия лицензии: в официальной документации maintained package указан как
albumentationsx, а legacyalbumentations==2.0.8отмечен как archived under MIT.
Практический пример
Представим, что вы обучаете модель классификации на небольшом наборе товарных фото.
- Вы делите данные на train, validation и test.
- На train включаете один-два безопасных преобразования, например отражение или небольшой кроп.
- На каждом эпохе один и тот же снимок может попасть в модель в чуть разных вариантах.
- На validation и test вы оставляете исходные изображения без случайных изменений, чтобы честно измерить качество.
train sample → augmentation → model → loss → backpropagation validation sample → model
Если после этого качество на validation растёт или держится, а метрики на test не проседают, augmentation работает в вашу пользу. Если же качество падает, значит преобразования слишком агрессивны или не подходят задаче.
Чем отличается от…
Близкие термины и методы часто смешивают, но у них разная механика.
| Подход | Суть | Когда брать | Ограничение |
|---|---|---|---|
| Обычная аугментация данных | Случайные реалистичные преобразования уже имеющихся примеров | Если вы знаете безопасные transforms и хотите быстро расширить вариативность | Нужно следить, чтобы преобразование сохраняло смысл метки |
| AutoAugment | Ищет policies аугментации из данных | Если ручной подбор слишком дорог | Добавляет этап поиска и требует проверки на вашей задаче |
| RandAugment | Уменьшает пространство поиска для автоматической аугментации | Если нужен более простой тюнинг, чем у AutoAugment | Всё равно нужно валидировать качество на своих данных |
| mixup | Обучает на выпуклых комбинациях пар примеров и их меток | Если вы хотите мягко изменить обучающий сигнал без геометрических искажений | Это не геометрическое преобразование изображения |
Практически: если вам нужен быстрый и прозрачный старт, начинайте с простых безопасных преобразований. Если базовые приёмы уже исчерпаны, смотрите в сторону AutoAugment, RandAugment и mixup.
Ограничения и заблуждения
Состояние библиотек и лицензий ниже проверено по публичным источникам на 2026-08-14.
- Аугментация не лечит плохую разметку. Если labels ошибочны, вы просто воспроизводите проблему в большем числе вариантов.
- Не всякий случайный transform полезен. Разрешены только те изменения, которые сохраняют смысл примера и формат разметки.
- Тренировочный режим важен. Keras RandomFlip работает во время обучения; если вы случайно включите аналогичную случайность на validation, оценка станет нечестной.
- Версия и бэкенд имеют значение. Для TorchVision проверяйте compatibility matrix и release notes; для Keras поведение отдельных слоёв зависит от training/inference context и backend support.
- Лицензия может изменить выбор инструмента. У AlbumentationsX current docs отдельно описывают maintained package и legacy package, поэтому перед внедрением проверяйте legal terms.
Редакционный вывод: начинайте с простых семантически безопасных преобразований, а автоматизированные методы подключайте только после базового бенчмарка на validation.
Связанные термины и инструменты
Полезно смотреть рядом со статьями про Epoch, batch и iteration, Backpropagation (обратное распространение) и Self-attention.
Официальные инструменты и документы:
- Data augmentation | TensorFlow Core
- Computer vision with TensorFlow | TensorFlow Core
- Image augmentation layers
- Pipeline layer
- RandomFlip layer
- Transforming images, videos, boxes and more — Torchvision 0.28 documentation
- GitHub – pytorch/vision: Datasets, Transforms and Models specific to Computer Vision
- Releases · pytorch/vision · GitHub
- AlbumentationsX Documentation for Computer Vision | Albumentations
- Release Notes | Albumentations
- AutoAugment: Learning Augmentation Policies from Data
- RandAugment: Practical automated data augmentation with a reduced search space
- mixup: Beyond Empirical Risk Minimization
Вопросы и ответы
Нужно ли аугментировать валидацию и тест?
Обычно нет. Validation и test нужны для честной оценки модели на данных, которые не искажены случайными преобразованиями.
Подходит ли augmentation для детекции и сегментации?
Да. TorchVision transforms.v2 поддерживает изображения, видео, bounding boxes, masks и keypoints, поэтому можно синхронно преобразовывать данные и разметку.
Mixup — это аугментация данных?
Да. Это один из её вариантов: mixup обучает на выпуклых комбинациях пар примеров и их меток.
Что выбрать: Keras, TorchVision или AlbumentationsX?
Выбор зависит от стека. Для TensorFlow/Keras удобно держать augmentation внутри модели или tf.data; для PyTorch — TorchVision transforms.v2; если вы строите CV-пайплайн отдельно от фреймворка, смотрите AlbumentationsX и проверяйте лицензирование.
Когда стоит смотреть AutoAugment или RandAugment?
Когда простых ручных transforms уже недостаточно и вы готовы потратить время на подбор политики. RandAugment уменьшает search space, а AutoAugment ищет policies из данных.
Источники
Проверяемые источники, использованные для подготовки статьи:
- Data augmentation | TensorFlow Core
- Computer vision with TensorFlow | TensorFlow Core
- Image augmentation layers
- Pipeline layer
- RandomFlip layer
- Transforming images, videos, boxes and more — Torchvision 0.28 documentation
- GitHub – pytorch/vision: Datasets, Transforms and Models specific to Computer Vision
- Releases · pytorch/vision · GitHub
- AlbumentationsX Documentation for Computer Vision | Albumentations
- Release Notes | Albumentations
- AutoAugment: Learning Augmentation Policies from Data
- RandAugment: Practical automated data augmentation with a reduced search space
- mixup: Beyond Empirical Risk Minimization