YOLO 11
YOLO11是Ultralytics YOLO系列实时目标检测器的最新迭代,它在准确性、速度和效率方面重新定义了可能性。在以往YOLO版本的显著进步基础上,YOLO11在架构和训练方法上引入了重大改进,使其成为广泛计算机视觉任务的多功能选择。
关键特性:
增强的特征提取: YOLO11采用改进的骨干和颈部架构,增强了特征提取能力,实现了更精确的目标检测和复杂任务的性能。 优化效率和速度: YOLO11引入了精细的架构设计和优化的训练流程,提供了更快的处理速度,并在准确性和性能之间保持了最佳平衡。 更少的参数实现更高的准确性: 随着模型设计的进展,YOLO11m在COCO数据集上实现了更高的平均精度均值(mAP),同时比YOLOv8m使用的参数减少了22%,使其在不牺牲准确性的情况下具有计算效率。 适应不同环境: YOLO11可以无缝部署在各种环境中,包括边缘设备、云平台和支持NVIDIA GPU的系统,确保了最大的灵活性。 支持广泛的任务: 无论是目标检测、实例分割、图像分类、姿态估计还是定向目标检测(OBB),YOLO11都旨在应对多样化的计算机视觉挑战。
模型 | 图片尺寸(像素) | mAPval 50-95 | CPU ONNX 速度(ms) | T4 TensorRT10 速度(ms) | 参数量(M) | FLOPs(B) |
---|---|---|---|---|---|---|
YOLO11n | 640 | 39.5 | 56.1 ± 0.8 | 1.5 ± 0.0 | 2.6 | 6.5 |
YOLO11s | 640 | 47.0 | 90.0 ± 1.2 | 2.5 ± 0.0 | 9.4 | 21.5 |
YOLO11m | 640 | 51.5 | 183.2 ± 2.0 | 4.7 ± 0.1 | 20.1 | 68.0 |
YOLO11l | 640 | 53.4 | 238.6 ± 1.4 | 6.2 ± 0.1 | 25.3 | 86.9 |
YOLO11x | 640 | 54.7 | 462.8 ± 6.7 | 11.3 ± 0.2 | 56.9 | 194.9 |
安装方法
Ultralytics 提供了多种安装方法,包括 pip、conda 和 Docker。可以通过 ultralytics pip 包安装 YOLO 的最新稳定版本,或者通过克隆 Ultralytics 的 GitHub 仓库来获取最新开发版本。
# 稳定发行版
pip install ultralytics
# 从 GitHub 安装 最新版
pip install git+https://github.com/ultralytics/ultralytics.git@main
YOLO 11检测(Detect)、分割(Segment)和姿态估计(Pose)模型是在COCO数据集上预训练的,而分类(Classify)模型则是在ImageNet数据集上预训练的。
- 检测 https://docs.ultralytics.com/tasks/detect/
- 分割 https://docs.ultralytics.com/tasks/segment/
- 分类 https://docs.ultralytics.com/tasks/classify/
- 姿态估计 https://docs.ultralytics.com/tasks/pose/
- 旋转检测 https://docs.ultralytics.com/tasks/obb/
基础使用方法:
from ultralytics import YOLO
# 从头开始创建一个新的 YOLO 模型
model = YOLO("yolo11n.yaml")
# 加载预训练的 YOLO 模型(推荐用于训练)
model = YOLO("yolo11n.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")
使用案例
使用场景:模型训练
https://docs.ultralytics.com/modes/train/#train-settings
from ultralytics import YOLO
# 加载模型
model = YOLO("yolo11n.yaml") # 从YAML构建新模型
model = YOLO("yolo11n.pt") # 加载预训练模型(推荐用于训练)
model = YOLO("yolo11n.yaml").load("yolo11n.pt") # 从YAML构建并转移权重
# 训练模型
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
多GPU训练允许更有效地利用可用硬件资源,通过在多个GPU上分配训练负载。此功能可通过Python API和命令行界面使用。要启用多GPU训练,请指定您希望使用的GPU设备ID。
多GPU训练示例
使用2个GPU(CUDA设备0和1)进行训练。根据需要扩展到更多GPU。
from ultralytics import YOLO
# 加载模型
model = YOLO("yolo11n.pt") # 加载预训练模型(推荐用于训练)
# 使用2个GPU训练模型
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])
yolo train data=coco8.yaml epochs=100 imgsz=640 device=0,1
以下是YOLO模型训练设置的表格形式:
参数 | 默认值 | 描述 |
---|---|---|
model | None | 指定训练模型文件的路径。 |
data | None | 数据集配置文件的路径。 |
epochs | 100 | 训练的总轮数。 |
batch | 16 | 批处理大小。 |
optimizer | 'auto' | 训练的优化器选择。 |
momentum | 0.937 | SGD的动量因子或Adam优化器的beta1。 |
weight_decay | 0.0005 | L2正则化项。 |
请注意,这个表格是基于您提供的信息整理的,可能需要根据实际的YOLO模型训练框架进行调整。
使用场景:模型验证
https://docs.ultralytics.com/modes/val/#key-features-of-val-mode
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # a list contains map50-95 of each category
使用场景:模型预测
https://docs.ultralytics.com/modes/predict/#key-features-of-predict-mode
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # pretrained YOLO11n model
# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"]) # return a list of Results objects
# Process results list
for result in results:
boxes = result.boxes # Boxes object for bounding box outputs
masks = result.masks # Masks object for segmentation masks outputs
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Probs object for classification outputs
obb = result.obb # Oriented boxes object for OBB outputs
result.show() # display to screen
result.save(filename="result.jpg") # save to disk