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

Введение

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



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

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

Важность предварительной обработки данных

Мы уже тщательно собираем и аннотируем наши данные, учитывая множество факторов. Тогда что делает предварительную обработку данных такой важной для проекта компьютерного зрения? Что ж, предварительная обработка нужна для приведения данных в подходящий для обучения формат, что снижает вычислительную нагрузку и помогает повысить производительность модели. Вот некоторые распространенные проблемы в «сырых» данных, которые решает предварительная обработка:

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

Методы предварительной обработки данных

Одним из первых и важнейших шагов в предварительной обработке данных является изменение размера (resizing). Некоторые модели разработаны для работы с переменными размерами входных данных, но многим требуется постоянный размер. Изменение размера делает изображения единообразными и снижает вычислительную сложность.

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

Ты можешь изменять размер своих изображений, используя следующие методы:

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

Чтобы упростить задачу изменения размера, ты можешь воспользоваться следующими инструментами:

  • OpenCV: Популярная библиотека компьютерного зрения с широким набором функций для обработки изображений.
  • PIL (Pillow): Библиотека Python Imaging Library для открытия, манипулирования и сохранения файлов изображений.

Что касается YOLO26, параметр 'imgsz' во время обучения модели позволяет использовать гибкие размеры входных данных. При установке определенного размера, например 640, модель изменит размер входных изображений так, чтобы их наибольшая сторона составляла 640 пикселей, сохраняя при этом исходное соотношение сторон.

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

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

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

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

Что касается YOLO26, нормализация бесшовно обрабатывается как часть конвейера предварительной обработки во время обучения модели. YOLO26 автоматически выполняет несколько этапов предварительной обработки, включая преобразование в RGB, масштабирование значений пикселей в диапазон [0, 1] и нормализацию с использованием предопределенных значений среднего и стандартного отклонения.

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

Как только ты очистил данные, ты готов к разделению набора данных. Разделение данных на обучающую, валидационную и тестовую выборки необходимо, чтобы убедиться, что модель можно оценить на «невидимых» данных для проверки ее способности к обобщению. Стандартное разделение — 70% на обучение, 20% на валидацию и 10% на тестирование. Существуют различные инструменты и библиотеки, которые ты можешь использовать для разделения данных, такие как scikit-learn или TensorFlow.

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

  • Сохранение распределения данных: Убедись, что распределение классов сохраняется во всех трех выборках: обучающей, валидационной и тестовой.
  • Предотвращение утечки данных: Как правило, аугментация данных выполняется после разделения набора данных. Аугментацию и любую другую предварительную обработку следует применять только к обучающей выборке, чтобы предотвратить влияние данных из валидационной или тестовой выборок на обучение модели.
  • Балансировка классов: Для несбалансированных наборов данных рассмотри такие методы, как перевыборка (oversampling) миноритарного класса или недовыборка (under-sampling) мажоритарного класса в обучающей выборке.

Что такое аугментация данных?

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

Вот еще несколько преимуществ аугментации данных:

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

Методы аугментации данных

Распространенные методы аугментации включают отражение, поворот, масштабирование и настройку цвета. Несколько библиотек, таких как Albumentations, Imgaug и ImageDataGenerator из TensorFlow, могут генерировать такие аугментации.

Overview of Data Augmentations

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

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

  • Случайное кадрирование (Random Crops)
  • Отражение (Flipping): Изображения можно отражать по горизонтали или вертикали.
  • Поворот (Rotation): Изображения можно поворачивать на определенные углы.
  • Искажение (Distortion)

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

Пример предварительной обработки

Давай рассмотрим проект по разработке модели для обнаружения и классификации различных типов транспортных средств на изображениях трафика с использованием YOLO26. Мы собрали изображения трафика и аннотировали их с помощью ограничивающих рамок (bbox) и меток.

Вот как будет выглядеть каждый этап предварительной обработки для этого проекта:

  • Изменение размера изображений: Поскольку YOLO26 поддерживает гибкие размеры входных данных и выполняет изменение размера автоматически, ручное изменение размера не требуется. Модель настроит размер изображения в соответствии с указанным параметром 'imgsz' во время обучения.
  • Нормализация значений пикселей: YOLO26 автоматически нормализует значения пикселей до диапазона от 0 до 1 во время предварительной обработки, поэтому это не требуется.
  • Разделение набора данных: Раздели набор данных на обучающую (70%), валидационную (20%) и тестовую (10%) выборки, используя инструменты вроде scikit-learn.
  • Аугментация данных: Измени файл конфигурации набора данных (.yaml), чтобы включить методы аугментации, такие как случайное кадрирование, горизонтальное отражение и настройка яркости.

Эти шаги гарантируют, что набор данных подготовлен без каких-либо потенциальных проблем и готов к разведочному анализу данных (EDA).

Методы разведочного анализа данных (EDA)

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

Статистические методы EDA

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

Визуальные методы EDA

Визуализации являются ключевыми в EDA для наборов данных изображений. Например, анализ дисбаланса классов — еще один жизненно важный аспект EDA. Он помогает определить, представлены ли определенные классы в наборе данных недостаточно полно. Визуализация распределения различных классов или категорий изображений с помощью гистограмм может быстро выявить любые дисбалансы. Точно так же выбросы можно идентифицировать с помощью инструментов визуализации, таких как ящики с усами (box plots), которые подсвечивают аномалии в интенсивности пикселей или распределении признаков. Обнаружение выбросов предотвращает искажение результатов необычными точками данных.

Общие инструменты для визуализации включают:

  • Гистограммы и ящики с усами: Полезны для понимания распределения значений пикселей и идентификации выбросов.
  • Диаграммы рассеяния: Полезны для исследования взаимосвязей между признаками изображения или аннотациями.
  • Тепловые карты: Эффективны для визуализации распределения интенсивностей пикселей или пространственного распределения аннотированных признаков внутри изображений.

Использование Ultralytics Platform для EDA

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

Свяжись и общайся

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

Каналы для связи с сообществом

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

Официальная документация

  • Документация Ultralytics YOLO26: Обратись к официальной документации YOLO26 для получения подробных руководств и ценных инсайтов по многочисленным задачам и проектам компьютерного зрения.

Твой набор данных готов!

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

Часто задаваемые вопросы (FAQ)

В чем важность предварительной обработки данных в проектах по компьютерному зрению?

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

Как я могу использовать Ultralytics YOLO для аугментации данных?

Для аугментации данных с помощью Ultralytics YOLO26 тебе нужно изменить файл конфигурации набора данных (.yaml). В этом файле ты можешь указать различные методы аугментации, такие как случайное кадрирование, горизонтальные отражения и настройка яркости. Это можно эффективно сделать с помощью конфигураций обучения, объясненных здесь. Аугментация данных помогает создать более устойчивый набор данных, уменьшить переобучение и улучшить обобщение модели.

Какие методы нормализации данных лучше всего подходят для данных компьютерного зрения?

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

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

Для YOLO26 нормализация обрабатывается автоматически, включая преобразование в RGB и масштабирование значений пикселей. Узнай об этом больше в разделе обучения модели.

Как мне следует разделять мой аннотированный набор данных для обучения?

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

Могу ли я работать с изображениями разного размера в YOLO26 без ручного изменения размера?

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

Комментарии