Meet YOLO26: next-gen vision AI.

Link to this sectionАугментация данных с помощью Ultralytics YOLO#

YOLO data augmentation examples showing original and augmented images for training

Link to this sectionВведение#

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



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

Link to this sectionПочему аугментация данных важна#

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

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

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

Link to this sectionПримеры конфигураций#

Ты можешь настроить каждый параметр с помощью 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)

Link to this sectionИспользование файла конфигурации#

Ты можешь определить все параметры обучения, включая аугментации, в 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

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

Пример обучения
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")

Link to this sectionАугментации цветового пространства#

Link to this sectionНастройка оттенка (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

Link to this sectionНастройка насыщенности (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

Link to this sectionНастройка яркости (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

Link to this sectionГеометрические преобразования#

Link to this sectionПоворот (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

Link to this sectionПеренос (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

Link to this sectionМасштабирование (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

Link to this sectionСдвиг (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

Link to this sectionПерспектива (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Трансформация Perspective -0.0005Original image without augmentationТрансформация Perspective 0.0005Трансформация Perspective 0.001

Link to this sectionОтражение сверху вниз (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 включено
Оригинальное изображение без аугментацииВертикальное отражение включено

Link to this sectionОтражение слева направо (fliplr)#

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

Link to this sectionПерестановка каналов 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 включено
Оригинальное изображение без аугментацииАугментация перестановки каналов BGR

Link to this sectionМозаика (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 включено
Оригинальное изображение без аугментацииАугментация мозаика из 4 изображений включена

Link to this sectionMixup (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 включено
Первое изображение для смешивания MixUpВторое изображение для смешивания MixUpАугментация смешивания MixUp включена

Link to this sectionCutMix (cutmix)#

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

Link to this sectionАугментации для сегментации#

Link to this sectionCopy-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, вычисляется его пересечение по площади (Intersection over Area, IoA) со всеми объектами исходного изображения. Если все значения IoA ниже 0.3 (30%), объект вставляется в целевое изображение. Если хотя бы одно значение IoA выше 0.3, объект не вставляется в целевое изображение.
    • Порог IoA не может быть изменен в текущей реализации и по умолчанию установлен на 0.3.
copy_paste выключеноcopy_paste включено с copy_paste_mode=flipВизуализация процесса copy_paste
Оригинальное изображение без аугментацииАугментация Copy-paste включенаАнимированная демонстрация Copy-paste

Link to this sectionРежим 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
Второе изображение для смешивания MixUpОригинальное изображение без аугментацииCopy-paste в режиме MixUp

Link to this sectionАугментации для классификации#

Link to this sectionАвтоматическая аугментация (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()
  • Примечание:
    • По сути, главное различие между этими тремя методами заключается в способе определения и применения политик аугментации.
    • Ты можешь обратиться к этой статье, в которой подробно сравниваются эти три метода.

Link to this sectionСлучайное стирание (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

Link to this sectionРасширенные функции аугментации#

Link to this sectionПользовательские преобразования 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.

Link to this sectionFAQ#

Link to this sectionСуществует слишком много аугментаций на выбор. Как узнать, какие из них использовать?#

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

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

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

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

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

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

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

Link to this sectionПри запуске обучения я не вижу никаких упоминаний об Albumentations. Почему?#

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

Link to this sectionКак мне настроить свои аугментации?#

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

Комментарии