Ultralytics YOLO によるモデルのベンチマーク#
ベンチマークの可視化#
はじめに#
モデルのトレーニングと検証が完了したら、次の論理的なステップは、さまざまな実際のシナリオにおけるモデルのパフォーマンスを評価することです。Ultralytics YOLO26のベンチマークモードは、さまざまなエクスポート形式にわたるモデルの速度と精度を評価するための堅牢なフレームワークを提供することで、この目的に役立ちます。
予備的な速度ベンチマークについては、unreleased YOLO27 previewをご覧ください。
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, device=0)
# Benchmark specific export format
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")引数#
model、data、imgsz、quantize、device、verbose、formatなどの引数を使用すると、ユーザーは特定のニーズに合わせてベンチマークを微調整し、さまざまなエクスポート形式のパフォーマンスを簡単に比較できます。
| キー | デフォルト値 | 説明 |
|---|---|---|
model | None | モデルファイルへのパスを指定します。事前学習済みモデルや設定ファイルの "yolo26n.pt" など、.pt と .yaml の両方の形式を受け入れます。 |
data | None | ベンチマーク用のデータセットYAMLへのパス。通常、検証データのパスと設定が含まれます。例: "coco8.yaml"。分類の場合は、データセットディレクトリまたは組み込みのデータセット名(例: imagenet10)を指定します。 |
imgsz | 640 | モデルの入力画像サイズ。正方形の画像の場合は単一の整数である必要があります(例: 640)。benchmark() は正方形の画像サイズのみをサポートします。 |
quantize | None | 要求される精度: 16(FP16)または 8(INT8; PTQスキームにはキャリブレーション data/fraction が必要ですが、重みのみのスキームには不要です)。32/未設定は、形式がサポートしている場合はFP32になります。FP32をエクスポートできない形式は、明示的な 32 を拒否するか、必要な精度にフォールバックします。ネイティブのPyTorch行はエクスポートされません。16 のみがそれに影響を与えてFP16推論を選択し、一方 8、32 および未設定はFP32を実行します。その後、各形式は独自の実行時精度で推論を実行します。非推奨となった half/int8 フラグに置き換わります。 |
device | 'cpu' | "cpu" や "cuda:0" など、ベンチマーク用の計算デバイスを指定します。 |
verbose | False | ログ出力の詳細レベルを制御します。詳細なログを出力するには verbose=True を設定します。 |
eps | 0.001 | ゼロ除算を防ぐため、FPSに変換する前に画像ごとの推論時間に追加される小さなイプシロン(ミリ秒)。めったに変更されません。 |
format | '' | 指定されたエクスポート形式のみのベンチマークを実行します(例: format=onnx)。サポートされているすべての形式を自動的にテストするには、空のままにします。 |
スタンドアロンの benchmark() 関数(from ultralytics.utils.benchmarks import benchmark)は、上記の表の値の代わりに独自のシグネチャのデフォルトを使用します。特に model="yolo26n.pt" と imgsz=160 が該当します。imgsz を明示的に渡して、yolo benchmark CLIに合わせます。
エクスポート形式#
ベンチマークは、以下にリストされている可能なすべてのエクスポート形式で自動的に実行を試みます。または、以下に言及されているいずれの形式も受け入れる format 引数を使用して、特定の形式のベンチマークを実行することもできます。
| 形式 | format 引数 | モデル | メタデータ | 引数 |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz、quantize、dynamic、nms、batch、device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz、quantize、dynamic、simplify、opset、nms、batch、data、fraction、device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz、quantize、dynamic、nms、batch、data、fraction、device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz、quantize、dynamic、simplify、opset、workspace、nms、batch、data、fraction、device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz、dynamic、quantize、nms、batch、device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz、keras、quantize、opset、nms、batch、data、fraction、device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz、opset、batch、device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz、quantize、opset、data、fraction、device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz、batch、device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz、batch、dynamic、quantize、simplify、opset、nms、device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz、quantize、batch、device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz、quantize、data、fraction、nms、device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz、batch、name、quantize、simplify、opset、data、fraction、device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz、batch、device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz、batch、quantize、data、fraction、device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz、quantize、simplify、opset、data、optimize、device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz、batch、name、quantize、simplify、opset、data、fraction、device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz、quantize、batch、data、fraction、device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz、name、quantize、data、fraction、simplify、conf、iou |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz、batch、name、quantize、opset、simplify、nms |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz、batch、quantize |
nms=None は、外部 NMS の場合は生出力をデフォルトとします。nms=False を設定して利用可能な NMS なしのヘッドを選択します。サポートされていないフォーマットは、ネイティブ出力パスにフォールバックします。上記の nms エントリは、nms=True を使用して NMS を埋め込むことができるフォーマットを特定します。
Exportページで、export の詳細をすべて確認できます。
FAQ#
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, device=0)ベンチマーク引数の詳細については、引数セクションをご覧ください。
YOLO26モデルのベンチマークが不可欠である理由はいくつかあります:
- 情報に基づいた決定: 速度と精度のトレードオフを理解できます。
- リソースの割り当て: さまざまなハードウェアオプション全体のパフォーマンスを測定できます。
- Optimization: 特定の使用例に対してどのエクスポート形式が最高のパフォーマンスを提供するかを決定します。
- コスト効率: ベンチマーク結果に基づいてハードウェアの使用率を最適化します。
mAP50-95、Top-1精度、推論時間などの主要なメトリクスは、これらの評価を行う際に役立ちます。詳細については、主要なメトリクスセクションを参照してください。
YOLO26はさまざまなエクスポート形式をサポートしており、それぞれが特定のハードウェアとユースケースに合わせて調整されています:
- ONNX: CPUパフォーマンスに最適です。
- TensorRT: GPU効率に最適です。
- OpenVINO: Intelハードウェア用に最適化されています。
- CoreML & TensorFlow: iOSおよび一般的なMLアプリケーションに役立ちます。
サポートされている形式の完全なリストとそれぞれの利点については、サポートされているエクスポート形式セクションを確認してください。
ベンチマークを実行するときは、特定のニーズに合わせていくつかの引数をカスタマイズできます:
- model: モデルファイルへのパス(例: "yolo26n.pt")。
- data: データセットYAMLへのパス(例:
"coco8.yaml")。分類の場合は、データセットディレクトリまたは組み込みのデータセット名(例:imagenet10)を指定します。 - imgsz: 単一の整数としての正方形の入力画像サイズ(例:
640)。ベンチマークモードでは、公平な比較のために、PyTorchおよびエクスポートされた形式全体で同じ正方形の画像サイズを使用します。 - quantize: 要求される精度: FP16の場合は
16、INT8の場合は8(エッジデバイスに便利)。32/未設定は、形式がサポートしている場合はFP32になります。FP32をエクスポートできない形式は、明示的な32を拒否するか、必要な精度にフォールバックします。ネイティブのPyTorch行はエクスポートされません。16のみがそれに影響を与えてFP16推論を選択し、一方8、32および未設定はFP32を実行します。その後、各形式は独自の実行時精度で推論を実行します。 - device: 計算デバイスを指定します(例: "cpu"、"cuda:0")。
- verbose: ログ記録の詳細レベルを制御します。
引数の完全なリストについては、引数セクションを参照してください。