Аугментация данных с помощью Ultralytics YOLO#
Введение#
Аугментация данных — это важнейший метод в компьютерном зрении, который искусственно расширяет твой набор данных для обучения путем применения различных преобразований к существующим изображениям. При обучении моделей глубокого обучения, таких как Ultralytics YOLO, аугментация помогает повысить устойчивость модели, снижает переобучение и улучшает обобщающую способность в реальных сценариях.
Watch: How to use Mosaic, MixUp & more Data Augmentations to help Ultralytics YOLO Models generalize better 🚀
Почему аугментация данных важна#
Аугментация данных выполняет несколько критически важных функций при обучении моделей компьютерного зрения:
- Расширенный набор данных: Создавая вариации существующих изображений, ты можешь эффективно увеличить размер набора для обучения без сбора новых данных.
- Улучшенная обобщающая способность: Модели учатся распознавать объекты в различных условиях, что делает их более устойчивыми в реальных приложениях.
- Снижение переобучения: За счет внесения вариативности в обучающие данные модели с меньшей вероятностью будут запоминать специфические характеристики изображений.
- Повышенная производительность: Модели, обученные с правильной аугментацией, обычно достигают лучшей точности на проверочных и тестовых наборах.
Реализация Ultralytics YOLO предоставляет исчерпывающий набор методов аугментации, каждый из которых служит определенным целям и по-разному влияет на производительность модели. Это руководство описывает настройки аугментации ниже, помогая понять, когда и как эффективно использовать их в твоих проектах.
Примеры конфигураций#
Ты можешь настроить каждый параметр с помощью API Python, интерфейса командной строки (CLI) или файла конфигурации. Ниже приведены примеры того, как настроить аугментацию данных для каждого метода.
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Training with custom augmentation parameters
model.train(data="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смещение выбирается случайно в диапазоне от-0.5до0.5по оси x, а другое независимое случайное значение выбирается в том же диапазоне по оси y. - Цель: Помогает моделям научиться обнаруживать частично видимые объекты и повышает устойчивость к положению объекта. Например, в приложениях для оценки повреждений транспортных средств части автомобиля могут появляться полностью или частично в кадре в зависимости от положения и расстояния фотографа; аугментация переносом научит модель распознавать эти признаки независимо от их полноты или положения.
- Реализация Ultralytics: RandomPerspective
- Примечание: Для простоты применяемые ниже смещения одинаковы каждый раз для обеих осей
xиy. Значения-1.0и1.0не показаны, так как они полностью сместили бы изображение за пределы кадра.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Масштабирование (scale)#
- Диапазон:
0.0-1.0в виде числа с плавающей точкой или явный кортеж(min, max) - По умолчанию:
0.5 - Использование: Изменяет размер изображений на случайный коэффициент в указанном диапазоне. Как число с плавающей точкой, гиперпараметр
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просто приводит к зуму 2x. - Значения, отображаемые в таблице ниже, являются фактическими дельтами масштаба, а не значениями, передаваемыми в гиперпараметр
scale. - Формат числа с плавающей точкой проверяется на соответствие диапазону
0.0-1.0, и значение за его пределами вызываетValueError. Чтобы выбрать коэффициент, превышающий зум 2x, передай вместо этого форму кортежа(min, max). - Формат кортежа применим только к геометрическим задачам. Обучение классификации выводит собственный диапазон обрезки из числа с плавающей точкой (от
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наклон выбирается случайным образом в диапазоне от-10до10по оси x, а другое независимое случайное значение выбирается в том же диапазоне по оси y. - Цель: Помогает моделям обобщать вариации углов обзора, вызванные небольшими наклонами или ракурсами. Например, при мониторинге дорожного движения объекты, такие как автомобили и дорожные знаки, могут казаться наклонными из-за неперпендикулярного размещения камер. Применение аугментации сдвигом гарантирует, что модель научится распознавать объекты вопреки таким искажениям.
- Реализация Ultralytics: RandomPerspective
- Примечание:
- Значения
shearмогут быстро исказить изображение, поэтому рекомендуется начинать с малых значений и постепенно увеличивать их. - В отличие от перспективных преобразований, сдвиг не вводит глубину или точки схода, а искажает форму объектов путем изменения их углов, сохраняя противоположные стороны параллельными.
- Значения
-10 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Перспектива (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 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Отражение сверху вниз (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)#
- Диапазон:
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объединяет текущее изображение с 3 другими, взятыми из буфера недавно загруженных изображений или из произвольного места в датасете при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)#
- Диапазон:
0.0-1.0 - По умолчанию:
0 - Использование: Работает только для задач сегментации, это аугментация копирует объекты внутри изображений или между ними, управляемая с помощью
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)#
- Опции:
'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и остальные — остается активной и применяется независимо. - Будь осторожен с пространственными преобразованиями, которые изменяют геометрию изображения. Ultralytics настраивает ограничивающие рамки автоматически, но некоторые сложные преобразования могут потребовать дополнительной конфигурации.
- 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,
)FAQ#
Выбор правильных аугментаций зависит от твоего конкретного случая и набора данных. Вот несколько общих рекомендаций, которые помогут тебе определиться:
- В большинстве случаев небольшие изменения цвета и яркости полезны. Значения по умолчанию для
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 или других преобразований. Ознакомься с примером пользовательского обучения в документации по классификации для получения деталей реализации.













































