Распознавание изображений YOLOv8 является выдающимся, но обучение модели — важная задача, которую вы не должны упускать из виду.
YOLOv8 — это алгоритм обнаружения объектов в реальном времени, который широко используется в области обнаружения объектов. Это часть серии You Only Look Once (YOLO), разработанной Ultralytics. Алгоритм отслеживает, обнаруживает, сегментирует экземпляры, оценивает позу и классифицирует объекты на изображениях и видео. Он стремится быть быстрее и точнее, чем его предшественники.
Использование YOLOv8 в экспериментальных наборах данных, таких как CIFAR-10 и CIFAR-100, часто проще для проектов Proof-of-Concept (POC), чем в реальных наборах данных, требующих настраиваемых наборов данных.
Это руководство проведет вас через шаги, связанные с обучением YOLOv8 на пользовательских данных.
Настройка среды Python
Начните с установки среды разработки для проекта, следуя приведенным ниже инструкциям.
- Перейдите в терминал и создайте новый каталог с именем yolov8project:
мкдир yolov8project
- Перейдите в каталог проекта и создать виртуальную среду:
cd yolov8project
python -m venv env - Затем активируйте виртуальную среду.
Чтобы запустить код, вам необходимо установить Ultralytics — библиотеку для обнаружения объектов и сегментации изображений. Это также зависимость YOLOv8. Установите это используя пункт выполнив приведенную ниже команду.# В Windows
env/Скрипты/активировать# В Linux/macOS
источник env/bin/активироватьpip установить ультралитики
- Эта команда устанавливает предварительно обученную модель YOLOv8, yolov8n.pt. Протестируйте модель, выполнив приведенные ниже команды, чтобы выполнить обнаружение с предварительно обученными весами на выбранном вами изображении или видео, соответственно, с помощью YOLOv8.
Если все работает идеально, результаты будут доступны в yolov8project каталог в запускает/обнаруживает/испытывает подкаталог.#обнаружение изображения
yolo task=detect mode=predict model=yolov8n.pt source="path/to/image.png"#видеообнаружение
yolo task=detect mode=predict model=yolov8n.pt source="path/to/video.mp4"
Подготовка вашего пользовательского набора данных
Шаги по подготовке пользовательского набора данных включают сбор данных, маркировку данных и разделение данных (обучение, тестирование, проверка).
Сбор данных
Это процесс сбора набора изображений с объектами, которые вы хотите обнаружить. Убедитесь, что используются качественные изображения, в фокусе и объекты хорошо видны. Вы можете использовать различные инструменты для сбора изображений, такие как Google Images, Flickr или свою собственную камеру. Если у вас нет набора данных изображения, используйте набор данных из openimages база данных. В этой статье будет использоваться изображение безопасности строительной площадки. набор данных от Kaggle.
Маркировка данных
После того, как вы собрали свои изображения, вам нужно их пометить. Это означает идентификацию объектов на каждом изображении и их ограничивающих рамок. Существует несколько инструментов, которые помогут вам маркировать данные, например LabelImg, CVAT и Робофлоу. Все эти инструменты бесплатны.
Разделение данных
Для обучения моделей машинного обучения необходимо разделить данные на обучающие и тестовые наборы. Попробуйте использовать коэффициент разделения 70%-30% при работе с большими объемами данных. В противном случае придерживайтесь 80%-20%, чтобы избежать переобучения или недообучения вашей модели.
Использовать разделенные папки, чтобы случайным образом разделить ваши данные на обучающие, тестовые и проверочные наборы с желаемым коэффициентом разделения.
Настройка YOLOv8 для вашего набора данных
После маркировки ваших данных перейдите к настройке YOLOv8 для вашего пользовательского набора данных. Это включает в себя создание файла конфигурации, который указывает следующее:
- Путь к вашим тренировочным данным.
- Путь к вашим проверочным данным.
- Количество классов, которые вы хотите обнаружить.
Создайте файл config.yaml для хранения конфигурации:
путь:(набор данныхкаталогпуть)
тренироваться:(тренироватьсянабор данныхпапкапуть)
тест:(тестнабор данныхпапкапуть)
действительный:(Проверканабор данныхпапкапуть)# Классы
нк:5# заменить на основе количества классов в вашем наборе данных
# Имена классов
# замените все имена классов именами ваших собственных классов
имена:['класс1','класс2','класс3','класс4','класс5']
Создание файла конфигурации — это полезный способ структурировать и сохранить важные параметры вашей модели компьютерного зрения. Обязательно обновите файл config.yaml в соответствии с характером и структурой вашего набора данных.
Обязательно используйте правильные пути для наборов данных, поскольку обучение модели полностью зависит от файла конфигурации.
Обучение YOLOv8 на пользовательских данных
Как только вы создадите файл конфигурации, начните обучение YOLOv8. Используйте инструмент командной строки YOLOv8 для обучения вашей модели. Инструмент командной строки принимает несколько параметров, таких как путь к файлу конфигурации, количество эпох и размер изображения следующим образом:
yolo task=detect mode=train model=yolov8n.pt data=path/to/config.yaml epochs=10 imgsz=640
Эта команда состоит из нескольких частей.
задача задает тип задачи: обнаружение, сегментация или классификация. режим представляет собой действие: обучать, прогнозировать, оценивать, экспортировать, отслеживать или тестировать. модель модель для использования, в данном случае yolov8n.pt. Вы также можете использовать yolov8s/yolov8l/yolov8x.
эпохи представляет количество тренировочных раундов (10). imgsz представляет размер изображения (640). Размер изображения всегда должен быть кратен 32.
Вот пример вывода, который вы можете ожидать:
Время, используемое для обучения, зависит от размера вашего набора данных, количества эпох и количества классов, которые вы хотите обнаружить. После завершения процесса обучения у вас будет обученная модель YOLOv8, которую вы будете использовать для обнаружения объектов на изображениях и видео.
После завершения обучения сделайте вывод с новыми весами, best.pt
yolo task=detect mode=predict model="runs/train/weights/best.pt" source="image.png"
Перейдите к пробежки/поезд/опыт/веса/best.pt каталог для доступа к специально обученным весам. YOLOv8 сохранит предсказанное изображение в запускает/обнаруживает/испытывает подкаталог.
Оценка производительности модели
Вы можете оценить производительность модели YOLOv8, используя следующую команду, которая оценивает модель на наборе тестовых изображений:
yolo val model=yolov8n.pt данные=путь/к/config.yaml пакет=1 imgsz=640
Ожидаемые результаты следующие:
В процессе оценки будут генерироваться различные показатели, такие как точность, полнота и оценка F1. Метрика точности измеряет процент правильно обнаруженных объектов. Метрика отзыва измеряет процент объектов, обнаруженных YOLOv8. Оценка F1 представляет собой средневзвешенное значение показателей точности и полноты.
Развертывание вашей пользовательской модели YOLOv8
Проверьте производительность вашей модели YOLOv8.
Yolo обнаруживает предсказывает модель = путь/к/best.pt источник = 'путь/к/image.jpg'
Результат выглядит следующим образом:
Затем сохраните веса модели в файл.
Модель экспорта yolo = путь/к/формату best.pt = onnx
Используйте файл, чтобы загрузить модель в свое приложение и использовать ее для обнаружения объектов в режиме реального времени. Если вы развернете модель в облачный сервис, используйте облачный сервис для обнаружения объектов на изображениях и видео, которые есть в сервисе.
YOLOv8 Еда на вынос
Команда Ultralytics постоянно совершенствует модели серии YOLO. Это сделало их лидерами в области технологий обнаружения объектов и компьютерного зрения.
YOLOv8 — это улучшенная модель, которую вы можете использовать для работы со многими типами проектов компьютерного зрения.