На основе моего опыта и экспериментов

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

Не принимайте близко к сердцу!

Если вы решили обучать модель, вы приняли решение о некоторых из следующих вопросов:
- Какова моя цель? (Классификация, Обнаружение объектов, Сегментация экземпляров)
— С каким алгоритмом нейронной сети я буду работать? (алгоритмы CNN, SSD, версии YOLO и т. д.)
- Каковы гиперпараметры моей модели? (размер изображения, размер пакета, вес, количество эпох и т. д.)

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

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

Если у нас есть ответы на эти вопросы, давайте начнем прогревочные круги!

Начиная

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

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

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

Используемые веса YOLO были получены в результате обучения на этом наборе данных. Если вы хотите тренироваться с собственным набором данных:
1. Вы можете экспортировать только свой собственный набор данных и использовать веса из набора данных COCO.
2. Вы можете создавать свои собственные веса с нуля во время обучения своего пользовательского набора данных. набор данных.
3. При обучении пользовательского набора данных вы можете получить лучшие результаты, используя результаты своего веса из предыдущих результатов обучения.

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

Итак, когда мы должны использовать собственные веса, а когда использовать веса YOLO? Ответ на этот вопрос - то, что мы хотим. Если тип объекта, с которым мы хотим работать, относится к 80 классам COCO, мы можем за короткое время добиться хороших результатов с весами YOLO, например, вы можете легко обнаружить зубную щетку. Вы можете узнать, какие объекты включены в эти 80 классов, из файлов данных, таких как coco.yaml или coco128.yaml (в зависимости от того, что используется в вашей модели). Вы можете получить доступ к этим файлам, нажав на ссылку учетной записи Ultralytics GitHub.

Примечание. Вы можете выбрать подходящую модель в зависимости от размера пользовательского набора данных, например YOLOv8s (маленький), YOLOv8m (средний), YOLOv8l (большой) и т. д.

Другая возможность заключается в том, что объект, над которым вы хотите работать, не включен в набор данных COCO или вы хотите создать свою собственную модель. В этом случае мы сталкиваемся с нашим основным вопросом; «Что следует учитывать при создании пользовательского набора данных для работы с YOLO?».

Готовы к взлету 🚀

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

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

1- Количество

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

2- Качество

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

3- Аннотация

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

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

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

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

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

Итак, как модель узнает, какие данные являются данными поезда, а какие зарезервированы для проверки? Файлы train.txt, validation.txt и test.txt содержат пути для каждого из разделенных изображений.

Использование с моделью

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

Если вы предпочитаете использовать Google Colab в своей работе, вы можете загрузить свой собственный набор данных на свой Диск.

Я упомянул, что файлы train.txt, validation.txt и test.txt содержат пути для каждого из разделенных изображений. Модель YOLO получает доступ к пользовательскому набору данных в соответствии с путями в файле data.

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

Поздравляем, теперь у вас есть собственный набор данных, и вы можете его обучить!🎉

Я был бы рад поделиться с нами своим опытом, пожалуйста, не стесняйтесь комментировать. 👥