使用 Ultralytics YOLO 进行模型基准测试
基准测试可视化
由于潜在的 cookie 问题,你可能需要刷新页面才能正确查看图表。
介绍
在模型训练和验证完成后,合乎逻辑的下一步是在各种实际场景中评估其性能。Ultralytics YOLO26 中的 Benchmark 模式通过提供一个强大的框架,用于评估你的模型在多种导出格式下的速度和 accuracy,从而实现这一目标。
Watch: Benchmark Ultralytics YOLO26 Models | How to Compare Model Performance on Different Hardware?
为什么基准测试至关重要?
- 明智的决策: 深入了解速度和精度之间的权衡。
- 资源分配: 了解不同的导出格式在不同硬件上的表现。
- 优化: 了解哪种导出格式最适合你的特定用例。
- 成本效益: 根据基准测试结果更有效地利用硬件资源。
Benchmark 模式中的关键指标
- mAP50-95: 用于 object detection、分割和姿态估计。
- accuracy_top5: 用于 image classification。
- 推理时间: 每张图片所花费的时间,以毫秒为单位。
支持的导出格式
- ONNX: 实现最佳 CPU 性能
- TensorRT: 实现最大 GPU 效率
- OpenVINO: 实现 Intel 硬件优化
- CoreML, TensorFlow SavedModel 等: 满足多样化的部署需求。
- 导出为 ONNX 或 OpenVINO 可获得高达 3 倍的 CPU 加速。
- 导出为 TensorRT 可获得高达 5 倍的 GPU 加速。
使用示例
在进行基准测试之前,请安装带有导出依赖项的 Ultralytics,以避免缺少相关包。
pip install ultralytics[export]在所有支持的导出格式(ONNX、TensorRT 等)中运行 YOLO26n 基准测试。查看下方的“参数”部分以获取完整的导出选项列表。
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
# Benchmark specific export format
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")参数
诸如 model、data、imgsz、half、device、verbose 和 format 等参数为用户提供了灵活性,使其能够根据特定需求微调基准测试,并轻松比较不同导出格式的性能。
| 键 | 默认值 | 描述 |
|---|---|---|
model | None | 指定模型文件的路径。接受 .pt 和 .yaml 格式,例如,预训练模型或配置文件使用 "yolo26n.pt"。 |
data | None | 定义基准测试数据集的 YAML 文件路径,通常包含 validation data 的路径和设置。示例:"coco8.yaml"。 |
imgsz | 640 | 模型的输入图像尺寸。可以是用于正方形图像的单个整数,或者用于非正方形图像的元组 (width, height),例如 (640, 480)。 |
half | False | 启用 FP16(半精度)推理,减少内存使用并可能在兼容的硬件上提高速度。使用 half=True 来启用。 |
int8 | False | 激活 INT8 量化以在支持的设备上获得进一步优化的性能,这对边缘设备特别有用。设置 int8=True 来使用。 |
device | None | 定义基准测试的计算设备,例如 "cpu" 或 "cuda:0"。 |
verbose | False | 控制日志输出的详细程度。设置 verbose=True 以获取详细日志。 |
format | '' | 仅对指定的导出格式进行基准测试(例如 format=onnx)。留空以自动测试每一种支持的格式。 |
导出格式
基准测试将尝试自动在下面列出的所有可能的导出格式上运行。或者,你可以通过使用 format 参数运行特定格式的基准测试,该参数接受下面提到的任何格式。
| 格式 | format 参数 | 模型 | 元数据 | 参数 |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, half, dynamic, simplify, opset, nms, batch, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DeepX | deepx | yolo26n_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
See full export details in the Export page.
常见问题 (FAQ)
如何使用 Ultralytics 对我的 YOLO26 模型性能进行基准测试?
Ultralytics YOLO26 提供了一种 Benchmark 模式,用于评估你的模型在不同导出格式下的性能。此模式提供了对关键指标的见解,例如 mean Average Precision (mAP50-95)、精度以及以毫秒为单位的推理时间。要运行基准测试,你可以使用 Python 或 CLI 命令。例如,在 GPU 上进行基准测试:
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)有关基准测试参数的更多详细信息,请访问 Arguments 部分。
将 YOLO26 模型导出为不同格式有什么好处?
将 YOLO26 模型导出为 ONNX、TensorRT 和 OpenVINO 等不同格式,使你能够根据部署环境优化性能。例如:
- ONNX: 提供高达 3 倍的 CPU 加速。
- TensorRT: 提供高达 5 倍的 GPU 加速。
- OpenVINO: 专为 Intel 硬件优化。
这些格式提高了模型的速度和精度,使其在各种实际应用中更加高效。访问 Export 页面以获取完整详情。
为什么在评估 YOLO26 模型时基准测试至关重要?
对你的 YOLO26 模型进行基准测试对于以下几个原因至关重要:
- 明智的决策: 了解速度和精度之间的权衡。
- 资源分配: 衡量不同硬件选项下的性能。
- 优化: 确定哪种导出格式为特定用例提供最佳性能。
- 成本效益: 根据基准测试结果优化硬件使用。
诸如 mAP50-95、Top-5 精度和推理时间等关键指标有助于进行这些评估。请参阅 Key Metrics 部分以获取更多信息。
YOLO26 支持哪些导出格式,它们各自的优势是什么?
YOLO26 支持多种导出格式,每种格式都针对特定的硬件和用例进行了量身定制:
- ONNX: CPU 性能的最佳选择。
- TensorRT: GPU 效率的理想选择。
- OpenVINO: 针对 Intel 硬件进行了优化。
- CoreML & TensorFlow: 对 iOS 和通用 ML 应用很有用。
有关支持格式及其各自优势的完整列表,请查看 Supported Export Formats 部分。
我可以使用哪些参数来微调我的 YOLO26 基准测试?
运行基准测试时,可以根据特定需求自定义多个参数:
- model: 模型文件的路径(例如 "yolo26n.pt")。
- data: 定义数据集的 YAML 文件路径(例如 "coco8.yaml")。
- imgsz: 输入图像大小,可以是单个整数或元组。
- half: 启用 FP16 推理以获得更好的性能。
- int8: 激活 INT8 量化以用于边缘设备。
- device: 指定计算设备(例如 "cpu", "cuda:0")。
- verbose: 控制日志详细程度。
有关参数的完整列表,请参考 Arguments 部分。