Link to this sectionАугментация данных с помощью Ultralytics YOLO#
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.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionСдвиг (shear)#
- Диапазон: от
-180до+180 - По умолчанию:
0 - Использование: Вводит геометрическое преобразование, которое искажает изображение вдоль осей x и y, фактически сдвигая части изображения в одном направлении при сохранении параллельных линий. Гиперпараметр
shearопределяет угол сдвига, при этом окончательная корректировка выбирается случайным образом в диапазоне от-shearдоshear. Например, приshear=10.0сдвиг выбирается случайным образом в пределах от-10до10по оси x, а для оси y выбирается другое независимое случайное значение в том же диапазоне. - Цель: Помогает моделям обобщать вариации углов обзора, вызванные небольшими наклонами или ракурсами. Например, при мониторинге дорожного движения объекты, такие как автомобили и дорожные знаки, могут казаться наклонными из-за неперпендикулярного размещения камер. Применение аугментации сдвигом гарантирует, что модель научится распознавать объекты вопреки таким искажениям.
- Реализация в Ultralytics: RandomPerspective
- Примечание:
- Значения
shearмогут быстро исказить изображение, поэтому рекомендуется начинать с небольших значений и постепенно увеличивать их. - В отличие от перспективных преобразований, сдвиг не вводит глубину или точки схода, а искажает форму объектов путем изменения их углов, сохраняя противоположные стороны параллельными.
- Значения
-10 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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.0005 | 0.0 | 0.0005 | 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.0ensuring that all images are flipped and a value offlipud=0.0disabling the transformation entirely. For example, withflipud=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 включено |
|---|---|
![]() | ![]() |
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 включено |
|---|---|
![]() | ![]() |
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 включено |
|---|---|---|
![]() | ![]() | ![]() |
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 включено |
|---|---|---|
![]() | ![]() | ![]() |
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 |
|---|---|---|
![]() | ![]() | ![]() |
Link to this sectionРежим 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 |
|---|---|---|
![]() | ![]() | ![]() |
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) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Link to this sectionРасширенные функции аугментации#
Link to this sectionПользовательские преобразования Albumentations (augmentations)#
- Тип:
list(список) преобразований Albumentations - По умолчанию:
None - Использование: Позволяет предоставлять пользовательские преобразования Albumentations для аугментации данных с помощью Python API. Этот параметр принимает список объектов преобразований Albumentations, которые будут применяться во время обучения вместо стандартных преобразований Albumentations.
- Цель: Обеспечивает точный контроль над стратегиями аугментации данных за счет использования обширной библиотеки преобразований Albumentations. Это особенно полезно, когда тебе нужны специализированные аугментации, выходящие за рамки встроенных опций YOLO, такие как расширенная цветокоррекция, наложение шума или специфические для домена преобразования.
- Реализация в Ultralytics: 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 или другие преобразования. Подробности реализации см. в примере пользовательского обучения в документации по классификации.
















































