Ultralytics YOLO27:

Ultralytics YOLO によるモデルのベンチマーク#

Ultralytics YOLO ecosystem and integrations

ベンチマークの可視化#

はじめに#

モデルのトレーニングと検証が完了したら、次の論理的なステップは、さまざまな実際のシナリオにおけるモデルのパフォーマンスを評価することです。Ultralytics YOLO26のベンチマークモードは、さまざまなエクスポート形式にわたるモデルの速度と精度を評価するための堅牢なフレームワークを提供することで、この目的に役立ちます。

予備的な速度ベンチマークについては、unreleased YOLO27 previewをご覧ください。



Watch: Benchmark Ultralytics YOLO26 Models | How to Compare Model Performance on Different Hardware?

なぜベンチマークが不可欠なのか?#

  • 情報に基づいた決定: 速度と精度のトレードオフに関する洞察を得られます。
  • リソースの割り当て: 異なるエクスポート形式が異なるハードウェア上でどのように動作するかを理解できます。
  • 最適化: 特定の使用例に対してどのエクスポート形式が最高のパフォーマンスを提供するかを学べます。
  • コスト効率: ベンチマーク結果に基づいてハードウェアリソースをより効率的に利用できます。

ベンチマークモードの主要なメトリクス#

  • mAP50-95: 物体検出、セグメンテーション、および姿勢推定用。
  • accuracy_top1: 画像分類用。
  • 推論時間: 各画像にかかる時間(ミリ秒単位)。

対応エクスポート形式#

  • 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")

引数#

modeldataimgszquantizedeviceverboseformatなどの引数を使用すると、ユーザーは特定のニーズに合わせてベンチマークを微調整し、さまざまなエクスポート形式のパフォーマンスを簡単に比較できます。

キーデフォルト値説明
modelNoneモデルファイルへのパスを指定します。事前学習済みモデルや設定ファイルの "yolo26n.pt" など、.pt.yaml の両方の形式を受け入れます。
dataNoneベンチマーク用のデータセットYAMLへのパス。通常、検証データのパスと設定が含まれます。例: "coco8.yaml"。分類の場合は、データセットディレクトリまたは組み込みのデータセット名(例: imagenet10)を指定します。
imgsz640モデルの入力画像サイズ。正方形の画像の場合は単一の整数である必要があります(例: 640)。benchmark() は正方形の画像サイズのみをサポートします。
quantizeNone要求される精度: 16(FP16)または 8(INT8; PTQスキームにはキャリブレーション data/fraction が必要ですが、重みのみのスキームには不要です)。32/未設定は、形式がサポートしている場合はFP32になります。FP32をエクスポートできない形式は、明示的な 32 を拒否するか、必要な精度にフォールバックします。ネイティブのPyTorch行はエクスポートされません。16 のみがそれに影響を与えてFP16推論を選択し、一方 832 および未設定はFP32を実行します。その後、各形式は独自の実行時精度で推論を実行します。非推奨となった half/int8 フラグに置き換わります。
device'cpu'"cpu""cuda:0" など、ベンチマーク用の計算デバイスを指定します。
verboseFalseログ出力の詳細レベルを制御します。詳細なログを出力するには verbose=True を設定します。
eps0.001ゼロ除算を防ぐため、FPSに変換する前に画像ごとの推論時間に追加される小さなイプシロン(ミリ秒)。めったに変更されません。
format''指定されたエクスポート形式のみのベンチマークを実行します(例: format=onnx)。サポートされているすべての形式を自動的にテストするには、空のままにします。
スタンドアロンの `benchmark()` 関数のデフォルト

スタンドアロンの benchmark() 関数(from ultralytics.utils.benchmarks import benchmark)は、上記の表の値の代わりに独自のシグネチャのデフォルトを使用します。特に model="yolo26n.pt"imgsz=160 が該当します。imgsz を明示的に渡して、yolo benchmark CLIに合わせます。

エクスポート形式#

ベンチマークは、以下にリストされている可能なすべてのエクスポート形式で自動的に実行を試みます。または、以下に言及されているいずれの形式も受け入れる format 引数を使用して、特定の形式のベンチマークを実行することもできます。

形式format 引数モデルメタデータ引数
PyTorch-yolo26n.pt-
TorchScripttorchscriptyolo26n.torchscriptimgszquantizedynamicnmsbatchdevice
ONNXonnxyolo26n.onnximgszquantizedynamicsimplifyopsetnmsbatchdatafractiondevice
OpenVINOopenvinoyolo26n_openvino_model/imgszquantizedynamicnmsbatchdatafractiondevice
TensorRTengineyolo26n.engineimgszquantizedynamicsimplifyopsetworkspacenmsbatchdatafractiondevice
CoreMLcoremlyolo26n.mlpackageimgszdynamicquantizenmsbatchdevice
TF SavedModelsaved_modelyolo26n_saved_model/imgszkerasquantizeopsetnmsbatchdatafractiondevice
TF GraphDefpbyolo26n.pbimgszopsetbatchdevice
TF Edge TPUedgetpuyolo26n_edgetpu.tfliteimgszquantizeopsetdatafractiondevice
PaddlePaddlepaddleyolo26n_paddle_model/imgszbatchdevice
MNNmnnyolo26n.mnnimgszbatchdynamicquantizesimplifyopsetnmsdevice
NCNNncnnyolo26n_ncnn_model/imgszquantizebatchdevice
IMX500imxyolo26n_imx_model/imgszquantizedatafractionnmsdevice
RKNNrknnyolo26n_rknn_model/imgszbatchnamequantizesimplifyopsetdatafractiondevice
ExecuTorchexecutorchyolo26n_executorch_model/imgszbatchdevice
Axeleraaxelerayolo26n_axelera_model/imgszbatchquantizedatafractiondevice
DEEPXdeepxyolo26n_deepx_model/imgszquantizesimplifyopsetdataoptimizedevice
Qualcomm QNNqnnyolo26n_qnn.onnximgszbatchnamequantizesimplifyopsetdatafractiondevice
LiteRTlitertyolo26n.tfliteimgszquantizebatchdatafractiondevice
Hailohailoyolo26n_hailo_model/imgsznamequantizedatafractionsimplifyconfiou
Huawei Ascendascendyolo26n_ascend_model/imgszbatchnamequantizeopsetsimplifynms
Apple Core AIcoreaiyolo26n.aimodelimgszbatchquantize

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モデルを ONNXTensorRTOpenVINO などのさまざまな形式にエクスポートすると、デプロイ環境に基づいてパフォーマンスを最適化できます。例:

    • ONNX: 最大3倍のCPU速度向上を提供します。
    • TensorRT: 最大5倍のGPU効率を提供します。
    • OpenVINO: Intelハードウェア向けに特別に最適化されています。

    これらの形式により、モデルの速度と精度の両方が向上し、さまざまな実世界のアプリケーションでより効率的になります。詳細については、エクスポートページをご覧ください。

  • 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推論を選択し、一方 832 および未設定はFP32を実行します。その後、各形式は独自の実行時精度で推論を実行します。
    • device: 計算デバイスを指定します(例: "cpu"、"cuda:0")。
    • verbose: ログ記録の詳細レベルを制御します。

    引数の完全なリストについては、引数セクションを参照してください。

コメント