Аугментация данных с использованием Ultralytics YOLO

YOLO data augmentation examples showing original and augmented images for training

Введение

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



Watch: How to use Mosaic, MixUp & more Data Augmentations to help Ultralytics YOLO Models generalize better 🚀

Почему аугментация данных важна

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

  • Расширенный набор данных: Создавая вариации существующих изображений, ты можешь эффективно увеличить размер своего обучающего набора данных без сбора новых данных.
  • Улучшенная обобщающая способность: Модели учатся распознавать объекты в различных условиях, что делает их более устойчивыми в реальных приложениях.
  • Снижение переобучения: Благодаря внесению вариативности в обучающие данные, модели с меньшей вероятностью будут запоминать специфические характеристики изображений.
  • Повышенная производительность: Модели, обученные с правильной аугментацией, обычно достигают лучшей точности на проверочных и тестовых наборах.

Реализация в Ultralytics YOLO предоставляет комплексный набор методов аугментации, каждый из которых служит определенным целям и по-разному способствует производительности модели. Это руководство подробно рассмотрит каждый параметр аугментации, помогая тебе понять, когда и как эффективно использовать их в своих проектах.

Примеры конфигураций

Ты можешь настроить каждый параметр с помощью API Python, интерфейса командной строки (CLI) или файла конфигурации. Ниже приведены примеры того, как настроить аугментацию данных для каждого метода.

Примеры конфигурации
import albumentations as A

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Training with custom augmentation parameters
model.train(data="coco.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)

# Training without any augmentations (disabled values omitted for clarity)
model.train(
    data="coco.yaml",
    epochs=100,
    hsv_h=0.0,
    hsv_s=0.0,
    hsv_v=0.0,
    translate=0.0,
    scale=0.0,
    fliplr=0.0,
    mosaic=0.0,
    erasing=0.0,
    auto_augment=None,
)

# Training with custom Albumentations transforms (Python API only)
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.CLAHE(clip_limit=4.0, p=0.5),
]
model.train(data="coco.yaml", epochs=100, augmentations=custom_transforms)

Использование файла конфигурации

Ты можешь определить все параметры обучения, включая аугментации, в файле конфигурации YAML (например, train_custom.yaml). Параметр mode требуется только при использовании CLI. Этот новый файл YAML затем переопределит стандартный файл, расположенный в пакете ultralytics.

# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo26n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5

Затем запусти обучение с помощью API Python:

Пример обучения
from ultralytics import YOLO

# Load a COCO-pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Train the model with custom configuration
model.train(cfg="train_custom.yaml")

Аугментации цветового пространства

Настройка цветового тона (hsv_h)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0.015
  • Использование: Сдвигает цвета изображения, сохраняя их взаимосвязи. Гиперпараметр hsv_h определяет величину сдвига, при этом итоговая корректировка выбирается случайным образом в диапазоне от -hsv_h до hsv_h. Например, при hsv_h=0.3 сдвиг выбирается случайным образом от -0.3 до 0.3. Для значений выше 0.5 сдвиг цветового тона «зацикливается» по цветовому кругу, поэтому аугментации выглядят одинаково между 0.5 и -0.5.
  • Цель: Особенно полезна для сценариев на открытом воздухе, где условия освещения могут существенно влиять на внешний вид объекта. Например, банан может выглядеть более желтым под ярким солнечным светом, но более зеленоватым в помещении.
  • Реализация Ultralytics: RandomHSV
-0.5-0.250.00.250.5
Hue shift -0.5 augmentationHue shift -0.25 augmentationOriginal image without augmentationHue shift 0.25 augmentationHue shift -0.5 augmentation

Настройка насыщенности (hsv_s)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0.7
  • Использование: Изменяет интенсивность цветов на изображении. Гиперпараметр hsv_s определяет величину сдвига, при этом итоговая корректировка выбирается случайным образом от -hsv_s до hsv_s. Например, при hsv_s=0.7 интенсивность выбирается случайным образом в диапазоне от -0.7 до 0.7.
  • Цель: Помогает моделям справляться с меняющимися погодными условиями и настройками камеры. Например, красный дорожный знак может казаться очень ярким в солнечный день, но выглядеть тусклым и выцветшим в туманных условиях.
  • Реализация Ultralytics: RandomHSV
-1.0-0.50.00.51.0
Saturation -1.0 grayscale augmentationSaturation -0.5 augmentationOriginal image without augmentationSaturation 0.5 augmentationSaturation 1.0 vivid augmentation

Настройка яркости (hsv_v)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0.4
  • Использование: Изменяет яркость изображения. Гиперпараметр hsv_v определяет величину сдвига, при этом итоговая корректировка выбирается случайным образом от -hsv_v до hsv_v. Например, при hsv_v=0.4 интенсивность выбирается случайным образом в диапазоне от -0.4 до 0.4.
  • Цель: Необходима для обучения моделей, которые должны работать в различных условиях освещения. Например, красное яблоко может выглядеть ярким на солнечном свету, но гораздо темнее в тени.
  • Реализация Ultralytics: RandomHSV
-1.0-0.50.00.51.0
Brightness -1.0 dark augmentationBrightness -0.5 augmentationOriginal image without augmentationBrightness 0.5 augmentationBrightness 1.0 bright augmentation

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

Поворот (degrees)

  • Диапазон: 0.0 до 180
  • По умолчанию: 0
  • Использование: Случайно поворачивает изображения в указанном диапазоне. Гиперпараметр degrees определяет угол поворота, итоговая корректировка выбирается случайным образом между -degrees и degrees. Например, при degrees=10.0 поворот выбирается случайным образом от -10.0 до 10.0.
  • Цель: Важна для приложений, где объекты могут появляться под разными углами. Например, на аэрофотоснимках с дронов транспортные средства могут быть ориентированы в любом направлении, что требует от моделей распознавания объектов независимо от их поворота.
  • Реализация Ultralytics: RandomPerspective
-180-900.090180
Rotation -180 degrees augmentationRotation -90 degrees augmentationOriginal image without augmentationRotation 90 degrees augmentationRotation 180 degrees augmentation

Перенос (translate)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0.1
  • Использование: Сдвигает изображения по горизонтали и вертикали на случайную часть размера изображения. Гиперпараметр translate определяет величину сдвига, при этом окончательная корректировка выбирается случайным образом дважды (один раз для каждой оси) в диапазоне от -translate до translate. Например, при translate=0.5 сдвиг выбирается случайным образом в пределах от -0.5 до 0.5 по оси x, а для оси y выбирается независимое случайное значение в том же диапазоне.
  • Цель: Помогает моделям учиться обнаруживать частично видимые объекты и повышает устойчивость к положению объекта. Например, в приложениях для оценки повреждений автомобилей части машины могут появляться в кадре полностью или частично в зависимости от положения и расстояния фотографа; аугментация переносом научит модель распознавать эти детали независимо от их полноты или положения.
  • Реализация Ultralytics: RandomPerspective
  • Примечание: Для простоты применяемые ниже переносы одинаковы каждый раз для обеих осей x и y. Значения -1.0 и 1.0 не показаны, так как они полностью перенесли бы изображение за пределы кадра.
-0.5-0.250.00.250.5
Translation -0.5 shift augmentationTranslation -0.25 shift augmentationOriginal image without augmentationTranslation 0.25 shift augmentationTranslation 0.5 shift augmentation

Масштабирование (scale)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0.5
  • Использование: Изменяет размер изображений с помощью случайного коэффициента в указанном диапазоне. Гиперпараметр scale определяет коэффициент масштабирования, при этом итоговая корректировка выбирается случайным образом в диапазоне от 1-scale до 1+scale. Например, при scale=0.5 масштабирование выбирается случайным образом от 0.5 до 1.5.
  • Цель: Позволяет моделям работать с объектами на разных расстояниях и разных размеров. Например, в приложениях для автономного вождения транспортные средства могут находиться на разном расстоянии от камеры, что требует от модели их распознавания независимо от размера.
  • Реализация Ultralytics: RandomPerspective
  • Примечание:
    • Значение -1.0 не показано, так как оно привело бы к исчезновению изображения, тогда как 1.0 просто приводит к 2-кратному увеличению.
    • Значения, отображаемые в таблице ниже, — это те, которые применяются через гиперпараметр scale, а не конечный коэффициент масштабирования.
    • Если scale больше 1.0, изображение может быть либо очень маленьким, либо зеркально отраженным, поскольку коэффициент масштабирования выбирается случайным образом в диапазоне от 1-scale до 1+scale. Например, при scale=3.0 масштабирование выбирается случайным образом в диапазоне от -2.0 до 4.0. Если выбрано отрицательное значение, изображение отражается.
-0.5-0.250.00.250.5
Scale 0.5x zoom out augmentationScale 0.75x zoom out augmentationOriginal image without augmentationScale 1.25x zoom in augmentationScale 1.5x zoom in augmentation

Сдвиг (Shear) (shear)

  • Диапазон: -180 до +180
  • По умолчанию: 0
  • Использование: Вводит геометрическое преобразование, которое искажает изображение вдоль осей x и y, фактически смещая части изображения в одном направлении при сохранении параллельных линий. Гиперпараметр shear определяет угол сдвига, при этом окончательная корректировка выбирается случайным образом от -shear до shear. Например, при shear=10.0 сдвиг выбирается случайным образом в диапазоне от -10 до 10 по оси x, а для оси y выбирается независимое случайное значение в том же диапазоне.
  • Цель: Помогает моделям адаптироваться к изменениям углов обзора, вызванным небольшими наклонами или ракурсами. Например, при мониторинге дорожного движения объекты, такие как автомобили и дорожные знаки, могут казаться наклонными из-за неперпендикулярного расположения камер. Применение аугментации сдвигом гарантирует, что модель научится распознавать объекты вопреки таким искажениям.
  • Реализация Ultralytics: RandomPerspective
  • Примечание:
    • Значения shear могут быстро исказить изображение, поэтому рекомендуется начинать с небольших значений и постепенно их увеличивать.
    • В отличие от перспективных преобразований, сдвиг не вводит глубину или точки схода, а искажает форму объектов путем изменения их углов, сохраняя параллельность противоположных сторон.
-10-50.0510
Shear -10 degrees augmentationShear -5 degrees augmentationOriginal image without augmentationShear 5 degrees augmentationShear 10 degrees augmentation

Перспектива (perspective)

  • Диапазон: 0.0 - 0.001
  • По умолчанию: 0
  • Использование: Применяет полную трансформацию перспективы вдоль осей x и y, имитируя то, как объекты выглядят при просмотре с разной глубины или под разными углами. Гиперпараметр perspective определяет величину перспективы, при этом конечное значение корректировки выбирается случайным образом в диапазоне от -perspective до perspective. Например, при perspective=0.001 значение перспективы случайно выбирается в диапазоне от -0.001 до 0.001 для оси x, и еще одно независимое случайное значение выбирается в том же диапазоне для оси y.
  • Назначение: Аугментация перспективы критически важна для обработки экстремальных изменений точки обзора, особенно в сценариях, где объекты кажутся сокращенными или искаженными из-за сдвигов перспективы. Например, при обнаружении объектов с дронов здания, дороги и транспортные средства могут казаться растянутыми или сжатыми в зависимости от наклона и высоты полета дрона. Применяя трансформации перспективы, модели учатся распознавать объекты, несмотря на эти искажения, вызванные перспективой, что повышает их устойчивость в реальных условиях эксплуатации.
  • Реализация Ultralytics: RandomPerspective
-0.001-0.00050.00.00050.001
Perspective -0.001 transformationPerspective -0.0005 transformationOriginal image without augmentationPerspective 0.0005 transformationPerspective 0.001 transformation

Отражение сверху-вниз (flipud)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0
  • Usage: Performs a vertical flip by inverting the image along the y-axis. This transformation mirrors the entire image upside-down but preserves all spatial relationships between objects. The flipud hyperparameter defines the probability of applying the transformation, with a value of flipud=1.0 ensuring that all images are flipped and a value of flipud=0.0 disabling the transformation entirely. For example, with flipud=0.5, each image has a 50% chance of being flipped upside-down.
  • Назначение: Полезно для сценариев, где объекты могут появляться в перевернутом виде. Например, в роботизированных системах зрения объекты на конвейерных лентах или манипуляторах могут быть захвачены и размещены в различных ориентациях. Вертикальное отражение помогает модели распознавать объекты независимо от их расположения сверху вниз.
  • Реализация Ultralytics: RandomFlip
flipud выкл.flipud вкл.
Original image without augmentationVertical flip augmentation enabled

Отражение слева-направо (fliplr)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0.5
  • Использование: Выполняет горизонтальное отражение путем зеркального отображения изображения вдоль оси x. Эта трансформация меняет местами левую и правую стороны, сохраняя пространственную согласованность, что помогает модели обобщать объекты, появляющиеся в зеркальных ориентациях. Гиперпараметр fliplr определяет вероятность применения этой трансформации: значение fliplr=1.0 гарантирует, что все изображения будут отражены, а значение fliplr=0.0 полностью отключает трансформацию. Например, при fliplr=0.5 каждое изображение с вероятностью 50% будет отражено слева направо.
  • Назначение: Горизонтальное отражение широко используется в обнаружении объектов, оценке позы и распознавании лиц для повышения устойчивости к вариациям слева-направо. Например, в автономном вождении транспортные средства и пешеходы могут появляться с любой стороны дороги, и горизонтальное отражение помогает модели одинаково хорошо распознавать их в обеих ориентациях.
  • Реализация Ultralytics: RandomFlip
fliplr выкл.fliplr вкл.
Original image without augmentationHorizontal flip augmentation enabled

Замена каналов BGR (bgr)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0
  • Использование: Меняет местами цветовые каналы изображения с RGB на BGR, изменяя порядок представления цветов. Гиперпараметр bgr определяет вероятность применения трансформации: bgr=1.0 гарантирует, что все изображения пройдут через смену каналов, а bgr=0.0 отключает её. Например, при bgr=0.5 каждое изображение с вероятностью 50% будет конвертировано из RGB в BGR.
  • Назначение: Повышает устойчивость к различным порядкам цветовых каналов. Например, при обучении моделей, которые должны работать с различными системами камер и библиотеками обработки изображений, где форматы RGB и BGR могут использоваться непоследовательно, или при развертывании моделей в средах, где формат входного цвета может отличаться от обучающих данных.
  • Реализация Ultralytics: Format
bgr выкл.bgr вкл.
Original image without augmentationBGR channel swap augmentation

Мозаика (mosaic)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 1
  • Использование: Объединяет четыре обучающих изображения в одно. Гиперпараметр mosaic определяет вероятность применения трансформации: mosaic=1.0 гарантирует, что все изображения будут объединены, а mosaic=0.0 отключает трансформацию. Например, при mosaic=0.5 каждое изображение с вероятностью 50% будет объединено с тремя другими изображениями.
  • Назначение: Очень эффективно для улучшения обнаружения мелких объектов и понимания контекста. Например, в проектах по сохранению дикой природы, где животные могут появляться на разном расстоянии и в разных масштабах, мозаичная аугментация помогает модели научиться распознавать один и тот же вид в разных размерах, при частичных окклюзиях и в разных условиях окружающей среды, искусственно создавая разнообразные обучающие образцы из ограниченных данных.
  • Реализация Ultralytics: Mosaic
  • Примечание:
    • Даже если аугментация mosaic делает модель более устойчивой, она также может усложнить процесс обучения.
    • Аугментацию mosaic можно отключить ближе к концу обучения, установив close_mosaic равным количеству эпох до завершения, когда её следует выключить. Например, если epochs установлено на 200, а close_mosaic — на 20, аугментация mosaic будет отключена после 180 эпох. Если close_mosaic установлено на 0, аугментация mosaic будет включена на протяжении всего процесса обучения.
    • Центр сгенерированной мозаики определяется с помощью случайных значений и может находиться как внутри изображения, так и за его пределами.
    • Текущая реализация аугментации mosaic объединяет 4 изображения, выбранных случайным образом из набора данных. Если набор данных небольшой, одно и то же изображение может быть использовано несколько раз в одной и той же мозаике.
mosaic выкл.mosaic вкл.
Original image without augmentationMosaic 4-image augmentation enabled

Mixup (mixup)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0
  • Использование: Смешивает два изображения и их метки с заданной вероятностью. Гиперпараметр mixup определяет вероятность применения трансформации: mixup=1.0 гарантирует, что все изображения будут смешаны, а mixup=0.0 отключает трансформацию. Например, при mixup=0.5 каждое изображение с вероятностью 50% будет смешано с другим изображением.
  • Назначение: Улучшает устойчивость модели и уменьшает переобучение. Например, в системах распознавания товаров в розничной торговле mixup помогает модели изучать более надежные признаки путем смешивания изображений различных продуктов, обучая её идентифицировать товары, даже если они частично видны или скрыты другими продуктами на переполненных полках магазина.
  • Реализация Ultralytics: Mixup
  • Примечание:
    • Коэффициент mixup — это случайное значение, выбранное из бета-распределения np.random.beta(32.0, 32.0), что означает, что каждое изображение вносит примерно 50%-ный вклад с небольшими отклонениями.
Первое изображение, mixup выкл.Второе изображение, mixup выкл.mixup вкл.
First image for MixUp blendingSecond image for MixUp blendingMixUp blending augmentation enabled

CutMix (cutmix)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0
  • Использование: Вырезает прямоугольную область из одного изображения и вставляет её в другое изображение с заданной вероятностью. Гиперпараметр cutmix определяет вероятность применения трансформации: cutmix=1.0 гарантирует, что все изображения пройдут через эту трансформацию, а cutmix=0.0 полностью её отключает. Например, при cutmix=0.5 каждое изображение с вероятностью 50% будет иметь область, замененную фрагментом из другого изображения.
  • Назначение: Улучшает производительность модели за счет создания реалистичных сценариев окклюзии при сохранении целостности локальных признаков. Например, в системах автономного вождения cutmix помогает модели научиться распознавать транспортные средства или пешеходов, даже если они частично перекрыты другими объектами, улучшая точность обнаружения в сложных реальных условиях с перекрывающимися объектами.
  • Реализация Ultralytics: CutMix
  • Примечание:
    • Размер и положение вырезаемой области определяются случайно для каждого применения.
    • В отличие от mixup, который смешивает значения пикселей глобально, cutmix сохраняет исходную интенсивность пикселей внутри вырезанных областей, сохраняя локальные признаки.
    • Область вставляется в целевое изображение только в том случае, если она не перекрывается ни с одной существующей ограничивающей рамкой. Кроме того, сохраняются только те ограничивающие рамки, которые сохраняют не менее 0.1 (10%) своей первоначальной площади внутри вставленной области.
    • Этот порог минимальной площади ограничивающей рамки нельзя изменить в текущей реализации, и он по умолчанию установлен на 0.1.
Первое изображение, cutmix выкл.Второе изображение, cutmix выкл.cutmix вкл.
First image for CutMixSecond image for CutMixCutMix augmentation enabled

Аугментации для сегментации

Copy-Paste (copy_paste)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0
  • Использование: Работает только для задач сегментации, эта аугментация копирует объекты внутри или между изображениями на основе заданной вероятности, управляемой через copy_paste_mode. Гиперпараметр copy_paste определяет вероятность применения этой трансформации: copy_paste=1.0 гарантирует, что все изображения будут скопированы, а copy_paste=0.0 отключает трансформацию. Например, при copy_paste=0.5 каждое изображение с вероятностью 50% получит объекты, скопированные из другого изображения.
  • Назначение: Особенно полезно для задач сегментации экземпляров и редких классов объектов. Например, при обнаружении промышленных дефектов, где определенные типы дефектов встречаются редко, аугментация copy-paste может искусственно увеличить частоту появления этих редких дефектов, копируя их из одного изображения в другое, помогая модели лучше изучить эти недостаточно представленные случаи без необходимости в дополнительных бракованных образцах.
  • Реализация Ultralytics: CopyPaste
  • Примечание:
    • Как показано на гифке ниже, аугментация copy_paste может использоваться для копирования объектов из одного изображения в другое.
    • После копирования объекта, независимо от copy_paste_mode, вычисляется его пересечение по площади (IoA) со всеми объектами исходного изображения. Если все IoA ниже 0.3 (30%), объект вставляется в целевое изображение. Если хотя бы одно IoA выше 0.3, объект не вставляется в целевое изображение.
    • Порог IoA нельзя изменить в текущей реализации, и он по умолчанию установлен на 0.3.
copy_paste выкл.copy_paste вкл. с copy_paste_mode=flipВизуализация процесса copy_paste
Original image without augmentationCopy-paste augmentation enabledCopy-paste augmentation animated demo

Режим Copy-Paste (copy_paste_mode)

  • Опции: 'flip', 'mixup'
  • По умолчанию: 'flip'
  • Использование: Определяет метод, используемый для аугментации copy-paste. Если установлено значение 'flip', объекты берутся из того же изображения, тогда как 'mixup' позволяет копировать объекты из разных изображений.
  • Назначение: Обеспечивает гибкость в том, как скопированные объекты интегрируются в целевые изображения.
  • Реализация Ultralytics: CopyPaste
  • Примечание:
    • Принцип IoA одинаков для обоих copy_paste_mode, но способ копирования объектов различается.
    • В зависимости от размера изображения объекты иногда могут копироваться частично или полностью за пределами кадра.
    • В зависимости от качества полигональных аннотаций скопированные объекты могут иметь небольшие вариации формы по сравнению с оригиналами.
Эталонное изображениеВыбранное изображение для copy_pastecopy_paste вкл. с copy_paste_mode=mixup
Second image for MixUp blendingOriginal image without augmentationCopy-paste with MixUp mode

Аугментации для классификации

Автоматическая аугментация (auto_augment)

  • Опции: 'randaugment', 'autoaugment', 'augmix', None
  • По умолчанию: 'randaugment'
  • Использование: Применяет автоматизированные политики аугментации для классификации. Опция 'randaugment' использует RandAugment, 'autoaugment' использует AutoAugment, а 'augmix' использует AugMix. Установка значения None отключает автоматизированную аугментацию.
  • Цель: Автоматическая оптимизация стратегий аугментации для задач классификации. Различия заключаются в следующем:
    • AutoAugment: Этот режим применяет предопределенные политики аугментации, изученные на таких наборах данных, как ImageNet, CIFAR10 и SVHN. Ты можешь выбрать эти существующие политики, но не можешь обучать новые внутри Torchvision. Чтобы найти оптимальные стратегии аугментации для конкретных наборов данных, потребуются внешние библиотеки или пользовательские реализации. Ссылка на статью об AutoAugment.
    • RandAugment: Применяет случайный выбор преобразований с равномерной величиной. Этот подход уменьшает необходимость в этапе обширного поиска, что делает его более вычислительно эффективным при сохранении надежности модели. Ссылка на статью о RandAugment.
    • AugMix: AugMix — это метод аугментации данных, который повышает надежность модели путем создания разнообразных вариаций изображений через случайные комбинации простых преобразований. Ссылка на статью об AugMix.
  • Реализация Ultralytics: classify_augmentations()
  • Примечание:
    • По сути, главное различие между тремя методами заключается в способе определения и применения политик аугментации.
    • Ты можешь обратиться к этой статье, где подробно сравниваются эти три метода.

Случайное стирание (erasing)

  • Диапазон: 0.0 - 0.9
  • По умолчанию: 0.4
  • Использование: Случайно стирает части изображения во время обучения классификации. Гиперпараметр erasing определяет вероятность применения этого преобразования: erasing=0.9 гарантирует, что почти на всех изображениях будут стерты фрагменты, а erasing=0.0 отключает преобразование. Например, при erasing=0.5 для каждого изображения есть 50% шанс, что часть его будет стерта.
  • Цель: Помогает моделям изучать надежные признаки и предотвращает чрезмерную зависимость от определенных областей изображения. Например, в системах распознавания лиц случайное стирание помогает моделям стать устойчивее к частичным перекрытиям, таким как солнечные очки, маски или другие объекты, которые могут частично закрывать черты лица. Это улучшает производительность в реальных условиях, заставляя модель идентифицировать людей по нескольким характеристикам лица, а не полагаться исключительно на отличительные признаки, которые могут быть скрыты.
  • Реализация Ultralytics: classify_augmentations()
  • Примечание:
    • Аугментация erasing имеет гиперпараметры scale, ratio и value, которые нельзя изменить в текущей реализации. Их значения по умолчанию: (0.02, 0.33), (0.3, 3.3) и 0 соответственно, как указано в документации PyTorch.
    • Верхний предел гиперпараметра erasing установлен на 0.9, чтобы избежать применения трансформации ко всем изображениям.
erasing выключеноerasing включено (пример 1)erasing включено (пример 2)erasing включено (пример 3)
Original image without augmentationRandom erasing example 1Random erasing example 2Random erasing example 3

Расширенные функции аугментации

Пользовательские трансформации Albumentations (augmentations)

  • Тип: list (список) трансформаций Albumentations
  • По умолчанию: None
  • Использование: Позволяет тебе предоставить пользовательские трансформации Albumentations для аугментации данных с использованием Python API. Этот параметр принимает список объектов трансформаций Albumentations, которые будут применяться во время обучения вместо стандартных трансформаций Albumentations.
  • Цель: Обеспечивает точный контроль над стратегиями аугментации данных за счет использования обширной библиотеки трансформаций Albumentations. Это особенно полезно, когда тебе нужны специализированные методы аугментации, выходящие за рамки встроенных опций YOLO, такие как расширенная цветокоррекция, наложение шума или специфические для предметной области преобразования.
  • Реализация Ultralytics: Albumentations
Пример пользовательских Albumentations
import albumentations as A

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Define custom Albumentations transforms
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.GaussNoise(var_limit=(10.0, 50.0), p=0.3),
    A.CLAHE(clip_limit=4.0, p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.5),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
]

# Train with custom Albumentations transforms
model.train(
    data="coco8.yaml",
    epochs=100,
    augmentations=custom_transforms,  # Pass custom transforms
    imgsz=640,
)

Ключевые моменты:

  • Только Python API: Пользовательские трансформации Albumentations в настоящее время поддерживаются только через Python API. Их нельзя указать через CLI или файлы конфигурации YAML.
  • Заменяет стандартные трансформации: Когда ты предоставляешь пользовательские трансформации через параметр augmentations, они полностью заменяют стандартные трансформации Albumentations. Стандартные аугментации YOLO (такие как mosaic, hsv_h, hsv_s, degrees и т.д.) остаются активными и применяются независимо.
  • Совместимость с ограничивающими рамками (BBox): Будь осторожен при использовании пространственных преобразований (преобразований, которые изменяют геометрию изображения). Ultralytics обрабатывает корректировки BBox автоматически, но некоторые сложные преобразования могут потребовать дополнительной конфигурации.
  • Обширная библиотека: Albumentations предлагает более 70+ различных трансформаций. Изучи документацию Albumentations, чтобы открыть для себя все доступные опции.
  • Вопрос производительности: Добавление слишком большого количества аугментаций или использование вычислительно дорогих трансформаций может замедлить обучение. Начни с небольшого набора и следи за скоростью обучения.

Типичные сценарии использования:

  • Медицинская визуализация: Применяй специализированные преобразования, такие как эластичные деформации или искажения сетки для аугментации изображений рентгена или МРТ
  • Аэроснимки/Спутниковые изображения: Используй трансформации, оптимизированные для видов сверху
  • Условия низкой освещенности: Применяй корректировки шума и яркости для имитации сложных условий освещения
  • Промышленный контроль: Добавляй паттерны, похожие на дефекты, или вариации текстур для задач контроля качества

Заметки о совместимости:

  • Требуется Albumentations версии 1.0.3 или выше
  • Совместимо со всеми задачами YOLO: обнаружение и сегментация
  • Не применимо для задач классификации (классификация использует другой конвейер аугментации)

Для получения дополнительной информации об Albumentations и доступных трансформациях посети официальную документацию Albumentations.

Часто задаваемые вопросы (FAQ)

Существует слишком много вариантов аугментации. Как понять, какие из них использовать?

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

  • В большинстве случаев полезны небольшие изменения цвета и яркости. Значения по умолчанию для hsv_h, hsv_s и hsv_v — это хорошая отправная точка.
  • Если точка обзора камеры постоянна и не изменится после развертывания модели, ты, вероятно, можешь пропустить геометрические преобразования, такие как rotation, translation, scale, shear или perspective. Однако если угол камеры может варьироваться и тебе нужно, чтобы модель была более устойчивой, лучше оставить эти аугментации.
  • Используй аугментацию mosaic только в том случае, если наличие частично перекрытых объектов или нескольких объектов на изображении допустимо и не меняет значение метки. Альтернативно, ты можешь оставить mosaic активным, но увеличить значение close_mosaic, чтобы отключить его раньше в процессе обучения.

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

Когда я начинаю обучение, я вижу ссылку albumentations: Blur[...]. Означает ли это, что Ultralytics YOLO выполняет дополнительную аугментацию, например, размытие?

Если пакет albumentations установлен, Ultralytics автоматически применяет набор дополнительных аугментаций изображений с его использованием. Эти аугментации обрабатываются внутренне и не требуют дополнительной конфигурации.

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

Ты также можешь предоставить свои собственные трансформации Albumentations с помощью Python API. См. раздел Расширенные функции аугментации для получения более подробной информации.

Когда я начинаю обучение, я не вижу никаких упоминаний об albumentations. Почему?

Проверь, установлен ли пакет albumentations. Если нет, ты можешь установить его, выполнив pip install albumentations. После установки пакет должен быть автоматически обнаружен и использован Ultralytics.

Как мне настроить свои собственные аугментации?

Ты можешь настроить аугментации, создав собственный класс набора данных и тренера. Например, ты можешь заменить стандартные аугментации классификации Ultralytics на torchvision.transforms.Resize от PyTorch или другие преобразования. См. пример пользовательского обучения в документации по классификации для получения подробностей реализации.

Комментарии