Link to this sectionМетоды предобработки аннотированных данных компьютерного зрения#
Предобработка данных превращает «сырые», аннотированные изображения в чистые и единообразные входные данные, необходимые модели компьютерного зрения для качественного обучения. В Ultralytics YOLO26 основные операции с пикселями — преобразование в RGB, масштабирование до [0, 1] и изменение размера — выполняются автоматически в процессе обучения, поэтому тебе остается только правильно разделить датасет, сбалансировать классы и выбрать аугментации. Это руководство охватывает основные методы: изменение размера, нормализацию, разделение датасета, аугментацию данных и исследовательский анализ данных (EDA).
Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀
Этот этап следует за определением целей твоего проекта и сбором и аннотированием данных; он находится в самом начале рабочего процесса проекта компьютерного зрения.
Link to this sectionПочему важна предобработка#
Предобработка приводит твои данные к формату, который снижает вычислительную нагрузку и улучшает работу модели. Она позволяет решить три типичные проблемы «сырых» данных:
- Шум: нерелевантные или случайные отклонения в данных.
- Несогласованность: Различия в размерах, форматах и качестве изображений.
- Дисбаланс: неравномерное распределение классов или категорий по датасету.
Link to this sectionМетоды предобработки#
Основные методы — это изменение размера, нормализация, разделение датасета и аугментация. В YOLO26 первые два выполняются автоматически, а при разделении и аугментации твои решения имеют решающее значение.
Link to this sectionИзменение размера изображений#
Многие модели требуют постоянного размера входных данных, поэтому изменение размера делает изображения единообразными и снижает вычислительную сложность. Два распространенных метода интерполяции:
- Билинейная интерполяция: сглаживает значения пикселей, беря взвешенное среднее четырех ближайших пикселей.
- Метод ближайшего соседа: копирует значение ближайшего пикселя без усреднения — это быстрее, но дает более «блочное» изображение.
Библиотеки, такие как OpenCV и PIL (Pillow), предоставляют эти функции, но в YOLO26 тебе, как правило, не нужно изменять размер вручную. Аргумент imgsz во время обучения модели берет это на себя: при установке значения, например 640, YOLO масштабирует каждое изображение так, чтобы его наибольшая сторона составляла 640 пикселей, сохраняя соотношение сторон, а затем дополняет более короткую сторону (по умолчанию серым цветом, значение 114) до квадратного входа 640 × 640.
Link to this sectionНормализация значений пикселей#
Нормализация масштабирует значения пикселей до стандартного диапазона, что помогает модели быстрее сходиться во время обучения. Два распространенных метода:
- Min-Max масштабирование: Масштабирует значения пикселей в диапазон от 0 до 1.
- Z-score нормализация: Масштабирует значения пикселей на основе их среднего значения и стандартного отклонения.
YOLO26 выполняет нормализацию автоматически как часть конвейера предобработки: преобразует изображения в RGB и масштабирует значения пикселей до диапазона [0, 1] путем деления на 255 (min-max масштабирование). По умолчанию YOLO не применяет нормализацию по среднему/стандартному отклонению (z-оценка) в стиле ImageNet, поэтому ручной шаг нормализации не требуется.
Link to this sectionРазделение набора данных#
Разделение данных на обучающую, валидационную и тестовую выборки позволяет оценивать модель на новых данных и измерять ее способность к обобщению. Распространенное разделение — 70% для обучения, 20% для валидации и 10% для тестирования. Инструменты вроде scikit-learn или TensorFlow упрощают эту задачу.
Учитывай следующее при разделении:
- Сохраняй распределение классов: убедись, что каждый класс представлен пропорционально в обучающей, валидационной и тестовой выборках.
- Балансируй классы: для несбалансированных датасетов рассмотри возможность оверсэмплинга (увеличения) редкого класса или андерсэмплинга (уменьшения) мажоритарного класса — только внутри обучающей выборки.
Разделяй датасет до применения любой аугментации или другой предобработки и применяй эти преобразования только к обучающей выборке. Аугментация до разделения позволяет информации из валидационных или тестовых изображений влиять на обучение, что приводит к обманчиво высоким результатам, которые резко падают при работе с реальными данными.
Link to this sectionАугментация датасета#
Аугментация данных искусственно увеличивает размер датасета путем создания измененных версий существующих изображений. Это помогает уменьшить переобучение и улучшить обобщение, давая ряд преимуществ:
- Более устойчивые модели: вариации освещенности, ориентации и масштаба делают модель устойчивой к искажениям в реальном мире.
- Экономическая эффективность: ты расширяешь обучающую выборку без необходимости сбора и разметки новых данных.
- Лучшее использование данных: каждое аннотированное изображение дает множество вариаций для обучения.
В YOLO26 аугментация управляется через аргументы обучения, передаваемые в model.train() или соответствующие флаги CLI — а не через редактирование YAML-файла датасета, который определяет метаданные (пути, имена классов и разделения). Встроенные аугментации включают:
- Mosaic, MixUp и CutMix (
mosaic,mixup,cutmix): объединение нескольких изображений в один обучающий образец. - Отражения (
fliplr,flipud): зеркальное отображение изображений по горизонтали или вертикали. - Геометрические преобразования (
degrees,translate,scale,shear,perspective): поворот, сдвиг, масштабирование и искажение изображений. - HSV color jitter (
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.
Link to this sectionКейс: предобработка для обнаружения транспортных средств#
Рассмотрим проект по обнаружению и классификации транспортных средств на изображениях дорожного движения с помощью YOLO26, начиная с изображений, аннотированных ограничивающими рамками и метками. Вот как выглядит каждое решение по предобработке:
- Изменение размера: никакой ручной работы — YOLO26 изменяет размер до
imgszво время обучения. - Нормализация: никакой ручной работы — YOLO26 автоматически масштабирует значения пикселей до
[0, 1]. - Разделение: раздели датасет на 70% для обучения, 20% для валидации и 10% для тестирования, сохраняя распределение классов одинаковым во всех частях.
- Аугментация: установи аргументы обучения, подходящие для дорожных сцен — например,
fliplrдля инвариантности к направлению,hsv_vдля дневного/ночного освещения иmosaicдля разной плотности объектов.
После принятия этих решений датасет готов к исследовательскому анализу данных (EDA).
Link to this sectionИсследовательский анализ данных (EDA)#
EDA использует статистику и визуализацию для выявления паттернов и распределений в твоих данных, помогая заметить проблемы, такие как дисбаланс классов или выбросы, до начала обучения.
Link to this sectionСтатистические методы EDA#
Статистический EDA начинается с базовых метрик — среднего, медианы, стандартного отклонения и диапазона — вычисленных для таких свойств, как распределение интенсивности пикселей. Это дает быстрый обзор качества твоего датасета и позволяет выявить неоднородности на раннем этапе.
Link to this sectionВизуальные методы EDA#
Визуализация выявляет паттерны, которые пропускает сводная статистика, такие как дисбаланс классов и выбросы. Распространенные инструменты включают:
- Гистограммы и ящичковые диаграммы (box plots): показывают распределение значений пикселей и помечают выбросы в интенсивности или распределении признаков.
- Столбчатые диаграммы (bar charts): выявляют дисбаланс классов, сравнивая количество примеров каждого класса.
- Точечные диаграммы (scatter plots): позволяют изучить взаимосвязи между признаками изображений или аннотациями.
- Тепловые карты (heatmaps): визуализируют распределение интенсивности пикселей или пространственное распределение аннотаций по изображениям.
Link to this sectionПлатформа Ultralytics для EDA#
Для no-code подхода к EDA загрузи свой датасет на Ultralytics Platform. Вкладка Charts датасета автоматически генерирует ключевые визуализации EDA: распределение разделения, количество объектов по классам, гистограммы ширины/высоты изображений и 2D-тепловые карты позиций аннотаций и размеров изображений. Вкладка Images позволяет просматривать данные в режиме сетки, компактном или табличном виде с наложенными аннотациями, что облегчает поиск ошибочно размеченных примеров или несбалансированных классов без написания кода.
Link to this sectionЗаключение#
Правильно разделенные, нормализованные и дополненные данными наборы уменьшают шум и улучшают обобщение, превращая «сырую» коллекцию изображений в надежный обучающий датасет. Когда датасет предобработан, следующим шагом будет обучение модели. Если в процессе возникают вопросы, задавай их сообществу в репозитории Ultralytics на GitHub или на сервере Ultralytics в Discord.
Link to this sectionFAQ#
Link to this sectionПочему предобработка данных важна в проектах компьютерного зрения?#
Предобработка гарантирует, что твои данные чисты, согласованы и имеют формат, оптимизированный для обучения. Устраняя шум, несоответствия и дисбаланс классов в исходных данных, такие этапы, как изменение размера, нормализация, аугментация и разделение датасета, уменьшают вычислительную нагрузку и улучшают производительность модели. Посмотри этапы проекта компьютерного зрения, чтобы узнать, как это вписывается в общий рабочий процесс.
Link to this sectionКак использовать Ultralytics YOLO для аугментации данных?#
Настраивай аугментацию через аргументы обучения, а не через YAML датасета. Передавай аргументы, такие как fliplr, mosaic, hsv_h и degrees, в model.train() (или соответствующие флаги CLI), чтобы задать вероятность и силу каждого преобразования. Они определены в настройках аугментации и объяснены в руководстве по аугментации данных YOLO.
Link to this sectionКакие методы нормализации лучше всего подходят для данных компьютерного зрения?#
Два наиболее распространенных метода — это min-max масштабирование (приведение пикселей к диапазону от 0 до 1) и z-score нормализация (масштабирование на основе среднего значения и стандартного отклонения). YOLO26 автоматически применяет min-max масштабирование — преобразуя изображения в RGB и деля значения пикселей на 255 — поэтому тебе не нужно выполнять нормализацию вручную. По умолчанию нормализация z-score не применяется.
Link to this sectionКак мне разделить мой аннотированный набор данных для обучения?#
Общая практика — это разделение 70% на обучение, 20% на валидацию и 10% на тестирование. Поддерживай распределение классов во всех трех выборках и избегай утечки данных, применяя аугментацию только к обучающей выборке после разделения. Инструменты вроде scikit-learn или TensorFlow эффективно справляются с разделением. См. руководство по сбору и аннотированию данных для подготовки датасета.
Link to this sectionМожет ли YOLO26 работать с изображениями разного размера без изменения их размера вручную?#
Да. Аргумент imgsz изменяет размер изображений во время обучения и вывода так, чтобы их наибольшая сторона соответствовала заданному размеру (например, 640 пикселей), сохраняя соотношение сторон, а затем дополняет более короткую сторону. Тебе не нужно изменять размер изображений самостоятельно — подробности смотри в документации по обучению модели.