Использование Python#
Добро пожаловать в документацию по использованию Ultralytics YOLO с Python! Это руководство поможет легко интегрировать Ultralytics YOLO в проекты на Python для обнаружения объектов, сегментации экземпляров, семантической сегментации, оценки глубины и классификации. Здесь ты узнаешь, как загружать и использовать предварительно обученные модели, обучать новые модели и выполнять предсказания на изображениях. Удобный интерфейс Python — ценный инструмент для всех, кто хочет добавить YOLO в свои проекты на Python и быстро внедрить возможности продвинутого обнаружения объектов. Начнём!
Смотри: Осваиваем Ultralytics YOLO: Python
Например, пользователь может загрузить модель, обучить её, оценить её производительность на проверочной выборке и даже экспортировать её в формат ONNX, написав всего несколько строк кода.
from ultralytics import YOLO
# Создать новую модель YOLO с нуля
model = YOLO("yolo26n.yaml")
# Загрузить предварительно обученную модель YOLO (рекомендуется для обучения)
model = YOLO("yolo26n.pt")
# Обучить модель на наборе данных 'coco8.yaml' в течение 3 эпох
results = model.train(data="coco8.yaml", epochs=3)
# Оценить производительность модели на проверочной выборке
results = model.val()
# Выполнить обнаружение объектов на изображении с помощью модели
results = model("https://ultralytics.com/images/bus.jpg")
# Экспортировать модель в формат ONNX
success = model.export(format="onnx")Обучение#
Режим обучения используется для обучения модели YOLO на пользовательском наборе данных. В этом режиме модель обучается на указанном наборе данных с заданными гиперпараметрами. В процессе обучения оптимизируются параметры модели, чтобы она могла точно предсказывать классы и местоположение объектов на изображении.
from ultralytics import YOLO
model = YOLO("yolo26n.pt") # передать любой тип модели
results = model.train(epochs=5)Валидация#
Режим Val используется для проверки модели YOLO после обучения. В этом режиме модель оценивается на валидационной выборке, чтобы измерить её точность и способность к обобщению. Этот режим можно использовать для настройки гиперпараметров модели и повышения её производительности.
from ultralytics import YOLO
# Загрузить модель YOLO
model = YOLO("yolo26n.yaml")
# Обучить модель
model.train(data="coco8.yaml", epochs=5)
# Проверить на валидационной части обучающего набора данных
model.val()Предсказание#
Режим Predict используется для получения предсказаний на новых изображениях или видео с помощью обученной модели YOLO. В этом режиме модель загружается из файла контрольной точки, а пользователь может передать изображения или видео для выполнения инференса. Модель предсказывает классы и местоположение объектов на входных изображениях или видео.
import cv2
from PIL import Image
from ultralytics import YOLO
model = YOLO("model.pt")
# принимает все форматы — изображение/каталог/Path/URL/видео/PIL/ndarray. 0 — веб-камера
results = model.predict(source="0")
results = model.predict(source="folder", show=True) # Отобразить предсказания. Принимает все аргументы YOLO predict
# from PIL
im1 = Image.open("bus.jpg")
results = model.predict(source=im1, save=True) # сохранить визуализированные изображения
# from ndarray
im2 = cv2.imread("bus.jpg")
results = model.predict(source=im2, save=True, save_txt=True) # сохранить предсказания в виде меток
# из списка PIL/ndarray
results = model.predict(source=[im1, im2])Экспорт#
Режим Export используется для экспорта модели YOLO в формат, подходящий для развёртывания. В этом режиме модель преобразуется в формат, совместимый с другими программными приложениями или аппаратными устройствами. Этот режим полезен при развёртывании модели в рабочей среде.
Экспортируй официальную модель YOLO в ONNX с динамическим размером пакета и изображения.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="onnx", dynamic=True)Отслеживание#
Режим Track используется для отслеживания объектов в реальном времени с помощью модели YOLO. В этом режиме модель загружается из файла контрольной точки, а пользователь может передать видеопоток в реальном времени для отслеживания объектов. Этот режим полезен в таких приложениях, как системы видеонаблюдения или беспилотные автомобили.
from ultralytics import YOLO
# Загрузить модель
model = YOLO("yolo26n.pt") # загрузить официальную модель обнаружения объектов
model = YOLO("yolo26n-seg.pt") # загрузить официальную модель сегментации
model = YOLO("path/to/best.pt") # загрузить пользовательскую модель
# Отслеживать объекты с помощью модели
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True)
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True, tracker="bytetrack.yaml")Бенчмарк#
Режим Benchmark используется для оценки скорости и точности различных форматов экспорта YOLO. Результаты бенчмарка содержат сведения о размере экспортированной модели, метриках mAP50-95 (для обнаружения и сегментации объектов) или метриках accuracy_top1 (для классификации), а также о времени инференса в миллисекундах на изображение для различных форматов экспорта, таких как ONNX, OpenVINO, TensorRT и других. Эта информация помогает выбрать оптимальный формат экспорта для конкретного сценария использования с учётом требований к скорости и точности.
Проведи бенчмарк официальной модели YOLO во всех форматах экспорта.
from ultralytics.utils.benchmarks import benchmark
# Benchmark
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)Использование тренеров#
Класс модели YOLO служит высокоуровневой обёрткой для классов Trainer. Для каждой задачи YOLO предусмотрен собственный тренер, наследующий BaseTrainer. Такая архитектура обеспечивает большую гибкость и возможность настройки рабочих процессов машинного обучения.
from ultralytics.models.yolo.detect import DetectionPredictor, DetectionTrainer, DetectionValidator
overrides = {"model": "yolo26n.pt", "data": "coco8.yaml", "epochs": 3}
# Trainer
trainer = DetectionTrainer(overrides=overrides)
trainer.train()
trained_model = trainer.best # путь к best.pt
# Validator
validator = DetectionValidator(args={"data": "coco8.yaml"})
validator(model=trained_model)
# Predictor
predictor = DetectionPredictor(overrides={"model": trained_model})
predictor(source="https://ultralytics.com/images/bus.jpg")
# Продолжить прерванное обучение с последней контрольной точки
trainer = DetectionTrainer(overrides={"resume": "path/to/last.pt"})
trainer.train()Ты можешь легко настраивать тренеры для поддержки пользовательских задач или проверки исследовательских и разработческих идей. Модульная архитектура Ultralytics YOLO позволяет адаптировать фреймворк под конкретные потребности — например, для решения новой задачи компьютерного зрения или тонкой настройки существующих моделей для повышения производительности.
Часто задаваемые вопросы#
Интегрировать Ultralytics YOLO в проекты Python просто. Ты можешь загрузить предварительно обученную модель или обучить новую с нуля. Вот как начать:
from ultralytics import YOLO # Загрузить предварительно обученную модель YOLO model = YOLO("yolo26n.pt") # Выполнить обнаружение объектов на изображении results = model("https://ultralytics.com/images/bus.jpg") # Визуализировать результаты for result in results: result.show()Больше подробных примеров смотри в разделе Режим Predict.
Ultralytics YOLO предлагает разные режимы для различных рабочих процессов машинного обучения. К ним относятся:
- Train: обучай модель на пользовательских наборах данных.
- Val: проверяй качество модели на валидационной выборке.
- Predict: получай предсказания для новых изображений или видеопотоков.
- Export: экспортируй модели в различные форматы, например ONNX и TensorRT.
- Track: отслеживай объекты в видеопотоках в реальном времени.
- Benchmark: оценивай производительность модели в разных конфигурациях.
Каждый режим предоставляет полный набор функций для разных этапов разработки и развёртывания моделей.
Чтобы обучить пользовательскую модель YOLO, укажи набор данных и другие гиперпараметры. Вот краткий пример:
from ultralytics import YOLO # Загрузить модель YOLO model = YOLO("yolo26n.yaml") # Обучить модель на пользовательском наборе данных model.train(data="path/to/your/dataset.yaml", epochs=10)Подробнее об обучении и примеры использования смотри на странице Режим Train.
Экспортировать модели YOLO в формат, подходящий для развёртывания, можно с помощью функции
export. Например, можно экспортировать модель в формат ONNX:from ultralytics import YOLO # Загрузить модель YOLO model = YOLO("yolo26n.pt") # Экспортировать модель в формат ONNX model.export(format="onnx")Различные варианты экспорта описаны в документации по Режиму Export.
Да, модель YOLO можно проверять на разных наборах данных. После обучения используй режим валидации для оценки производительности:
from ultralytics import YOLO # Загрузить модель YOLO model = YOLO("yolo26n.yaml") # Обучить модель model.train(data="coco8.yaml", epochs=5) # Проверить модель на другом наборе данных model.val(data="path/to/separate/data.yaml")Подробные примеры и инструкции смотри на странице Режим Val.