Аннотирование изображений для обнаружения объектов с помощью LabelImg, библиотеки Python с открытым исходным кодом

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

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

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

В этом уроке мы сосредоточимся на очень популярной группе алгоритмов обнаружения объектов, известной как YOLO (You Only Look Once), которые могут помочь нам обучить модели обнаружения объектов за пару дней с приличными готовыми решениями. точность.

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

Таким образом, машина учится различать объект и другие элементы изображения.

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

Настройка нашей среды

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

Мы можем установить этот пакет с помощью команды Git или загрузить его напрямую здесь.

git clone https://github.com/pranjalAI/labelImg.git

После запуска этого кода вы получите zip-файл, который можно распаковать в любом месте.

Установка зависимостей помощника

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

  • Откройте командную строку.
  • Перейдите в папку с именем «labelImg», которую вы скачали из источника с помощью команды Git.
  • Теперь запустите следующую команду
pip install pyqt5

Есть много способов установить pyqt5, и все они хороши - конечная цель - просто установить pyqt5 на ваш компьютер.

Определение классов нашей модели

Когда вы строите любую модель обнаружения объектов, вы можете иметь в виду некоторые объекты, которые вы хотите, чтобы ваша машина обнаруживала. Мы должны упомянуть эти детали класса объекта в файле, чтобы помочь нам в процессе маркировки.

Для этого вам нужно перейти в папку «labelImg \ data»; там вы найдете predefined_classes.txt

Вы можете ввести свой список имен объектов, которые есть на ваших изображениях. Каждый новый объект должен стоять на новой строке.

Здесь я определил «NumberPlate» и «CCTV» как два имени класса, которые должна определять моя модель - вы можете определять разные классы в соответствии с требованиями вашего варианта использования.

Отладка моделей обнаружения объектов может быть сложной задачей, но часто исправлять нужно именно данные. Узнайте больше о том, как вы можете использовать Комету и Аквариум, чтобы исправить ваши данные для обнаружения объектов.

Начать процесс маркировки

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

После выполнения этой команды вы получите окно с некоторыми кнопками и функциями.

Большой! Если вы здесь, молодец. Если вы столкнулись с некоторыми проблемами, вам необходимо убедиться, что pyqt5 установлен правильно.

Маркировка в действии

Вы можете запускать этот инструмент сколько угодно раз, запустив файл «labelImg.py». После запуска инструмента вы можете найти различные кнопки с левой стороны. Эти кнопки, помимо прочего, помогут вам выбрать расположение папки с изображениями.

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

Файл метки содержит сведения о координатах объектов на вашем изображении и сведения о классе для вашего изображения.

Чтобы пометить отображаемые изображения, сначала необходимо установить формат метки. Если вы используете алгоритм YOLO, вам нужно будет выбрать YOLO в качестве формата изображения. Вы можете сделать это с помощью кнопки в нижнем левом углу пользовательского интерфейса (как показано в Gif ниже).

Используя этот инструмент, вы можете маркировать изображения в формате YOLO или VOC. Есть и другие алгоритмы, использующие файлы этикеток в формате Pascal / VOC; в этом случае вы можете выбрать формат Pascal / VOC для соответствующей маркировки изображений.

Теперь нажмите кнопку создания RectBox, чтобы начать рисовать ограничивающую рамку.

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

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

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

Ключевая рекомендация

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

Некоторые из бесплатных инструментов для увеличения ваших изображений включают V oTT от Microsoft, Imglab, CVAT и многие другие. Я бы посоветовал попробовать их и предпочел бы удобный.

Заключение

В этой статье мы рассмотрели основные процессы маркировки изображений наборов данных для обнаружения объектов. Мы использовали пакет Python с открытым исходным кодом labelImg.

Аннотирование изображений - это обычно ручной и трудоемкий процесс. Но чем больше времени вы потратите на этот процесс, тем лучше будут ваши модели.

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

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

Независимая редакция, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по обработке данных и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить модели машинного обучения.