Ultralytics YOLOによるモデルベンチマーク#
ベンチマークの可視化#
はじめに#
モデルのトレーニングと検証が完了したら、次のステップとして、さまざまな実環境のシナリオでパフォーマンスを評価します。Ultralytics YOLO26のベンチマークモードは、さまざまなエクスポート形式でモデルの速度と精度を評価するための堅牢なフレームワークを提供します。
予備的な速度ベンチマークについては、未リリースのYOLO27プレビューをご覧ください。
視聴: Ultralytics YOLO26 モデルのベンチマーク | 異なるハードウェアでモデル性能を比較する方法
ベンチマークが重要な理由#
- 情報に基づく意思決定: 速度と精度のトレードオフを把握できます。
- リソース配分: さまざまなエクスポート形式が、異なるハードウェアでどのように動作するかを把握できます。
- 最適化: 特定のユースケースで最適なパフォーマンスを発揮するエクスポート形式を確認できます。
- コスト効率: ベンチマーク結果に基づいて、ハードウェアリソースをより効率的に活用できます。
ベンチマークモードの主要指標#
- mAP50-95: 物体検出、インスタンスセグメンテーション、姿勢推定、OBB向けです。
- mIoU: セマンティックセグメンテーション向けです。
- delta1: 深度推定向けです。
- accuracy_top1: 画像分類向けです。
- 推論時間: 各画像の処理にかかる時間をミリ秒で示します。
対応するエクスポート形式#
- ONNX: CPUパフォーマンスの最適化向けです
- TensorRT: GPU効率の最大化向けです
- OpenVINO: Intelハードウェアの最適化向けです
- CoreML、TensorFlow SavedModelなど: 多様なデプロイニーズに対応します。
- ONNXまたはOpenVINOにエクスポートすると、CPU速度を最大3倍に向上できます。
- TensorRTにエクスポートすると、GPU速度を最大5倍に向上できます。
使用例#
ベンチマーク時のパッケージ不足を避けるため、エクスポート用依存関係を含めてUltralyticsをインストールしてください。
pip install ultralytics[export]YOLO26nのベンチマークを、対応するすべてのエクスポート形式(ONNX、TensorRTなど)で実行します。エクスポートオプションの全一覧については、以下のArgumentsセクションをご覧ください。
from ultralytics.utils.benchmarks import benchmark
# GPUでベンチマークを実行
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)
# 特定のエクスポート形式をベンチマーク
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")引数#
model、data、imgsz、quantize、device、verbose、formatなどの引数を使うと、ユーザーはニーズに合わせてベンチマークを細かく調整し、さまざまなエクスポート形式のパフォーマンスを簡単に比較できます。
| キー | デフォルト値 | 説明 |
|---|---|---|
model | None | モデルファイルへのパスを指定します。.pt形式と.yaml形式の両方を受け付けます。たとえば、事前トレーニング済みモデルまたは設定ファイルには"yolo26n.pt"を指定します。 |
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 | None | ベンチマークに使用する計算デバイスを指定します(例: "cpu"または"cuda:0")。未設定の場合は、最初に使用可能なGPUを使用し、GPUがなければCPUを使用します。 |
verbose | False | Trueまたは浮動小数点数を指定すると、ベンチマークの失敗(アサーションを除く)時にエラーをログに記録するのではなく例外を発生させます。0.25のような浮動小数点数を指定すると、成功した各形式の指標がその下限値を超えることもアサートします。 |
eps | 0.001 | 画像ごとの推論時間に加算する小さなイプシロン値(ミリ秒)です。FPSへの変換時のゼロ除算を防ぎます。通常は変更しません。 |
format | '' | 指定したエクスポート形式のみをベンチマークします(例: format=onnx)。すべての対応形式を自動的にテストする場合は、空欄のままにしてください。 |
スタンドアロンのbenchmark()関数(from ultralytics.utils.benchmarks import benchmark)は、上記の表の値ではなく独自のシグネチャのデフォルト値を使用します。特にmodel="yolo26n.pt"、imgsz=160、device="cpu"が異なります。yolo benchmark CLIと同じ設定にするには、imgszとdeviceを明示的に渡してください。
エクスポート形式#
以下に示す、使用可能なすべてのエクスポート形式でベンチマークが自動的に実行されます。また、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 |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz, batch, quantize |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, 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 |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, 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 |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou, device |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms, device |
| AMD Xilinx | xilinx | yolo26n_xilinx_model/ | ✅ | imgsz, name, quantize, data, fraction, opset, simplify, device |
nms=None は外部NMS向けにraw出力をデフォルトで使用します。利用可能なNMSフリーヘッドを選択するには、nms=Falseを設定してください。未対応のフォーマットでは、ネイティブの出力パスにフォールバックします。上記のnmsの項目は、nms=Trueを使用してNMSを埋め込めるフォーマットを示しています。
詳細なexport情報については、Exportページをご覧ください。
よくある質問#
Ultralytics YOLO26には、さまざまなエクスポート形式でモデルのパフォーマンスを評価するベンチマークモードがあります。このモードでは、平均適合率(mAP50-95)、精度、ミリ秒単位の推論時間などの主要指標を確認できます。ベンチマークはPythonまたはCLIコマンドで実行できます。たとえば、GPUでベンチマークを実行するには、次のようにします。
例from ultralytics.utils.benchmarks import benchmark # GPUでベンチマークを実行 benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)ベンチマーク引数の詳細については、Argumentsセクションをご覧ください。
YOLO26モデルのベンチマークは、次のような理由から重要です。
- 情報に基づく意思決定: 速度と精度のトレードオフを把握できます。
- リソース配分: さまざまなハードウェア構成でのパフォーマンスを評価できます。
- 最適化: 特定のユースケースで最適なパフォーマンスを発揮するエクスポート形式を特定できます。
- コスト効率: ベンチマーク結果に基づいて、ハードウェアの使用を最適化できます。
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: ベンチマークの失敗をログに記録せず、例外を発生させます。浮動小数点数を渡すと、各形式の指標がその下限値を超えることも求められます。
引数の全一覧については、Argumentsセクションをご覧ください。