Новейшая модель обнаружения объектов и сегментации изображений Ultralytics:

Добро пожаловать в мою статью, посвященную YOLOv8! YOLOv8 — это последняя версия популярной модели YOLO от Ultralytics, предназначенная для эффективного и точного обнаружения объектов и сегментации изображений. Эта статья является отправной точкой для использования YOLOv8 и понимания его функций.

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

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

По сравнению с другими версиями модели в ее производительность были внесены значительные улучшения с точки зрения скорости, точности и архитектуры. Более быстрый и точный, чем его предшественник (YOLOv7), он достиг нового максимума со средней средней точностью (MAP) 53,7.

Модели YOLOv8

В YOLOv8 доступно пять различных моделей для каждой категории обнаружения, сегментации и классификации. YOLOv8 Nano — самая маленькая и быстрая модель, а YOLOv8 Extra Large (YOLOv8x) — самая медленная, но самая точная модель среди них.

YOLOv8 поставляется со следующими предварительно обученными моделями:

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

Чтобы оценить производительность моделей обнаружения и сегментации экземпляров YOLOv8x, давайте посмотрим на их результаты.

Установить

Чтобы начать использовать YOLOv8, у вас есть два варианта: вы можете либо установить последнюю стабильную версию через pip-пакет Ultralytics, либо клонировать репозиторий https://github.com/ultralytics/ultralytics для получения самой актуальной версии. .

Если вы собираетесь создать новую среду в Anaconda Powershell Prompt (Anaconda3)

conda create -n yolov8
conda activate yolov8

Метод установки Pip (рекомендуется)

pip install ultralytics

Метод клонирования Git (для разработки)

git clone https://github.com/ultralytics/ultralytics
cd ultralytics
pip install -e '.[dev]'

Использование с Python

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.yaml')  # build a new model from scratch
model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)

# Use the model
results = model.train(data='coco128.yaml', epochs=3)  # train the model
results = model.val()  # evaluate model performance on the validation set
results = model('https://ultralytics.com/images/bus.jpg')  # predict on an image
success = model.export(format='onnx')  # export the model to ONNX format

YOLOv8 в вашем пользовательском наборе данных

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

  • Собирать данные
  • Этикетка данных
  • Разделить данные (train, test и val)
  • Создание конфигурационных файлов
  • Начать обучение

Шаг 1. Сбор данных

Создайте набор данных для индивидуального обучения YOLOv8.

YOLOv8 требует, чтобы данные этикетки предоставлялись в текстовом (.txt) файле в определенном формате. Формат включает в себя индекс класса, координаты объекта, все нормировано по ширине и высоте изображения. Каждая строка в текстовом файле представляет объект на соответствующем изображении и формат каждой строки.

Координаты нормализуются в соответствии с размером связанного изображения. Допустим, изображения имеют размер 864x1188. Первый столбец представляет наш класс. Пусть наш класс автомобиля будет равен 0, а наш человеческий класс будет равен 1. Нормализация рассчитывается как: x1/864 y1/1188 x2/864 y2/1188. Например, текстовый файл, содержащий метки для двух объектов класса «автомобиль» и «человек», может выглядеть так:

0 0.525 0.345 0.235 0.176
1 0.827 0.492 0.167 0.357

Шаг 2. Маркировка данных

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

Шаг 3. Разделите данные (обучение, тестирование и оценка)

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

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

├── yolov8
 ## └── train
 ####└── images (folder including all training images)
 ####└── labels (folder including all training labels)
 ## └── test
 ####└── images (folder including all testing images)
 ####└── labels (folder including all testing labels)
 ## └── valid
 ####└── images (folder including all testing images)
 ####└── labels (folder including all testing labels)

Шаг 4. Создание файлов конфигурации

Создание пользовательского файла конфигурации с именем «custom.yaml» может быть полезным для организации параметров модели компьютерного зрения. Задав правильный путь к папке набора данных и изменив классы и их имена, вы можете хранить и управлять настройками модели.

with open("C:/Users/Beyza/Desktop/yolov8/data.yaml") as file:
    yaml_content = file.read()

with Path('data.yaml').open('w') as f:
    f.write(yaml_content)

print(yaml_content)

Шаг 5. Начните обучение

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

Задачи Ultralytics YOLOv8

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

1 обнаружение

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

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

Модели обнаружения YOLOv8 yolov8n.pt предварительно обучены на COCO.

Поезд

Чтобы обучить YOLOv8n на наборе данных COCO 128, установите размер изображения на 640 и запустите его на 100 эпох.

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.yaml')  # build a new model from YAML
model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # build from YAML and transfer weights

# Train the model
model.train(data='coco128.yaml', epochs=100, imgsz=640)

Вэл

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

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # load an official model
model = YOLO('path/to/best.pt')  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map    # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps   # a list contains map50-95 of each category

Прогнозировать

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

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # load an official model
model = YOLO('path/to/best.pt')  # load a custom model

# Predict with the model
results = model('https://ultralytics.com/images/bus.jpg')  # predict on an image

2-Sсегментация

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

yolov8n-seg.pt и прошли предварительную подготовку на COCO.

Поезд

Чтобы обучить модель YOLOv8n-seg на наборе данных COCO 128-seq, вы должны запустить 100 эпох при размере изображения 640.

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n-seg.yaml')  # build a new model from YAML
model = YOLO('yolov8n-seg.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov8n-seg.yaml').load('yolov8n.pt')  # build from YAML and transfer weights

# Train the model
model.train(data='coco128-seg.yaml', epochs=100, imgsz=640)

Вэл

Чтобы проверить точность обученной модели YOLOv8n-seg в наборе данных COCO128-seg, просто запустите модель в наборе проверки без каких-либо дополнительных аргументов, так как модель сохраняет свои обучающие данные и аргументы в качестве атрибутов. Этот шаг важен для обеспечения того, чтобы модель работала хорошо и ее можно было с уверенностью развернуть для реального использования.

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n-seg.pt')  # load an official model
model = YOLO('path/to/best.pt')  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map    # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps   # a list contains map50-95(B) of each category
metrics.seg.map    # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps   # a list contains map50-95(M) of each category

Прогнозировать

С моделью YOLOv8n-seg, обученной на наборе данных COCO128-seq, вы можете использовать ее для прогнозирования новых изображений. Загрузив обученную модель, загрузив изображения и применив модель к изображениям, вы можете точно обнаруживать и сегментировать объекты на изображениях. Этот процесс позволяет вам получать ценные сведения из визуальных данных и принимать обоснованные решения на основе прогнозов модели.

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n-seg.pt')  # load an official model
model = YOLO('path/to/best.pt')  # load a custom model

# Predict with the model
results = model('https://ultralytics.com/images/bus.jpg')  # predict on an image

3-Классификация

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

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

yolov8n-cls.pt и проходят предварительную подготовку в ImageNet.

Поезд

Чтобы обучить модель YOLOv8n-cls на наборе данных MNIST160, вы можете запустить ее на 100 эпох при размере изображения 64. Настроив параметры конфигурации модели, вы можете дополнительно настроить процесс обучения.

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n-cls.yaml')  # build a new model from YAML
model = YOLO('yolov8n-cls.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov8n-cls.yaml').load('yolov8n-cls.pt')  # build from YAML and transfer weights

# Train the model
model.train(data='mnist160', epochs=100, imgsz=64)

Вэл

Чтобы проверить точность модели YOLOv8n-cls, обученной на наборе данных MNIST160, вам не нужно передавать какие-либо аргументы, поскольку модель сохраняет свои обучающие данные и атрибуты.

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n-cls.pt')  # load an official model
model = YOLO('path/to/best.pt')  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.top1   # top1 accuracy
metrics.top5   # top5 accuracy

Прогнозировать

С моделью YOLOv8n-cls, обученной на наборе данных MNIST160, вы можете использовать ее для прогнозирования новых изображений. Загружая обученную модель, загружая изображения и применяя модель к изображениям, вы можете точно классифицировать изображения и получать ценные сведения из больших наборов визуальных данных. Этот процесс позволяет быстро и легко сортировать изображения по категориям и принимать обоснованные решения на основе прогнозов модели.

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n-cls.pt')  # load an official model
model = YOLO('path/to/best.pt')  # load a custom model

# Predict with the model
results = model('https://ultralytics.com/images/bus.jpg')  # predict on an image

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

Спасибо за прочтение. Надеюсь, статья стоила вашего времени. Подпишитесь на меня в LinkedIn, Github.