Методы предварительной обработки данных для аннотированных данных компьютерного зрения
Введение
После того как вы определили цели проекта по компьютерному зрению, собрали и аннотировали данные, следующий шаг - предварительная обработка аннотированных данных и подготовка их к обучению модели. Чистые и согласованные данные жизненно важны для создания модели, которая будет работать хорошо.
Предварительная обработка - это этап работы над проектом по компьютерному зрению, включающий изменение размера изображений, нормализацию значений пикселей, расширение набора данных и разделение данных на обучающий, проверочный и тестовый наборы. Давайте рассмотрим основные методы и лучшие практики для очистки данных!
Важность предварительной обработки данных
Мы уже собираем и аннотируем наши данные, тщательно учитывая множество факторов. Тогда почему предварительная обработка данных так важна для проекта по компьютерному зрению? Препроцессинг данных - это приведение данных в подходящий для обучения формат, который снижает вычислительную нагрузку и помогает улучшить производительность модели. Вот несколько распространенных проблем с исходными данными, которые решает предварительная обработка:
- Шум: Несущественные или случайные изменения в данных.
- Несоответствие: Различия в размерах, форматах и качестве изображений.
- Дисбаланс: Неравномерное распределение классов или категорий в наборе данных.
Методы предварительной обработки данных
Одним из первых и основных этапов предварительной обработки данных является изменение размера. Некоторые модели рассчитаны на работу с переменными размерами входных данных, но многие модели требуют постоянного размера входных данных. Изменение размера изображений делает их однородными и снижает вычислительную сложность.
Изменение размеров изображений
Изменить размер изображений можно следующими способами:
- Билинейная интерполяция: Сглаживает значения пикселей, беря средневзвешенное значение четырех ближайших значений пикселей.
- Ближайший сосед: Присваивает ближайшему пикселю значение без усреднения, что приводит к блочности изображения, но ускоряет вычисления.
Чтобы упростить задачу изменения размера, вы можете использовать следующие инструменты:
- OpenCV: Популярная библиотека компьютерного зрения с широким набором функций для обработки изображений.
- PIL (Pillow): Библиотека изображений Python для открытия, манипулирования и сохранения файлов изображений.
Что касается YOLO11, то параметр 'imgsz' во время обучения модели позволяет гибко изменять размеры входных изображений. Если задать определенный размер, например 640, модель изменит размер входных изображений так, чтобы их наибольший размер составлял 640 пикселей, сохраняя при этом исходное соотношение сторон.
Оценив специфические потребности вашей модели и набора данных, вы сможете определить, является ли изменение размера необходимым этапом предварительной обработки или может ли ваша модель эффективно обрабатывать изображения разного размера.
Нормализация значений пикселей
Еще один метод предварительной обработки - нормализация. Нормализация приводит значения пикселей к стандартному диапазону, что помогает быстрее сходиться в процессе обучения и повышает производительность модели. Вот несколько распространенных методов нормализации:
- Масштабирование Min-Max: Масштабирует значения пикселей в диапазоне от 0 до 1.
- Нормализация Z-Score: Масштабирует значения пикселей на основе их среднего и стандартного отклонения.
Что касается YOLO11, то нормализация легко выполняется в рамках конвейера предварительной обработки во время обучения модели. YOLO11 автоматически выполняет несколько шагов предварительной обработки, включая преобразование в RGB, масштабирование значений пикселей в диапазон [0, 1] и нормализацию с использованием предопределенных значений среднего и стандартного отклонения.
Разделение набора данных
После очистки данных можно приступать к их разбиению. Разделение данных на обучающий, валидационный и тестовый наборы выполняется для того, чтобы модель можно было оценить на невидимых данных для определения эффективности ее обобщения. Обычно 70% данных идет на обучение, 20% - на проверку и 10% - на тестирование. Существуют различные инструменты и библиотеки, которые можно использовать для разделения данных, например scikit-learn или TensorFlow.
При разбиении набора данных учитывайте следующее:
- Поддержание распределения данных: Убедитесь, что распределение данных по классам сохраняется в обучающих, проверочных и тестовых наборах.
- Предотвращение утечки данных: Как правило, увеличение данных производится после разделения набора данных. Увеличение данных и любая другая предварительная обработка должны применяться только к обучающему набору, чтобы информация из валидационного или тестового наборов не повлияла на обучение модели.
- Балансировка классов: Для несбалансированных наборов данных рассмотрите такие методы, как избыточная выборка меньшинства или недостаточная выборка большинства в обучающем наборе.
Что такое расширение данных?
Наиболее часто обсуждаемым этапом предварительной обработки данных является их увеличение. Увеличение данных искусственно увеличивает размер набора данных путем создания модифицированных версий изображений. Наращивание данных позволяет уменьшить чрезмерную подгонку и улучшить обобщение модели.
Вот некоторые другие преимущества расширения данных:
- Создает более надежный набор данных: Расширение данных позволяет сделать модель более устойчивой к изменениям и искажениям входных данных. К ним относятся изменения освещения, ориентации и масштаба.
- Экономичность: Увеличение объема данных - это экономически эффективный способ увеличить объем обучающих данных без сбора и маркировки новых данных.
- Более эффективное использование данных: Каждая доступная точка данных используется с максимальным потенциалом, создавая новые вариации
Методы дополнения данных
К распространенным методам дополнения относятся переворачивание, поворот, масштабирование и корректировка цвета. Несколько библиотек, таких как Albumentations, Imgaug и TensorFlow's ImageDataGenerator, могут генерировать эти дополнения.
Что касается YOLO11, вы можете дополнить свой пользовательский набор данных, изменив файл конфигурации набора данных, представляющий собой файл .yaml. В этом файле можно добавить секцию дополнения с параметрами, которые определяют, как вы хотите дополнить свои данные.
- Случайные культуры
- Переворачивание: Изображения можно переворачивать по горизонтали или вертикали.
- Вращение: Изображения можно поворачивать на определенные углы.
- Искажение
Кроме того, вы можете регулировать интенсивность этих методов увеличения с помощью определенных параметров для получения большего разнообразия данных.
Пример предварительной обработки
Рассмотрим проект, целью которого является разработка модели для обнаружения и классификации различных типов транспортных средств на изображениях дорожного движения с помощью 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 вы можете создавать вкрапления для вашего набора данных, чтобы найти похожие изображения, выполнять SQL-запросы для детального анализа и выполнять семантический поиск - и все это с помощью удобного графического интерфейса.
Протяните руку и соединитесь
Обсуждение вашего проекта с другими энтузиастами компьютерного зрения может дать вам новые идеи с разных точек зрения. Вот несколько отличных способов обучения, устранения неполадок и общения:
Каналы для связи с сообществом
- Вопросы на GitHub: Посетите репозиторий YOLO11 на GitHub и воспользуйтесь вкладкой Issues, чтобы задать вопросы, сообщить об ошибках и предложить новые возможности. Сообщество и сопровождающие готовы помочь вам в решении любых проблем.
- Ultralytics Сервер Discord: Присоединяйтесь к серверуUltralytics Discord, чтобы общаться с другими пользователями и разработчиками, получать поддержку, делиться знаниями и обмениваться идеями.
Официальная документация
- Ultralytics YOLO11 Документация: Обратитесь к официальной документации YOLO11 , чтобы получить подробные руководства и ценные сведения о многочисленных задачах и проектах, связанных с компьютерным зрением.
Ваш набор данных готов!
Правильно измененные, нормализованные и дополненные данные повышают производительность модели за счет снижения шума и улучшения обобщения. Следуя методам предварительной обработки и лучшим практикам, описанным в этом руководстве, вы сможете создать надежный набор данных. Подготовив набор данных, вы можете смело приступать к следующим этапам проекта.
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Какова важность предварительной обработки данных в проектах по компьютерному зрению?
Предварительная обработка данных очень важна для проектов по компьютерному зрению, поскольку она обеспечивает чистоту, согласованность и оптимальный для обучения модели формат данных. Решая такие проблемы, как шум, несогласованность и дисбаланс исходных данных, этапы предварительной обработки, такие как изменение размера, нормализация, увеличение и разделение наборов данных, помогают снизить вычислительную нагрузку и повысить производительность модели. Для получения более подробной информации посетите раздел " Этапы проекта по компьютерному зрению".
Как я могу использовать Ultralytics YOLO для увеличения объема данных?
Для увеличения данных с помощью Ultralytics YOLO11 необходимо изменить файл конфигурации набора данных (.yaml). В этом файле можно указать различные методы увеличения, такие как случайное кадрирование, переворачивание по горизонтали и корректировка яркости. Это можно эффективно сделать с помощью конфигураций обучения , описанных здесь. Наращивание данных помогает создать более надежный набор данных, уменьшить перебор и улучшить обобщение модели.
Каковы наилучшие методы нормализации данных для компьютерного зрения?
Нормализация приводит значения пикселей к стандартному диапазону для ускорения сходимости и повышения производительности в процессе обучения. К распространенным методам относятся:
- Масштабирование Min-Max: Масштабирует значения пикселей в диапазоне от 0 до 1.
- Нормализация Z-Score: Масштабирует значения пикселей на основе их среднего и стандартного отклонения.
Для YOLO11 нормализация выполняется автоматически, включая преобразование в RGB и масштабирование значений пикселей. Подробнее об этом в разделе "Обучение модели".
Как разделить аннотированный набор данных для обучения?
Чтобы разделить набор данных, обычно его делят на 70 % для обучения, 20 % для проверки и 10 % для тестирования. Важно сохранить распределение данных по классам при таком разделении и избежать утечки данных, выполняя наращивание только на обучающем наборе. Используйте такие инструменты, как scikit-learn или TensorFlow для эффективного разделения наборов данных. См. подробное руководство по подготовке наборов данных.
Можно ли работать с изображениями разного размера в YOLO11 без ручного изменения размера?
Да, Ultralytics YOLO11 может обрабатывать различные размеры изображений с помощью параметра 'imgsz' во время обучения модели. Этот параметр обеспечивает изменение размера изображений таким образом, чтобы их наибольший размер соответствовал заданному размеру (например, 640 пикселей), сохраняя при этом соотношение сторон. Для более гибкой обработки входных данных и автоматических настроек обратитесь к разделу обучения модели.