Аугментация данных с использованием Ultralytics YOLO#
Введение#
Аугментация данных — важный метод в компьютерном зрении, который искусственно расширяет обучающий набор данных за счёт применения различных преобразований к существующим изображениям. При обучении моделей глубокого обучения, таких как Ultralytics YOLO, аугментация данных помогает повысить устойчивость модели, уменьшить переобучение и улучшить обобщающую способность в реальных сценариях.
Watch: How to use Mosaic, MixUp & more Data Augmentations to help Ultralytics YOLO Models generalize better 🚀
Почему важна аугментация данных#
Аугментация данных выполняет несколько важных задач при обучении моделей компьютерного зрения:
- Расширенный набор данных: создавая варианты существующих изображений, ты можешь эффективно увеличить размер обучающего набора данных без сбора новых данных.
- Улучшенная обобщающая способность: модели учатся распознавать объекты в различных условиях, что делает их более устойчивыми в реальных приложениях.
- Уменьшение переобучения: добавляя вариативность в обучающие данные, ты снижаешь вероятность того, что модели будут запоминать определённые характеристики изображений.
- Повышение производительности: модели, обученные с правильной аугментацией, обычно достигают более высокой точности на валидационных и тестовых наборах.
Реализация Ultralytics YOLO предоставляет полный набор методов аугментации, каждый из которых предназначен для определённых задач и по-разному влияет на производительность модели. В этом руководстве рассматриваются приведённые ниже параметры аугментации, чтобы помочь тебе понять, когда и как эффективно использовать их в своих проектах.
Примеры конфигураций#
Ты можешь настроить каждый параметр с помощью Python API, интерфейса командной строки (CLI) или файла конфигурации. Ниже приведены примеры настройки аугментации данных каждым из этих способов.
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Training with custom augmentation parameters
model.train(data="coco8.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)
# Training with every configurable augmentation disabled (disabled values omitted for clarity)
model.train(
data="coco8.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="coco8.yaml", epochs=100, augmentations=custom_transforms)Перечисленные на этой странице преобразования — это те, которыми ты управляешь через аргументы обучения. Ultralytics также применяет небольшой набор Albumentations — размытие, медианное размытие, оттенки серого и CLAHE, каждое с вероятностью p=0.01, — когда установлен пакет albumentations; ни один аргумент в default.yaml не отключает его. Удали пакет, чтобы убрать эти преобразования, или передай собственный список в augmentations, чтобы заменить его.
Использование файла конфигурации#
Ты можешь определить все параметры обучения, включая аугментации, в 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")Аугментации цветового пространства#
Настройка оттенка (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.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Настройка насыщенности (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.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Настройка яркости (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.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Геометрические преобразования#
Поворот (degrees)#
- Диапазон: от
0.0до180 - По умолчанию:
0 - Использование: случайным образом поворачивает изображения в указанном диапазоне. Гиперпараметр
degreesопределяет угол поворота, а итоговая корректировка случайным образом выбирается между-degreesиdegrees. Например, приdegrees=10.0угол поворота случайным образом выбирается в диапазоне от-10.0до10.0. - Назначение: имеет решающее значение для приложений, где объекты могут быть представлены в разных ориентациях. Например, на аэрофотоснимках с дронов автомобили могут быть ориентированы в любом направлении, поэтому модели должны распознавать объекты независимо от их поворота.
- Реализация Ultralytics: RandomPerspective
-180 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Перемещение (translate)#
- Диапазон:
0.0—1.0 - По умолчанию:
0.1 - Использование: случайным образом перемещает изображения по горизонтали и вертикали на долю их размера. Гиперпараметр
translateопределяет величину сдвига, а итоговая корректировка случайным образом выбирается дважды — отдельно для каждой оси — в диапазоне от-translateдоtranslate. Например, приtranslate=0.5перемещение по оси x случайным образом выбирается в диапазоне от-0.5до0.5, а по оси y независимо выбирается другое случайное значение в том же диапазоне. - Назначение: помогает моделям учиться обнаруживать частично видимые объекты и повышает устойчивость к изменению положения объектов. Например, в приложениях для оценки повреждений автомобилей детали могут полностью или частично попадать в кадр в зависимости от положения и расстояния до фотографа; аугментация перемещением учит модель распознавать эти признаки независимо от их полноты или положения.
- Реализация Ultralytics: RandomPerspective
- Примечание: для простоты применяемые ниже перемещения каждый раз одинаковы для обеих осей —
xиy. Значения-1.0и1.0не показаны, поскольку при них изображение полностью вышло бы за пределы кадра.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Масштабирование (scale)#
- Диапазон: от
0.0до1.0в формате float или явный кортеж(min, max) - По умолчанию:
0.5 - Использование: изменяет размер изображений на случайный коэффициент в указанном диапазоне. В формате float гиперпараметр
scaleопределяет коэффициент масштабирования, а итоговый коэффициент случайным образом выбирается между1-scaleи1+scale. Например, приscale=0.5масштабирование случайным образом выбирается в диапазоне от0.5до1.5. В формате кортежаscaleнапрямую задаёт этот диапазон, поэтомуscale=(0.5, 2.0)выбирает коэффициент между0.5и2.0. - Назначение: позволяет моделям работать с объектами, находящимися на разных расстояниях и имеющими разные размеры. Например, в приложениях для автономного вождения автомобили могут находиться на различном расстоянии от камеры, поэтому модель должна распознавать их независимо от размера.
- Реализация Ultralytics: RandomPerspective
- Примечание:
- Значение
-1.0не показано, поскольку оно сделало бы изображение невидимым, а1.0просто приводит к увеличению в 2 раза. - Значения, отображаемые в таблице ниже, представляют фактические приращения масштаба, а не значения, передаваемые гиперпараметру
scale. - Форма float проверяется на принадлежность диапазону
0.0—1.0; значение за его пределами вызываетValueError. Чтобы выбирать коэффициент за пределами двукратного увеличения, вместо этого передай форму кортежа(min, max). - Форма кортежа применяется только к геометрическим задачам. При обучении классификации собственный диапазон обрезки выводится из значения float (от
1.0 - scaleдо1.0), поэтому передача кортежа вызываетTypeError.
- Значение
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Сдвиг (shear)#
- Диапазон: от
-180до+180 - По умолчанию:
0 - Использование: применяет геометрическое преобразование, наклоняющее изображение вдоль осей x и y; части изображения смещаются в одном направлении, а параллельность линий сохраняется. Гиперпараметр
shearопределяет угол сдвига, а итоговая корректировка случайным образом выбирается между-shearиshear. Например, приshear=10.0сдвиг по оси x случайным образом выбирается в диапазоне от-10до10, а по оси y независимо выбирается другое случайное значение в том же диапазоне. - Назначение: помогает моделям обобщать вариации углов обзора, вызванные небольшими наклонами или косыми ракурсами. Например, при мониторинге дорожного движения такие объекты, как автомобили и дорожные знаки, могут выглядеть наклонёнными из-за неперпендикулярного расположения камер. Аугментация сдвигом помогает модели распознавать объекты несмотря на такие искажения.
- Реализация Ultralytics: RandomPerspective
- Примечание:
- Значения
shearмогут быстро исказить изображение, поэтому рекомендуется начинать с небольших значений и постепенно увеличивать их. - В отличие от перспективных преобразований, сдвиг не создаёт глубину или точки схода, а искажает форму объектов, изменяя их углы и сохраняя параллельность противоположных сторон.
- Значения
-10 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Перспектива (perspective)#
- Диапазон:
0.0—0.001 - По умолчанию:
0 - Использование: применяет полное перспективное преобразование вдоль осей x и y, имитируя вид объектов с разных расстояний или под разными углами. Гиперпараметр
perspectiveопределяет величину перспективы, а итоговая корректировка случайным образом выбирается между-perspectiveиperspective. Например, приperspective=0.001перспектива по оси x случайным образом выбирается в диапазоне от-0.001до0.001, а по оси y независимо выбирается другое случайное значение в том же диапазоне. - Назначение: аугментация перспективой важна для обработки значительных изменений ракурса, особенно в ситуациях, когда объекты кажутся укороченными или искажёнными из-за перспективы. Например, при обнаружении объектов с дрона здания, дороги и автомобили могут выглядеть растянутыми или сжатыми в зависимости от наклона и высоты дрона. Применяя перспективные преобразования, модели учатся распознавать объекты несмотря на вызванные перспективой искажения, что повышает их устойчивость в реальных системах.
- Реализация Ultralytics: RandomPerspective
-0.001 | -0.0005 | 0.0 | 0.0005 | 0.001 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Переворот сверху вниз (flipud)#
- Диапазон:
0.0—1.0 - По умолчанию:
0 - Использование: выполняет вертикальный переворот, инвертируя изображение вдоль оси y. Это преобразование переворачивает всё изображение вверх ногами, сохраняя пространственные отношения между объектами. Гиперпараметр flipud определяет вероятность применения преобразования: значение
flipud=1.0гарантирует переворот всех изображений, а значениеflipud=0.0полностью отключает преобразование. Например, приflipud=0.5каждое изображение с вероятностью 50% переворачивается вверх ногами. - Назначение: полезна в сценариях, где объекты могут оказаться перевёрнутыми. Например, в роботизированных системах технического зрения объекты на конвейерах или роботизированных манипуляторах могут захватываться и размещаться в разных ориентациях. Вертикальный переворот помогает модели распознавать объекты независимо от их положения сверху вниз.
- Реализация Ultralytics: RandomFlip
flipud выключен | flipud включён |
|---|---|
![]() | ![]() |
Переворот слева направо (fliplr)#
- Диапазон:
0.0—1.0 - По умолчанию:
0.5 - Использование: выполняет горизонтальный переворот, отражая изображение вдоль оси x. Это преобразование меняет местами левую и правую стороны, сохраняя пространственную согласованность, что помогает модели обобщать объекты в зеркальных ориентациях. Гиперпараметр
fliplrопределяет вероятность применения преобразования: значениеfliplr=1.0гарантирует переворот всех изображений, а значениеfliplr=0.0полностью отключает преобразование. Например, приfliplr=0.5каждое изображение с вероятностью 50% переворачивается слева направо. - Назначение: горизонтальный переворот широко используется в обнаружении объектов, оценке позы и распознавании лиц для повышения устойчивости к вариациям слева и справа. Например, при автономном вождении автомобили и пешеходы могут находиться по любую сторону дороги, а горизонтальный переворот помогает модели одинаково хорошо распознавать их в обеих ориентациях.
- Реализация Ultralytics: RandomFlip
fliplr выключен | fliplr включён |
|---|---|
![]() | ![]() |
Замена каналов 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 включён |
|---|---|
![]() | ![]() |
Mosaic (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будет использоваться на протяжении всего процесса обучения. - Закрытие мозаики также отключает
copy_paste,mixupиcutmixна той же эпохе. Все четыре преобразования отключаются одновременно, поэтому на последних эпохах обучение проходит без них, тогда как все остальные аугментации — геометрические преобразования, HSV, перевороты и Albumentations — продолжают выполняться. Обрати внимание, чтоcopy_pasteв режимеflipпо умолчанию работает с одним изображением, а не объединяет несколько. - Центр создаваемой мозаики определяется случайными значениями и может находиться как внутри изображения, так и за его пределами.
- Текущая реализация аугментации
mosaicобъединяет текущее изображение с тремя другими, выбранными из буфера недавно загруженных изображений или из любой части набора данных приcache='ram'. В любом случае изображения выбираются с возвращением, поэтому одно и то же изображение может появиться в одной мозаике несколько раз.
- Даже если аугментация
mosaic выключен | mosaic включён |
|---|---|
![]() | ![]() |
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 включён |
|---|---|---|
![]() | ![]() | ![]() |
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.01(1%), если метки содержат сегменты.
Первое изображение, cutmix выключен | Второе изображение, cutmix выключен | cutmix включён |
|---|---|---|
![]() | ![]() | ![]() |
Аугментации Copy-Paste#
Copy-Paste (copy_paste)#
- Диапазон:
0.0—1.0 - По умолчанию:
0 - Использование: требует полигональных меток, поэтому применяется к задачам сегментации и OBB; эта аугментация копирует объекты внутри изображений или между ними, а управляется параметром
copy_paste_mode. В режимеflipпараметрcopy_pasteопределяет долю подходящих объектов, которые копируются: изображение с шестью подходящими объектами получает три копии при значенииcopy_paste=0.5. В режимеmixupэто же значение также определяет вероятность запуска copy-paste. Значениеcopy_paste=0.0отключает преобразование. - Назначение: особенно полезна для задач сегментации экземпляров и редких классов объектов. Например, при обнаружении промышленных дефектов, когда определённые типы дефектов встречаются редко, аугментация copy-paste может искусственно увеличить количество таких редких дефектов, копируя их из одного изображения в другое. Это помогает модели лучше изучать недостаточно представленные случаи без необходимости собирать дополнительные образцы дефектов.
- Реализация Ultralytics: CopyPaste
- Примечание:
- Как показано на видео ниже, аугментацию
copy_pasteможно использовать для копирования объектов с одного изображения на другое. - После выбора объекта для копирования его IoA вычисляется относительно всех объектов, уже присутствующих на целевом изображении, независимо от
copy_paste_mode. Объект вставляется только в том случае, если все значения IoA ниже0.3(30%); если хотя бы одно значение IoA равно0.3или выше, объект не вставляется. - Порог IoA нельзя изменить в текущей реализации; по умолчанию он установлен в
0.3.
- Как показано на видео ниже, аугментацию
copy_paste выключен | copy_paste включена с copy_paste_mode=flip | Визуализация процесса copy_paste |
|---|---|---|
![]() | ![]() |
Режим Copy-Paste (copy_paste_mode)#
- Параметры:
'flip','mixup' - По умолчанию:
'flip' - Использование: определяет метод, применяемый для аугментации copy-paste. Если установлено значение
'flip', объекты берутся из того же изображения, а'mixup'позволяет копировать объекты из разных изображений. - Назначение: обеспечивает гибкость при интеграции скопированных объектов в целевые изображения.
- Реализация Ultralytics: CopyPaste
- Примечание:
- Принцип IoA одинаков для обоих вариантов
copy_paste_mode, но способ копирования объектов различается. - В зависимости от размера изображения объекты иногда могут копироваться частично или полностью за пределы кадра.
- В зависимости от качества полигональных аннотаций форма скопированных объектов может немного отличаться от оригинальной.
- Принцип IoA одинаков для обоих вариантов
| Эталонное изображение | Выбранное изображение для copy_paste | copy_paste включена с copy_paste_mode=mixup |
|---|---|---|
![]() | ![]() | ![]() |
Аугментации для классификации#
Auto Augment (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—1.0 - По умолчанию:
0.4 - Использование: случайным образом стирает части изображения во время обучения классификации. Гиперпараметр
erasingопределяет вероятность применения преобразования: при значенииerasing=1.0область стирается на каждом изображении, а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 выключен | erasing включена (пример 1) | erasing включена (пример 2) | erasing включена (пример 3) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Расширенные возможности аугментации#
Пользовательские преобразования Albumentations (augmentations)#
- Тип:
listпреобразований Albumentations - По умолчанию:
None - Использование: позволяет задавать пользовательские преобразования Albumentations для аугментации данных с помощью Python API. Этот параметр принимает список объектов преобразований Albumentations, которые будут применяться во время обучения вместо стандартных преобразований Albumentations.
- Назначение: обеспечивает детальный контроль над стратегиями аугментации данных за счёт использования обширной библиотеки преобразований Albumentations. Это особенно полезно, когда нужны специализированные аугментации, недоступные среди встроенных параметров YOLO, например упругие деформации и искажения сетки для медицинских изображений, преобразования, настроенные для аэрофотосъёмки и спутниковых снимков, изменения шума и яркости для имитации условий низкой освещённости или вариации текстур, напоминающие дефекты, для промышленного контроля.
- Реализация Ultralytics: Albumentations
- Примечание:
- Для создания объектов преобразований требуется Python API. При сохранении контрольной точки Ultralytics сериализует их с помощью
A.to_dict(), поэтому уже сериализованный список проходит через файл конфигурации YAML или CLI, что позволяетresumeвосстановить его. - Пользовательские преобразования полностью заменяют стандартный набор Albumentations. Все аугментации, настроенные в других разделах этой страницы, —
mosaic,hsv_h,degreesи остальные — остаются активными и применяются независимо. - Пространственные преобразования, изменяющие геометрию изображения, включая вложенные в
A.OneOfилиA.Compose, перемещают ограничивающие прямоугольники, многоугольники, ключевые точки, карты глубины и семантические маски вместе с изображением;A.RandomGridShuffleне может сохранять топологию многоугольников или ключевых точек и вызывает ошибку на примерах сегментации, позы и OBB. - Albumentations предлагает более 70 преобразований; полный список приведён в документации Albumentations. Добавление большого числа преобразований или вычислительно затратных преобразований замедляет обучение, поэтому начни с небольшого набора и следи за временем эпохи.
- Применяется к задачам
detect,segment,semantic,depth,poseиobb. Классификация не поддерживается, поскольку использует отдельный конвейер аугментации.
- Для создания объектов преобразований требуется Python API. При сохранении контрольной точки Ultralytics сериализует их с помощью
Для приведённых ниже примеров требуется Albumentations версии 1.4.22 или новее, а значит, Python версии 3.9 или новее.
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(std_range=(0.0124, 0.0277), 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,
)Часто задаваемые вопросы#
Выбор подходящих аугментаций зависит от конкретного сценария использования и набора данных. Вот несколько общих рекомендаций, которые помогут тебе принять решение:
- В большинстве случаев небольшие изменения цвета и яркости полезны. Значения
hsv_h,hsv_sиhsv_vпо умолчанию — хорошая отправная точка. - Если точка обзора камеры стабильна и не изменится после развёртывания модели, геометрические преобразования, такие как
rotation,translation,scale,shearилиperspective, скорее всего, можно не использовать. Однако если угол камеры может меняться и нужно повысить устойчивость модели, лучше сохранить эти аугментации. - Используй аугментацию
mosaicтолько в том случае, если частично перекрытые объекты или несколько объектов на одном изображении допустимы и не изменяют значение метки. В качестве альтернативы можно оставитьmosaicактивной, но увеличить значениеclose_mosaic, чтобы отключить её раньше в процессе обучения.
Короче говоря, не усложняй. Начни с небольшого набора аугментаций и постепенно добавляй новые по мере необходимости. Цель — улучшить способность модели к обобщению и её устойчивость, а не чрезмерно усложнить процесс обучения. Кроме того, убедись, что применяемые аугментации отражают то же распределение данных, с которым модель столкнётся в рабочей среде.
- В большинстве случаев небольшие изменения цвета и яркости полезны. Значения
Если пакет
albumentationsустановлен, Ultralytics автоматически применяет с его помощью набор дополнительных аугментаций изображений. Эти аугментации обрабатываются внутри системы и не требуют дополнительной настройки.Полный список применяемых преобразований можно найти в нашей технической документации, а также в нашем руководстве по интеграции Albumentations. Обрати внимание: активны только аугментации с вероятностью
p, превышающей0. Они намеренно применяются с низкой частотой для имитации визуальных артефактов реального мира, таких как размытие или эффекты оттенков серого.Ты также можешь задать собственные пользовательские преобразования Albumentations с помощью Python API. Подробнее см. в разделе «Расширенные возможности аугментации».
Проверь, установлен ли пакет
albumentations. Если нет, установи его:pip install albumentationsПосле установки пакет должен автоматически обнаруживаться и использоваться Ultralytics.
Ты можешь настроить аугментации, создав собственный класс набора данных и тренер. Например, стандартные аугментации классификации Ultralytics можно заменить на torchvision.transforms.Resize или другие преобразования из PyTorch. Подробнее о реализации см. в примере пользовательского обучения в документации по классификации.













































