Использование в Python#
Добро пожаловать в документацию по использованию Ultralytics YOLO в Python! Это руководство создано, чтобы помочь тебе легко интегрировать Ultralytics YOLO в свои Python-проекты для object detection, instance segmentation, semantic segmentation, depth estimation и classification. Здесь ты узнаешь, как загружать и использовать предобученные модели, тренировать новые модели и выполнять предсказания на изображениях. Простой в использовании Python-интерфейс — это ценный ресурс для всех, кто хочет внедрить YOLO в свои Python-проекты, позволяя быстро реализовать продвинутые возможности обнаружения объектов. Давай начнем!
Watch: Mastering Ultralytics YOLO: Python
Например, ты можешь загрузить модель, обучить ее, оценить производительность на валидационном наборе и даже экспортировать в формат ONNX всего за несколько строк кода.
from ultralytics import YOLO
# Create a new YOLO model from scratch
model = YOLO("yolo26n.yaml")
# Load a pretrained YOLO model (recommended for training)
model = YOLO("yolo26n.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 используется для обучения модели YOLO на пользовательском наборе данных. В этом режиме модель обучается с использованием указанного датасета и гиперпараметров. Процесс обучения включает оптимизацию параметров модели, чтобы она могла точно предсказывать классы и расположение объектов на изображении.
from ultralytics import YOLO
model = YOLO("yolo26n.pt") # pass any model type
results = model.train(epochs=5)Валидация#
Режим Val используется для валидации модели YOLO после обучения. В этом режиме модель оценивается на валидационном наборе для измерения точности и способности к обобщению. Этот режим можно использовать для настройки гиперпараметров модели для улучшения ее производительности.
from ultralytics import YOLO
# Load a YOLO model
model = YOLO("yolo26n.yaml")
# Train the model
model.train(data="coco8.yaml", epochs=5)
# Validate on training data
model.val()Предсказание#
Режим Predict используется для выполнения предсказаний с помощью обученной модели 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])Экспорт#
Режим Export используется для экспорта модели YOLO в формат, пригодный для развертывания. В этом режиме модель преобразуется в формат, который может использоваться другими программными приложениями или аппаратными устройствами. Этот режим полезен при развертывании модели в производственных средах.
Экспорт официальной модели YOLO в ONNX с динамическим размером пакета (batch-size) и размером изображения.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="onnx", dynamic=True)Отслеживание#
Режим отслеживания используется для отслеживания объектов в реальном времени с помощью модели YOLO. В этом режиме модель загружается из файла контрольной точки, и ты можешь предоставить поток видео в реальном времени для выполнения отслеживания объектов. Этот режим полезен для таких приложений, как системы наблюдения или беспилотные автомобили.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load an official detection model
model = YOLO("yolo26n-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_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
# 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)Ты можешь легко настраивать тренеров для поддержки пользовательских задач или для проверки идей в области исследований и разработок. Модульная конструкция Ultralytics YOLO позволяет адаптировать фреймворк под твои конкретные нужды, работаешь ли ты над новой задачей компьютерного зрения или дообучаешь существующие модели для достижения лучших результатов.
FAQ#
Как интегрировать YOLO в мой Python-проект для обнаружения объектов?#
Интегрировать Ultralytics YOLO в твои Python-проекты просто. Ты можешь загрузить предобученную модель или обучить новую модель с нуля. Вот как начать:
from ultralytics import YOLO
# Load a pretrained YOLO model
model = YOLO("yolo26n.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 Mode.
Какие режимы доступны в YOLO?#
Ultralytics YOLO предоставляет различные режимы для удовлетворения различных потребностей машинного обучения. К ним относятся:
- Train: обучение модели на пользовательских данных.
- Val: валидация производительности модели на проверочном наборе.
- Predict: предсказания на новых изображениях или видеопотоках.
- Export: экспорт моделей в различные форматы, такие как ONNX и TensorRT.
- Track: отслеживание объектов в видеопотоках в реальном времени.
- Benchmark: тестирование производительности модели при различных конфигурациях.
Каждый режим разработан для предоставления комплексного функционала на разных этапах разработки и развертывания моделей.
Как обучить пользовательскую модель YOLO, используя мой набор данных?#
Для обучения пользовательской модели YOLO тебе нужно указать свой датасет и другие гиперпараметры. Вот краткий пример:
from ultralytics import YOLO
# Load the YOLO model
model = YOLO("yolo26n.yaml")
# Train the model with custom dataset
model.train(data="path/to/your/dataset.yaml", epochs=10)Для получения более подробной информации об обучении и ссылок на примеры использования посети нашу страницу Train Mode.
Как экспортировать модели YOLO для развертывания?#
Экспорт моделей YOLO в формат, подходящий для развертывания, прост благодаря функции export. Например, ты можешь экспортировать модель в формат ONNX:
from ultralytics import YOLO
# Load the YOLO model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx")Для ознакомления с различными вариантами экспорта обратись к документации Export Mode.
Могу ли я валидировать свою модель YOLO на разных наборах данных?#
Да, валидация моделей YOLO на разных наборах данных возможна. После обучения ты можешь использовать режим валидации для оценки производительности:
from ultralytics import YOLO
# Load a YOLO model
model = YOLO("yolo26n.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 Mode для получения подробных примеров и информации об использовании.