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

Что касается YOLO26, вы можете аугментировать свой пользовательский набор данных путем изменения файла конфигурации набора данных, .yaml файла. В этом файле вы можете добавить раздел аугментации с параметрами, которые определяют, как вы хотите аугментировать свои данные.
Репозиторий Ultralytics YOLO26 поддерживает широкий спектр аугментаций данных. Вы можете применять различные преобразования, такие как:
- Случайные вырезки
- Отражение: Изображения можно отражать по горизонтали или вертикали.
- Вращение: Изображения можно вращать на определенные углы.
- Искажение
Кроме того, вы можете регулировать интенсивность этих методов аугментации с помощью определенных параметров для создания большего разнообразия данных.
Пример предварительной обработки
Рассмотрим проект, направленный на разработку модели для detect и classify различных типов транспортных средств на дорожных изображениях с использованием YOLO26. Мы собрали дорожные изображения и аннотировали их ограничивающими рамками и метками.
Вот как будет выглядеть каждый шаг предварительной обработки для этого проекта:
- Изменение размера изображений: Поскольку YOLO26 обрабатывает гибкие размеры входных данных и выполняет автоматическое изменение размера, ручное изменение размера не требуется. Модель автоматически скорректирует размер изображения в соответствии с указанным параметром 'imgsz' во время обучения.
- Нормализация значений пикселей: YOLO26 автоматически нормализует значения пикселей в диапазоне от 0 до 1 во время предварительной обработки, поэтому это не требуется.
- Разделение набора данных: Разделите набор данных на обучающий (70%), проверочный (20%) и тестовый (10%) наборы, используя такие инструменты, как scikit-learn.
- Аугментация данных: Измените файл конфигурации набора данных (.yaml), чтобы включить методы увеличения данных, такие как случайные вырезки, горизонтальные перевороты и корректировки яркости.
Эти шаги гарантируют, что набор данных подготовлен без каких-либо потенциальных проблем и готов к разведочному анализу данных (EDA).
Методы разведочного анализа данных
После предварительной обработки и аугментации вашего набора данных следующим шагом является получение информации с помощью разведочного анализа данных. EDA использует статистические методы и инструменты визуализации для понимания закономерностей и распределений в ваших данных. Вы можете выявить такие проблемы, как дисбаланс классов или выбросы, и принимать обоснованные решения о дальнейшей предварительной обработке данных или корректировке обучения модели.
Статистические методы EDA
Статистические методы часто начинаются с вычисления основных показателей, таких как среднее значение, медиана, стандартное отклонение и диапазон. Эти показатели обеспечивают быстрый обзор свойств вашего набора изображений, таких как распределение интенсивности пикселей. Понимание этих основных статистических данных помогает вам понять общее качество и характеристики ваших данных, позволяя вам выявить любые отклонения на ранней стадии.
Визуальные методы EDA
Визуализации являются ключевыми в EDA для наборов изображений. Например, анализ дисбаланса классов является еще одним важным аспектом EDA. Он помогает определить, недостаточно ли представлены определенные классы в вашем наборе данных. Визуализация распределения различных классов или категорий изображений с помощью столбчатых диаграмм может быстро выявить любые дисбалансы. Аналогично, выбросы можно идентифицировать с помощью инструментов визуализации, таких как ящичные диаграммы, которые выделяют аномалии в интенсивности пикселей или распределении признаков. Обнаружение выбросов предотвращает искажение результатов необычными точками данных.
Общие инструменты для визуализации включают в себя:
- Гистограммы и ящичковые диаграммы: Полезны для понимания распределения значений пикселей и выявления выбросов.
- Диаграммы рассеяния: Полезны для изучения взаимосвязей между признаками изображений или аннотациями.
- Тепловые карты: Эффективны для визуализации распределения интенсивности пикселей или пространственного распределения аннотированных признаков на изображениях.
Использование Ultralytics Explorer для EDA
Примечание сообщества
По состоянию на ultralytics>=8.3.10, поддержка Ultralytics Explorer устарела. Аналогичные (и расширенные) функции исследования наборов данных доступны в Ultralytics Platform.
Для более продвинутого подхода к EDA можно использовать инструмент Ultralytics Explorer. Он предлагает широкие возможности для изучения наборов данных компьютерного зрения. Благодаря поддержке семантического поиска, SQL-запросов и поиска векторного сходства, инструмент упрощает анализ и понимание ваших данных. С помощью Ultralytics Explorer вы можете создавать embeddings для своего набора данных, чтобы находить похожие изображения, выполнять SQL-запросы для детального анализа и выполнять семантический поиск, и все это через удобный графический интерфейс.

Обратитесь и свяжитесь
Обсуждение вашего проекта с другими энтузиастами компьютерного зрения может дать вам новые идеи с разных точек зрения. Вот несколько отличных способов учиться, устранять неполадки и налаживать связи:
Каналы для связи с сообществом
- Проблемы GitHub: Посетите репозиторий YOLO26 на GitHub и используйте вкладку Issues, чтобы задавать вопросы, сообщать об ошибках и предлагать функции. Сообщество и сопровождающие готовы помочь с любыми проблемами, с которыми вы столкнетесь.
- Сервер Ultralytics Discord: Присоединяйтесь к серверу Ultralytics Discord, чтобы общаться с другими пользователями и разработчиками, получать поддержку, делиться знаниями и генерировать идеи.
Официальная документация
- Документация Ultralytics YOLO26: Обратитесь к официальной документации YOLO26 для подробных руководств и ценных сведений по многочисленным задачам и проектам компьютерного зрения.
Ваш набор данных готов!
Правильно измененные, нормализованные и дополненные данные улучшают производительность модели за счет уменьшения шума и улучшения обобщения. Следуя методам предварительной обработки и лучшим практикам, изложенным в этом руководстве, вы можете создать надежный набор данных. Подготовив предварительно обработанный набор данных, вы можете уверенно переходить к следующим шагам в своем проекте.
Часто задаваемые вопросы
Какова важность предварительной обработки данных в проектах компьютерного зрения?
Предварительная обработка данных имеет важное значение в проектах компьютерного зрения, поскольку она гарантирует, что данные являются чистыми, согласованными и в формате, оптимальном для обучения модели. Устраняя такие проблемы, как шум, несогласованность и несбалансированность в необработанных данных, этапы предварительной обработки, такие как изменение размера, нормализация, увеличение и разделение набора данных, помогают снизить вычислительную нагрузку и повысить производительность модели. Для получения более подробной информации посетите страницу этапы проекта компьютерного зрения.
Как я могу использовать Ultralytics YOLO для увеличения данных?
Для аугментации данных с Ultralytics YOLO26 необходимо изменить файл конфигурации набора данных (.yaml). В этом файле можно указать различные методы аугментации, такие как случайные обрезки, горизонтальные отражения и корректировки яркости. Это можно эффективно сделать с помощью конфигураций обучения, описанных здесь. Аугментация данных помогает создать более надежный набор данных, уменьшить переобучение и улучшить обобщающую способность модели.
Какие существуют лучшие методы нормализации данных для данных компьютерного зрения?
Нормализация масштабирует значения пикселей до стандартного диапазона для более быстрого схождения и повышения производительности во время обучения. Общие методы включают в себя:
- Min-Max Scaling: Масштабирует значения пикселей в диапазоне от 0 до 1.
- Z-Score Normalization: Масштабирует значения пикселей на основе их среднего значения и стандартного отклонения.
Для YOLO26 нормализация обрабатывается автоматически, включая преобразование в RGB и масштабирование значений пикселей. Узнайте больше об этом в разделе обучения модели.
Как следует разделить мой аннотированный набор данных для обучения?
Чтобы разделить свой набор данных, обычно его делят на 70% для обучения, 20% для проверки и 10% для тестирования. Важно поддерживать распределение данных по классам в этих разделах и избегать утечки данных, выполняя расширение только на обучающем наборе. Используйте такие инструменты, как scikit-learn или TensorFlow для эффективного разделения набора данных. См. подробное руководство по подготовке набора данных.
Могу ли я обрабатывать изображения различных размеров в YOLO26 без ручного изменения размера?
Да, Ultralytics YOLO26 может обрабатывать изображения различных размеров с помощью параметра 'imgsz' во время обучения модели. Этот параметр гарантирует, что изображения изменяются в размере таким образом, чтобы их наибольшее измерение соответствовало указанному размеру (например, 640 пикселей), при этом сохраняя соотношение сторон. Для более гибкой обработки входных данных и автоматических настроек обратитесь к разделу обучения модели.