Дополнение данных - важнейшая техника в компьютерном зрении, которая искусственно расширяет набор обучающих данных, применяя различные преобразования к существующим изображениям. При обучении моделей глубокого обучения, таких как Ultralytics YOLO, расширение данных помогает повысить устойчивость модели, уменьшить перебор и улучшить обобщение на реальные сценарии.
Почему расширение данных имеет значение
Дополнение данных служит нескольким важнейшим целям при обучении моделей компьютерного зрения:
Расширенный набор данных: Создавая вариации существующих изображений, вы можете эффективно увеличить объем обучающей базы данных без сбора новых данных.
Улучшенное обобщение: Модели учатся распознавать объекты в различных условиях, что делает их более надежными в реальных приложениях.
Уменьшение избыточной подгонки: Благодаря изменчивости обучающих данных модели с меньшей вероятностью запоминают конкретные характеристики изображений.
Повышенная производительность: Модели, обученные с помощью соответствующего дополнения, обычно достигают более высокой точности на проверочных и тестовых наборах.
Реализация Ultralytics YOLO предоставляет обширный набор методов аугментации, каждый из которых служит конкретным целям и по-разному влияет на производительность модели. В этом руководстве мы подробно рассмотрим каждый параметр аугментации, чтобы помочь вам понять, когда и как эффективно использовать их в своих проектах.
Примеры конфигураций
Каждый параметр можно настроить с помощью Python API, интерфейса командной строкиCLI) или файла конфигурации. Ниже приведены примеры настройки дополнения данных в каждом из методов.
Примеры конфигурации
fromultralyticsimportYOLO# Load a modelmodel=YOLO("yolo11n.pt")# Training with custom augmentation parametersmodel.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 augmentation parameters
yolodetecttraindata=coco8.yamlmodel=yolo11n.ptepochs=100hsv_h=0.03hsv_s=0.6hsv_v=0.5
Использование файла конфигурации
Вы можете определить все параметры обучения, включая дополнения, в конфигурационном файле YAML (например, train_custom.yaml). Сайт mode Параметр требуется только при использовании CLI. Этот новый YAML-файл будет переопределять стандартный расположенный в ultralytics пакет.
# train_custom.yaml# 'mode' is required only for CLI usagemode:traindata:coco8.yamlmodel:yolo11n.ptepochs:100hsv_h:0.03hsv_s:0.6hsv_v:0.5
Затем запустите обучение с помощью Python API:
Пример поезда
fromultralyticsimportYOLO# Load a COCO-pretrained YOLO11n modelmodel=YOLO("yolo11n.pt")# Train the model with custom configurationmodel.train(cfg="train_custom.yaml")
# Train the model with custom configuration
yolodetecttrainmodel="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.
Назначение: Особенно полезно для сценариев на открытом воздухе, где условия освещения могут значительно повлиять на внешний вид объекта. Например, банан может выглядеть более желтым при ярком солнечном свете, но более зеленоватым в помещении.
Использование: Изменяет интенсивность цветов в изображении. Сайт hsv_h гиперпараметр определяет величину сдвига, а окончательная корректировка выбирается случайным образом между -hsv_s и hsv_s. Например, с hsv_s=0.7интенсивность выбирается случайным образом в пределах-0.7 на 0.7.
Назначение: Помогает моделям справляться с различными погодными условиями и настройками камеры. Например, красный дорожный знак может быть очень ярким в солнечный день, но выглядеть тусклым и блеклым в условиях тумана.
Использование: Изменяет яркость изображения. На странице hsv_v гиперпараметр определяет величину сдвига, а окончательная корректировка выбирается случайным образом между -hsv_v и hsv_v. Например, с hsv_v=0.4интенсивность выбирается случайным образом в пределах-0.4 на 0.4.
Назначение: Необходим для обучения моделей, которые должны работать в разных условиях освещения. Например, красное яблоко может выглядеть ярким при солнечном свете, но гораздо темнее в тени.
Использование: Поворачивает изображения в произвольном порядке в заданном диапазоне. Сайт degrees гиперпараметр определяет угол поворота, при этом окончательная настройка выбирается случайным образом между -degrees и degrees. Например, с degrees=10.0Вращение выбирается случайным образом в пределах-10.0 на 10.0.
Назначение: Важнейшая задача для приложений, в которых объекты могут появляться в разных ориентациях. Например, при съемке с беспилотников транспортные средства могут быть ориентированы в любом направлении, что требует от моделей распознавания объектов независимо от их поворота.
Использование: Сдвигает изображения по горизонтали и вертикали на случайную долю размера изображения. Сайт translate гиперпараметр определяет величину сдвига, при этом окончательная настройка выбирается случайным образом дважды (по одной для каждой оси) в диапазоне -translate и translate. Например, с translate=0.5Перевод выбирается случайным образом в пределах-0.5 на 0.5 по оси x, а по оси y выбирается другое независимое случайное значение в том же диапазоне.
Назначение: Помогает моделям научиться обнаруживать частично видимые объекты и повышает устойчивость к изменению положения объекта. Например, в приложениях для оценки повреждений автомобилей части автомобиля могут полностью или частично попадать в кадр в зависимости от положения фотографа и расстояния до него. Дополнение перевода научит модель распознавать эти особенности независимо от их полноты или положения.
Примечание: Для простоты нижеприведенные переводы одинаковы для обоих случаев x и y оси. Значения -1.0 и 1.0не показаны, так как в этом случае изображение полностью выходит за пределы кадра.
-0.5
-0.25
0.0
0.25
0.5
Масштаб (scale)
Диапазон: ≥0.0
По умолчанию: 0.5
Использование: Изменение размера изображений по случайному коэффициенту в указанном диапазоне. . scale гиперпараметр определяет масштабный коэффициент, при этом окончательная настройка выбирается случайным образом между 1-scale и 1+scale. Например, с scale=0.5Масштаб выбирается случайным образом в пределах0.5 на 1.5.
Назначение: Позволяет моделям работать с объектами на разных расстояниях и разных размеров. Например, в приложениях для автономного вождения автомобили могут появляться на разных расстояниях от камеры, что требует от модели распознавать их независимо от размера.
Значение -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)
Диапазон: -180 на +180
По умолчанию: 0.0
Использование: Представляет собой геометрическое преобразование, которое искажает изображение вдоль оси x и оси y, эффективно смещая части изображения в одном направлении при сохранении параллельных линий. Сайт shear гиперпараметр определяет угол сдвига, при этом окончательная настройка выбирается случайным образом между -shear и shear. Например, с shear=10.0сдвиг выбирается случайным образом в пределах-10 на 10 по оси x, а по оси y выбирается другое независимое случайное значение в том же диапазоне.
Назначение: Помогает моделям обобщать изменения углов обзора, вызванные небольшими наклонами или косыми точками обзора. Например, при наблюдении за дорожным движением такие объекты, как автомобили и дорожные знаки, могут выглядеть наклонными из-за неперпендикулярного расположения камер. Применение увеличения сдвига гарантирует, что модель научится распознавать объекты, несмотря на такие искажения.
shear значения могут быстро исказить изображение, поэтому рекомендуется начинать с небольших значений и постепенно их увеличивать.
В отличие от перспективных преобразований, сдвиг не вводит глубину или точки схода, а искажает форму объектов, изменяя их углы, сохраняя противоположные стороны параллельными.
-10
-5
0.0
5
10
Перспектива (perspective)
Диапазон: 0.0 - 0.001
По умолчанию: 0.0
Использование: Применяет полную трансформацию перспективы по осям x и y, имитируя то, как объекты выглядят при взгляде с разной глубины или под разными углами. Сайт perspective гиперпараметр определяет величину перспективы, при этом окончательная настройка выбирается случайным образом между -perspective и perspective. Например, с perspective=0.001перспектива выбирается случайным образом в пределах-0.001 на 0.001 по оси x, а по оси y выбирается другое независимое случайное значение в том же диапазоне.
Цель: Увеличение перспективы имеет решающее значение для обработки экстремальных изменений точки зрения, особенно в сценариях, где объекты выглядят ракурсными или искаженными из-за смещения перспективы. Например, при обнаружении объектов с помощью беспилотников здания, дороги и автомобили могут выглядеть растянутыми или сжатыми в зависимости от наклона и высоты полета дрона. Применяя преобразования перспективы, модели учатся распознавать объекты, несмотря на эти искажения, вызванные перспективой, что повышает их устойчивость в реальных условиях.
Использование: Выполняет вертикальный переворот, инвертируя изображение по оси y. Это преобразование переворачивает все изображение вверх ногами, но сохраняет все пространственные отношения между объектами. Гиперпараметр flipud определяет вероятность применения преобразования, при этом значение flipud=1.0 обеспечивая переворот всех изображений и значение flipud=0.0 полностью отключить трансформацию. Например, при flipud=0.5Каждое изображение с вероятностью 50% будет перевернуто вверх ногами.
Назначение: Пригодится для сценариев, в которых объекты могут появляться в перевернутом виде. Например, в роботизированных системах технического зрения объекты на конвейерных лентах или роботизированных манипуляторах могут захватываться и размещаться в различных ориентациях. Вертикальное переворачивание помогает модели распознавать объекты независимо от их расположения сверху вниз.
Использование: Выполняет горизонтальное переворачивание, зеркально отражая изображение вдоль оси x. Это преобразование меняет местами левую и правую стороны, сохраняя пространственную согласованность, что помогает модели обобщать объекты, отображаемые в зеркальной ориентации. Сайт fliplr гиперпараметр определяет вероятность применения преобразования, со значением fliplr=1.0 обеспечивая переворот всех изображений и значение fliplr=0.0 disabling the transformation entirely. For example, with fliplr=0.5Каждое изображение с вероятностью 50% будет перевернуто слева направо.
Цель: Горизонтальное переворачивание широко используется в обнаружении объектов, оценке позы и распознавании лиц для повышения устойчивости к отклонениям слева направо. Например, при автономном вождении автомобили и пешеходы могут появляться по обе стороны дороги, и горизонтальное переворачивание помогает модели одинаково хорошо распознавать их в обеих ориентациях.
Использование: Меняет цветовые каналы изображения с RGB на BGR, изменяя порядок представления цветов. Сайт bgr гиперпараметр определяет вероятность применения преобразования, при этом bgr=1.0 обеспечение того, чтобы все изображения прошли процедуру замены каналов и bgr=0.0 отключить его. Например, при bgr=0.5Каждое изображение с вероятностью 50% будет преобразовано из RGB в BGR.
Назначение: Повышает устойчивость к различным порядкам расположения цветовых каналов. Например, при обучении моделей, которые должны работать с различными системами камер и библиотеками изображений, где форматы RGB и BGR могут использоваться непоследовательно, или при развертывании моделей в средах, где входной цветовой формат может отличаться от обучающих данных.
Использование: Объединяет четыре учебных изображения в одно. Сайт mosaic гиперпараметр определяет вероятность применения преобразования, при этом mosaic=1.0 обеспечение совмещения всех изображений и mosaic=0.0 отключение трансформации. Например, при mosaic=0.5Каждое изображение имеет 50-процентный шанс быть объединенным с тремя другими изображениями.
Назначение: Высокая эффективность для улучшения распознавания мелких объектов и понимания контекста. Например, в проектах по сохранению дикой природы, где животные могут появляться на разных расстояниях и в разных масштабах, мозаичное дополнение помогает модели научиться распознавать один и тот же вид при различных размерах, частичной окклюзии и контексте окружающей среды, искусственно создавая разнообразные обучающие выборки из ограниченного количества данных.
Даже если mosaic Дополнение делает модель более надежной, но также может усложнить процесс обучения.
Сайт mosaic увеличение можно отключить в конце обучения, установив close_mosaic количество эпох до завершения, когда она должна быть выключена. Например, если epochs устанавливается на 200 и close_mosaic устанавливается на 20, the mosaic аугментация будет отключена после 180 эпохи. Если close_mosaic устанавливается на 0, the mosaic В течение всего процесса обучения будет включена функция аугментации.
Центр сгенерированной мозаики определяется с помощью случайных значений и может находиться как внутри изображения, так и за его пределами.
Текущая реализация mosaic В процессе аугментации объединяются 4 изображения, выбранные случайным образом из набора данных. Если набор данных небольшой, одно и то же изображение может быть использовано несколько раз в одной мозаике.
mosaic с сайта
mosaic на
Смешинка (mixup)
Диапазон: 0.0 - 1.0
По умолчанию: 0.0
Использование: Смешивает два изображения и их метки с заданной вероятностью. Сайт mixup гиперпараметр определяет вероятность применения преобразования, при этом mixup=1.0 обеспечение смешивания всех изображений и mixup=0.0 отключение трансформации. Например, при mixup=0.5Каждое изображение имеет 50-процентную вероятность быть смешанным с другим изображением.
Цель: Повышение надежности модели и снижение перегрузки. Например, в системах распознавания товаров в розничной торговле смешивание помогает модели научиться более надежным характеристикам за счет смешивания изображений различных товаров, что позволяет научить ее идентифицировать товары, даже если они частично видны или заслонены другими товарами на переполненных полках магазина.
Сайт mixup коэффициент - это случайное значение, выбранное из np.random.beta(32.0, 32.0) Бета-распределение, то есть каждое изображение вносит примерно 50%, с небольшими вариациями.
Первое изображение, mixup с сайта
Второе изображение, mixup с сайта
mixup на
CutMix (cutmix)
Диапазон: 0.0 - 1.0
По умолчанию: 0.0
Использование: Вырезает прямоугольную область из одного изображения и вставляет ее в другое изображение с заданной вероятностью. Сайт cutmix гиперпараметр определяет вероятность применения преобразования, при этом cutmix=1.0 обеспечивая, чтобы все изображения проходили эту трансформацию и cutmix=0.0 полностью отключить его. Например, при cutmix=0.5Каждое изображение имеет 50-процентную вероятность того, что его область будет заменена фрагментом из другого изображения.
Цель: Повышение производительности модели за счет создания реалистичных сценариев окклюзии при сохранении целостности локальных признаков. Например, в системах автономного вождения cutmix помогает модели научиться распознавать автомобили или пешеходов, даже если они частично заслонены другими объектами, что повышает точность обнаружения в сложных реальных условиях с перекрывающимися объектами.
Размер и положение области вырезания определяются случайным образом для каждого приложения.
В отличие от mixup, который смешивает значения пикселей глобально, cutmix сохраняет исходную интенсивность пикселей в областях вырезания, сохраняя локальные особенности.
Область вставляется в целевое изображение только в том случае, если она не пересекается ни с одним существующим ограничительным полем. Кроме того, вставляются только те ограничительные рамки, которые сохранили хотя бы 0.1 (10%) от их первоначальной площади в пределах вставленной области сохраняются.
Этот минимальный порог площади ограничительного поля не может быть изменен в текущей реализации и устанавливается на 0.1 по умолчанию.
Первое изображение, cutmix с сайта
Второе изображение, cutmix с сайта
cutmix на
Сегментация-специфические дополнения
Копировать-вставить (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 Аугментация может использоваться для копирования объектов с одного изображения на другое.
Как только объект скопирован, независимо от copy_paste_modeЗатем вычисляется площадь пересечения (Intersection over Area, IoA) со всеми объектами исходного изображения. Если все IoA ниже 0.3 (30%), объект вставляется в целевое изображение. Если только один из IoA находится выше 0.3Объект не будет вставлен в целевое изображение.
Порог IoA не может быть изменен в текущей реализации и установлен на 0.3 по умолчанию.
copy_paste с сайта
copy_paste на с copy_paste_mode=flip
Визуализируйте copy_paste процесс
Режим копирования-вставки (copy_paste_mode)
Опции: 'flip', 'mixup'
По умолчанию: 'flip'
Использование: Определяет метод, используемый для копировать-вставить увеличение. Если установить значение 'flip'объекты происходят из одного и того же изображения, в то время как 'mixup' позволяет копировать объекты из разных изображений.
Назначение: Обеспечивает гибкость при интеграции скопированных объектов в целевые изображения.
Использование: Применяет автоматические политики дополнения для классификации. Сайт 'randaugment' опция использует RandAugment, 'autoaugment' использует автоувеличение, а 'augmix' использует AugMix. Настройка на None отключает автоматическую аугментацию.
Назначение: Автоматически оптимизирует стратегии дополнения для задач классификации. Различия заключаются в следующем:
AutoAugment: В этом режиме применяются предопределенные политики дополнения, полученные из таких наборов данных, как ImageNet, CIFAR10 и SVHN. Пользователи могут выбирать эти существующие политики, но не могут обучать новые в Torchvision. Чтобы найти оптимальные стратегии дополнения для конкретных наборов данных, потребуются внешние библиотеки или собственные реализации. Ссылка на статью AutoAugment.
RandAugment: Применяет случайный выбор преобразований с равномерной величиной. Этот подход уменьшает необходимость в обширном этапе поиска, что делает его более эффективным с вычислительной точки зрения, но при этом повышает устойчивость модели. Ссылка на статью RandAugment.
AugMix: AugMix - это метод дополнения данных, который повышает надежность модели путем создания различных вариаций изображений с помощью случайных комбинаций простых преобразований. Ссылка на статью AugMix.
По сути, основное различие между тремя методами заключается в том, как определяются и применяются политики дополнения.
Вы можете обратиться к этой статье, в которой подробно сравниваются три метода.
Случайное стирание (erasing)
Диапазон: 0.0 - 0.9
По умолчанию: 0.4
Использование: Случайное стирание фрагментов изображения во время обучения классификации. Сайт erasing гиперпараметр определяет вероятность применения преобразования, при этом erasing=0.9 обеспечивая стирание почти всех изображений и erasing=0.0 отключение трансформации. Например, при erasing=0.5Вероятность того, что часть изображения будет стерта, составляет 50%.
Назначение: Помогает моделям изучать надежные характеристики и предотвращает чрезмерную зависимость от конкретных областей изображения. Например, в системах распознавания лиц случайное стирание помогает моделям стать более устойчивыми к частичным окклюзиям, таким как солнцезащитные очки, маски для лица или другие объекты, которые могут частично закрывать черты лица. Это повышает эффективность работы в реальном мире, заставляя модель идентифицировать человека по нескольким характеристикам лица, а не полагаться только на отличительные черты, которые могут быть скрыты.
Сайт erasing аугментация сопровождается scale, ratio, и value гиперпараметры, которые нельзя изменить с помощью текущая реализация. По умолчанию они имеют следующие значения (0.02, 0.33), (0.3, 3.3), и 0соответственно, как указано в PyTorch документация.
Верхний предел erasing гиперпараметр установлен на 0.9 чтобы не применять преобразование ко всем изображениям.
erasing с сайта
erasing включено (пример 1)
erasing включено (пример 2)
erasing включено (пример 3)
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Существует слишком много аугментаций на выбор. Как узнать, какие из них использовать?
Выбор правильных дополнений зависит от конкретного случая использования и набора данных. Вот несколько общих рекомендаций, которые помогут вам определиться:
В большинстве случаев небольшие различия в цвете и яркости полезны. Значения по умолчанию для 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 пакет установлен. Если нет, вы можете установить его, выполнив команду pip install albumentations. После установки пакет должен быть автоматически обнаружен и использован Ultralytics.
📅 Создано 1 месяц назад
✏️ Обновлено 16 дней назад