Перейти к содержанию

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

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



Смотреть: Освоение Ultralytics YOLO: Python

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

Python

from ultralytics import YOLO

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

# Load a pretrained YOLO model (recommended for training)
model = YOLO("yolo11n.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")

Обучение

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

Обучение

from ultralytics import YOLO

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

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

Примеры обучения

Валидация

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

Валидация

from ultralytics import YOLO

# Load a YOLO model
model = YOLO("yolo11n.yaml")

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

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

# Load a YOLO model
model = YOLO("yolo11n.yaml")

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

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

Примеры валидации

Прогнозирование

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

Прогнозирование

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()

Примеры прогнозирования

Экспорт

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

Экспорт

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

from ultralytics import YOLO

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

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

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="engine", device=0)

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

Отслеживание

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

Отслеживание

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # load an official detection model
model = YOLO("yolo11n-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")

Примеры отслеживания

Бенчмарк

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

Бенчмарк

Проведите бенчмаркинг официальной модели YOLO по всем форматам экспорта.

from ultralytics.utils.benchmarks import benchmark

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

Примеры бенчмарков

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

Параметр YOLO класс model служит высокоуровневой оберткой для классов Trainer. Каждая задача YOLO имеет свой собственный trainer, который наследуется от BaseTrainer. Эта архитектура обеспечивает большую гибкость и возможности настройки в ваших рабочие процессы машинного обучения.

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

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 = DetectionTrainer(overrides=overrides)

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

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

Часто задаваемые вопросы

Как интегрировать YOLO в мой проект на Python для обнаружения объектов?

Интеграция Ultralytics YOLO в ваши проекты на python — это просто. Вы можете загрузить предварительно обученную модель или обучить новую модель с нуля. Вот как начать:

from ultralytics import YOLO

# Load a pretrained YOLO model
model = YOLO("yolo11n.pt")

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

# Visualize the results
for result in results:
    result.show()

Более подробные примеры можно найти в разделе Режим Predict.

Какие различные режимы доступны в YOLO?

Ultralytics YOLO предоставляет различные режимы для обслуживания различных рабочих процессов машинного обучения. К ним относятся:

  • Train: Обучение модели с использованием пользовательских наборов данных.
  • Val: Проверка производительности модели на проверочном наборе.
  • Predict: Прогнозирование на новых изображениях или видеопотоках.
  • Экспорт: Экспорт моделей в различные форматы, такие как ONNX и TensorRT.
  • Track: Отслеживание объектов в реальном времени в видеопотоках.
  • Benchmark: Оценка производительности модели в различных конфигурациях.

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

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

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

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolo11n.yaml")

# Train the model with custom dataset
model.train(data="path/to/your/dataset.yaml", epochs=10)

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

Как экспортировать модели YOLO для развертывания?

Экспорт моделей YOLO в формате, подходящем для развертывания, прост с помощью export функции. Например, можно экспортировать модель в формат ONNX:

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolo11n.pt")

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

Для получения информации о различных вариантах экспорта обратитесь к документации Режим Export.

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

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

from ultralytics import YOLO

# Load a YOLO model
model = YOLO("yolo11n.yaml")

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

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

Подробные примеры и инструкции по использованию можно найти на странице Режим Val.



📅 Создано 1 год назад ✏️ Обновлено 5 месяцев назад

Комментарии