Использование 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.