Расширь набор данных с помощью Albumentations для обучения YOLO26#
При создании моделей компьютерного зрения качество и разнообразие обучающих данных могут существенно влиять на эффективность модели. Albumentations позволяет быстро, гибко и эффективно применять широкий спектр преобразований изображений, которые помогают модели адаптироваться к реальным условиям. Библиотека легко интегрируется с Ultralytics YOLO26 и помогает создавать надежные наборы данных для задач обнаружения объектов, сегментации и классификации.
С помощью Albumentations ты можешь дополнить обучающие данные YOLO26 геометрическими преобразованиями и корректировкой цветов. В этой статье мы посмотрим, как Albumentations может улучшить процесс аугментации данных и повысить эффективность твоих проектов YOLO26. Начнем!
Albumentations для аугментации изображений#
Albumentations — это библиотека с открытым исходным кодом для аугментации изображений, созданная в июне 2018 года. Она упрощает и ускоряет аугментацию изображений в задачах компьютерного зрения. Библиотека разработана с учетом производительности и гибкости и поддерживает множество методов аугментации: от простых преобразований, таких как поворот и отражение, до более сложной коррекции яркости и контрастности. Albumentations помогает разработчикам создавать разнообразные и содержательные наборы данных для задач классификации изображений, обнаружения объектов и сегментации.
С помощью Albumentations можно легко применять аугментации к изображениям, маскам сегментации, ограничивающим рамкам и ключевым точкам, преобразуя все элементы набора данных согласованно. Библиотека без проблем работает с популярными фреймворками глубокого обучения, такими как PyTorch и TensorFlow, поэтому подходит для самых разных проектов.
Кроме того, Albumentations отлично подходит для аугментации как небольших наборов данных, так и масштабных задач компьютерного зрения. Библиотека обеспечивает быструю и эффективную обработку, сокращая время подготовки данных. При этом она помогает повысить эффективность модели, улучшая ее работу в реальных приложениях.
Ключевые возможности Albumentations#
Albumentations предлагает множество полезных функций, упрощающих сложную аугментацию изображений для широкого спектра задач компьютерного зрения. Вот некоторые из ключевых возможностей:
- Широкий выбор преобразований: Albumentations предлагает более 70 различных преобразований, включая геометрические изменения (например, поворот и отражение), коррекцию цветов (например, яркости и контрастности) и добавление шума (например, гауссовского). Множество вариантов позволяет создавать разнообразные и надежные обучающие наборы данных.
-
Высокая производительность: Albumentations построена на OpenCV и NumPy и использует передовые методы оптимизации, такие как SIMD (одна инструкция, несколько данных), которые позволяют одновременно обрабатывать несколько элементов данных и ускоряют обработку. Библиотека быстро справляется с большими наборами данных, что делает ее одним из самых быстрых решений для аугментации изображений.
-
Три уровня аугментации: Albumentations поддерживает три уровня аугментации: преобразования на уровне пикселей, пространственные преобразования и преобразования со смешиванием. Преобразования на уровне пикселей влияют только на входные изображения, не меняя маски, ограничивающие рамки или ключевые точки. Пространственные преобразования изменяют и изображение, и его элементы, например маски и ограничивающие рамки. Преобразования со смешиванием позволяют аугментировать данные особым способом, объединяя несколько изображений в одно.

- Результаты сравнительного тестирования: В сравнительных тестах Albumentations стабильно превосходит другие библиотеки, особенно при работе с большими наборами данных.
Зачем использовать Albumentations в проектах Vision AI?#
Для аугментации изображений Albumentations — надежный инструмент для задач компьютерного зрения. Вот несколько причин, по которым стоит рассмотреть его для проектов Vision AI:
-
Простой API: Albumentations предоставляет единый понятный API для применения множества аугментаций к изображениям, маскам, ограничивающим рамкам и ключевым точкам. Библиотека легко адаптируется к разным наборам данных, упрощая и ускоряя подготовку данных.
-
Тщательное тестирование на ошибки: Ошибки в конвейере аугментации могут незаметно повредить входные данные и остаться незамеченными, но в итоге снизить эффективность модели. Albumentations помогает выявлять ошибки на ранних этапах разработки благодаря обширному набору тестов.
-
Расширяемость: С помощью Albumentations можно легко добавлять новые аугментации и применять их в конвейерах компьютерного зрения через единый интерфейс вместе со встроенными преобразованиями.
Как использовать Albumentations для аугментации данных при обучении YOLO26#
Теперь, когда мы разобрались, что такое Albumentations и на что она способна, посмотрим, как использовать ее для аугментации данных при обучении модели YOLO26. Настроить библиотеку легко: она напрямую интегрируется в режим обучения Ultralytics и автоматически применяется, если установлен пакет Albumentations.
Установка#
Чтобы использовать Albumentations с YOLO26, сначала убедись, что необходимые пакеты установлены. Если Albumentations не установлена, аугментация во время обучения выполняться не будет. После настройки можно создавать аугментированный обучающий набор данных: Albumentations автоматически интегрируется в процесс и улучшает модель.
# Install the required packages
pip install albumentations ultralyticsПодробные инструкции и рекомендации по установке смотри в руководстве по установке Ultralytics. Если при установке пакетов, необходимых для YOLO26, возникнут сложности, решения и советы найдешь в руководстве по распространенным проблемам.
Для примеров пользовательских преобразований на этой странице требуется Albumentations версии 1.4.22 или новее, а значит, и Python версии 3.9 или новее.
Использование#
Установив необходимые пакеты, можно приступать к использованию Albumentations с YOLO26. При обучении YOLO26 интеграция с Albumentations автоматически применяет набор аугментаций, помогая улучшить эффективность модели.
from ultralytics import YOLO
# Загрузи предварительно обученную модель
model = YOLO("yolo26n.pt")
# Обучение модели со стандартными аугментациями
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Теперь подробнее рассмотрим конкретные аугментации, применяемые во время обучения.
Размытие#
Преобразование Blur в Albumentations размывает изображение, усредняя значения пикселей в небольшой квадратной области — ядре. Для этого используется функция OpenCV cv2.blur, которая помогает уменьшить шум на изображении, но немного снижает детализацию.
Параметры и значения, используемые в этой интеграции:
-
blur_limit: Этот параметр задает диапазон размеров размытия. По умолчанию используется диапазон (3, 7), то есть размер ядра размытия может составлять от 3 до 7 пикселей; допускаются только нечетные значения, чтобы центр размытия оставался посередине.
-
p: Вероятность применения размытия. В этой интеграции p=0.01, поэтому для каждого изображения вероятность применения размытия составляет 1%. Низкая вероятность позволяет изредка размывать изображения, немного повышая разнообразие и помогая модели лучше обобщать, но не допуская чрезмерного размытия.
Медианное размытие#
Преобразование MedianBlur в Albumentations применяет к изображению медианное размытие, особенно полезное для уменьшения шума при сохранении границ. В отличие от обычных методов размытия, MedianBlur использует медианный фильтр, который особенно эффективно удаляет импульсный шум, сохраняя четкость границ.
Параметры и значения, используемые в этой интеграции:
-
blur_limit: Этот параметр задает максимальный размер ядра размытия. В этой интеграции по умолчанию используется диапазон (3, 7): размер ядра размытия случайным образом выбирается от 3 до 7 пикселей, причем допускаются только нечетные значения для правильного выравнивания.
-
p: Задает вероятность применения медианного размытия. Здесь p=0.01, поэтому для каждого изображения вероятность применения преобразования составляет 1%. Низкая вероятность обеспечивает редкое применение медианного размытия и помогает модели лучше обобщать за счет периодического использования изображений с уменьшенным шумом и сохраненными границами.
На изображении ниже показан пример применения этой аугментации.
Оттенки серого#
Преобразование ToGray в Albumentations переводит изображение в оттенки серого, преобразуя его в одноканальный формат и при необходимости копируя этот канал, чтобы получить заданное число выходных каналов. Для расчета яркости в градациях серого можно использовать разные методы: от простого усреднения до более сложных методов, реалистично учитывающих восприятие контрастности и яркости.
Параметры и значения, используемые в этой интеграции:
-
num_output_channels: Задает число каналов выходного изображения. Если значение больше 1, одноканальное изображение в оттенках серого копируется, формируя многоканальное изображение. По умолчанию установлено значение 3, поэтому изображение в оттенках серого содержит три одинаковых канала.
-
method: Определяет метод преобразования в оттенки серого. Метод по умолчанию, "weighted_average", применяет формулу (0.299R + 0.587G + 0.114B), которая хорошо соответствует человеческому восприятию и создает естественный эффект оттенков серого. Другие варианты, например "from_lab", "desaturation", "average", "max" и "pca", позволяют создавать изображения в оттенках серого разными способами — с учетом требований к скорости, акценту на яркости или сохранению деталей.
-
p: Определяет частоту применения преобразования в оттенки серого. При p=0.01 вероятность преобразования каждого изображения составляет 1%, поэтому модель получает смесь цветных изображений и изображений в оттенках серого, что помогает ей лучше обобщать.
На изображении ниже показан пример применения этого преобразования в оттенки серого.
Адаптивное выравнивание гистограммы с ограничением контрастности (CLAHE)#
Преобразование CLAHE в Albumentations применяет адаптивное выравнивание гистограммы с ограничением контрастности (CLAHE) — метод повышения контрастности изображения путем выравнивания гистограммы в локальных областях (плитках), а не по всему изображению. CLAHE обеспечивает сбалансированное усиление контрастности и позволяет избежать чрезмерного увеличения контраста, которое может возникнуть при стандартном выравнивании гистограммы, особенно в изначально малоконтрастных областях.
Параметры и значения, используемые в этой интеграции:
-
clip_limit: Задает степень усиления контрастности. Значение по умолчанию — диапазон (1, 4); параметр определяет максимально допустимый контраст в каждой плитке. Более высокие значения усиливают контраст, но могут также добавить шум.
-
tile_grid_size: Задает размер сетки плиток, обычно в формате (строки, столбцы). Значение по умолчанию — (8, 8), то есть изображение делится на сетку 8x8. Плитки меньшего размера обеспечивают более локальную коррекцию, а плитки большего размера дают эффект, близкий к выравниванию по всему изображению.
-
p: Вероятность применения CLAHE. Здесь p=0.01: эффект усиления контрастности применяется только в 1% случаев, поэтому коррекция контрастности выполняется редко и лишь изредка разнообразит обучающие изображения.
На изображении ниже показан пример применения преобразования CLAHE.
Использование пользовательских преобразований Albumentations#
Стандартная интеграция с Albumentations предлагает хороший набор аугментаций, но для конкретных задач может потребоваться настроить преобразования. С Ultralytics YOLO26 ты можешь легко передавать пользовательские преобразования Albumentations через Python API с помощью параметра augmentations. Для примеров в этом разделе требуется Albumentations версии 1.4.22 или новее.
Как определить пользовательские преобразования#
Ты можешь определить собственный список преобразований Albumentations и передать его функции обучения. Это заменит стандартные преобразования Albumentations, сохранив активными все остальные аугментации YOLO (например, hsv_h, degrees, mosaic и т. д.).
Вот пример с более сложными преобразованиями:
import albumentations as A
from ultralytics import YOLO
# Загрузка модели
model = YOLO("yolo26n.pt")
# Определение пользовательских преобразований с использованием различных методов аугментации
custom_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(std_range=(0.0124, 0.0277), 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, p=0.5),
A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
# Имитация перекрытий
A.CoarseDropout(num_holes_range=(1, 8), hole_height_range=(8, 32), hole_width_range=(8, 32), fill=0, p=0.2),
]
# Обучение с пользовательскими преобразованиями
results = model.train(
data="coco8.yaml",
epochs=100,
imgsz=640,
augmentations=custom_transforms,
)Важные замечания#
При использовании пользовательских преобразований Albumentations учитывай следующие моменты:
- Конфигурация: Создавай объекты пользовательских преобразований через Python API. Сериализованные преобразования также можно передавать через CLI или файлы конфигурации YAML, в том числе при возобновлении обучения.
- Замена стандартных преобразований: Пользовательские преобразования полностью заменят стандартные преобразования Albumentations. Другие аугментации YOLO останутся активными.
- Обработка разметки: Пространственные преобразования, в том числе вложенные в
A.OneOfилиA.Compose, перемещают ограничивающие рамки, полигоны, ключевые точки, а также карты глубины или семантические маски вместе с изображением.A.RandomGridShuffleне сохраняет топологию полигонов или ключевых точек и вызывает ошибку для примеров сегментации, оценки позы и OBB. - Производительность: Некоторые преобразования требуют больших вычислительных ресурсов. Следи за скоростью обучения и при необходимости корректируй настройки.
- Совместимость с задачами: Пользовательские преобразования Albumentations подходят для обучения моделей детекции, сегментации, семантической сегментации, оценки глубины, оценки позы и OBB, но не для классификации, где используется другой конвейер аугментации.
Примеры использования пользовательских преобразований#
Для разных приложений подходят разные стратегии аугментации:
- Медицинская визуализация: Используй эластичные деформации, искажения сетки и специализированные шаблоны шума
- Аэрофотоснимки и спутниковые снимки: Применяй преобразования, имитирующие разные высоты, погодные условия и углы освещения
- Условия низкой освещённости: Добавляй шум и меняй яркость, чтобы обучать устойчивые модели для сложных условий освещения
- Промышленный контроль: Добавляй вариации текстур и имитацию дефектов для контроля качества
Полный список доступных преобразований и их параметров смотри в документации Albumentations.
Подробные примеры и рекомендации по использованию пользовательских преобразований Albumentations с YOLO26 смотри в руководстве по аугментации данных YOLO.
Продолжай изучать Albumentations#
Если хочешь узнать больше об Albumentations, ознакомься со следующими материалами: в них приведены подробные инструкции и примеры.
-
Документация Albumentations: В официальной документации описаны все поддерживаемые преобразования и продвинутые методы работы.
-
Руководство Ultralytics по Albumentations: Подробнее изучи функцию, обеспечивающую эту интеграцию.
-
Репозиторий Albumentations на GitHub: В репозитории есть примеры, результаты тестов производительности и обсуждения, которые помогут тебе начать настраивать аугментации.
Основные выводы#
В этом руководстве мы рассмотрели основные особенности Albumentations — отличной библиотеки Python для аугментации изображений. Мы обсудили широкий набор преобразований, высокую производительность и способы применения библиотеки в твоём следующем проекте на YOLO26.
Если хочешь узнать больше о других интеграциях Ultralytics YOLO26, загляни на нашу страницу с руководствами по интеграциям. Там ты найдёшь полезные материалы и рекомендации.
Часто задаваемые вопросы#
Albumentations легко интегрируется с YOLO26 и автоматически применяется во время обучения, если пакет установлен. Вот как начать:
# Установка необходимых пакетов # !pip install albumentations ultralytics from ultralytics import YOLO # Загрузка и обучение модели с автоматическими аугментациями model = YOLO("yolo26n.pt") model.train(data="coco8.yaml", epochs=100)Интеграция включает оптимизированные аугментации: размытие, медианное размытие, преобразование в оттенки серого и CLAHE. Вероятности их применения тщательно настроены для повышения качества модели.
Albumentations выделяется по нескольким причинам:
- Производительность: библиотека построена на OpenCV и NumPy и использует оптимизацию SIMD для высокой скорости
- Гибкость: поддерживает более 70 преобразований для аугментации на уровне пикселей, пространственных данных и смешивания
- Совместимость: легко работает с популярными фреймворками, такими как PyTorch и TensorFlow
- Надёжность: обширный набор тестов помогает предотвратить незаметное повреждение данных
- Простота использования: единый API для всех типов аугментации
Albumentations улучшает различные задачи компьютерного зрения, в том числе:
- Детекция объектов: повышает устойчивость модели к изменениям освещения, масштаба и ориентации
- Сегментация экземпляров: повышает точность предсказания масок благодаря разнообразным преобразованиям
- Оценка позы: помогает моделям адаптироваться к разным ракурсам и условиям освещения
- Детекция объектов с ориентированными ограничивающими рамками: добавляет вариации цвета и шума для аэрофотоснимков и изображений повёрнутых объектов
Разнообразные варианты аугментации делают библиотеку полезной для задач компьютерного зрения, где важна высокая устойчивость модели. В Ultralytics YOLO26 для обучения классификаторов используется собственный конвейер аугментации на основе torchvision, который не применяет преобразования Albumentations.