Ultralytics YOLO27:
Get Started

Стратегии сбора и аннотирования данных для компьютерного зрения#

Сбор и аннотирование данных — два основополагающих этапа любого проекта по компьютерному зрению: сначала ты собираешь репрезентативные изображения или видео, а затем размечаешь их, чтобы модель могла на них обучаться. Качество этих данных напрямую определяет качество модели, поэтому ещё до начала обучения важно определить классы, собирать данные без смещения и последовательно их аннотировать.



Смотри: Как разрабатывать эффективные стратегии сбора и аннотирования данных для компьютерного зрения 🚀

В этом руководстве рассматриваются настройка классов и сбор данных, понятие аннотирования данных, типы аннотаций и доступные форматы, а также эффективные стратегии разметки — каждое решение согласуется с целями твоего проекта.

Настройка классов и сбор данных#

Сбор изображений и видео для проекта по компьютерному зрению сводится к трём решениям: сколько классов определить, где брать данные и как не допустить смещения в наборе данных.

Как выбрать подходящие классы для проекта#

Один из первых вопросов при начале проекта по компьютерному зрению — сколько классов включить. Нужно определить состав классов, то есть категории или метки, которые модель должна распознавать и различать. Количество классов зависит от конкретных целей проекта.

Например, если ты хочешь отслеживать дорожное движение, в классы можно включить «автомобиль», «грузовик», «автобус», «мотоцикл» и «велосипед». А для отслеживания товаров в магазине можно использовать классы «фрукты», «овощи», «напитки» и «закуски». Определение классов с учётом целей проекта помогает сделать набор данных релевантным и сфокусированным.

Определяя классы, также важно решить, насколько подробно их нужно делить. Под «количеством» понимается число отдельных классов, которые тебе нужны. Это решение влияет на детализацию данных и сложность модели. Вот что следует учитывать в каждом случае:

  • Небольшое количество классов: широкие категории, например «транспортное средство» и «не транспортное средство». Они упрощают аннотирование и требуют меньше вычислительных ресурсов, но дают менее подробную информацию, что может снизить эффективность модели в сложных сценариях.
  • Большое количество классов: больше категорий с тонкими различиями, например «седан», «внедорожник», «пикап» и «мотоцикл». Такие классы позволяют собирать более подробные данные и повышать точность и производительность модели. Однако на их аннотирование уходит больше времени и труда, а также требуется больше вычислительных ресурсов.

Начать с более конкретных классов может быть очень полезно, особенно в сложных проектах, где важны детали. Более конкретные классы позволяют собирать более подробные данные, получать более глубокие выводы и чётче разграничивать категории. Это не только повышает точность модели, но и упрощает её последующую корректировку, экономя время и ресурсы.

Источники данных#

Можно использовать общедоступные наборы данных или собрать собственные. Общедоступные наборы, например на Kaggle и в поисковике наборов данных Google, содержат хорошо размеченные и стандартизированные данные, поэтому отлично подходят для начала обучения и валидации моделей.

Сбор собственных данных позволяет адаптировать набор данных к конкретным потребностям. Ты можешь снимать изображения и видео на камеры или дроны, собирать изображения из интернета или использовать имеющиеся внутренние данные организации. Собственные данные дают больше контроля над их качеством и релевантностью. Сочетание общедоступных и собственных источников помогает создать разнообразный и полный набор данных.

Как избежать смещения при сборе данных#

Смещение возникает, когда одни группы или сценарии представлены в наборе данных недостаточно, а другие — чрезмерно. В результате модель хорошо работает на одних данных и плохо — на других. Важно избегать смещения в ИИ, чтобы модель компьютерного зрения хорошо работала в самых разных сценариях.

Вот как избежать смещения при сборе данных:

  • Разнообразие источников: собирай данные из множества источников, чтобы учесть разные точки зрения и сценарии.
  • Сбалансированное представление: обеспечь сбалансированное представление всех релевантных групп. Например, учитывай разные возрастные группы, гендеры и этнические группы.
  • Постоянный мониторинг: регулярно проверяй и обновляй набор данных, чтобы выявлять и устранять возникающее смещение.
  • Методы снижения смещения: используй такие методы, как увеличение выборки недостаточно представленных классов, аугментация данных и алгоритмы, учитывающие справедливость.

Соблюдение этих рекомендаций помогает создать более надёжную и справедливую модель, способную хорошо обобщать данные в реальных приложениях.

Что такое аннотирование данных?#

Аннотирование данных — это процесс разметки данных, чтобы их можно было использовать для обучения моделей машинного обучения. В компьютерном зрении это означает разметку изображений или видео информацией, на которой модель должна обучаться. Без правильно размеченных данных модели не смогут точно усвоить взаимосвязи между входными и выходными данными.

Типы аннотирования данных#

В зависимости от требований конкретной задачи компьютерного зрения используются разные типы аннотирования данных. Вот несколько примеров:

  • Ограничивающие рамки: прямоугольники, нарисованные вокруг объектов на изображении и используемые главным образом для задач детекции объектов. Рамки задаются координатами верхнего левого и нижнего правого углов.
  • Полигоны: подробные контуры объектов, обеспечивающие более точную разметку, чем ограничивающие рамки. Полигоны используются в таких задачах, как сегментация экземпляров, где важна форма объекта.
  • Маски: бинарные маски, в которых каждый пиксель относится либо к объекту, либо к фону. Маски используются в задачах семантической сегментации, чтобы задавать разметку на уровне пикселей.
  • Ключевые точки: определённые точки на изображении, отмечающие интересующие области. Ключевые точки используются в таких задачах, как оценка позы и обнаружение ориентиров лица.
  • Поворотные ограничивающие рамки: прямоугольники с углом поворота, используемые в задачах OBB, где объекты могут располагаться под произвольным углом, например на аэрофотоснимках.

Data annotation types including bounding boxes, polygons, and masks

Распространённые форматы аннотаций#

Выбрав тип аннотации, важно определить подходящий формат для хранения аннотаций и обмена ими. Самые распространённые форматы:

ФорматСтруктура файлаТипичные задачи
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 для пространственных задач и папках классов для классификации, — размеченный набор данных можно сразу использовать для обучения, не выполняя преобразование.

Качество аннотаций: точность, прецизионность и выбросы#

Прежде чем приступать к масштабному аннотированию, полезно разобраться в точности, прецизионности, выбросах и контроле качества, чтобы не размечать данные непродуктивным образом.

Разбираемся в точности и прецизионности#

Важно понимать разницу между точностью и прецизионностью и то, как эти понятия связаны с аннотированием. Точность показывает, насколько размеченные данные соответствуют истинным значениям. Она помогает оценить, насколько метки отражают реальные сценарии. Прецизионность характеризует единообразие аннотаций. Она показывает, присваиваешь ли ты одному и тому же объекту или признаку одинаковую метку во всём наборе данных. Высокие точность и прецизионность позволяют лучше обучать модели, снижая уровень шума и повышая способность модели обобщать обучающие данные.

Accuracy vs precision comparison for data annotation

Выявление выбросов#

Выбросы — это точки данных, заметно отклоняющиеся от остальных наблюдений в наборе данных. В контексте аннотаций выбросом может быть неправильно размеченное изображение или аннотация, не согласующаяся с остальной частью набора данных. Выбросы опасны, поскольку могут искажать процесс обучения модели, приводя к неточным предсказаниям и плохому обобщению.

Для выявления и исправления выбросов можно использовать разные методы:

  • Статистические методы: для выявления выбросов в числовых признаках, таких как значения пикселей, координаты ограничивающих рамок или размеры объектов, можно использовать диаграммы размаха, гистограммы или z-оценки.
  • Визуальные методы: чтобы выявить аномалии в категориальных признаках, таких как классы объектов, цвета или формы, используй визуализацию изображений, меток или тепловых карт.
  • Алгоритмические методы: используй такие инструменты, как кластеризация (например, кластеризация K-средних и DBSCAN), а также алгоритмы обнаружения аномалий, чтобы выявлять выбросы на основе закономерностей распределения данных.

Контроль качества размеченных данных#

Как и в других технических проектах, контроль качества размеченных данных необходим. Рекомендуется регулярно проверять аннотации, чтобы убедиться в их точности и единообразии. Это можно делать несколькими способами:

  • Проверка выборок размеченных данных
  • Использование автоматизированных инструментов для выявления типичных ошибок
  • Повторная проверка аннотаций другим человеком

Если над проектом работают несколько человек, важно обеспечить согласованность разметки между аннотаторами. Высокая согласованность между аннотаторами означает, что правила понятны и все применяют их одинаково. Это помогает всем работать согласованно и обеспечивает единообразие аннотаций.

Если во время проверки ты находишь ошибки, исправь их и обнови правила, чтобы предотвратить подобные проблемы в будущем. Давай аннотаторам обратную связь и регулярно проводи обучение, чтобы сократить количество ошибок. Надёжный процесс обработки ошибок помогает поддерживать точность и достоверность набора данных.

Эффективные стратегии разметки данных#

Чтобы упростить и повысить эффективность разметки данных, воспользуйся следующими стратегиями:

  • Чёткие инструкции по разметке: Предоставь подробные инструкции с примерами, чтобы все аннотаторы одинаково понимали задачи. Например, при разметке птиц укажи, нужно ли размечать птицу целиком или только отдельные её части.
  • Регулярная проверка качества: Установи контрольные показатели и используй конкретные метрики для проверки результатов, поддерживая высокие стандарты благодаря постоянной обратной связи.
  • Используй инструменты предварительной разметки: Многие современные платформы для аннотирования предлагают функции предварительной разметки с помощью ИИ. Они могут значительно ускорить процесс, автоматически создавая начальные аннотации, которые затем дорабатывают люди.
  • Используй активное обучение: Этот подход позволяет в первую очередь размечать наиболее информативные примеры, что может сократить общее количество необходимых аннотаций без ухудшения качества модели.
  • Пакетная обработка: Группируй похожие изображения для разметки, чтобы обеспечить единообразие и повысить эффективность.

Эти стратегии помогают поддерживать высокое качество аннотаций и сокращать время и ресурсы, необходимые для разметки.

Заключение#

Сбор разнообразных и непредвзятых данных и их единообразная разметка с помощью подходящих инструментов — основа надёжной модели компьютерного зрения. Когда датасет собран и размечен, перейди к руководству по этапам проекта компьютерного зрения, чтобы приступить к обучению и оценке. Если по ходу работы возникнут вопросы, обратись к сообществу в репозитории Ultralytics на GitHub или на сервере Ultralytics в Discord.

Часто задаваемые вопросы#

  • Чтобы свести предвзятость к минимуму, собирай данные из разных источников, обеспечивай сбалансированное представительство всех значимых групп (например, людей разного возраста, пола и этнической принадлежности), регулярно проверяй и обновляй датасет, чтобы выявлять новые виды предвзятости, и применяй методы её уменьшения, такие как увеличение числа примеров недостаточно представленных классов, аугментация данных и алгоритмы с учётом справедливости. Такой подход помогает модели компьютерного зрения хорошо работать в различных реальных сценариях и повышает её способность к обобщению.

  • Составь чёткие и объективные инструкции по разметке с подробными указаниями, примерами и иллюстрациями, а затем применяй их единообразно ко всем типам данных, чтобы каждая аннотация соответствовала одним и тем же правилам. Научи аннотаторов сохранять нейтральность, чтобы уменьшить влияние личной предвзятости, регулярно пересматривай и обновляй инструкции, а также используй автоматические проверки согласованности и обратную связь между аннотаторами, чтобы поддерживать высокую точность и соответствие целям проекта.

  • Для начала экспериментов с переносом обучения хватит нескольких сотен размеченных объектов каждого класса, но для надёжной работы в реальных условиях Ultralytics рекомендует не менее 1 500 изображений и 10 000 размеченных экземпляров каждого класса. Используй достаточно большой датасет и разумный график обучения — около 300 эпох обычно подходят для начала; сократи их количество, если модель рано переобучается. Тщательно размечай данные с учётом конкретных целей проекта. Изучи подробные стратегии обучения в руководстве по обучению YOLO26.

  • Да. Платформа Ultralytics включает встроенный редактор разметки, который позволяет работать с ограничивающими рамками, полигонами, ключевыми точками, ориентированными рамками и метками классов в едином рабочем пространстве. Интеллектуальная разметка на базе SAM ускоряет разметку для задач детекции, сегментации экземпляров, семантической сегментации и OBB, создавая маски по одному щелчку мыши; для разметки датасетов поз можно использовать модели YOLO для поз, а классификацию размечают вручную. Аннотации сохраняются в формате, ожидаемом для каждой задачи: строках YOLO .txt для пространственных задач и папках классов для классификации. После этого они готовы к обучению.

  • Выбирай тип аннотации в соответствии с задачей, для которой собираешься обучать модель. Ограничивающие рамки быстрее всего рисовать, и для детекции объектов их достаточно. Полигоны и маски требуют заметно больше времени на каждый объект, но необходимы для сегментации экземпляров, когда важна точная форма объекта. Ключевые точки подходят для оценки позы и детекции ориентиров, а ориентированные рамки — для задач OBB, например обработки аэрофотоснимков, где прямоугольник с горизонтальными и вертикальными сторонами захватил бы слишком много фона. Размечай данные для самой точной из действительно необходимых тебе задач — так объём работы будет соответствовать результату.

Комментарии