Перейти к содержанию

Аугментация данных с использованием Ultralytics YOLO

Пример аугментации изображений

Введение

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



Смотреть: Как использовать Mosaic, MixUp и другие методы аугментации данных, чтобы помочь моделям Ultralytics YOLO лучше обобщать 🚀

Почему важна аугментация данных

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

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

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

Примеры конфигураций

Вы можете настроить каждый параметр с помощью Python API, интерфейса командной строки (CLI) или файла конфигурации. Ниже приведены примеры того, как настроить увеличение данных в каждом методе.

Примеры конфигурации

import albumentations as A

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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)
# Training with custom augmentation parameters
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 hsv_h=0.03 hsv_s=0.6 hsv_v=0.5

Использование файла конфигурации

Вы можете определить все параметры обучения, включая аугментации, в YAML-файле конфигурации (например, train_custom.yaml). Аргумент mode параметр требуется только при использовании CLI. Этот новый YAML-файл затем переопределит тот, что по умолчанию находится в ultralytics пакет.

# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo11n.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 YOLO11n model
model = YOLO("yolo11n.pt")

# Train the model with custom configuration
model.train(cfg="train_custom.yaml")
# Train the model with custom configuration
yolo detect train model="yolo11n.pt" 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.250.00.250.5
hsv_h_-0.5_augmentationhsv_h_-0.25_augmentationaugmentation_identityhsv_h_0.25_augmentationhsv_h_-0.5_augmentation

Регулировка насыщенности (hsv_s)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0.7
  • Использование: Изменяет интенсивность цветов на изображении. Параметр hsv_s Гиперпараметр определяет величину сдвига, при этом окончательная корректировка выбирается случайным образом между -hsv_s и hsv_s. Например, при hsv_s=0.7, интенсивность выбирается случайным образом в пределах-0.7 в 0.7.
  • Назначение: Помогает моделям справляться с различными погодными условиями и настройками камеры. Например, красный дорожный знак может выглядеть очень ярким в солнечный день, но тусклым и выцветшим в туманную погоду.
  • Реализация Ultralytics: RandomHSV
-1.0-0.50.00.51.0
hsv_s_-1_augmentationhsv_s_-0.5_augmentationaugmentation_identityhsv_s_0.5_augmentationhsv_s_1_augmentation

Регулировка яркости (hsv_v)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0.4
  • Использование: Изменяет яркость изображения. The hsv_v Гиперпараметр определяет величину сдвига, при этом окончательная корректировка выбирается случайным образом между -hsv_v и hsv_v. Например, при hsv_v=0.4, интенсивность выбирается случайным образом в пределах-0.4 в 0.4.
  • Назначение: Необходим для обучения моделей, которые должны работать в различных условиях освещения. Например, красное яблоко может выглядеть ярко на солнце, но гораздо темнее в тени.
  • Реализация Ultralytics: RandomHSV
-1.0-0.50.00.51.0
hsv_v_-1_augmentationhsv_v_-0.5_augmentationaugmentation_identityhsv_v_0.5_augmentationhsv_v_1_augmentation

Геометрические преобразования

Поворот (degrees)

  • Диапазон: 0.0 в 180
  • По умолчанию: 0.0
  • Использование: Случайным образом вращает изображения в пределах указанного диапазона. Параметр degrees Гиперпараметр определяет угол поворота, при этом окончательная корректировка выбирается случайным образом между -degrees и degrees. Например, при degrees=10.0, поворот выбирается случайным образом в пределах-10.0 в 10.0.
  • Назначение: Имеет решающее значение для приложений, где объекты могут появляться в разных ориентациях. Например, на аэрофотоснимках с дронов транспортные средства могут быть ориентированы в любом направлении, что требует от моделей распознавания объектов независимо от их поворота.
  • Реализация Ultralytics: RandomPerspective
-180-900.090180
degrees_-180_augmentationdegrees_-90_augmentationaugmentation_identitydegrees_90_augmentationdegrees_180_augmentation

Перевод (translate)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0.1
  • Использование: Сдвигает изображения по горизонтали и вертикали на случайную долю размера изображения. translate Гиперпараметр определяет величину сдвига, при этом окончательная корректировка выбирается случайным образом дважды (один раз для каждой оси) в пределах диапазона -translate и translate. Например, при translate=0.5, сдвиг выбирается случайным образом в пределах-0.5 в 0.5 на оси x, а на оси y выбрана другая независимая случайная величина в том же диапазоне.
  • Назначение: Помогает моделям научиться обнаруживать частично видимые объекты и повышает устойчивость к положению объекта. Например, в приложениях для оценки повреждений транспортных средств части автомобиля могут отображаться полностью или частично в кадре в зависимости от положения и расстояния фотографа, аугментация сдвига научит модель распознавать эти признаки независимо от их полноты или положения.
  • Реализация Ultralytics: RandomPerspective
  • Примечание: Для простоты, переводы, применяемые ниже, каждый раз одинаковы для обоих x и y оси. Значения -1.0 и 1.0не отображаются, так как они полностью вывели бы изображение за пределы кадра.
-0.5-0.250.00.250.5
translate_-0.5_augmentationtranslate_-0.25_augmentationaugmentation_identitytranslate_0.25_augmentationtranslate_0.5_augmentation

Масштаб (Шкала) (scale)

  • Диапазон: ≥0.0
  • По умолчанию: 0.5
  • Использование: Изменяет размер изображений на случайный коэффициент в пределах указанного диапазона. Параметр scale Гиперпараметр определяет коэффициент масштабирования, при этом окончательная корректировка выбирается случайным образом между 1-scale и 1+scale. Например, при scale=0.5, масштабирование выбирается случайным образом в пределах0.5 в 1.5.
  • Назначение: Позволяет моделям обрабатывать объекты на разных расстояниях и размеров. Например, в приложениях для автономного вождения транспортные средства могут находиться на разном расстоянии от камеры, что требует от модели распознавания их независимо от размера.
  • Реализация Ultralytics: RandomPerspective
  • Примечание:
    • Значение -1.0 не отображается, так как это приведет к исчезновению изображения, в то время как 1.0 просто приводит к 2-кратному увеличению.
    • Значения, отображаемые в таблице ниже, применяются через гиперпараметр scale, а не окончательный масштабный коэффициент.
    • Если scale больше, чем 1.0, изображение может быть очень маленьким или перевернутым, так как коэффициент масштабирования выбирается случайным образом между 1-scale и 1+scale. Например, при scale=3.0, масштабирование выбирается случайным образом в пределах-2.0 в 4.0Если выбрано отрицательное значение, изображение переворачивается.
-0.5-0.250.00.250.5
scale_-0.5_augmentationscale_-0.25_augmentationaugmentation_identityscale_0.25_augmentationscale_0.5_augmentation

Сдвиг (shear)

  • Диапазон: -180 в +180
  • По умолчанию: 0.0
  • Использование: Вводит геометрическое преобразование, которое искажает изображение по осям x и y, эффективно сдвигая части изображения в одном направлении, сохраняя при этом параллельные линии. The shear Гиперпараметр определяет угол сдвига, при этом окончательная корректировка выбирается случайным образом между -shear и shear. Например, при shear=10.0, сдвиг выбирается случайным образом в пределах-10 в 10 на оси x, а на оси y выбрана другая независимая случайная величина в том же диапазоне.
  • Назначение: Помогает моделям обобщать изменения углов обзора, вызванные небольшими наклонами или наклонными точками обзора. Например, при мониторинге дорожного движения такие объекты, как автомобили и дорожные знаки, могут казаться наклонными из-за неперпендикулярного размещения камеры. Применение аугментации сдвига гарантирует, что модель научится распознавать объекты, несмотря на такие искажения.
  • Реализация Ultralytics: RandomPerspective
  • Примечание:
    • shear значения могут быстро исказить изображение, поэтому рекомендуется начинать с малых значений и постепенно их увеличивать.
    • В отличие от перспективных преобразований, сдвиг не вводит глубину или точки схода, а вместо этого искажает форму объектов, изменяя их углы, сохраняя при этом противоположные стороны параллельными.
-10-50.0510
shear_-10_augmentationshear_-5_augmentationaugmentation_identityshear_5_augmentationshear_10_augmentation

Перспектива (perspective)

  • Диапазон: 0.0 - 0.001
  • По умолчанию: 0.0
  • Использование: Применяет полную перспективную трансформацию по осям x и y, имитируя то, как объекты выглядят при просмотре с разных глубин или углов. The perspective гиперпараметр определяет величину перспективы, при этом окончательная корректировка выбирается случайным образом между -perspective и perspective. Например, при perspective=0.001, перспектива выбирается случайным образом в пределах-0.001 в 0.001 на оси x, а на оси y выбрана другая независимая случайная величина в том же диапазоне.
  • Назначение: Перспективная аугментация имеет решающее значение для обработки экстремальных изменений точки обзора, особенно в сценариях, когда объекты кажутся укороченными или искаженными из-за перспективных сдвигов. Например, при обнаружении объектов с помощью дронов здания, дороги и транспортные средства могут казаться растянутыми или сжатыми в зависимости от наклона и высоты дрона. Применяя перспективные преобразования, модели учатся распознавать объекты, несмотря на эти перспективные искажения, повышая их устойчивость в реальных условиях.
  • Реализация Ultralytics: RandomPerspective
-0.001-0.00050.00.00050.001
perspective_-0.001_augmentationperspective_-0.0005_augmentationaugmentation_identityperspective_0.0005_augmentationperspective_0.001_augmentation

Отражение сверху вниз (flipud)

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

Отражение слева направо (fliplr)

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

Замена каналов BGR (bgr)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0.0
  • Использование: Меняет местами цветовые каналы изображения из RGB в BGR, изменяя порядок представления цветов. bgr гиперпараметр определяет вероятность применения преобразования, с bgr=1.0 обеспечивая выполнение перестановки каналов для всех изображений и bgr=0.0 отключая его. Например, с bgr=0.5, для каждого изображения существует 50% вероятность преобразования из RGB в BGR.
  • Назначение: Повышает устойчивость к различным порядкам цветовых каналов. Например, при обучении моделей, которые должны работать с различными системами камер и библиотеками обработки изображений, где форматы RGB и BGR могут использоваться непоследовательно, или при развертывании моделей в средах, где входной цветовой формат может отличаться от обучающих данных.
  • Реализация Ultralytics: Format
bgr offbgr на
augmentation_identitybgr_on_augmentation

Мозаика (mosaic)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 1.0
  • Использование: Объединяет четыре тренировочных изображения в одно. The 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 offmosaic на
augmentation_identitymosaic_on_augmentation

Mixup (mixup)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0.0
  • Использование: Смешивает два изображения и их метки с заданной вероятностью. The mixup гиперпараметр определяет вероятность применения преобразования, с mixup=1.0 обеспечивая смешивание всех изображений и mixup=0.0 отключая преобразование. Например, с mixup=0.5, для каждого изображения существует 50% вероятность смешивания с другим изображением.
  • Назначение: Повышает устойчивость модели и снижает переобучение. Например, в системах распознавания розничных товаров mixup помогает модели изучать более надежные признаки, смешивая изображения различных продуктов, обучая ее идентифицировать товары, даже если они частично видны или закрыты другими продуктами на переполненных полках магазинов.
  • Реализация Ultralytics: Mixup
  • Примечание:
    • Параметр mixup ratio — это случайное значение, выбранное из np.random.beta(32.0, 32.0) бета-распределение, то есть каждое изображение вносит примерно 50% с небольшими отклонениями.
Первое изображение, mixup offВторое изображение, mixup offmixup на
augmentation_mixup_identity_1augmentation_mixup_identity_2mixup_on_augmentation

CutMix (cutmix)

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

Специфичные для сегментации аугментации

Copy-Paste (copy_paste)

  • Диапазон: 0.0 - 1.0
  • По умолчанию: 0.0
  • Использование: Работает только для задач сегментации. Эта аугментация копирует объекты внутри изображений или между ними на основе указанной вероятности, контролируемой параметром copy_paste_mode. copy_paste гиперпараметр определяет вероятность применения преобразования, с copy_paste=1.0 обеспечивая копирование всех изображений и copy_paste=0.0 отключая преобразование. Например, с copy_paste=0.5, для каждого изображения существует 50% вероятность копирования объектов из другого изображения.
  • Назначение: Особенно полезно для задач сегментации экземпляров и редких классов объектов. Например, при обнаружении промышленных дефектов, когда определенные типы дефектов появляются редко, аугментация copy-paste может искусственно увеличить частоту этих редких дефектов, копируя их с одного изображения на другое, помогая модели лучше изучать эти недостаточно представленные случаи без необходимости в дополнительных дефектных образцах.
  • Реализация Ultralytics: CopyPaste
  • Примечание:
    • Как показано на GIF-изображении ниже, copy_paste аугментация может использоваться для копирования объектов из одного изображения в другое.
    • После копирования объекта, независимо от copy_paste_mode, его Intersection over Area (IoA) вычисляется со всеми объектами исходного изображения. Если все IoA ниже 0.3 (30%), объект вставляется в целевое изображение. Если только IoA выше 0.3, объект не вставляется в целевое изображение.
    • Порог IoA нельзя изменить при текущей реализации, он установлен на 0.3 по умолчанию.
copy_paste offcopy_paste on with copy_paste_mode=flipВизуализировать copy_paste процесс
augmentation_identitycopy_paste_on_augmentationcopy_paste_augmentation_gif_demo

Copy-Paste Mode (copy_paste_mode)

  • Опции: 'flip', 'mixup'
  • По умолчанию: 'flip'
  • Использование: Определяет метод, используемый для copy-paste аугментация. Если установлено значение 'flip', объекты берутся из одного и того же изображения, в то время как 'mixup' позволяет копировать объекты с разных изображений.
  • Назначение: Обеспечивает гибкость в том, как скопированные объекты интегрируются в целевые изображения.
  • Реализация Ultralytics: CopyPaste
  • Примечание:
    • Принцип IoA одинаков для обоих copy_paste_mode, но способ копирования объектов отличается.
    • В зависимости от размера изображения объекты могут быть частично или полностью скопированы за пределы кадра.
    • В зависимости от качества аннотаций полигонов, скопированные объекты могут иметь небольшие отклонения формы по сравнению с оригиналами.
Эталонное изображениеВыбранное изображение для copy_pastecopy_paste on with copy_paste_mode=mixup
augmentation_mixup_identity_2augmentation_identitycopy_paste_mode_mixup_augmentation

Специфичные для классификации расширения

Автоматическая аугментация (auto_augment)

  • Опции: 'randaugment', 'autoaugment', 'augmix', None
  • По умолчанию: 'randaugment'
  • Использование: Применяет автоматизированные политики расширения для классификации. The '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 offerasing on (пример 1)erasing on (пример 2)erasing on (пример 3)
augmentation_identityerasing_ex1_augmentationerasing_ex2_augmentationerasing_ex3_augmentation

Расширенные возможности аугментации

Пользовательские преобразования альбуминации (augmentations)

  • Тип: list преобразования альбуминации
  • По умолчанию: None
  • Использование: Позволяет предоставлять пользовательские преобразования Albumentations для дополнения данных с помощью API Python . Этот параметр принимает список объектов преобразований Albumentations, которые будут применяться во время обучения вместо преобразований Albumentations по умолчанию.
  • Назначение: Обеспечивает тонкий контроль над стратегиями дополнения данных за счет использования обширной библиотеки преобразований Albumentations. Это особенно полезно, когда вам нужны специализированные дополнения, выходящие за рамки встроенных опций YOLO , такие как расширенная цветовая коррекция, введение шума или преобразования, специфичные для конкретной области.
  • РеализацияUltralytics: Albumentations

Пример пользовательских альбуминаций

import albumentations as A

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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,
)
import albumentations as A

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")

# Define advanced custom Albumentations transforms with specific parameters
advanced_transforms = [
    A.OneOf(
        [
            A.MotionBlur(blur_limit=7, p=1.0),
            A.MedianBlur(blur_limit=7, p=1.0),
            A.GaussianBlur(blur_limit=7, p=1.0),
        ],
        p=0.3,
    ),
    A.OneOf(
        [
            A.GaussNoise(var_limit=(10.0, 50.0), p=1.0),
            A.ISONoise(color_shift=(0.01, 0.05), intensity=(0.1, 0.5), p=1.0),
        ],
        p=0.2,
    ),
    A.CLAHE(clip_limit=4.0, tile_grid_size=(8, 8), p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.3, contrast_limit=0.3, brightness_by_max=True, p=0.5),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
    A.CoarseDropout(
        max_holes=8, max_height=32, max_width=32, min_holes=1, min_height=8, min_width=8, fill_value=0, p=0.2
    ),
]

# Train with advanced custom transforms
model.train(
    data="coco8.yaml",
    epochs=100,
    augmentations=advanced_transforms,
    imgsz=640,
)

Ключевые моменты:

  • Только APIPython : Пользовательские преобразования Albumentations в настоящее время поддерживаются только через Python API. Их нельзя указать через CLI или конфигурационные файлы YAML.
  • Заменяет преобразования по умолчанию: Когда вы предоставляете пользовательские преобразования через augmentations они полностью заменяют стандартные преобразования Albumentations. Дополнения YOLO по умолчанию (например mosaic, hsv_h, hsv_s, degreesи т.д.) остаются активными и применяются независимо друг от друга.
  • Совместимость с ограничительными рамками: Будьте осторожны при использовании пространственных преобразований (преобразований, изменяющих геометрию изображения). Ultralytics автоматически справляется с настройкой ограничительных рамок, но некоторые сложные преобразования могут потребовать дополнительной настройки.
  • Обширная библиотека: Albumentations предлагает более 70+ различных трансформаций. Изучите документацию Albumentations, чтобы узнать обо всех доступных вариантах.
  • Учет производительности: Добавление слишком большого количества дополнений или использование дорогостоящих преобразований может замедлить обучение. Начните с небольшого набора и следите за скоростью обучения.

Общие примеры использования:

  • Медицинская визуализация: Применение специализированных преобразований, таких как упругие деформации или искажения сетки, для увеличения рентгеновских или магнитно-резонансных изображений
  • Аэрофотоснимки/спутники: Используйте преобразования, оптимизированные для ракурсов сверху
  • Условия низкой освещенности: Применяйте регулировки шума и яркости для имитации сложного освещения
  • Промышленный контроль: Добавление узоров, похожих на дефекты, или вариаций текстуры для контроля качества

Примечания по совместимости:

  • Требуется версия Albumentations 1.0.3 или выше
  • Совместимость со всеми задачами обнаружения и сегментации YOLO
  • Не применимо для задач классификации (для классификации используется другой конвейер дополнения).

Более подробную информацию об Albumentations и доступных преобразованиях можно найти в официальной документации Albumentations.

Часто задаваемые вопросы

Существует слишком много вариантов расширения набора данных. Как узнать, какие из них использовать?

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

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

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

Когда начинаю обучение, вижу albumentations: Blur[...] reference. Означает ли это, что Ultralytics YOLO выполняет дополнительную аугментацию, например, размытие?

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

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

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

Когда начинаю обучение, я не вижу никаких ссылок на albumentations. Почему?

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

Как настроить аугментации?

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



📅 Создано 7 месяцев назад ✏️ Обновлено 10 дней назад
picsalexRizwanMunawarglenn-jocheronuralpszrultralyticsLaughing-qartzuros

Комментарии