Как обучить пользовательский набор данных с помощью YOLOv5?

Как обучить пользовательский набор данных с помощью YOLOv5?

Исходный узел: 1953267

Введение

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

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

Цели обучения 

  1. В этой статье основное внимание будет уделено обучению модели YOLOv5 реализации пользовательского набора данных.
  2. Мы увидим, что такое предварительно обученные модели, и посмотрим, что такое трансферное обучение.
  3. Мы поймем, что такое YOLOv5 и почему мы используем версию 5 YOLO.

Итак, не теряя времени, приступим к процессу

Содержание

  1. Предварительно обученные модели
  2. Передача обучения
  3. Что и почему YOLOv5?
  4. Шаги, связанные с трансферным обучением
  5. Реализация
  6. Некоторые проблемы, с которыми вы можете столкнуться
  7. Заключение

Предварительно обученные модели

Возможно, вы слышали, что специалисты по данным широко используют термин «предварительно обученная модель». После объяснения того, что делает модель/сеть глубокого обучения, я объясню этот термин. Модель глубокого обучения — это модель, содержащая различные слои, сложенные вместе, чтобы служить единственной цели, такой как классификация, обнаружение и т. д. Сети глубокого обучения учатся, обнаруживая сложные структуры в поступающих к ним данных и сохраняя веса в файле, который позже используются для выполнения аналогичных задач. Предварительно обученные модели — это уже обученные модели глубокого обучения. Это означает, что они уже обучены на огромном наборе данных, содержащем миллионы изображений.

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

Некоторые высокооптимизированные и чрезвычайно эффективные предварительно обученные модели доступны в Интернете. Разные модели используются для решения разных задач. Некоторые из предварительно обученных моделей: VGG-16, VGG-19, YOLOv5, YOLOv3 и Ренет 50.

Какую модель использовать, зависит от задачи, которую вы хотите выполнить. Например, если я хочу выполнить обнаружение объекта задача, я буду использовать модель YOLOv5.

Передача обучения

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

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

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

Что и почему YOLOv5?

YOLOv5 — это предварительно обученная модель, которая позволяет вам смотреть только после того, как версия 5 используется для обнаружения объектов в реальном времени и доказала свою высокую эффективность с точки зрения точности и времени вывода. Существуют и другие версии YOLO, но, как и следовало ожидать, YOLOv5 работает лучше, чем другие версии. YOLOv5 быстрый и простой в использовании. Он основан на фреймворке PyTorch, сообщество которого больше, чем у Yolo v4 Darknet.

Йолов5

Теперь мы рассмотрим архитектуру YOLOv5.

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

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

Шаги, связанные с трансферным обучением

Трансферное обучение — это простой процесс, и мы можем сделать это за несколько простых шагов:

  1. Подготовка данных
  2. Правильный формат аннотаций
  3. Измените несколько слоев, если хотите
  4. Переобучите модель для нескольких итераций
  5. Подтвердить/Тестировать

Подготовка данных

Подготовка данных может занять много времени, если выбранные вами данные немного велики. Подготовка данных означает аннотирование изображений, то есть процесс, при котором вы маркируете изображения, создавая рамку вокруг объекта на изображении. При этом координаты отмеченного объекта будут сохранены в файле, который затем будет передан модели для обучения. Есть несколько сайтов, например makeense.ai и roboflow.com, которые могут помочь вам пометить данные. 

Вот как вы можете аннотировать данные для модели YOLOv5 на makeense.ai.

1. Войти https://www.makesense.ai/. 

2. Нажмите «Начать» в правом нижнем углу экрана.

Йолов5

3. Выберите изображения, которые вы хотите пометить, щелкнув поле, выделенное в центре.

Загрузите изображения, которые вы хотите аннотировать, и нажмите на обнаружение объекта.
Йолов5

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

Я обнаруживаю номерные знаки на транспортном средстве, поэтому единственная метка, которую я буду использовать, — «Номерной знак». Вы можете сделать больше меток, просто нажав Enter, щелкнув кнопку «+» в левой части диалогового окна.

После того, как вы создали все метки, нажмите «Начать проект».

Йолов5

Если вы пропустили какие-либо ярлыки, вы можете изменить их позже, щелкнув действия, а затем отредактировав ярлыки.

5. Начните создавать ограничивающую рамку вокруг объекта на изображении. Поначалу это упражнение может быть немного забавным, но с очень большими данными оно может быть утомительным.

Ограничительная рамка

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

Поэтому вам нужно перейти к кнопке действий и нажать на экспорт аннотаций, не забудьте отметить опцию «Zip-пакет, содержащий файлы в формате YOLO», так как это сохранит файлы в правильном формате, как требуется в модели YOLO.

ЙОЛО модель

7. Это важный шаг, поэтому внимательно следуйте ему.

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

Чтобы дать вам представление о папке, я создал папку с именем «CarsData» и в этой папке сделал две папки — «изображения» и «этикетки».

йолов5

Внутри двух папок вы должны создать еще две папки с именами «train» и «val». В папке изображений вы можете разделить изображения по своему желанию, но вы должны быть осторожны при разделении метки, так как метки должны соответствовать изображениям, которые вы разделили.

8. Теперь создайте zip-файл папки и загрузите его на диск, чтобы мы могли использовать его в colab.

Реализация

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

Итак, вот коды, которым вы должны следовать, чтобы обучить модель YOLOv5 на пользовательском наборе данных.

Я рекомендую вам использовать Google Colab для этого урока, так как он также предоставляет GPU, который обеспечивает более быстрые вычисления.

1. Клон !git https://github.com/ultralytics/yolov5
Это создаст копию репозитория YOLOv5, который является репозиторием GitHub, созданным ultralytics.

2. кд ёлов5
Это команда оболочки командной строки, используемая для изменения текущего рабочего каталога на каталог YOLOv5.

3. !pip install -r требования.txt
Эта команда установит все пакеты и библиотеки, используемые при обучении модели.

4. !unzip '/content/drive/MyDrive/CarsData.zip'
Распаковка папки с изображениями и метками в google colab

Вот и наступил самый важный шаг…

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

Вот что вам нужно сделать.

После выполнения 4 шагов, описанных выше, у вас будет папка yolov5 в вашем коллабе Google. Перейдите в папку yolov5 и щелкните папку «данные». Теперь вы увидите папку с именем «coco128.yaml». 

йолов5

Идите вперед и загрузите эту папку.

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

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

йолов5

Мы собираемся настроить этот файл в соответствии с нашим набором данных и аннотациями.

Мы уже разархивировали набор данных в colab, поэтому мы собираемся скопировать путь нашего поезда и проверочные изображения. Скопировав путь к изображениям поезда, который будет находиться в папке с набором данных и выглядит примерно так «/content/yolov5/CarsData/images/train», вставьте его в файл coco128.yaml, который мы только что скачали.

Сделайте то же самое с тестовыми и проверочными изображениями.

Теперь, когда мы закончим с этим, мы упомянем количество классов, например «nc: 1». В этом случае количество классов равно 1. Затем мы упомянем имя, как показано на изображении ниже. Удалите все остальные классы и закомментированную часть, которая не нужна, после чего наш файл должен выглядеть примерно так.

Yolo

Сохраните этот файл под любым именем. Я сохранил файл с именем customPath.yaml и теперь загружаю этот файл обратно в colab на то же место, где был coco128.yaml. 

Теперь мы закончили часть редактирования и готовы обучить модель.

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

Не забудьте изменить имя загруженного файла ('customPath.yaml). Вы также можете изменить количество эпох, в течение которых вы хотите обучать модель. В этом случае я буду тренировать модель только на 3 эпохи.

5. !python train.py –img 640 –batch 16 –epochs 10 –data /content/yolov5/customPath.yaml –weights yolov5s.pt

Запомните путь, по которому вы загружаете папку. Если путь изменить, то команды вообще работать не будут.

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

Yolo

Yolo

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

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

6. !python detect.py – вес /content/yolov5/runs/train/exp/weights/best.pt – источник path_of_the_image

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

Некоторые проблемы, с которыми вы можете столкнуться

Хотя шаги, описанные выше, верны, есть некоторые проблемы, с которыми вы можете столкнуться, если не будете следовать им точно. 

  1. Неправильный путь: это может быть головной болью или проблемой. Если вы ввели неправильный путь где-то при обучении изображения, это может быть непросто идентифицировать, и вы не сможете обучить модель.
  2. Неправильный формат меток: это широко распространенная проблема, с которой сталкиваются люди при обучении YOLOv5. Модель принимает только формат, в котором каждое изображение имеет собственный текстовый файл с нужным форматом внутри. Часто в сеть передается файл формата XLS или один файл CSV, что приводит к ошибке. Если вы загружаете данные откуда-то, вместо того, чтобы аннотировать каждое изображение, может быть другой формат файла, в котором сохраняются метки. Вот статья для преобразования формата XLS в формат YOLO. (ссылка после завершения статьи).
  3. Неправильное имя файла: Неправильное имя файла снова приведет к ошибке. Обратите внимание на шаги при именовании папок и избегайте этой ошибки.

Заключение

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

Отметка времени:

Больше от Аналитика Видхья