Ultralytics YOLO27:
Get Started

Расширь набор данных с помощью Albumentations для обучения YOLO26#

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

С помощью Albumentations ты можешь дополнить обучающие данные YOLO26 геометрическими преобразованиями и корректировкой цветов. В этой статье мы посмотрим, как Albumentations может улучшить процесс аугментации данных и повысить эффективность твоих проектов YOLO26. Начнем!

Albumentations для аугментации изображений#

Albumentations — это библиотека с открытым исходным кодом для аугментации изображений, созданная в июне 2018 года. Она упрощает и ускоряет аугментацию изображений в задачах компьютерного зрения. Библиотека разработана с учетом производительности и гибкости и поддерживает множество методов аугментации: от простых преобразований, таких как поворот и отражение, до более сложной коррекции яркости и контрастности. Albumentations помогает разработчикам создавать разнообразные и содержательные наборы данных для задач классификации изображений, обнаружения объектов и сегментации.

С помощью Albumentations можно легко применять аугментации к изображениям, маскам сегментации, ограничивающим рамкам и ключевым точкам, преобразуя все элементы набора данных согласованно. Библиотека без проблем работает с популярными фреймворками глубокого обучения, такими как PyTorch и TensorFlow, поэтому подходит для самых разных проектов.

Кроме того, Albumentations отлично подходит для аугментации как небольших наборов данных, так и масштабных задач компьютерного зрения. Библиотека обеспечивает быструю и эффективную обработку, сокращая время подготовки данных. При этом она помогает повысить эффективность модели, улучшая ее работу в реальных приложениях.

Ключевые возможности Albumentations#

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

  • Широкий выбор преобразований: Albumentations предлагает более 70 различных преобразований, включая геометрические изменения (например, поворот и отражение), коррекцию цветов (например, яркости и контрастности) и добавление шума (например, гауссовского). Множество вариантов позволяет создавать разнообразные и надежные обучающие наборы данных.

Albumentations augmentation examples

  • Высокая производительность: Albumentations построена на OpenCV и NumPy и использует передовые методы оптимизации, такие как SIMD (одна инструкция, несколько данных), которые позволяют одновременно обрабатывать несколько элементов данных и ускоряют обработку. Библиотека быстро справляется с большими наборами данных, что делает ее одним из самых быстрых решений для аугментации изображений.

  • Три уровня аугментации: 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%. Низкая вероятность позволяет изредка размывать изображения, немного повышая разнообразие и помогая модели лучше обобщать, но не допуская чрезмерного размытия.

Albumentations Blur augmentation result

Медианное размытие#

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

Параметры и значения, используемые в этой интеграции:

  • blur_limit: Этот параметр задает максимальный размер ядра размытия. В этой интеграции по умолчанию используется диапазон (3, 7): размер ядра размытия случайным образом выбирается от 3 до 7 пикселей, причем допускаются только нечетные значения для правильного выравнивания.

  • p: Задает вероятность применения медианного размытия. Здесь p=0.01, поэтому для каждого изображения вероятность применения преобразования составляет 1%. Низкая вероятность обеспечивает редкое применение медианного размытия и помогает модели лучше обобщать за счет периодического использования изображений с уменьшенным шумом и сохраненными границами.

На изображении ниже показан пример применения этой аугментации.

Albumentations MedianBlur augmentation

Оттенки серого#

Преобразование 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%, поэтому модель получает смесь цветных изображений и изображений в оттенках серого, что помогает ей лучше обобщать.

На изображении ниже показан пример применения этого преобразования в оттенки серого.

Albumentations grayscale conversion

Адаптивное выравнивание гистограммы с ограничением контрастности (CLAHE)#

Преобразование CLAHE в Albumentations применяет адаптивное выравнивание гистограммы с ограничением контрастности (CLAHE) — метод повышения контрастности изображения путем выравнивания гистограммы в локальных областях (плитках), а не по всему изображению. CLAHE обеспечивает сбалансированное усиление контрастности и позволяет избежать чрезмерного увеличения контраста, которое может возникнуть при стандартном выравнивании гистограммы, особенно в изначально малоконтрастных областях.

Параметры и значения, используемые в этой интеграции:

  • clip_limit: Задает степень усиления контрастности. Значение по умолчанию — диапазон (1, 4); параметр определяет максимально допустимый контраст в каждой плитке. Более высокие значения усиливают контраст, но могут также добавить шум.

  • tile_grid_size: Задает размер сетки плиток, обычно в формате (строки, столбцы). Значение по умолчанию — (8, 8), то есть изображение делится на сетку 8x8. Плитки меньшего размера обеспечивают более локальную коррекцию, а плитки большего размера дают эффект, близкий к выравниванию по всему изображению.

  • p: Вероятность применения CLAHE. Здесь p=0.01: эффект усиления контрастности применяется только в 1% случаев, поэтому коррекция контрастности выполняется редко и лишь изредка разнообразит обучающие изображения.

На изображении ниже показан пример применения преобразования CLAHE.

Albumentations CLAHE contrast enhancement

Использование пользовательских преобразований 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 — отличной библиотеки 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 выделяется по нескольким причинам:

    1. Производительность: библиотека построена на OpenCV и NumPy и использует оптимизацию SIMD для высокой скорости
    2. Гибкость: поддерживает более 70 преобразований для аугментации на уровне пикселей, пространственных данных и смешивания
    3. Совместимость: легко работает с популярными фреймворками, такими как PyTorch и TensorFlow
    4. Надёжность: обширный набор тестов помогает предотвратить незаметное повреждение данных
    5. Простота использования: единый API для всех типов аугментации
  • Albumentations улучшает различные задачи компьютерного зрения, в том числе:

    Разнообразные варианты аугментации делают библиотеку полезной для задач компьютерного зрения, где важна высокая устойчивость модели. В Ultralytics YOLO26 для обучения классификаторов используется собственный конвейер аугментации на основе torchvision, который не применяет преобразования Albumentations.

Комментарии