Методы предварительной обработки данных для аннотированных данных компьютерного зрения
Введение
После того, как вы определили цели вашего проекта в области компьютерного зрения и собрали и аннотировали данные, следующим шагом является предварительная обработка аннотированных данных и подготовка их к обучению модели. Чистые и согласованные данные жизненно важны для создания модели, которая хорошо работает.
Смотреть: Как использовать предварительную обработку и аугментацию данных для повышения точности модели в реальных сценариях 🚀
Предварительная обработка — это этап рабочего процесса проекта в области компьютерного зрения, который включает изменение размера изображений, нормализацию значений пикселей, увеличение набора данных и разделение данных на наборы для обучения, проверки и тестирования. Давайте рассмотрим основные методы и лучшие практики для очистки ваших данных!
Важность предварительной обработки данных
Мы уже тщательно собираем и аннотируем наши данные, учитывая множество соображений. Тогда почему предварительная обработка данных так важна для проекта в области компьютерного зрения? Дело в том, что предварительная обработка данных заключается в приведении ваших данных в подходящий формат для обучения, что снижает вычислительную нагрузку и помогает улучшить производительность модели. Вот некоторые распространенные проблемы в необработанных данных, которые решает предварительная обработка:
- Шум: Неуместные или случайные отклонения в данных.
- Несогласованность: Различия в размерах, форматах и качестве изображений.
- Дисбаланс: Неравномерное распределение классов или категорий в наборе данных.
Методы предварительной обработки данных
Одним из первых и важнейших шагов в предварительной обработке данных является изменение размера. Некоторые модели предназначены для обработки входных данных переменного размера, но многим моделям требуется согласованный размер входных данных. Изменение размера изображений делает их однородными и снижает вычислительную сложность.
Изменение размера изображений
Вы можете изменить размер изображений, используя следующие методы:
- Билинейная интерполяция: Сглаживает значения пикселей, беря средневзвешенное значение четырех ближайших значений пикселей.
- Метод ближайшего соседа: Присваивает ближайшее значение пикселя без усреднения, что приводит к блочному изображению, но более быстрым вычислениям.
Чтобы упростить задачу изменения размера, вы можете использовать следующие инструменты:
- OpenCV: Популярная библиотека компьютерного зрения с обширными функциями для обработки изображений.
- PIL (Pillow): Библиотека обработки изображений на python для открытия, обработки и сохранения файлов изображений.
Что касается YOLO11, параметр 'imgsz' во время обучения модели обеспечивает гибкость размеров входных данных. При установке определенного размера, например 640, модель изменит размер входных изображений так, чтобы их наибольшая размерность составляла 640 пикселей, сохраняя при этом исходное соотношение сторон.
Оценив конкретные потребности вашей модели и набора данных, вы можете определить, является ли изменение размера необходимым шагом предварительной обработки или ваша модель может эффективно обрабатывать изображения различных размеров.
Нормализация значений пикселей
Другой метод предварительной обработки — нормализация. Нормализация масштабирует значения пикселей до стандартного диапазона, что помогает ускорить сходимость во время обучения и повышает производительность модели. Вот некоторые распространенные методы нормализации:
- Min-Max Scaling: Масштабирует значения пикселей в диапазоне от 0 до 1.
- Z-Score Normalization: Масштабирует значения пикселей на основе их среднего значения и стандартного отклонения.
Что касается YOLO11, нормализация легко обрабатывается как часть конвейера предварительной обработки во время обучения модели. YOLO11 автоматически выполняет несколько этапов предварительной обработки, включая преобразование в RGB, масштабирование значений пикселей в диапазон [0, 1] и нормализацию с использованием предопределенных средних значений и значений стандартного отклонения.
Разделение набора данных
После очистки данных вы готовы разделить набор данных. Разделение данных на наборы для обучения, проверки и тестирования выполняется для того, чтобы модель можно было оценить на невидимых данных для оценки ее обобщающей способности. Общее разделение составляет 70% для обучения, 20% для проверки и 10% для тестирования. Существуют различные инструменты и библиотеки, которые можно использовать для разделения данных, такие как scikit-learn или TensorFlow.
Учитывайте следующее при разделении набора данных:
- Поддержание распределения данных: Убедитесь, что распределение классов поддерживается в наборах для обучения, проверки и тестирования.
- Предотвращение утечки данных: Как правило, увеличение данных выполняется после разделения набора данных. Увеличение данных и любая другая предварительная обработка должны применяться только к обучающему набору, чтобы предотвратить влияние информации из наборов валидации или тестирования на обучение модели.
- Балансировка классов: Для несбалансированных наборов данных рассмотрите такие методы, как передискретизация миноритарного класса или недодискретизация мажоритарного класса в обучающем наборе.
Что такое аугментация данных?
Наиболее часто обсуждаемым этапом предварительной обработки данных является увеличение данных. Увеличение данных искусственно увеличивает размер набора данных путем создания измененных версий изображений. Увеличивая свои данные, вы можете уменьшить переобучение и улучшить обобщение модели.
Вот некоторые другие преимущества увеличения данных:
- Создает более надежный набор данных: Аугментация данных может сделать модель более устойчивой к вариациям и искажениям во входных данных. Это включает в себя изменения освещения, ориентации и масштаба.
- Экономически выгодно: Аугментация данных - это экономически эффективный способ увеличить объем данных для обучения без сбора и маркировки новых данных.
- Более эффективное использование данных: Каждая доступная точка данных используется с максимальной отдачей за счет создания новых вариаций.
Методы аугментации данных
Общие методы расширения включают в себя переворот, вращение, масштабирование и корректировку цвета. Несколько библиотек, такие как Albumentations, Imgaug и ImageDataGenerator TensorFlow, могут генерировать эти расширения.
Что касается YOLO11, вы можете дополнить свой собственный набор данных, изменив файл конфигурации набора данных, файл .yaml. В этом файле вы можете добавить раздел аугментации с параметрами, которые определяют, как вы хотите дополнить свои данные.
Репозиторий Ultralytics YOLO11 поддерживает широкий спектр аугментаций данных. Вы можете применять различные преобразования, такие как:
- Случайные вырезки
- Отражение: Изображения можно отражать по горизонтали или вертикали.
- Вращение: Изображения можно вращать на определенные углы.
- Искажение
Кроме того, вы можете регулировать интенсивность этих методов аугментации с помощью определенных параметров для создания большего разнообразия данных.
Пример предварительной обработки
Рассмотрим проект, направленный на разработку модели для обнаружения и классификации различных типов транспортных средств на изображениях дорожного движения с использованием YOLO11. Мы собрали изображения дорожного движения и аннотировали их ограничивающими рамками и метками.
Вот как будет выглядеть каждый шаг предварительной обработки для этого проекта:
- Изменение размера изображений: Поскольку YOLO11 обрабатывает гибкие размеры входных данных и автоматически изменяет размер, ручное изменение размера не требуется. Модель скорректирует размер изображения в соответствии с указанным параметром 'imgsz' во время обучения.
- Нормализация значений пикселей: YOLO11 автоматически нормализует значения пикселей в диапазоне от 0 до 1 во время предварительной обработки, поэтому это не требуется.
- Разделение набора данных: Разделите набор данных на обучающий (70%), проверочный (20%) и тестовый (10%) наборы, используя такие инструменты, как scikit-learn.
- Аугментация данных: Измените файл конфигурации набора данных (.yaml), чтобы включить методы аугментации данных, такие как случайные вырезки, горизонтальные отражения и корректировки яркости.
Эти шаги гарантируют, что набор данных подготовлен без каких-либо потенциальных проблем и готов к разведочному анализу данных (EDA).
Методы разведочного анализа данных
После предварительной обработки и аугментации вашего набора данных следующим шагом является получение информации с помощью разведочного анализа данных. EDA использует статистические методы и инструменты визуализации для понимания закономерностей и распределений в ваших данных. Вы можете выявить такие проблемы, как дисбаланс классов или выбросы, и принимать обоснованные решения о дальнейшей предварительной обработке данных или корректировке обучения модели.
Статистические методы EDA
Статистические методы часто начинаются с вычисления основных показателей, таких как среднее значение, медиана, стандартное отклонение и диапазон. Эти показатели обеспечивают быстрый обзор свойств вашего набора изображений, таких как распределение интенсивности пикселей. Понимание этих основных статистических данных помогает вам понять общее качество и характеристики ваших данных, позволяя вам выявить любые отклонения на ранней стадии.
Визуальные методы EDA
Визуализации являются ключевыми в EDA для наборов изображений. Например, анализ дисбаланса классов является еще одним важным аспектом EDA. Он помогает определить, недостаточно ли представлены определенные классы в вашем наборе данных. Визуализация распределения различных классов или категорий изображений с помощью столбчатых диаграмм может быстро выявить любые дисбалансы. Аналогично, выбросы можно идентифицировать с помощью инструментов визуализации, таких как ящичные диаграммы, которые выделяют аномалии в интенсивности пикселей или распределении признаков. Обнаружение выбросов предотвращает искажение результатов необычными точками данных.
Общие инструменты для визуализации включают в себя:
- Гистограммы и ящичковые диаграммы: Полезны для понимания распределения значений пикселей и выявления выбросов.
- Диаграммы рассеяния: Полезны для изучения взаимосвязей между признаками изображений или аннотациями.
- Тепловые карты: Эффективны для визуализации распределения интенсивности пикселей или пространственного распределения аннотированных признаков на изображениях.
Использование Ultralytics Explorer для EDA
Примечание сообщества ⚠️
По состоянию на ultralytics>=8.3.10
, поддержка Ultralytics explorer была прекращена. Но не волнуйтесь! Теперь вы можете получить доступ к аналогичным и даже расширенным функциям через Ultralytics HUB, нашу интуитивно понятную платформу без кода, предназначенную для оптимизации вашего рабочего процесса. С Ultralytics HUB вы можете продолжать исследовать, визуализировать и управлять своими данными без особых усилий, и все это без написания единой строки кода. Обязательно ознакомьтесь с ним и воспользуйтесь его мощными функциями!🚀
Для более продвинутого подхода к EDA можно использовать инструмент Ultralytics Explorer. Он предлагает широкие возможности для изучения наборов данных компьютерного зрения. Благодаря поддержке семантического поиска, SQL-запросов и поиска векторного сходства, инструмент упрощает анализ и понимание ваших данных. С помощью Ultralytics Explorer вы можете создавать embeddings для своего набора данных, чтобы находить похожие изображения, выполнять SQL-запросы для детального анализа и выполнять семантический поиск, и все это через удобный графический интерфейс.
Обратитесь и свяжитесь
Обсуждение вашего проекта с другими энтузиастами компьютерного зрения может дать вам новые идеи с разных точек зрения. Вот несколько отличных способов учиться, устранять неполадки и налаживать связи:
Каналы для связи с сообществом
- GitHub Issues: Посетите репозиторий YOLO11 GitHub и используйте вкладку Issues, чтобы задавать вопросы, сообщать об ошибках и предлагать функции. Сообщество и мейнтейнеры готовы помочь с любыми проблемами, с которыми вы столкнетесь.
- Сервер Ultralytics Discord: Присоединяйтесь к серверу Ultralytics Discord, чтобы общаться с другими пользователями и разработчиками, получать поддержку, делиться знаниями и генерировать идеи.
Официальная документация
- Документация Ultralytics YOLO11: Обратитесь к официальной документации YOLO11 для получения подробных руководств и ценной информации о многочисленных задачах и проектах компьютерного зрения.
Ваш набор данных готов!
Правильно измененные, нормализованные и дополненные данные улучшают производительность модели за счет уменьшения шума и улучшения обобщения. Следуя методам предварительной обработки и лучшим практикам, изложенным в этом руководстве, вы можете создать надежный набор данных. Подготовив предварительно обработанный набор данных, вы можете уверенно переходить к следующим шагам в своем проекте.
Часто задаваемые вопросы
Какова важность предварительной обработки данных в проектах компьютерного зрения?
Предварительная обработка данных имеет важное значение в проектах компьютерного зрения, поскольку она гарантирует, что данные являются чистыми, согласованными и в формате, оптимальном для обучения модели. Устраняя такие проблемы, как шум, несогласованность и несбалансированность в необработанных данных, этапы предварительной обработки, такие как изменение размера, нормализация, увеличение и разделение набора данных, помогают снизить вычислительную нагрузку и повысить производительность модели. Для получения более подробной информации посетите страницу этапы проекта компьютерного зрения.
Как я могу использовать Ultralytics YOLO для увеличения данных?
Для расширения данных с помощью Ultralytics YOLO11 необходимо изменить файл конфигурации набора данных (.yaml). В этом файле можно указать различные методы расширения, такие как случайные вырезки, горизонтальные перевороты и корректировки яркости. Это можно эффективно сделать, используя конфигурации обучения, объясненные здесь. Расширение данных помогает создать более надежный набор данных, уменьшить переобучение и улучшить обобщение модели.
Какие существуют лучшие методы нормализации данных для данных компьютерного зрения?
Нормализация масштабирует значения пикселей до стандартного диапазона для более быстрого схождения и повышения производительности во время обучения. Общие методы включают в себя:
- Min-Max Scaling: Масштабирует значения пикселей в диапазоне от 0 до 1.
- Z-Score Normalization: Масштабирует значения пикселей на основе их среднего значения и стандартного отклонения.
Для YOLO11 нормализация обрабатывается автоматически, включая преобразование в RGB и масштабирование значений пикселей. Узнайте больше об этом в разделе об обучении модели.
Как следует разделить мой аннотированный набор данных для обучения?
Чтобы разделить свой набор данных, обычно его делят на 70% для обучения, 20% для проверки и 10% для тестирования. Важно поддерживать распределение данных по классам в этих разделах и избегать утечки данных, выполняя расширение только на обучающем наборе. Используйте такие инструменты, как scikit-learn или TensorFlow для эффективного разделения набора данных. См. подробное руководство по подготовке набора данных.
Могу ли я обрабатывать различные размеры изображений в YOLO11 без изменения размера вручную?
Да, Ultralytics YOLO11 может обрабатывать изображения различных размеров с помощью параметра 'imgsz' во время обучения модели. Этот параметр гарантирует, что размеры изображений будут изменены так, чтобы их наибольшая сторона соответствовала указанному размеру (например, 640 пикселей) с сохранением пропорций. Для более гибкой обработки входных данных и автоматической настройки ознакомьтесь с разделом об обучении модели.