Обучите YOLOv8 на пользовательском наборе данных |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2023-02-01 16:35 машинное обучение новости, теория распознавания образов, разработка беспилотных автомобилей Ultralytics недавно выпустила семейство моделей обнаружения объектов YOLOv8. Эти модели превосходят предыдущие версии моделей YOLO как по скорости, так и по точности в наборе данных COCO. Но как насчет производительности на пользовательских наборах данных? Чтобы ответить на этот вопрос, мы будем обучать модели YOLOv8 на пользовательском наборе данных. В частности, мы будем обучать его на крупномасштабном наборе данных для обнаружения выбоин. Чтобы получить лучшую модель, нам нужно провести несколько обучающих экспериментов и оценить каждый. Таким образом, мы будем обучать три разные модели YOLOv8:
После обучения мы также запустим вывод на видео, чтобы проверить реальную производительность этих моделей. Это даст нам лучшее представление о лучшей модели из трех. В дополнение к этому вы также узнаете, как использовать ClearML для ведения журнала и мониторинга обучения модели YOLOv8.
Набор данных для обнаружения выбоин для обучения YOLOv8 В этой статье мы используем довольно большой набор данных о выбоинах, который содержит более 7000 изображений, собранных из нескольких источников. Чтобы дать краткий обзор, набор данных включает изображения из:
После нескольких исправлений аннотаций окончательный набор данных теперь содержит:
Вот несколько изображений из набора данных вместе с аннотациями. Из приведенного выше изображения очень ясно, что обучение YOLOv8 на пользовательском наборе данных выбоин является очень сложной задачей. Выбоины могут быть разных размеров, от маленьких до больших. Загрузите набор данных Если вы планируете выполнять обучающие команды в своей локальной системе, вы можете загрузить набор данных, выполнив следующую команду. Затем распакуйте его в текущий каталог. Внутри каталога мы представляем набор Файл YAML набора данных выбоин Для обучения нам понадобится dataset YAML для определения путей к изображениям и имен классов. В соответствии с командами обучения, которые мы будем выполнять далее в этой статье, этот файл YAML должен находиться в корневом каталоге проекта. Мы назовем этот файл Согласно приведенному выше файлу, каталог pothole_dataset_v8 должен присутствовать в текущем рабочем каталоге. Настройка YOLOv8 custom Чтобы обучить YOLOv8 custom, нам необходимо установить
Мы можем установить пакет с помощью Вышеуказанный пакет установит все зависимости, включая Torchvision и PyTorch. Настройка ClearML Мы не хотим вручную отслеживать наши эксперименты с глубоким обучением. Итак, мы будем использовать интеграцию ClearML, которую Ultralytics YOLOv8 поддерживает по умолчанию. Нам просто нужно установить пакет и инициализировать его с помощью API. Далее нам нужно добавить ключ API. Но перед этим нам нужно сгенерировать ключ. Следуйте инструкциям для создания и добавления ключа:
С этого момента все обучающие эксперименты YOLOv8, которые вы запускаете в этом терминале, будут регистрироваться на вашей панели управления ClearML. Обучение YOLOv8 custom для обнаружения выбоин В этом разделе мы проведем три эксперимента с использованием трех разных моделей YOLOv8. Мы будем обучать модели YOLOv8 Nano, Small и Medium на наборе данных. Выбор гиперпараметров для обучения YOLOv8 custom Вот несколько советов, объясняющих выбор гиперпараметров, который мы делаем во время обучения:
Поскольку набор данных для обнаружения выбоин довольно сложен, мы в основном сосредоточимся на карте на уровне 0.50 IoU (пересечение над объединением). Команды для обучения YOLOv8 custom Мы можем использовать CLI или Python API для обучения моделей YOLOv8. Прежде чем перейти к фактическому этапу обучения, давайте проверим команды и возможные аргументы, с которыми нам может понадобиться иметь дело. Это пример обучающей команды с использованием модели Nano. Вот пояснения ко всем аргументам командной строки, которые мы используем:
Вы также можете создать файл Python (скажем В следующем разделе мы перейдем к фактическим обучающим экспериментам и при необходимости изменим аргументы командной строки. Обучение YOLO8 Nano custom Начиная с обучения модели YOLO8 Nano, самой маленькой в семействе YOLOv8. Эта модель имеет 3,2 миллиона параметров и может работать в режиме реального времени даже на процессоре. Вы можете выполнить следующую команду в терминале, чтобы начать обучение. Для этого используется интерфейс командной строки Yolo. Вот несколько советов относительно обучения:
Следующий блок кода показывает ту же настройку обучения, но с использованием Python API. В зависимости от оборудования, обучение займет несколько часов. Ниже приведены окончательные графики, сохраненные в локальном каталоге после завершения всего обучения. Мы также можем оценить лучшую модель, используя следующую команду. Мы получаем следующий результат в наборе проверки. Самая высокая mAP (Mean Average Precision) at 0.50 IoU is 40.4 при 0.50:0.95 IoU is 18.9. Это может показаться меньшим, но, учитывая, что это модель Nano, это не так уж плохо. Обучение YOLO8 Small custom Теперь давайте обучим небольшую модель YOLOv8 small custom и проверим ее производительность. Как и в предыдущем случае, мы также можем использовать Python API для обучения модели. Нам нужно только изменить модель с yolov8n.pt на yolov8s.pt . Используя небольшую модель YOLOv8, мы достигаем почти mAP of 50 at 0.50 IoU. Давайте запустим команду оценки, чтобы проверить фактическое значение. Вот результаты. Модель достигает mAP 49. Это довольно хорошо для небольшой модели. В основном, размер изображения 1280 очень помогает в достижении таких цифр. Обучение YOLO8 Medium custom Для заключительного эксперимента мы обучим модель среды YOLOv8 на наборе данных выбоин. Ниже приведен соответствующий код API Python. На этот раз мы передаем модель как Модель YOLOv8 medium также, похоже, достигает mAP почти 50. Давайте проведем оценку, чтобы получить фактические цифры.
Интересно, что модель YOLOv8 Medium достигает mAP of 48 в течение 50 эпох по сравнению с mAP of 49, использующей small модель. YOLOv8n vs YOLOv8s vs YOLOv8m Как вы, возможно, помните, мы настроили ClearML в начале статьи. Все результаты обучения регистрировались на панели инструментов ClearML для каждого эксперимента. Вот график из ClearML, показывающий сравнение между каждой из моделей YOLOv8 custom, обученных на наборе данных выбоин. Приведенный выше график, показывающий карту всех трех моделей при 0,50 IoU, дает гораздо более четкую картину. Помимо модели YOLOv8 Nano, две другие модели постоянно совершенствуются в процессе обучения. И мы можем обучать эти две модели еще дольше, чтобы получить лучшие результаты. Вывод с использованием обученных моделей YOLOv8 В настоящее время у нас есть три хорошо работающие модели. На следующем этапе экспериментов мы запустим логический вывод и сравним результаты.
Давайте запустим вывод на видео, используя обученную модель YOLOv8 Nano. Чтобы запустить вывод, мы меняем режим на прогнозирование и указываем путь к желаемым весам модели. Источник принимает либо путь к папке, содержащей изображения и видео, либо путь к одному файлу. Вы можете указать путь к выбранному вами видеофайлу для запуска вывода. Не забудьте указать то же Вот результаты. Клип 1. Результат YOLOv8 Nano после обучения набору данных для обнаружения выбоин. На графическом процессоре GTX 1060 передача вперед выполнялась со скоростью почти 58 кадров в секунду, что довольно быстро при разрешении изображения 1280. Результаты немного колеблются, а также модель способна обнаруживать выбоины только тогда, когда они находятся рядом. Вот сравнение между всеми тремя в одном видео, чтобы получить лучшее представление о том, какая модель работает лучше всего. Клип 2. YOLOv8 Medium против YOLOv8 Small против YOLOv8 Nano при обнаружении выбоин. Интересно, что модель medium обнаруживает больше выбоин на больших расстояниях в первых нескольких кадрах, несмотря на то, что у нее меньше карта по сравнению с маленькой моделью YOLOv8. Для справки, небольшая модель YOLOv8 работает со скоростью 35 кадров в секунду, а средняя модель YOLOv8 — со скоростью 14 кадров в секунду. Вот еще одно сравнение между моделями YOLOv8 Medium и YOLOv8 Small. Клип 3. YOLOv8 Medium против YOLOv8 Small для обнаружения выбоин. Модель YOLOv8 Medium способна обнаруживать несколько более мелких выбоин по сравнению с моделью Small. Результаты здесь выглядят почти идентично из?за их очень близкой карты проверки. Но в нескольких кадрах модель YOLOv8 Medium, похоже, обнаруживает небольшие выбоины. Скорее всего, при более длительном обучении модель YOLOv8 Medium превзойдет модель YOLOv8 Small. Резюме и заключение В этой статье у нас было подробное пошаговое руководство по обучению моделей YOLOv8 на пользовательском наборе данных. В процессе мы также провели небольшой обучающий эксперимент в реальном мире для обнаружения выбоин. Эксперименты показали, что обучение моделей обнаружения объектов на небольших объектах может быть сложным даже при достаточном количестве выборок. Мы могли наблюдать это, поскольку обучение в течение 50 эпох было недостаточным, а графики карт продолжали увеличиваться. Кроме того, с меньшими объектами модели обнаружения больших объектов (в данном случае YOLOv8 Medium против Nano), похоже, работают лучше при обнаружении новых изображений и видео. Вот краткое изложение всех пунктов, которые мы рассмотрели:
Если вы расширите этот проект, мы будем рады услышать о вашем опыте в разделе комментариев.
Список литературы
Источник: habr.com Комментарии: |
|