Аугментация данных с использованием 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="coco.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)
# Training without any augmentations (disabled values omitted for clarity)
model.train(
data="coco.yaml",
epochs=100,
hsv_h=0.0,
hsv_s=0.0,
hsv_v=0.0,
translate=0.0,
scale=0.0,
fliplr=0.0,
mosaic=0.0,
erasing=0.0,
auto_augment=None,
)
# Training with custom Albumentations transforms (Python API only)
custom_transforms = [
A.Blur(blur_limit=7, p=0.5),
A.CLAHE(clip_limit=4.0, p=0.5),
]
model.train(data="coco.yaml", epochs=100, augmentations=custom_transforms)Использование файла конфигурации
Ты можешь определить все параметры обучения, включая аугментации, в файле конфигурации YAML (например, train_custom.yaml). Параметр mode требуется только при использовании CLI. Этот новый файл YAML затем переопределит стандартный файл, расположенный в пакете ultralytics.
# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo26n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5Затем запусти обучение с помощью API Python:
from ultralytics import YOLO
# Load a COCO-pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Train the model with custom configuration
model.train(cfg="train_custom.yaml")Аугментации цветового пространства
Настройка цветового тона (hsv_h)
- Диапазон:
0.0-1.0 - По умолчанию:
0.015 - Использование: Сдвигает цвета изображения, сохраняя их взаимосвязи. Гиперпараметр
hsv_hопределяет величину сдвига, при этом итоговая корректировка выбирается случайным образом в диапазоне от-hsv_hдоhsv_h. Например, приhsv_h=0.3сдвиг выбирается случайным образом от-0.3до0.3. Для значений выше0.5сдвиг цветового тона «зацикливается» по цветовому кругу, поэтому аугментации выглядят одинаково между0.5и-0.5. - Цель: Особенно полезна для сценариев на открытом воздухе, где условия освещения могут существенно влиять на внешний вид объекта. Например, банан может выглядеть более желтым под ярким солнечным светом, но более зеленоватым в помещении.
- Реализация Ultralytics: RandomHSV
-0.5 | -0.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 - По умолчанию:
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 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Сдвиг (Shear) (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 - 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 вкл. |
|---|---|
![]() | ![]() |
Отражение слева-направо (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будет включена на протяжении всего процесса обучения. - Центр сгенерированной мозаики определяется с помощью случайных значений и может находиться как внутри изображения, так и за его пределами.
- Текущая реализация аугментации
mosaicобъединяет 4 изображения, выбранных случайным образом из набора данных. Если набор данных небольшой, одно и то же изображение может быть использовано несколько раз в одной и той же мозаике.
- Даже если аугментация
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.1.
Первое изображение, cutmix выкл. | Второе изображение, cutmix выкл. | cutmix вкл. |
|---|---|---|
![]() | ![]() | ![]() |
Аугментации для сегментации
Copy-Paste (copy_paste)
- Диапазон:
0.0-1.0 - По умолчанию:
0 - Использование: Работает только для задач сегментации, эта аугментация копирует объекты внутри или между изображениями на основе заданной вероятности, управляемой через
copy_paste_mode. Гиперпараметрcopy_pasteопределяет вероятность применения этой трансформации:copy_paste=1.0гарантирует, что все изображения будут скопированы, аcopy_paste=0.0отключает трансформацию. Например, приcopy_paste=0.5каждое изображение с вероятностью 50% получит объекты, скопированные из другого изображения. - Назначение: Особенно полезно для задач сегментации экземпляров и редких классов объектов. Например, при обнаружении промышленных дефектов, где определенные типы дефектов встречаются редко, аугментация copy-paste может искусственно увеличить частоту появления этих редких дефектов, копируя их из одного изображения в другое, помогая модели лучше изучить эти недостаточно представленные случаи без необходимости в дополнительных бракованных образцах.
- Реализация Ultralytics: CopyPaste
- Примечание:
- Как показано на гифке ниже, аугментация
copy_pasteможет использоваться для копирования объектов из одного изображения в другое. - После копирования объекта, независимо от
copy_paste_mode, вычисляется его пересечение по площади (IoA) со всеми объектами исходного изображения. Если все IoA ниже0.3(30%), объект вставляется в целевое изображение. Если хотя бы одно IoA выше0.3, объект не вставляется в целевое изображение. - Порог IoA нельзя изменить в текущей реализации, и он по умолчанию установлен на
0.3.
- Как показано на гифке ниже, аугментация
copy_paste выкл. | copy_paste вкл. с copy_paste_mode=flip | Визуализация процесса copy_paste |
|---|---|---|
![]() | ![]() | ![]() |
Режим 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-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) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Расширенные функции аугментации
Пользовательские трансформации 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.
Часто задаваемые вопросы (FAQ)
Существует слишком много вариантов аугментации. Как понять, какие из них использовать?
Выбор правильных аугментаций зависит от твоего конкретного случая использования и набора данных. Вот несколько общих рекомендаций, которые помогут тебе определиться:
- В большинстве случаев полезны небольшие изменения цвета и яркости. Значения по умолчанию для
hsv_h,hsv_sиhsv_v— это хорошая отправная точка. - Если точка обзора камеры постоянна и не изменится после развертывания модели, ты, вероятно, можешь пропустить геометрические преобразования, такие как
rotation,translation,scale,shearилиperspective. Однако если угол камеры может варьироваться и тебе нужно, чтобы модель была более устойчивой, лучше оставить эти аугментации. - Используй аугментацию
mosaicтолько в том случае, если наличие частично перекрытых объектов или нескольких объектов на изображении допустимо и не меняет значение метки. Альтернативно, ты можешь оставитьmosaicактивным, но увеличить значениеclose_mosaic, чтобы отключить его раньше в процессе обучения.
Коротко говоря: придерживайся простоты. Начни с небольшого набора аугментаций и постепенно добавляй новые по мере необходимости. Цель состоит в том, чтобы улучшить обобщающую способность и устойчивость модели, а не усложнять процесс обучения. Кроме того, убедись, что применяемые тобой аугментации отражают то же распределение данных, с которым твоя модель столкнется в продакшене.
Когда я начинаю обучение, я вижу ссылку albumentations: Blur[...]. Означает ли это, что Ultralytics YOLO выполняет дополнительную аугментацию, например, размытие?
Если пакет albumentations установлен, Ultralytics автоматически применяет набор дополнительных аугментаций изображений с его использованием. Эти аугментации обрабатываются внутренне и не требуют дополнительной конфигурации.
Ты можешь найти полный список примененных трансформаций в нашей технической документации, а также в нашем руководстве по интеграции Albumentations. Обрати внимание, что активны только те аугментации, вероятность p которых больше 0. Они целенаправленно применяются с низкой частотой, чтобы имитировать визуальные артефакты реального мира, такие как эффекты размытия или градации серого.
Ты также можешь предоставить свои собственные трансформации Albumentations с помощью Python API. См. раздел Расширенные функции аугментации для получения более подробной информации.
Когда я начинаю обучение, я не вижу никаких упоминаний об albumentations. Почему?
Проверь, установлен ли пакет albumentations. Если нет, ты можешь установить его, выполнив pip install albumentations. После установки пакет должен быть автоматически обнаружен и использован Ultralytics.
Как мне настроить свои собственные аугментации?
Ты можешь настроить аугментации, создав собственный класс набора данных и тренера. Например, ты можешь заменить стандартные аугментации классификации Ultralytics на torchvision.transforms.Resize от PyTorch или другие преобразования. См. пример пользовательского обучения в документации по классификации для получения подробностей реализации.
















































