Использование Python
Добро пожаловать в документацию по использованию Ultralytics YOLO в Python! Это руководство создано, чтобы помочь тебе легко интегрировать Ultralytics YOLO в свои Python-проекты для обнаружения объектов, сегментации экземпляров, семантической сегментации и классификации. Здесь ты узнаешь, как загружать и использовать предобученные модели, обучать новые модели и выполнять предсказания на изображениях. Простой в использовании интерфейс Python — это ценный ресурс для всех, кто хочет внедрить YOLO в свои проекты, позволяя быстро реализовать расширенные возможности обнаружения объектов. Давай начнем!
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)
Режим предсказания (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)Отслеживание
Режим отслеживания (Track) используется для отслеживания объектов в реальном времени с помощью модели 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")Бенчмаркинг
Режим бенчмаркинга (Benchmark) используется для профилирования скорости и точности различных форматов экспорта YOLO. Бенчмарки предоставляют информацию о размере экспортированного формата, его метриках mAP50-95 (для обнаружения и сегментации) или метриках accuracy_top5 (для классификации), а также времени инференса в миллисекундах на изображение для различных форматов экспорта, таких как ONNX, OpenVINO, TensorRT и других. Эта информация поможет тебе выбрать оптимальный формат экспорта для твоей конкретной задачи, исходя из требований к скорости и точности.
Протестируй официальную модель YOLO во всех форматах экспорта.
from ultralytics.utils.benchmarks import benchmark
# Benchmark
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, half=False, 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).
Какие режимы доступны в 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).
Как экспортировать модели 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).
Могу ли я валидировать свою модель 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) для получения подробных примеров и инструкций по использованию.