YOLO Python#
A computer vision model architecture for detection, classification, segmentation, and more.
安装 Ultralytics#
pip install -U ultralytics
Quick Start#
CLI#
# 语法
yolo TASK MODE ARGS
# 训练
yolo train data=coco8.yaml model=yolo11n.pt epochs=10 lr0=0.01
# 预测
yolo predict model=yolo11n.pt source='https://media.roboflow.com/inference/vehicles.png' imgsz=320
# 验证
yolo val model=yolo11n.pt data=coco8.yaml batch=1 imgsz=640
# 导出
yolo export model=yolo11n-cls.pt format=onnx imgsz=224,128
Python#
基于jupyter/pytorch-notebook#
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)
model = YOLO("runs/detect/train/weights/best.pt")
# Evaluate the model's performance on the validation set
results = model.val()
# Perform object detection on an image using the model
results = model("https://media.roboflow.com/inference/vehicles.png", save=True)
# 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)
验证#
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()
预测#
Predict mode 用于使用经过训练的 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])
导出#
导出模式用于将 YOLO 模型导出为可用于部署的格式
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.export(format="onnx", dynamic=True)
追踪#
追踪模式用于使用 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 各种导出格式的速度和准确性
支持的导出格式
ONNX: 实现最佳 CPU 性能
TensorRT: 实现最大 GPU 效率
OpenVINO: 针对 Intel 硬件优化
Python#
from ultralytics.utils.benchmarks import benchmark
# Benchmark
benchmark(model="yolo11n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
CLI#
yolo benchmark model=yolo11n.pt data='coco8.yaml' imgsz=640 half=False device=0
# Benchmark specific export format
yolo benchmark model=yolo11n.pt data='coco8.yaml' imgsz=640 format=onnx
任务#
检测#
目标检测的输出是一组边界框,这些边界框包围了图像中的目标,以及每个框的类别标签和置信度分数
识别目标的位置和类别
分割#
实例分割的输出是一组掩码或轮廓,它们勾勒出图像中每个对象,以及每个对象的类别标签和置信度分数
了解对象的精确形状
yolo segment predict model=yolo11n-seg.pt source='https://ultralytics.com/images/bus.jpg'
分类#
图像分类的输出是单个类别标签和一个置信度分数
专为高效图像分类而设计
yolo classify predict model=yolo11n-cls.pt source='https://ultralytics.com/images/bus.jpg'
姿势估计#
姿势估计的输出是一组点,这些点代表图像中对象上的关键点,通常还包括每个点的置信度分数
yolo pose predict model=yolo11n-pose.pt source='https://ultralytics.com/images/bus.jpg'
OBB#
旋转边界框目标检测的输出是一组旋转的边界框,这些边界框精确地包围了图像中的目标,以及每个框的类别标签和置信度分数
yolo obb predict model=yolo11n-obb.pt source='https://ultralytics.com/images/boats.jpg'
模型#
YOLO26:2026年发布,专为边缘和低功耗设备而设计
YOLO11:2024年发布,专为多功能性和生态系统集成而设计
YOLOv8:2023年发布,通用性与易用性的行业标杆
数据集#
COCO: 一个大规模数据集,用于目标 detect、segmentation 和图像描述
COCO8: 仅包含 8 张图像(4 张训练,4 张验证)——适用于快速测试和调试
COCO128: 包含 128 张图像——在大小和多样性之间取得平衡,coco128.yaml
完整 COCO: 包含11.8万+训练图像——全面但资源密集
ImageNet: 一个大规模数据库,使用 WordNet 词集进行分类
ImageNet10: 仅包含 20 张图像(每个类别 2 张),适用于 CI 测试和快速健全性检查
ImageNette: 包含数千张图像,10 个类别,适合实际模型训练和开发
DOTAv2: 一个专门的数据集,强调航空图像中的目标检测,OBB
DOTA8: 仅包含 8 张图像(4 张训练,4 张验证)——适合快速测试和调试
DOTA128: 包含 128 张图像——在大小和多样性之间取得平衡,dota128.yaml
完整 DOTA-v1: 包含 1,869 张图像——全面但资源密集
TensorBoard#
用法#
默认情况下,TensorBoard 日志记录处于禁用状态
# Enable TensorBoard logging
yolo settings tensorboard=True
# Disable TensorBoard logging
yolo settings tensorboard=False
性能指标#
P (精确率):帮助识别并最大限度地减少假阳性
R (召回率):确保检测到所有相关对象
mAP (平均精度):提供整体性能快照,指导总体改进
IoU (交并比):帮助微调目标定位精度
Docker#
仅使用 CPU#
docker run -it --ipc=host ultralytics/ultralytics
使用 GPU#
# Set image name as a variable
t=ultralytics/ultralytics:latest
# Run with all GPUs
sudo docker run -it --ipc=host --runtime=nvidia --gpus all $t
# Run specifying which GPUs to use
sudo docker run -it --ipc=host --runtime=nvidia --gpus '"device=2,3"' $t
Runtime Environment#
Screenshots#
