YOLO Vision 2026:

Методы предобработки размеченных данных компьютерного зрения#

Предобработка данных превращает необработанные размеченные изображения в чистые и согласованные входные данные, необходимые модели компьютерного зрения для качественного обучения. С Ultralytics YOLO26 основные операции над пикселями — преобразование в RGB, масштабирование до [0, 1] и изменение размера — выполняются автоматически внутри конвейера обучения, поэтому тебе остается правильно разделить набор данных, сбалансировать классы и выбрать аугментации. В этом руководстве рассматриваются основные методы: изменение размера, нормализация, разделение набора данных, аугментация данных и разведочный анализ данных (EDA).



Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀

Этот этап выполняется после того, как ты определил цели проекта и собрал и разметил данные, и занимает начальное место в рабочем процессе проекта компьютерного зрения.

Почему предобработка важна#

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

  • Шум: нерелевантные или случайные вариации в данных.
  • Несогласованность: различия в размерах, форматах и качестве изображений.
  • Дисбаланс: неравномерное распределение классов или категорий по набору данных.

Методы предобработки#

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

Изменение размера изображений#

Многим моделям требуется согласованный размер входных данных, поэтому изменение размера унифицирует изображения и снижает вычислительную сложность. Два распространенных метода интерполяции:

  • Билинейная интерполяция: сглаживает значения пикселей, вычисляя взвешенное среднее четырех ближайших пикселей.
  • Метод ближайшего соседа: копирует значение ближайшего пикселя без усреднения — работает быстрее, но создает более блочное изображение.

Библиотеки, такие как OpenCV и PIL (Pillow), предоставляют эти функции, но при использовании YOLO26 обычно не нужно изменять размер вручную. Аргумент imgsz обрабатывает это автоматически. На пути с квадратными входными данным фиксированного размера валидация и инференс вписывают изображения в imgsz × imgsz, например 640 × 640, сохраняя соотношение сторон и дополняя изображение серым цветом (значение 114). Большие изображения уменьшаются до нужного размера, а маленькие не увеличиваются, если масштабирование отключено. На стандартном пути обучения mosaic=1.0 вместо этого размещает четыре изображения на большем холсте и обрезает его до imgsz; после того как close_mosaic отключает мозаику на последних эпохах, изображения вписываются в нужный размер, а затем все еще подвергаются случайным преобразованиям, а не передаются без изменений. Прямоугольные батчи (rect=True) и multi_scale используют другие формы входных данных.

Нормализация значений пикселей#

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

  • Масштабирование min-max: масштабирует значения пикселей в диапазон от 0 до 1.
  • Нормализация по z-оценке: масштабирует значения пикселей на основе их среднего значения и стандартного отклонения.

YOLO26 автоматически выполняет нормализацию как часть конвейера предобработки: преобразует изображения в RGB и масштабирует значения пикселей в диапазон [0, 1], деля их на 255 (масштабирование min-max). По умолчанию YOLO не применяет нормализацию по среднему значению и стандартному отклонению в стиле ImageNet (z-оценку), поэтому выполнять нормализацию вручную не требуется.

Разделение набора данных#

Разделение данных на обучающую, валидационную и тестовую выборки позволяет оценивать модель на невидимых данных и измерять ее способность к обобщению. Распространенный вариант — 70% для обучения, 20% для валидации и 10% для тестирования. Такие инструменты, как scikit-learn или TensorFlow, упрощают эту задачу.

При разделении учитывай следующие моменты:

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

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

Аугментация набора данных#

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

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

Examples of data augmentation techniques including flips, rotations, scaling, and color adjustments applied to a sample image

В YOLO26 сила аугментации задается через аргументы обучения, передаваемые в model.train(), или через соответствующие флаги CLI, а не путем редактирования YAML-файла набора данных, в котором задаются такие метаданные, как пути, имена классов и разбиение. Единственное исключение — flip_idx: наборы данных для поз объявляют его в YAML-файле набора данных для сопоставления пар левых и правых ключевых точек, а YOLO полностью отключает fliplr и flipud, если этот параметр отсутствует. Встроенные аугментации включают:

  • Mosaic, MixUp и CutMix (mosaic, mixup, cutmix): объединяют несколько изображений в один обучающий пример.
  • Отражения (fliplr, flipud): отражают изображения по горизонтали или вертикали.
  • Геометрические преобразования (degrees, translate, scale, shear, perspective): поворачивают, сдвигают, масштабируют и деформируют изображения.
  • Изменение цветов HSV (hsv_h, hsv_s, hsv_v): изменяет оттенок, насыщенность и яркость.
  • Copy-paste (copy_paste): вставляет дополнительные копии сегментированных объектов, по умолчанию отражая их внутри того же изображения, или берет их из другого изображения с помощью copy_paste_mode=mixup.
  • Замена каналов (bgr): меняет порядок каналов RGB на BGR.
  • Преобразования для классификации (auto_augment, erasing): применяют автоматическую политику аугментации и случайное стирание при обучении классификатора.
Настройка силы аугментации при обучении
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Augmentation is configured with training arguments, not the dataset YAML
model.train(data="coco8.yaml", epochs=10, hsv_h=0.015, fliplr=0.5, mosaic=1.0, degrees=10.0)

Полный список аргументов аугментации и их значений по умолчанию см. в справочнике настроек аугментации и отдельном руководстве по аугментации данных YOLO. Если установлен пакет albumentations, YOLO также автоматически включает встроенные аугментации на основе Albumentations.

Пример: предобработка для обнаружения транспортных средств#

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

  • Изменение размера: ручная обработка не требуется — YOLO26 изменяет размер до imgsz во время обучения.
  • Нормализация: ручная обработка не требуется — YOLO26 автоматически масштабирует значения пикселей до [0, 1].
  • Разделение: раздели набор данных на 70% для обучения, 20% для валидации и 10% для тестирования, сохраняя согласованное распределение классов во всех выборках.
  • Аугментация: задай аргументы обучения, подходящие для дорожных сцен, например fliplr для инвариантности к направлению, hsv_v для освещения днем и ночью и mosaic для различной плотности объектов.

После принятия этих решений набор данных готов к разведочному анализу данных (EDA).

Разведочный анализ данных (EDA)#

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

Методы статистического EDA#

Статистический EDA начинается с базовых метрик — среднего значения, медианы, стандартного отклонения и диапазона, — вычисленных для таких свойств, как распределение интенсивности пикселей. Они дают краткий обзор качества набора данных и позволяют заранее выявить аномалии.

Методы визуального EDA#

Визуализации выявляют закономерности, которые не видны в сводной статистике, например дисбаланс классов и выбросы. К распространенным инструментам относятся:

  • Гистограммы и диаграммы размаха: показывают распределение значений пикселей и выявляют выбросы в распределениях интенсивности или признаков.
  • Столбчатые диаграммы: выявляют дисбаланс классов, сравнивая количество примеров в каждом классе.
  • Диаграммы рассеяния: помогают исследовать взаимосвязи между признаками изображений или аннотациями.
  • Тепловые карты: визуализируют распределение интенсивности пикселей или пространственное распределение аннотаций по изображениям.

Ultralytics Platform для EDA#

Для проведения EDA без написания кода загрузи свой набор данных в Ultralytics Platform. Вкладка Charts набора данных автоматически создает основные визуализации EDA: распределение по выборкам, количество объектов в основных классах, гистограммы ширины и высоты изображений, а также двумерные тепловые карты позиций аннотаций и размеров изображений. На вкладке Images можно просматривать данные в виде сетки, компактного представления или таблицы с наложенными аннотациями, поэтому легко находить ошибочно размеченные примеры или несбалансированные классы без написания кода.

Заключение#

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

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

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

  • Настраивай аугментацию через аргументы обучения, а не через YAML-файл набора данных. Передай такие аргументы, как fliplr, mosaic, hsv_h и degrees, в model.train() (или используй соответствующие флаги CLI), чтобы задать вероятность и силу каждого преобразования. Они описаны в настройках аугментации и руководстве по аугментации данных YOLO. Исключение составляют наборы данных для поз: их сопоставление ключевых точек flip_idx хранится в YAML-файле набора данных, а без него отражения отключены.

  • Два наиболее распространенных метода — масштабирование min-max (масштабирование пикселей в диапазон от 0 до 1) и нормализация по z-оценке (масштабирование на основе среднего значения и стандартного отклонения). YOLO26 автоматически применяет масштабирование min-max — преобразует изображения в RGB и делит значения пикселей на 255, — поэтому нормализовать данные вручную не нужно. По умолчанию нормализация по z-оценке не применяется.

  • Распространенная практика — выделить 70% для обучения, 20% для валидации и 10% для тестирования. Сохраняй распределение классов во всех трех выборках и избегай утечки данных, применяя аугментацию только к обучающей выборке после разделения. Такие инструменты, как scikit-learn или TensorFlow, эффективно выполняют разделение. Информацию о подготовке набора данных на предыдущих этапах см. в руководстве по сбору и разметке данных.

  • Да. Аргумент imgsz задает целевой размер входных данных без ручной обработки. На пути с квадратными входными данными фиксированного размера валидация и инференс вписывают изображения в указанную форму, сохраняя соотношение сторон; большие изображения уменьшаются до нужного размера, а маленькие не увеличиваются, если масштабирование отключено. Во время обучения стандартная мозаичная аугментация достигает целевого размера другим способом: размещает четыре изображения рядом и обрезает результат. Прямоугольные батчи (rect=True) и multi_scale используют другие формы входных данных. Подробнее см. в документации по обучению моделей.

Комментарии