3.6 使用Ultralytics YOLO进行模型基准测试
Ultralytics YOLO生态系统及其集成
引言
当您的模型完成训练和验证后,下一步就是评估其在各种现实场景中的表现。Ultralytics YOLO11的基准测试模式通过提供一个强大的框架,用于评估模型在各种导出格式下的速度和准确性。
观看视频:Ultralytics模式教程:基准测试
为什么基准测试至关重要?
-
明智决策:了解速度与准确性之间的权衡。
-
资源分配:了解不同导出格式在不同硬件上的表现。
-
优化:找出哪个导出格式在特定用例中提供最佳性能。
-
成本效益:基于基准测试结果更高效地利用硬件资源。
基准测试模式中的关键指标
-
mAP50-95:用于对象检测、分割和姿态估计。
-
accuracy_top5:用于图像分类。
-
推断时间:每张图片的处理时间,以毫秒为单位。
支持的导出格式
-
ONNX:用于最佳的CPU性能。
-
TensorRT:用于最大化GPU效率。
-
OpenVINO:用于英特尔硬件优化。
-
CoreML、TensorFlow SavedModel等:用于多样化的部署需求。
提示:
-
导出为ONNX或OpenVINO格式,可获得高达3倍的CPU加速。
-
导出为TensorRT格式,可获得高达5倍的GPU加速。
使用示例
对所有支持的导出格式(如ONNX、TensorRT等)运行YOLO11n基准测试。请参阅下方的参数部分,了解完整的导出参数列表。
示例代码
Python代码
from ultralytics.utils.benchmarks import benchmark
# 在GPU上进行基准测试
benchmark(model="yolo11n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
参数说明
诸如 model
、data
、imgsz
、half
、device
和 verbose
等参数为用户提供了灵活性,可以轻松微调基准测试并比较不同导出格式的性能。
参数名 | 默认值 | 描述 |
---|---|---|
model | None | 指定模型文件路径。接受 .pt 和 .yaml 格式,例如 "yolo11n.pt" 表示预训练模型或配置文件。 |
data | None | 定义用于基准测试的数据集的YAML文件路径,通常包括验证数据的路径和设置。例如:"coco8.yaml"。 |
imgsz | 640 | 模型的输入图像大小,可以是单个整数(方形图像)或元组(宽度,高度),例如 (640, 480)。 |
half | False | 启用FP16(半精度)推断,减少内存使用并可能在兼容硬件上提高速度。使用 half=True 启用。 |
int8 | False | 激活INT8量化,在支持的设备上进一步优化性能,特别适用于边缘设备。设置 int8=True 使用。 |
device | None | 定义基准测试的计算设备,例如 "cpu"、"cuda:0",或 "cuda:0,1" 用于多GPU设置。 |
verbose | False | 控制日志输出的详细程度。布尔值,设置 verbose=True 显示详细日志,或设置浮点值以阈值错误。 |
导出格式
基准测试将自动尝试运行以下所有可能的导出格式。
格式 | format 参数 | 模型 | 元数据 | 适用参数 |
PyTorch | - | yolo11n.pt | ✅ | - |
TorchScript | torchscript | yolo11n.torchscript | ✅ | imgsz, optimize, batch |
ONNX | onnx | yolo11n.onnx | ✅ | imgsz, half, dynamic, simplify, opset, batch |
OpenVINO | openvino | yolo11n_openvino_model/ | ✅ | imgsz, half, int8, batch |
TensorRT | engine | yolo11n.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, batch |
CoreML | coreml | yolo11n.mlpackage | ✅ | imgsz, half, int8, nms, batch |
TF SavedModel | saved_model | yolo11n_saved_model/ | ✅ | imgsz, keras, int8, batch |
TF GraphDef | pb | yolo11n.pb | ❌ | imgsz, batch |
TF Lite | tflite | yolo11n.tflite | ✅ | imgsz, half, int8, batch |
TF Edge TPU | edgetpu | yolo11n_edgetpu.tflite | ✅ | imgsz |
TF.js | tfjs | yolo11n_web_model/ | ✅ | imgsz, half, int8, batch |
PaddlePaddle | paddle | yolo11n_paddle_model/ | ✅ | imgsz, batch |
NCNN | ncnn | yolo11n_ncnn_model/ | ✅ | imgsz, half, batch |
常见问题解答
1. 如何使用Ultralytics对YOLO11模型的性能进行基准测试?
Ultralytics YOLO11提供基准测试模式,以评估模型在不同导出格式下的性能。该模式提供了对关键指标的洞察,如平均精度(mAP50-95)、准确性和每张图片的推断时间(毫秒)。要运行基准测试,可以使用Python或CLI命令。例如,在GPU上进行基准测试:
Python代码示例
from ultralytics.utils.benchmarks import benchmark
# 在GPU上进行基准测试
benchmark(model="yolo11n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
2. 将YOLO11模型导出为不同格式的好处是什么?
将YOLO11模型导出为不同格式(如ONNX、TensorRT、OpenVINO)可以根据您的部署环境优化性能。例如:
-
ONNX:可获得高达3倍的CPU加速。
-
TensorRT:可获得高达5倍的GPU加速。
-
OpenVINO:特别优化用于英特尔硬件。这些格式可增强模型的速度和准确性,使其在各种现实应用中更高效。更多详情请访问导出页面。
3. 为什么基准测试对评估YOLO11模型至关重要?
对YOLO11模型进行基准测试有以下几个原因:
-
明智决策:了解速度和准确性之间的权衡。
-
资源分配:衡量在不同硬件上的性能。
-
优化:确定哪个导出格式在特定用例中提供最佳性能。
-
成本效益:基于基准测试结果优化硬件使用。关键指标如mAP50-95、Top-5准确率和推断时间有助于进行这些评估。更多信息请参阅关键指标部分。
4. YOLO11支持哪些导出格式,它们的优点是什么?
YOLO11支持多种导出格式,每种格式都针对特定硬件和使用场景:
-
ONNX:适用于CPU性能最佳。
-
TensorRT:适用于GPU效率最佳。
-
OpenVINO:针对英特尔硬件优化。
-
CoreML & TensorFlow:适用于iOS和一般的ML应用。有关支持格式及其优点的完整列表,请查看支持的导出格式部分。
5. 我可以使用哪些参数来微调YOLO11基准测试?
在运行基准测试时,可以自定义多个参数以满足特定需求:
-
model:模型文件路径(如 "yolo11n.pt")。
-
data:定义数据集的YAML文件路径(如 "coco8.yaml")。
-
imgsz:输入图像大小,可以是单个整数或元组。
-
half:启用FP16推断以提高性能。
-
int8:激活INT8量化以优化边缘设备。
-
device:指定计算设备(如 "cpu"、"cuda:0")。
-
verbose:控制日志详细程度。有关完整参数列表,请参阅参数部分。