3.6 使用Ultralytics YOLO进行模型基准测试

部署运行你感兴趣的模型镜像

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)

参数说明

诸如 modeldataimgszhalfdeviceverbose 等参数为用户提供了灵活性,可以轻松微调基准测试并比较不同导出格式的性能。

参数名默认值描述
modelNone指定模型文件路径。接受 .pt.yaml 格式,例如 "yolo11n.pt" 表示预训练模型或配置文件。
dataNone定义用于基准测试的数据集的YAML文件路径,通常包括验证数据的路径和设置。例如:"coco8.yaml"。
imgsz640模型的输入图像大小,可以是单个整数(方形图像)或元组(宽度,高度),例如 (640, 480)。
halfFalse启用FP16(半精度)推断,减少内存使用并可能在兼容硬件上提高速度。使用 half=True 启用。
int8False激活INT8量化,在支持的设备上进一步优化性能,特别适用于边缘设备。设置 int8=True 使用。
deviceNone定义基准测试的计算设备,例如 "cpu"、"cuda:0",或 "cuda:0,1" 用于多GPU设置。
verboseFalse控制日志输出的详细程度。布尔值,设置 verbose=True 显示详细日志,或设置浮点值以阈值错误。

导出格式

基准测试将自动尝试运行以下所有可能的导出格式。

格式format 参数模型元数据适用参数
PyTorch-yolo11n.pt-
TorchScripttorchscriptyolo11n.torchscriptimgsz, optimize, batch
ONNXonnxyolo11n.onnximgsz, half, dynamic, simplify, opset, batch
OpenVINOopenvinoyolo11n_openvino_model/imgsz, half, int8, batch
TensorRTengineyolo11n.engineimgsz, half, dynamic, simplify, workspace, int8, batch
CoreMLcoremlyolo11n.mlpackageimgsz, half, int8, nms, batch
TF SavedModelsaved_modelyolo11n_saved_model/imgsz, keras, int8, batch
TF GraphDefpbyolo11n.pbimgsz, batch
TF Litetfliteyolo11n.tfliteimgsz, half, int8, batch
TF Edge TPUedgetpuyolo11n_edgetpu.tfliteimgsz
TF.jstfjsyolo11n_web_model/imgsz, half, int8, batch
PaddlePaddlepaddleyolo11n_paddle_model/imgsz, batch
NCNNncnnyolo11n_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:控制日志详细程度。有关完整参数列表,请参阅参数部分。

您可能感兴趣的与本文相关的镜像

Yolo-v8.3

Yolo-v8.3

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

# Ultralytics YOLO 🚀, AGPL-3.0 license # YOLO Continuous Integration (CI) GitHub Actions tests name: Ultralytics CI on: push: branches: [main] pull_request: branches: [main] schedule: - cron: &#39;0 0 * * *&#39; # runs at 00:00 UTC every day jobs: HUB: if: github.repository == &#39;ultralytics/ultralytics&#39; && (github.event_name == &#39;schedule&#39; || github.event_name == &#39;push&#39;) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest] python-version: [&#39;3.10&#39;] model: [yolov5n] steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} cache: &#39;pip&#39; # caching pip dependencies - name: Install requirements shell: bash # for Windows compatibility run: | python -m pip install --upgrade pip wheel pip install -e . --extra-index-url https://download.pytorch.org/whl/cpu - name: Check environment run: | echo "RUNNER_OS is ${{ runner.os }}" echo "GITHUB_EVENT_NAME is ${{ github.event_name }}" echo "GITHUB_WORKFLOW is ${{ github.workflow }}" echo "GITHUB_ACTOR is ${{ github.actor }}" echo "GITHUB_REPOSITORY is ${{ github.repository }}" echo "GITHUB_REPOSITORY_OWNER is ${{ github.repository_owner }}" python --version pip --version pip list - name: Test HUB training shell: python env: API_KEY: ${{ secrets.ULTRALYTICS_HUB_API_KEY }} MODEL_ID: ${{ secrets.ULTRALYTICS_HUB_MODEL_ID }} run: | import os from ultralytics import YOLO, hub api_key, model_id = os.environ[&#39;API_KEY&#39;], os.environ[&#39;MODEL_ID&#39;] hub.login(api_key) hub.reset_model(model_id) model = YOLO(&#39;https://hub.ultralytics.com/models/&#39; + model_id) model.train() Benchmarks: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest] python-version: [&#39;3.10&#39;] model: [yolov8n] steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} cache: &#39;pip&#39; # caching pip dependencies - name: Install requirements shell: bash # for Windows compatibility run: | python -m pip install --upgrade pip wheel if [ "${{ matrix.os }}" == "macos-latest" ]; then pip install -e &#39;.[export]&#39; --extra-index-url https://download.pytorch.org/whl/cpu else pip install -e &#39;.[export]&#39; --extra-index-url https://download.pytorch.org/whl/cpu fi yolo export format=tflite imgsz=32 - name: Check environment run: | echo "RUNNER_OS is ${{ runner.os }}" echo "GITHUB_EVENT_NAME is ${{ github.event_name }}" echo "GITHUB_WORKFLOW is ${{ github.workflow }}" echo "GITHUB_ACTOR is ${{ github.actor }}" echo "GITHUB_REPOSITORY is ${{ github.repository }}" echo "GITHUB_REPOSITORY_OWNER is ${{ github.repository_owner }}" python --version pip --version pip list - name: Benchmark DetectionModel shell: python run: | from ultralytics.yolo.utils.benchmarks import benchmark benchmark(model=&#39;${{ matrix.model }}.pt&#39;, imgsz=160, half=False, hard_fail=0.20) - name: Benchmark SegmentationModel shell: python run: | from ultralytics.yolo.utils.benchmarks import benchmark benchmark(model=&#39;${{ matrix.model }}-seg.pt&#39;, imgsz=160, half=False, hard_fail=0.14) - name: Benchmark ClassificationModel shell: python run: | from ultralytics.yolo.utils.benchmarks import benchmark benchmark(model=&#39;${{ matrix.model }}-cls.pt&#39;, imgsz=160, half=False, hard_fail=0.61) - name: Benchmark PoseModel shell: python run: | from ultralytics.yolo.utils.benchmarks import benchmark benchmark(model=&#39;${{ matrix.model }}-pose.pt&#39;, imgsz=160, half=False, hard_fail=0.0) - name: Benchmark Summary run: | cat benchmarks.log echo "$(cat benchmarks.log)" >> $GITHUB_STEP_SUMMARY Tests: timeout-minutes: 60 runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest] python-version: [&#39;3.7&#39;, &#39;3.8&#39;, &#39;3.9&#39;, &#39;3.10&#39;] model: [yolov8n] torch: [latest] include: - os: ubuntu-latest python-version: &#39;3.8&#39; # torch 1.7.0 requires python >=3.6, <=3.8 model: yolov8n torch: &#39;1.8.0&#39; # min torch version CI https://pypi.org/project/torchvision/ steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} cache: &#39;pip&#39; # caching pip dependencies - name: Install requirements shell: bash # for Windows compatibility run: | python -m pip install --upgrade pip wheel if [ "${{ matrix.torch }}" == "1.8.0" ]; then pip install -e . torch==1.8.0 torchvision==0.9.0 pytest --extra-index-url https://download.pytorch.org/whl/cpu else pip install -e . pytest --extra-index-url https://download.pytorch.org/whl/cpu fi - name: Check environment run: | echo "RUNNER_OS is ${{ runner.os }}" echo "GITHUB_EVENT_NAME is ${{ github.event_name }}" echo "GITHUB_WORKFLOW is ${{ github.workflow }}" echo "GITHUB_ACTOR is ${{ github.actor }}" echo "GITHUB_REPOSITORY is ${{ github.repository }}" echo "GITHUB_REPOSITORY_OWNER is ${{ github.repository_owner }}" python --version pip --version pip list - name: Test Detect shell: bash # for Windows compatibility run: | yolo detect train data=coco8.yaml model=yolov8n.yaml epochs=1 imgsz=32 yolo detect train data=coco8.yaml model=yolov8n.pt epochs=1 imgsz=32 yolo detect val data=coco8.yaml model=runs/detect/train/weights/last.pt imgsz=32 yolo detect predict model=runs/detect/train/weights/last.pt imgsz=32 source=ultralytics/assets/bus.jpg yolo export model=runs/detect/train/weights/last.pt imgsz=32 format=torchscript - name: Test Segment shell: bash # for Windows compatibility run: | yolo segment train data=coco8-seg.yaml model=yolov8n-seg.yaml epochs=1 imgsz=32 yolo segment train data=coco8-seg.yaml model=yolov8n-seg.pt epochs=1 imgsz=32 yolo segment val data=coco8-seg.yaml model=runs/segment/train/weights/last.pt imgsz=32 yolo segment predict model=runs/segment/train/weights/last.pt imgsz=32 source=ultralytics/assets/bus.jpg yolo export model=runs/segment/train/weights/last.pt imgsz=32 format=torchscript - name: Test Classify shell: bash # for Windows compatibility run: | yolo classify train data=imagenet10 model=yolov8n-cls.yaml epochs=1 imgsz=32 yolo classify train data=imagenet10 model=yolov8n-cls.pt epochs=1 imgsz=32 yolo classify val data=imagenet10 model=runs/classify/train/weights/last.pt imgsz=32 yolo classify predict model=runs/classify/train/weights/last.pt imgsz=32 source=ultralytics/assets/bus.jpg yolo export model=runs/classify/train/weights/last.pt imgsz=32 format=torchscript - name: Test Pose shell: bash # for Windows compatibility run: | yolo pose train data=coco8-pose.yaml model=yolov8n-pose.yaml epochs=1 imgsz=32 yolo pose train data=coco8-pose.yaml model=yolov8n-pose.pt epochs=1 imgsz=32 yolo pose val data=coco8-pose.yaml model=runs/pose/train/weights/last.pt imgsz=32 yolo pose predict model=runs/pose/train/weights/last.pt imgsz=32 source=ultralytics/assets/bus.jpg yolo export model=runs/pose/train/weights/last.pt imgsz=32 format=torchscript - name: Pytest tests shell: bash # for Windows compatibility run: pytest tests Summary: runs-on: ubuntu-latest needs: [HUB, Benchmarks, Tests] # Add job names that you want to check for failure if: always() # This ensures the job runs even if previous jobs fail steps: - name: Check for failure and notify if: (needs.HUB.result == &#39;failure&#39; || needs.Benchmarks.result == &#39;failure&#39; || needs.Tests.result == &#39;failure&#39;) && github.repository == &#39;ultralytics/ultralytics&#39; && (github.event_name == &#39;schedule&#39; || github.event_name == &#39;push&#39;) uses: slackapi/slack-github-action@v1.23.0 with: payload: | {"text": "<!channel> GitHub Actions error for ${{ github.workflow }} ❌\n\n\n*Repository:* https://github.com/${{ github.repository }}\n*Action:* https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}\n*Author:* ${{ github.actor }}\n*Event:* ${{ github.event_name }}\n"} env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_YOLO }} 解释这段代码
10-05
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值