Ultralytics YOLOによるモデルのベンチマーク
ベンチマークの可視化
Cookie関連の問題により、グラフを正しく表示するためにページを更新する必要がある場合があります。
はじめに
モデルの学習と検証が完了したら、次の論理的なステップは、さまざまな実環境のシナリオでそのパフォーマンスを評価することです。Ultralytics YOLO26のベンチマークモードは、この目的のために、さまざまなエクスポート形式全体でモデルの速度と精度を評価するための堅牢なフレームワークを提供します。
Watch: Benchmark Ultralytics YOLO26 Models | How to Compare Model Performance on Different Hardware?
なぜベンチマークが不可欠なのか?
- 情報に基づいた決定: 速度と精度のトレードオフに関する洞察を得ます。
- リソースの割り当て: さまざまなエクスポート形式が異なるハードウェアでどのように動作するかを理解します。
- 最適化: 特定のユースケースに対して最適なパフォーマンスを提供するエクスポート形式を学びます。
- コスト効率: ベンチマーク結果に基づいてハードウェアリソースをより効率的に利用します。
ベンチマークモードの主要指標
サポートされているエクスポート形式
- ONNX: CPUパフォーマンスの最適化用
- TensorRT: GPU効率の最大化用
- OpenVINO: Intelハードウェアの最適化用
- CoreML, TensorFlow SavedModelなど: 多様なデプロイニーズ用。
- ONNXまたはOpenVINOにエクスポートすることで、CPUの速度が最大3倍向上します。
- TensorRTにエクスポートすることで、GPUの速度が最大5倍向上します。
使用例
パッケージの不足を避けるため、ベンチマークを行う前にエクスポートの依存関係を含めて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ファイルへのパス。通常、検証データのパスと設定を含みます。例:"coco8.yaml"。 |
imgsz | 640 | The input image size for the model. Can be a single integer for square images or a tuple (width, height) for non-square, e.g., (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 |
完全なexportの詳細については、エクスポートページを参照してください。
FAQ
Ultralyticsを使用してYOLO26モデルのパフォーマンスをベンチマークするにはどうすればよいですか?
Ultralytics YOLO26は、モデルのパフォーマンスを異なるエクスポート形式で評価するためのベンチマークモードを提供します。このモードでは、平均適合率(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)ベンチマーク引数の詳細については、引数セクションを参照してください。
YOLO26モデルを異なる形式にエクスポートする利点は何ですか?
YOLO26モデルをONNX、TensorRT、OpenVINOなどの異なる形式にエクスポートすることで、デプロイ環境に基づいてパフォーマンスを最適化できます。例として:
- ONNX: 最大3倍のCPU速度向上を提供します。
- TensorRT: 最大5倍のGPU速度向上を提供します。
- OpenVINO: Intelハードウェア向けに特別に最適化されています。
これらの形式はモデルの速度と精度の両方を向上させ、さまざまな実世界のアプリケーションでより効率的に機能するようにします。詳細については、エクスポートページを参照してください。
YOLO26モデルの評価において、なぜベンチマークが重要なのでしょうか?
YOLO26モデルのベンチマークは、いくつかの理由で不可欠です:
- 情報に基づいた決定: 速度と精度のトレードオフを理解するため。
- リソースの割り当て: 異なるハードウェアオプション全体でのパフォーマンスを測定するため。
- 最適化: 特定のユースケースに対して最適なパフォーマンスを提供するエクスポート形式を特定するため。
- コスト効率: ベンチマーク結果に基づいてハードウェア使用量を最適化するため。
mAP50-95、Top-5精度、推論時間などの主要指標が、これらの評価を行うのに役立ちます。詳細については、ベンチマークモードの主要指標セクションを参照してください。
YOLO26でサポートされているエクスポート形式は何ですか?また、その利点は何ですか?
YOLO26はさまざまなエクスポート形式をサポートしており、それぞれが特定のハードウェアとユースケースに合わせて調整されています:
- ONNX: CPUパフォーマンスに最適。
- TensorRT: GPU効率に最適。
- OpenVINO: Intelハードウェア向けに最適化。
- CoreML & TensorFlow: iOSおよび一般的なMLアプリケーションに有用。
サポートされている形式とそのそれぞれの利点の完全なリストについては、サポートされているエクスポート形式セクションを確認してください。
YOLO26のベンチマークを微調整するために使用できる引数は何ですか?
ベンチマークを実行する際、特定のニーズに合わせていくつかの引数をカスタマイズできます:
- model: モデルファイルへのパス(例:「yolo26n.pt」)。
- data: データセットを定義するYAMLファイルへのパス(例:「coco8.yaml」)。
- imgsz: 入力画像サイズ(単一の整数またはタプル)。
- half: パフォーマンス向上のためにFP16推論を有効にする。
- int8: エッジデバイス向けにINT8量子化を有効にする。
- device: 計算デバイスを指定する(例:「cpu」、「cuda:0」)。
- verbose: ログの詳細レベルを制御する。
引数の完全なリストについては、引数セクションを参照してください。