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