Стратегии сбора и разметки данных для компьютерного зрения#
Сбор и разметка данных — это два фундаментальных шага любого проекта компьютерного зрения: ты собираешь репрезентативные изображения или видео, а затем размечаешь их, чтобы модель могла учиться на них. Качество этих данных напрямую определяет производительность модели, поэтому определение классов, непредвзятый сбор и последовательная разметка имеют значение до начала любого обучения.
Watch: How to Build Effective Data Collection and Annotation Strategies for Computer Vision 🚀
Это руководство охватывает настройку классов и сбор данных, что такое разметка данных вместе с типами и форматами разметки на выбор, а также эффективные стратегии разметки — каждое решение согласуется с целями твоего проекта.
Настройка классов и сбор данных#
Сбор изображений и видео для проекта по компьютерному зрению сводится к трем решениям: сколько классов определить, где брать данные и как избежать предвзятости в наборе данных.
Выбор правильных классов для твоего проекта#
Один из первых вопросов при запуске проекта по компьютерному зрению — сколько классов включить. Тебе нужно определить принадлежность к классам, что включает в себя различные категории или метки, которые твоя модель должна распознавать и различать. Количество классов должно определяться конкретными целями твоего проекта.
Например, если ты хочешь контролировать дорожное движение, твои классы могут включать "автомобиль", "грузовик", "автобус", "мотоцикл" и "велосипед". С другой стороны, для отслеживания товаров в магазине твоими классами могут быть "фрукты", "овощи", "напитки" и "закуски". Определение классов на основе целей проекта помогает сохранить актуальность и сфокусированность твоего набора данных.
При определении классов еще одним важным различием является выбор между грубым или точным количеством классов. 'Количество' относится к числу различных классов, которые тебя интересуют. Это решение влияет на гранулярность данных и сложность модели. Вот соображения для каждого подхода:
- Грубый подсчет классов: Это более широкие, более инклюзивные категории, такие как "транспортное средство" и "не транспортное средство". Они упрощают разметку и требуют меньше вычислительных ресурсов, но предоставляют менее подробную информацию, потенциально ограничивая эффективность модели в сложных сценариях.
- Точный подсчет классов: Больше категорий с более тонкими различиями, такие как "седан", "внедорожник", "пикап" и "мотоцикл". Они фиксируют более детальную информацию, улучшая точность и производительность модели. Однако они требуют больше времени и трудозатрат на разметку, а также больше вычислительных ресурсов.
Начало работы с более конкретными классами может быть очень полезным, особенно в сложных проектах, где детали важны. Более специфические классы позволяют тебе собирать более подробные данные, получать более глубокие инсайты и устанавливать более четкие различия между категориями. Это не только улучшает точность модели, но и облегчает ее настройку в дальнейшем при необходимости, экономя время и ресурсы.
Источники данных#
Ты можешь использовать публичные датасеты или собрать собственные пользовательские данные. Публичные датасеты, такие как на Kaggle и Google Dataset Search Engine, предлагают хорошо размеченные, стандартизированные данные, что делает их отличными отправными точками для обучения и валидации моделей.
С другой стороны, сбор пользовательских данных позволяет адаптировать набор данных под твои конкретные нужды. Ты можешь захватывать изображения и видео с помощью камер или дронов, собирать изображения из сети или использовать существующие внутренние данные твоей организации. Пользовательские данные дают тебе больше контроля над их качеством и актуальностью. Комбинирование как публичных, так и пользовательских источников данных помогает создать разнообразный и всеобъемлющий набор данных.
Избежание предвзятости при сборе данных#
Предвзятость возникает, когда определенные группы или сценарии представлены в твоем датасете недостаточно или избыточно. Это приводит к тому, что модель хорошо работает на одних данных, но плохо на других. Крайне важно избегать предвзятости в ИИ, чтобы твоя модель компьютерного зрения могла успешно работать в самых разных сценариях.
Вот как ты можешь избежать предвзятости при сборе данных:
- Разнообразные источники: Собирай данные из множества источников, чтобы охватить различные перспективы и сценарии.
- Сбалансированное представительство: Включай сбалансированное представительство всех соответствующих групп. Например, учитывай разный возраст, пол и этническую принадлежность.
- Постоянный мониторинг: Регулярно пересматривай и обновляй свой набор данных, чтобы выявлять и устранять любые возникающие предвзятости.
- Методы снижения предвзятости: используй такие подходы, как оверсэмплing недостаточно представленных классов, аугментация данных и алгоритмы с учетом справедливости.
Следование этим практикам помогает создать более надежную и справедливую модель, которая хорошо обобщается в реальных приложениях.
Что такое разметка данных?#
Разметка данных — это процесс маркировки данных, делающий их пригодными для обучения моделей машинного обучения. В компьютерном зрении это означает разметку изображений или видео информацией, необходимой модели для обучения. Без должным образом размеченных данных модели не могут точно изучить взаимосвязи между входами и выходами.
Типы разметки данных#
В зависимости от конкретных требований задачи компьютерного зрения существуют различные типы разметки данных. Вот несколько примеров:
- Ограничивающие рамки (Bounding Boxes): Прямоугольные рамки, нарисованные вокруг объектов на изображении, используемые в основном для задач обнаружения объектов. Эти рамки определяются координатами левого верхнего и правого нижнего углов.
- Полигоны: подробные контуры объектов, обеспечивающие более точную разметку, чем ограничивающие рамки. Полигоны используются в таких задачах, как сегментация экземпляров, где важна форма объекта.
- Маски: бинарные маски, где каждый пиксель является либо частью объекта, либо фоном. Маски используются в задачах семантической сегментации для обеспечения детализации на уровне пикселей.
- Ключевые точки: конкретные точки, отмеченные на изображении для определения интересующих мест. Ключевые точки используются в таких задачах, как оценка позы и обнаружение ключевых точек лица.
- Ориентированные ограничивающие рамки: Прямоугольники с углом поворота, которые используются в задачах OBB, где объекты расположены под произвольными углами, например на аэрофотоснимках.
Общие форматы разметки#
После выбора типа разметки важно выбрать подходящий формат для хранения и обмена аннотациями. Наиболее распространенные форматы:
| Формат | Структура файла | Обычно используется для |
|---|---|---|
| COCO | Один файл JSON | Обнаружение объектов, сегментация экземпляров, обнаружение ключевых точек, общая и паноптическая сегментация, создание подписей к изображениям |
| Pascal VOC | Один файл XML на каждое изображение | Обнаружение объектов |
| YOLO | Один файл .txt на изображение | Обнаружение объектов, сегментация, поза и ориентированные рамки |
Формат YOLO сохраняет по одной строке на объект с индексами классов, начиная с 0. Для обнаружения объектов строка имеет вид class x_center y_center width height с нормализованными координатами от 0 до 1. Строка сегментации заменяет рамку нормализованными точками полигона объекта, а строка позы сохраняет рамку и добавляет после нее координаты ключевых точек с флагом видимости для каждой ключевой точки, если в датасете указано kpt_shape: [n, 3]. Строка OBB сохраняет class x1 y1 x2 y2 x3 y3 x4 y4 с использованием нормализованных координат углов.
Если твой инструмент разметки экспортирует COCO JSON, ты можешь либо конвертировать его в метки YOLO .txt, либо обучать модель прямо на JSON, используя пользовательский класс датасета.
Установка правил разметки#
После выбора типа и формата разметки следующим шагом является установление четких и объективных правил маркировки. Эти правила служат дорожной картой для обеспечения согласованности и точности на протяжении всего процесса разметки. Ключевые аспекты этих правил включают:
- Четкость и детализация: Убедись, что твои инструкции понятны. Используй примеры и иллюстрации, чтобы показать, что ожидается.
- Согласованность: Держи свои аннотации единообразными. Установи стандартные критерии для разметки различных типов данных, чтобы все аннотации следовали одним и тем же правилам.
- Снижение предвзятости: Оставайся нейтральным. Приучай себя быть объективным и минимизировать личные предвзятости, чтобы обеспечить справедливые аннотации.
- Эффективность: Работай умнее, а не тяжелее. Используй инструменты и рабочие процессы, которые автоматизируют повторяющиеся задачи, делая процесс разметки быстрее и эффективнее.
Регулярный пересмотр и обновление правил маркировки помогут поддерживать точность, согласованность и соответствие целям твоего проекта.
Инструменты для аннотирования#
Хороший инструмент разметки позволяет размечать все типы данных, необходимые для твоей задачи, обеспечивает соблюдение единых рекомендаций и экспортирует метки в формате, готовом для обучения. Ultralytics Platform предоставляет встроенный редактор разметки, охватывающий обнаружение, сегментацию экземпляров, семантическую сегментацию, классификацию, позу и OBB, с умной разметкой на базе SAM, которая превращает один клик в маску для задач обнаружения, сегментации экземпляров, семантической сегментации и OBB. Поскольку аннотации сохраняются в макете, ожидаемом для каждой задачи — строки YOLO .txt для пространственных задач и папки классов для классификации — твой размеченный датасет сразу переходит к обучению без какого-либо этапа конвертации.
Качество разметки: точность, прецизионность и выбросы#
Прежде чем приступать к масштабной разметке, полезно разобраться в точности, прецизионности, выбросах и контроле качества, чтобы не размечать данные контрпродуктивным образом.
Понимание точности и прецизионности#
Важно понимать разницу между точностью и прецизионностью и то, как это связано с разметкой. Точность относится к тому, насколько близки размеченные данные к истинным значениям. Она помогает нам измерить, насколько точно метки отражают реальные сценарии. Прецизионность указывает на согласованность разметки. Она проверяет, даешь ли ты одинаковую метку одному и тому же объекту или признаку во всем датасете. Высокая точность и прецизионность приводят к лучше обученным моделям за счет снижения шума и улучшения способности модели к обобщению на основе обучающих данных.
Идентификация выбросов#
Выбросы — это точки данных, которые сильно отклоняются от других наблюдений в наборе данных. В отношении аннотаций выбросом может быть неправильно размеченное изображение или аннотация, которая не соответствует остальной части набора данных. Выбросы беспокоят, потому что они могут исказить процесс обучения модели, приводя к неточным прогнозам и плохой обобщаемости.
Ты можешь использовать различные методы для обнаружения и исправления выбросов:
- Статистические методы: для обнаружения выбросов в числовых признаках, таких как значения пикселей, координаты ограничивающей рамки или размеры объектов, ты можешь использовать такие методы, как коробчатые диаграммы (box plots), гистограммы или z-оценки.
- Визуальные методы: Чтобы заметить аномалии в категориальных признаках, таких как классы объектов, цвета или формы, используй визуальные методы, такие как построение изображений, меток или тепловых карт.
- Алгоритмические методы: используй такие инструменты, как кластеризация (например, кластеризация K-means, DBSCAN) и алгоритмы обнаружения аномалий, чтобы выявлять выбросы на основе паттернов распределения данных.
Контроль качества размеченных данных#
Как и в других технических проектах, контроль качества обязателен для размеченных данных. Хорошая практика — регулярно проверять аннотации, чтобы убедиться в их точности и согласованности. Это можно сделать несколькими способами:
- Просмотр выборок размеченных данных
- Использование автоматизированных инструментов для обнаружения распространенных ошибок
- Привлечение другого человека для перепроверки аннотаций
Если ты работаешь с несколькими людьми, важна согласованность между разными разметчиками. Хорошее согласие между разметчиками означает, что рекомендации понятны и все следуют им одинаково. Это держит всех на одной волне, а аннотации остаются согласованными.
При просмотре, если ты находишь ошибки, исправляй их и обновляй рекомендации, чтобы избежать будущих ошибок. Предоставляй обратную связь разметчикам и предлагай регулярное обучение, чтобы помочь уменьшить количество ошибок. Наличие сильного процесса обработки ошибок сохраняет твой набор данных точным и надежным.
Эффективные стратегии маркировки данных#
Чтобы сделать процесс маркировки данных более плавным и эффективным, рассмотри возможность внедрения этих стратегий:
- Четкие руководства по разметке: Предоставляй подробные инструкции с примерами, чтобы гарантировать, что все разметчики интерпретируют задачи одинаково. Например, при маркировке птиц уточни, нужно ли включать всю птицу или только определенные части.
- Регулярные проверки качества: Устанавливай критерии и используй конкретные метрики для проверки работы, поддерживая высокие стандарты с помощью постоянной обратной связи.
- Использование инструментов предварительной разметки: Многие современные платформы для разметки предлагают функции предварительной разметки с поддержкой ИИ, которые могут значительно ускорить процесс за счет автоматической генерации начальных аннотаций, которые люди затем могут уточнить.
- Внедрение активного обучения (Active Learning): Этот подход отдает приоритет маркировке наиболее информативных выборок в первую очередь, что может уменьшить общее количество необходимых аннотаций при сохранении производительности модели.
- Пакетная обработка: Группируй похожие изображения вместе для разметки, чтобы поддерживать согласованность и повысить эффективность.
Эти стратегии могут помочь поддерживать высокое качество аннотаций, сокращая при этом время и ресурсы, необходимые для процесса маркировки.
Заключение#
Сбор разнообразных, непредвзятых данных и их последовательная разметка с помощью правильных инструментов — это основа надежной модели компьютерного зрения. После сбора и разметки датасета переходи к руководству этапы проекта компьютерного зрения, чтобы перейти к обучению и оценке. Если в процессе возникнут вопросы, задай их сообществу в репозитории Ultralytics на GitHub или на сервере Ultralytics в Discord.
FAQ#
Чтобы минимизировать предвзятость, собирай данные из разнообразных источников, обеспечивай сбалансированное представление всех соответствующих групп (например, разные возрасты, гендеры и этнические принадлежности), регулярно пересматривай и обновляй набор данных для выявления возникающих предвзятостей и применяй методы смягчения, такие как оверсэмплинг недостаточно представленных классов, аугментация данных и алгоритмы, учитывающие справедливость. Избегание предвзятости таким образом помогает твоей модели компьютерного зрения эффективно работать в разнообразных реальных сценариях и улучшает её способность к обобщению.
Установи четкие, объективные правила разметки с подробными инструкциями, примерами и иллюстрациями, а затем применяй их единообразно ко всем типам данных, чтобы каждая аннотация следовала одним и тем же правилам. Обучай разметчиков сохранять нейтральность для уменьшения личной предвзятости, регулярно пересматривай и обновляй руководства, а также используй автоматизированные проверки согласованности и обратную связь между разметчиками, чтобы поддерживать высокую точность и соответствие целям твоего проекта.
Несколько сотен размеченных объектов на класс достаточно для начала экспериментов с трансферным обучением, но для надежной производительности в реальных условиях Ultralytics рекомендует не менее 1500 изображений и 10 000 размеченных экземпляров на класс. Сочетай достаточно большой датасет с разумным расписанием обучения — около 300 эпох является стандартной отправной точкой, которая уменьшается, если модель переобучается слишком рано, — и поддерживай строгость разметки, согласуя ее с конкретными целями твоего проекта. Изучай подробные стратегии обучения в руководстве по обучению YOLO26.
Да. Ultralytics Platform включает встроенный редактор разметки, который поддерживает ограничивающие рамки, полигоны, ключевые точки, ориентированные рамки и метки классификации в едином рабочем пространстве. Умная разметка на базе SAM ускоряет разметку для задач обнаружения, сегментации экземпляров, семантической сегментации и OBB, генерируя маски по одному клику, в то время как поза и классификация размечаются вручную. Аннотации сохраняются в макете, ожидаемом для каждой задачи — строки YOLO
.txtдля пространственных задач, папки классов для классификации — и готовы к обучению.Сопоставь тип разметки с задачей, которую ты собираешься обучать. Ограничивающие рамки рисуются быстрее всего и нужны для обнаружения объектов. Полигоны и маски требуют значительно больше времени на каждый объект, но необходимы для сегментации экземпляров, когда важна точная форма объекта. Ключевые точки подходят для оценки позы и поиска ориентиров, а ориентированные рамки подходят для таких задач OBB, как аэрофотоснимки, где прямоугольник, выровненный по осям, захватывал бы слишком много фона. Разметка для максимально точной задачи, которая тебе действительно нужна, позволяет удерживать трудозатраты на разметку пропорционально результату.