YOLO Vision 2026:

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

Предварительная обработка данных превращает сырые, аннотированные изображения в чистые и согласованные входные данные, необходимые модели computer vision для качественного обучения. С помощью 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 во время обучения модели берет это на себя: при установке значения вроде 640 YOLO масштабирует каждое изображение так, чтобы его наибольшая сторона составляла 640 пикселей с сохранением соотношения сторон, а затем дополняет меньшую сторону (по умолчанию серым цветом, значение 114) до квадратного входа 640 × 640.

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

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

  • Min-Max масштабирование: Масштабирует значения пикселей в диапазон от 0 до 1.
  • Z-score нормализация: Масштабирует значения пикселей на основе их среднего значения и стандартного отклонения.

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

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

Разделение данных на обучающую, валидационную и тестовую выборки позволяет оценить модель на новых данных и измерить ее способность к обобщению. Распространенное соотношение — 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-файла датасета, который определяет метаданные датасета, такие как пути, имена классов и разделения. Встроенные аугментации включают:

  • Mosaic, MixUp и CutMix (mosaic, mixup, cutmix): объединяют несколько изображений в один обучающий пример.
  • Отражения (fliplr, flipud): зеркальное отображение изображений по горизонтали или вертикали.
  • Геометрические преобразования (degrees, translate, scale, shear, perspective): вращение, сдвиг, масштабирование и искривление изображений.
  • Цветовой джиттер HSV (hsv_h, hsv_s, hsv_v): изменение оттенка, насыщенности и яркости.
  • Копирование-вставка (Copy-paste) (copy_paste): вставка объектов между изображениями для сегментации.
Установка силы аугментации при обучении
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#

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

  • Гистограммы и ящичковые диаграммы (box plots): показывают распределение значений пикселей и помечают выбросы в интенсивности или распределении признаков.
  • Столбчатые диаграммы (bar charts): выявляют дисбаланс классов, сравнивая количество примеров каждого класса.
  • Точечные диаграммы (scatter plots): позволяют изучить взаимосвязи между признаками изображений или аннотациями.
  • Тепловые карты (heatmaps): визуализируют распределение интенсивности пикселей или пространственное распределение аннотаций по изображениям.

Платформа Ultralytics для EDA#

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

Заключение#

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

FAQ#

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

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

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

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

  • Да. Аргумент imgsz изменяет размер изображений во время обучения и инференса так, чтобы их наибольшее измерение соответствовало указанному размеру (например, 640 пикселей) с сохранением пропорций, а затем дополняет меньшую сторону. Тебе не нужно самостоятельно изменять размер изображений — подробности см. в документации по обучению моделей.

Комментарии