Link to this sectionМетоды предварительной обработки данных для аннотированных данных компьютерного зрения#
Link to this sectionВведение#
После того как ты определил цели своего проекта по компьютерному зрению и собрал и аннотировал данные, следующим шагом будет предварительная обработка аннотированных данных и подготовка их к обучению модели. Чистые и согласованные данные жизненно важны для создания модели, которая работает эффективно.
Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀
Предварительная обработка — это этап рабочего процесса проекта компьютерного зрения, который включает изменение размера изображений, нормализацию значений пикселей, аугментацию набора данных и разделение данных на обучающую, валидационную и тестовую выборки. Давай изучим основные методы и лучшие практики очистки твоих данных!
Link to this sectionВажность предварительной обработки данных#
Мы уже тщательно собираем и аннотируем наши данные, учитывая множество факторов. Тогда что делает предварительную обработку данных такой важной для проекта компьютерного зрения? Что ж, предварительная обработка нужна для того, чтобы привести твои данные в подходящий для обучения формат, который снижает вычислительную нагрузку и помогает улучшить работу модели. Вот некоторые распространенные проблемы в «сырых» данных, которые решает предварительная обработка:
- Шум: Нерелевантные или случайные вариации в данных.
- Несогласованность: Различия в размерах, форматах и качестве изображений.
- Дисбаланс: Неравномерное распределение классов или категорий в наборе данных.
Link to this sectionМетоды предварительной обработки данных#
Одним из самых первых и главных этапов предварительной обработки данных является изменение размера. Некоторые модели спроектированы так, чтобы работать с переменными входными размерами, но многие модели требуют согласованного размера входных данных. Изменение размера изображений делает их единообразными и снижает вычислительную сложность.
Link to this sectionИзменение размера изображений#
Ты можешь изменять размер своих изображений, используя следующие методы:
- Билинейная интерполяция: Сглаживает значения пикселей, используя взвешенное среднее четырех ближайших значений пикселей.
- Метод ближайшего соседа: Присваивает значение ближайшего пикселя без усреднения, что приводит к блочному изображению, но к более быстрому вычислению.
Чтобы сделать изменение размера более простой задачей, ты можешь использовать следующие инструменты:
- OpenCV: Популярная библиотека компьютерного зрения с обширными функциями для обработки изображений.
- PIL (Pillow): Библиотека Python Imaging Library для открытия, манипулирования и сохранения файлов изображений.
Что касается YOLO26, параметр 'imgsz' во время обучения модели позволяет использовать гибкие размеры входных данных. При установке конкретного размера, например 640, модель изменит размер входных изображений так, чтобы их наибольшее измерение составляло 640 пикселей, сохраняя при этом исходное соотношение сторон.
Оценивая конкретные потребности твоей модели и набора данных, ты можешь определить, является ли изменение размера необходимым этапом предварительной обработки или твоя модель может эффективно работать с изображениями разных размеров.
Link to this sectionНормализация значений пикселей#
Еще одним методом предварительной обработки является нормализация. Нормализация масштабирует значения пикселей до стандартного диапазона, что помогает быстрее сходиться процессу обучения и улучшает производительность модели. Вот некоторые распространенные методы нормализации:
- Min-Max масштабирование: Масштабирует значения пикселей в диапазон от 0 до 1.
- Z-score нормализация: Масштабирует значения пикселей на основе их среднего значения и стандартного отклонения.
Что касается YOLO26, нормализация плавно обрабатывается как часть конвейера предварительной обработки во время обучения модели. YOLO26 автоматически выполняет несколько этапов предварительной обработки, включая преобразование в RGB, масштабирование значений пикселей в диапазон [0, 1] и нормализацию с использованием предопределенных значений среднего и стандартного отклонения.
Link to this sectionРазделение набора данных#
Как только ты очистил данные, ты готов разделить набор данных. Разделение данных на обучающую, валидационную и тестовую выборки выполняется для того, чтобы убедиться, что модель можно оценить на «невиданных» данных для проверки её обобщающей способности. Стандартное разделение — 70% для обучения, 20% для валидации и 10% для тестирования. Существуют различные инструменты и библиотеки, которые ты можешь использовать для разделения данных, такие как scikit-learn или TensorFlow.
При разделении набора данных учитывай следующее:
- Поддержание распределения данных: Убедись, что распределение классов данных сохраняется в обучающей, валидационной и тестовой выборках.
- Избегание утечки данных: Как правило, аугментация данных выполняется после того, как набор данных разделен. Аугментация данных и любая другая предварительная обработка должны применяться только к обучающей выборке, чтобы предотвратить влияние информации из валидационной или тестовой выборок на обучение модели.
- Балансировка классов: Для несбалансированных наборов данных рассмотри методы, такие как оверсэмплинг (увеличение) миноритарного класса или андерсэмплинг (уменьшение) мажоритарного класса внутри обучающей выборки.
Link to this sectionЧто такое аугментация данных?#
Самый обсуждаемый этап предварительной обработки данных — это аугментация. Аугментация данных искусственно увеличивает размер набора данных путем создания модифицированных версий изображений. Аугментируя свои данные, ты можешь уменьшить переобучение и улучшить обобщающую способность модели.
Вот еще некоторые преимущества аугментации данных:
- Создает более надежный набор данных: Аугментация данных может сделать модель более устойчивой к вариациям и искажениям во входных данных. Это включает изменения освещенности, ориентации и масштаба.
- Экономическая эффективность: Аугментация данных — это экономически эффективный способ увеличить количество обучающих данных без сбора и разметки новых данных.
- Лучшее использование данных: Каждая доступная точка данных используется максимально эффективно путем создания новых вариаций.
Link to this sectionМетоды аугментации данных#
Распространенные методы аугментации включают отражение, поворот, масштабирование и корректировку цвета. Несколько библиотек, таких как Albumentations, Imgaug и TensorFlow's ImageDataGenerator, могут генерировать эти аугментации.
Что касается YOLO26, ты можешь аугментировать свой пользовательский набор данных, изменив файл конфигурации набора данных (файл .yaml). В этом файле ты можешь добавить раздел аугментации с параметрами, которые определяют, как именно ты хочешь аугментировать свои данные.
Репозиторий Ultralytics YOLO26 поддерживает широкий спектр аугментаций данных. Ты можешь применять различные преобразования, такие как:
- Случайные вырезки (Random Crops)
- Отражение: Изображения можно отражать по горизонтали или вертикали.
- Поворот: Изображения можно поворачивать на определенные углы.
- Искажение
Также ты можешь регулировать интенсивность этих методов аугментации с помощью конкретных параметров, чтобы создавать большее разнообразие данных.
Link to this sectionПример предварительной обработки#
Давай рассмотрим проект, направленный на разработку модели для обнаружения и классификации различных типов транспортных средств на изображениях дорожного движения с использованием YOLO26. Мы собрали изображения дорожного движения и аннотировали их с помощью ограничивающих рамок (bounding boxes) и меток.
Вот как будет выглядеть каждый этап предварительной обработки для этого проекта:
- Изменение размера изображений: Поскольку YOLO26 поддерживает гибкие размеры входных данных и выполняет изменение размера автоматически, ручное изменение не требуется. Модель будет подстраивать размер изображения в соответствии с указанным параметром 'imgsz' во время обучения.
- Нормализация значений пикселей: YOLO26 автоматически нормализует значения пикселей в диапазон от 0 до 1 во время предварительной обработки, поэтому это не требуется делать вручную.
- Разделение набора данных: Раздели набор данных на обучающую (70%), валидационную (20%) и тестовую (10%) выборки, используя инструменты, такие как scikit-learn.
- Аугментация данных: Измени файл конфигурации набора данных (.yaml), чтобы включить методы аугментации, такие как случайные вырезки, горизонтальные отражения и корректировка яркости.
Эти шаги гарантируют, что набор данных подготовлен без каких-либо потенциальных проблем и готов к исследовательскому анализу данных (EDA).
Link to this sectionМетоды исследовательского анализа данных (EDA)#
После предварительной обработки и аугментации набора данных следующим шагом будет получение выводов с помощью исследовательского анализа данных (EDA). EDA использует статистические методы и инструменты визуализации, чтобы понять закономерности и распределения в твоих данных. Ты можешь выявить такие проблемы, как дисбаланс классов или выбросы, и принять обоснованные решения о дальнейшей предварительной обработке данных или корректировках обучения модели.
Link to this sectionСтатистические методы EDA#
Статистические методы часто начинаются с вычисления базовых метрик, таких как среднее значение, медиана, стандартное отклонение и диапазон. Эти метрики дают быстрый обзор свойств твоего набора изображений, например распределения интенсивности пикселей. Понимание этой базовой статистики помогает тебе осознать общее качество и характеристики твоих данных, позволяя вовремя заметить любые несоответствия.
Link to this sectionВизуальные методы EDA#
Визуализации — ключ к EDA для наборов изображений. Например, анализ дисбаланса классов — еще один важный аспект EDA. Это помогает определить, недопредставлены ли определенные классы в твоем наборе. Визуализация распределения разных классов или категорий изображений с помощью гистограмм может быстро выявить любые дисбалансы. Аналогично, выбросы можно идентифицировать с помощью инструментов визуализации, таких как диаграммы «ящик с усами» (box plots), которые подсвечивают аномалии в интенсивности пикселей или распределении признаков. Обнаружение выбросов предотвращает искажение результатов необычными точками данных.
Распространенные инструменты для визуализации включают:
- Гистограммы и диаграммы «ящик с усами»: Полезны для понимания распределения значений пикселей и идентификации выбросов.
- Диаграммы рассеяния: Полезны для изучения связей между признаками изображений или аннотациями.
- Тепловые карты: Эффективны для визуализации распределения интенсивности пикселей или пространственного распределения аннотированных признаков на изображениях.
Link to this sectionИспользование платформы Ultralytics для EDA#
Для использования подхода к EDA без написания кода загрузи свой набор данных на платформу Ultralytics. Вкладка Charts набора данных автоматически генерирует описанные выше визуализации: распределение разделения, топ-счетчики классов, гистограммы ширины/высоты изображений и 2D-тепловые карты позиций аннотаций и размеров изображений. Вкладка Images позволяет просматривать данные в виде сетки, компактном или табличном виде с наложениями аннотаций, что позволяет легко заметить неверно помеченные примеры или несбалансированные классы, не написав ни строчки кода.
Link to this sectionСвяжись с нами и присоединяйся#
Обсуждение твоего проекта с другими энтузиастами компьютерного зрения может дать тебе новые идеи с разных точек зрения. Вот несколько отличных способов учиться, устранять неполадки и общаться:
Link to this sectionКаналы для связи с сообществом#
- GitHub Issues: Посети репозиторий YOLO26 на GitHub и используй вкладку Issues, чтобы задавать вопросы, сообщать о багах и предлагать функции. Сообщество и сопровождающие готовы помочь с любыми проблемами, с которыми ты столкнешься.
- Сервер Ultralytics в Discord: Присоединяйся к серверу Ultralytics в Discord, чтобы связаться с другими пользователями и разработчиками, получить поддержку, обменяться знаниями и обсудить идеи.
Link to this sectionОфициальная документация#
- Документация Ultralytics YOLO26: Обратись к официальной документации YOLO26 за подробными руководствами и ценными сведениями по многочисленным задачам и проектам компьютерного зрения.
Link to this sectionТвой набор данных готов!#
Правильно измененные, нормализованные и аугментированные данные улучшают производительность модели за счет снижения шума и улучшения обобщения. Следуя методам предварительной обработки и лучшим практикам, описанным в этом руководстве, ты сможешь создать надежный набор данных. Имея готовый предварительно обработанный набор, ты можешь уверенно переходить к следующим шагам своего проекта.
Link to this sectionFAQ#
Link to this sectionВ чем заключается важность предварительной обработки данных в проектах компьютерного зрения?#
Предварительная обработка данных необходима в проектах компьютерного зрения, поскольку она гарантирует, что данные чисты, согласованы и находятся в формате, оптимальном для обучения модели. Решая проблемы, такие как шум, несогласованность и дисбаланс в исходных данных, этапы предварительной обработки, такие как изменение размера, нормализация, аугментация и разделение набора данных, помогают снизить вычислительную нагрузку и улучшить производительность модели. Для получения дополнительной информации посети этапы проекта компьютерного зрения.
Link to this sectionКак я могу использовать Ultralytics YOLO для аугментации данных?#
Для аугментации данных с помощью Ultralytics YOLO26 тебе необходимо изменить файл конфигурации набора данных (.yaml). В этом файле ты можешь указать различные методы аугментации, такие как случайные вырезки, горизонтальные отражения и корректировка яркости. Это можно эффективно сделать, используя конфигурации обучения, описанные здесь. Аугментация данных помогает создать более надежный набор данных, уменьшить переобучение и улучшить обобщение модели.
Link to this sectionКакие методы нормализации данных являются лучшими для данных компьютерного зрения?#
Нормализация масштабирует значения пикселей до стандартного диапазона для более быстрой сходимости и улучшенной производительности во время обучения. Распространенные методы включают:
- Min-Max масштабирование: Масштабирует значения пикселей в диапазон от 0 до 1.
- Z-score нормализация: Масштабирует значения пикселей на основе их среднего значения и стандартного отклонения.
Для YOLO26 нормализация выполняется автоматически, включая преобразование в RGB и масштабирование значений пикселей. Узнай об этом больше в разделе обучения модели.
Link to this sectionКак мне разделить мой аннотированный набор данных для обучения?#
Чтобы разделить набор данных, общепринятой практикой является разделение его на 70% для обучения, 20% для валидации и 10% для тестирования. Важно поддерживать распределение классов данных во всех этих выборках и избегать утечки данных, применяя аугментацию только к обучающей выборке. Используй инструменты, такие как scikit-learn или TensorFlow, для эффективного разделения набора данных. Смотри подробное руководство по подготовке набора данных.
Link to this sectionМогу ли я работать с изображениями разных размеров в YOLO26 без ручного изменения размера?#
Да, Ultralytics YOLO26 может обрабатывать изображения разных размеров с помощью параметра 'imgsz' во время обучения модели. Этот параметр гарантирует, что изображения будут изменены так, чтобы их наибольшее измерение соответствовало указанному размеру (например, 640 пикселей), при сохранении соотношения сторон. Для более гибкой обработки ввода и автоматических корректировок проверь раздел обучения модели.