Перейти к содержимому

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

Добро пожаловать в документацию по использованию YOLOv8 Python ! Это руководство призвано помочь тебе без проблем интегрировать YOLOv8 в свои Python -проекты для обнаружения, сегментации и классификации объектов. Здесь ты узнаешь, как загружать и использовать предварительно обученные модели, обучать новые модели и выполнять предсказания на изображениях. Простой в использовании интерфейс Python - ценный ресурс для тех, кто хочет внедрить YOLOv8 в свои Python -проекты, позволяющий быстро реализовать продвинутые возможности обнаружения объектов. Давай приступим!



Смотри: Мастеринг Ultralytics YOLOv8 : Python

Например, пользователи могут загрузить модель, обучить ее, оценить ее производительность на валидационном множестве и даже экспортировать ее в формат ONNX всего несколькими строчками кода.

Python

from ultralytics import YOLO

# Create a new YOLO model from scratch
model = YOLO("yolov8n.yaml")

# Load a pretrained YOLO model (recommended for training)
model = YOLO("yolov8n.pt")

# Train the model using the 'coco8.yaml' dataset for 3 epochs
results = model.train(data="coco8.yaml", epochs=3)

# Evaluate the model's performance on the validation set
results = model.val()

# Perform object detection on an image using the model
results = model("https://ultralytics.com/images/bus.jpg")

# Export the model to ONNX format
success = model.export(format="onnx")

Поезд

Режим Train используется для обучения модели YOLOv8 на пользовательском наборе данных. В этом режиме модель обучается на заданном наборе данных и гиперпараметрах. Процесс обучения заключается в оптимизации параметров модели, чтобы она могла точно предсказывать классы и местоположение объектов на изображении.

Поезд

from ultralytics import YOLO

model = YOLO("yolov8n.pt")  # pass any model type
results = model.train(epochs=5)
from ultralytics import YOLO

model = YOLO("yolov8n.yaml")
results = model.train(data="coco8.yaml", epochs=5)
model = YOLO("last.pt")
results = model.train(resume=True)

Примеры поездов

Вэл

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

Вэл

from ultralytics import YOLO

# Load a YOLOv8 model
model = YOLO("yolov8n.yaml")

# Train the model
model.train(data="coco8.yaml", epochs=5)

# Validate on training data
model.val()
from ultralytics import YOLO

# Load a YOLOv8 model
model = YOLO("yolov8n.yaml")

# Train the model
model.train(data="coco8.yaml", epochs=5)

# Validate on separate data
model.val(data="path/to/separate/data.yaml")

Примеры валов

Предсказывай

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

Предсказывай

import cv2
from PIL import Image
from ultralytics import YOLO

model = YOLO("model.pt")
# accepts all formats - image/dir/Path/URL/video/PIL/ndarray. 0 for webcam
results = model.predict(source="0")
results = model.predict(source="folder", show=True)  # Display preds. Accepts all YOLO predict arguments

# from PIL
im1 = Image.open("bus.jpg")
results = model.predict(source=im1, save=True)  # save plotted images

# from ndarray
im2 = cv2.imread("bus.jpg")
results = model.predict(source=im2, save=True, save_txt=True)  # save predictions as labels

# from list of PIL/ndarray
results = model.predict(source=[im1, im2])
# results would be a list of Results object including all the predictions by default
# but be careful as it could occupy a lot memory when there're many images,
# especially the task is segmentation.
# 1. return as a list
results = model.predict(source="folder")

# results would be a generator which is more friendly to memory by setting stream=True
# 2. return as a generator
results = model.predict(source=0, stream=True)

for result in results:
    # Detection
    result.boxes.xyxy  # box with xyxy format, (N, 4)
    result.boxes.xywh  # box with xywh format, (N, 4)
    result.boxes.xyxyn  # box with xyxy format but normalized, (N, 4)
    result.boxes.xywhn  # box with xywh format but normalized, (N, 4)
    result.boxes.conf  # confidence score, (N, 1)
    result.boxes.cls  # cls, (N, 1)

    # Segmentation
    result.masks.data  # masks, (N, H, W)
    result.masks.xy  # x,y segments (pixels), List[segment] * N
    result.masks.xyn  # x,y segments (normalized), List[segment] * N

    # Classification
    result.probs  # cls prob, (num_class, )

# Each result is composed of torch.Tensor by default,
# in which you can easily use following functionality:
result = result.cuda()
result = result.cpu()
result = result.to("cpu")
result = result.numpy()

Предсказать примеры

Экспорт

Режим экспорта используется для экспорта модели YOLOv8 в формат, который можно использовать для развертывания. В этом режиме модель преобразуется в формат, который может быть использован другими программными приложениями или аппаратными устройствами. Этот режим полезен при развертывании модели в производственной среде.

Экспорт

Экспортируй официальную модель YOLOv8n на ONNX с динамическим размером партии и размером изображения.

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
model.export(format="onnx", dynamic=True)

Экспортируй официальную модель YOLOv8n в TensorRT на device=0 для ускорения на устройствах CUDA.

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
model.export(format="onnx", device=0)

Примеры экспорта

Трек

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

Трек

from ultralytics import YOLO

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

# Track with the model
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True)
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True, tracker="bytetrack.yaml")

Примеры треков

Бенчмарк

Режим бенчмарка используется для оценки скорости и точности различных форматов экспорта для YOLOv8. Бенчмарки предоставляют информацию о размере экспортируемого формата, его mAP50-95 метрики (для обнаружения и сегментации объектов) или accuracy_top5 метрики (для классификации), а также время вывода в миллисекундах на одно изображение в различных форматах экспорта, таких как ONNX, OpenVINO, TensorRT и другие. Эта информация может помочь пользователям выбрать оптимальный формат экспорта для конкретного случая использования, исходя из требований к скорости и точности.

Бенчмарк

Бенчмарк официальной модели YOLOv8n во всех форматах экспорта.

from ultralytics.utils.benchmarks import benchmark

# Benchmark
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)

Примеры эталонов

Исследователь

API Explorer можно использовать для изучения наборов данных с расширенным семантическим поиском, поиском по векторному подобию и SQL-поиском среди прочих возможностей. Он также позволяет искать изображения по их содержанию с помощью естественного языка, используя возможности LLM. API Explorer позволяет тебе писать собственные блокноты или скрипты для исследования наборов данных, чтобы получить представление о своих наборах.

Семантический поиск с помощью Explorer

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco8.yaml", model="yolov8n.pt")
exp.create_embeddings_table()

similar = exp.get_similar(img="https://ultralytics.com/images/bus.jpg", limit=10)
print(similar.head())

# Search using multiple indices
similar = exp.get_similar(
    img=["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/bus.jpg"], limit=10
)
print(similar.head())
from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco8.yaml", model="yolov8n.pt")
exp.create_embeddings_table()

similar = exp.get_similar(idx=1, limit=10)
print(similar.head())

# Search using multiple indices
similar = exp.get_similar(idx=[1, 10], limit=10)
print(similar.head())

Исследователь

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

YOLO Класс model - это высокоуровневая обертка для классов Trainer. У каждой задачи YOLO есть свой тренер, который наследуется от BaseTrainer.

Пример тренажера по обнаружению

```python
from ultralytics.models.yolo import DetectionPredictor, DetectionTrainer, DetectionValidator

# trainer
trainer = DetectionTrainer(overrides={})
trainer.train()
trained_model = trainer.best

# Validator
val = DetectionValidator(args=...)
val(model=trained_model)

# predictor
pred = DetectionPredictor(overrides={})
pred(source=SOURCE, model=trained_model)

# resume from last weight
overrides["resume"] = trainer.last
trainer = detect.DetectionTrainer(overrides=overrides)
```

Ты можешь легко настроить трейнеры для поддержки пользовательских задач или изучения идей R&D. Узнай больше о настройке Trainers, Validators и Predictors под нужды твоего проекта в разделе "Персонализация".

Учебники по настройке



Создано 2023-11-12, Обновлено 2024-05-19
Авторы: glenn-jocher (11), AyushExel (1), RizwanMunawar (1), Laughing-q (1)

Комментарии