Методы предобработки аннотированных данных компьютерного зрения#
Предварительная обработка данных превращает сырые, аннотированные изображения в чистые и согласованные входные данные, необходимые модели 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 делают эту задачу простой.
Учитывай следующее при разделении:
- Сохраняй распределение классов: убедись, что каждый класс представлен пропорционально в обучающей, валидационной и тестовой выборках.
- Балансируй классы: для несбалансированных датасетов рассмотри возможность оверсэмплинга (увеличения) редкого класса или андерсэмплинга (уменьшения) мажоритарного класса — только внутри обучающей выборки.
Разделяй датасет до применения любой аугментации или другой предобработки и применяй эти преобразования только к обучающей выборке. Аугментация до разделения позволяет информации из валидационных или тестовых изображений влиять на обучение, что приводит к обманчиво высоким результатам, которые резко падают при работе с реальными данными.
Аугментация датасета#
Аугментация данных искусственно увеличивает размер датасета за счет создания измененных версий существующих изображений. Она помогает уменьшить переобучение и улучшает способность к обобщению, обладая рядом преимуществ:
- Более устойчивые модели: вариации освещенности, ориентации и масштаба делают модель устойчивой к искажениям в реальном мире.
- Экономическая эффективность: ты расширяешь обучающую выборку без необходимости сбора и разметки новых данных.
- Лучшее использование данных: каждое аннотированное изображение дает множество вариаций для обучения.
В 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 пикселей) с сохранением пропорций, а затем дополняет меньшую сторону. Тебе не нужно самостоятельно изменять размер изображений — подробности см. в документации по обучению моделей.