Ultralytics YOLO を使用したモデルのエクスポート

はじめに
モデルトレーニングの究極の目標は、実世界のアプリケーションに展開することです。Ultralytics YOLO26のエクスポートモードは、トレーニング済みモデルを様々な形式にエクスポートするための多用途なオプションを提供し、様々なプラットフォームやデバイスに展開可能にします。この包括的なガイドは、モデルエクスポートのニュアンスを説明し、最高の互換性とパフォーマンスを実現する方法を紹介することを目的としています。
見る: カスタムトレーニングされたUltralytics YOLOモデルをエクスポートし、Webカメラでライブ推論を実行する方法
YOLO26のエクスポートモードを選択する理由
- 汎用性: ONNX、TensorRT、CoreMLなど、複数の形式にエクスポートできます。
- パフォーマンス: TensorRTで最大5倍のGPU高速化、ONNXまたはOpenVINOで3倍のCPU高速化を実現します。
- 互換性: モデルを多数のハードウェアおよびソフトウェア環境に普遍的にデプロイできるようにします。
- 使いやすさ: 迅速かつ簡単なモデルエクスポートのためのシンプルなCLIおよびPython API。
エクスポートモードの主な特徴
主な機能を紹介します。
- ワンクリックエクスポート: さまざまな形式にエクスポートするためのシンプルなコマンドです。
- バッチエクスポート: バッチ推論対応モデルをエクスポートします。
- 最適化された推論: エクスポートされたモデルは、より迅速な推論時間のために最適化されています。
- Tutorial Videos: スムーズなエクスポート体験のための詳細なガイドとチュートリアル。
使用例
YOLO26nモデルをONNXやTensorRTのような異なる形式にエクスポートします。エクスポート引数の完全なリストについては、以下の「引数」セクションを参照してください。
例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")
yolo export model=yolo26n.pt format=onnx # export official model
yolo export model=path/to/best.pt format=onnx # export custom-trained model
引数
この表では、YOLOモデルをさまざまな形式にエクスポートするために利用可能な構成とオプションについて詳しく説明します。これらの設定は、エクスポートされたモデルのパフォーマンス、サイズ、およびさまざまなプラットフォームと環境間での互換性を最適化するために重要です。適切な構成により、モデルが意図されたアプリケーションに最適な効率でデプロイできるようになります。
| 引数 | 種類 | デフォルト | 説明 |
|---|---|---|---|
format | str | 'torchscript' | エクスポートされたモデルのターゲット形式(例: 'onnx', 'torchscript', 'engine' (TensorRT)などがあります。各フォーマットは、さまざまなものとの互換性を実現します。 デプロイメント環境. |
imgsz | int または tuple | 640 | モデル入力に必要な画像サイズ。正方形の画像の場合は整数(例: 640 640×640 の場合は)、またはタプル (height, width) 特定の寸法の場合。 |
keras | bool | False | TensorFlow SavedModel用のKeras形式へのエクスポートを有効にし、TensorFlow ServingおよびAPIとの互換性を提供します。 |
optimize | bool | False | TorchScript へのエクスポート時にモバイルデバイス向けに最適化を適用し、モデルサイズを削減し、推論パフォーマンスを向上させる可能性があります。NCNN 形式または CUDA デバイスとは互換性がありません。 |
half | bool | False | FP16(半精度)量子化を有効にし、モデルサイズを削減し、サポートされているハードウェアでの推論を高速化する可能性があります。INT8量子化またはCPUのみのエクスポートとは互換性がありません。ONNXなど、特定の形式でのみ利用可能です(下記参照)。 |
int8 | bool | False | INT8量子化を有効にすると、モデルがさらに圧縮され、主にエッジデバイス向けに、精度の低下を最小限に抑えながら推論が高速化されます。TensorRTと併用すると、post-training quantization(PTQ)が実行されます。 |
dynamic | bool | False | ONNX、TensorRT、OpenVINOのエクスポートで動的な入力サイズを許可し、様々な画像寸法を処理する際の柔軟性を高めます。自動的に設定されます True TensorRTをINT8で使用する場合。 |
simplify | bool | True | ONNXエクスポート用にモデルグラフを簡素化します。 onnxslimは、推論エンジンとのパフォーマンスと互換性を向上させる可能性があります。 |
opset | int | None | 異なるONNXパーサーおよびランタイムとの互換性のために、ONNX opsetのバージョンを指定します。設定されていない場合は、サポートされている最新バージョンが使用されます。 |
workspace | float または None | None | 最大ワークスペースサイズをGiB単位で設定します。 TensorRT 最適化、メモリ使用量とパフォーマンスのバランス調整。使用 None TensorRTによる自動割り当てで、デバイスの最大値まで対応します。 |
nms | bool | False | サポートされている場合(Export Formatsを参照)、エクスポートされたモデルにNon-Maximum Suppression (NMS)を追加し、detectの後処理効率を向上させます。end2endモデルでは利用できません。 |
batch | int | 1 | エクスポートされたモデルが同時に処理する推論サイズまたは画像の最大バッチ数を指定します。 predict モード。Edge TPUエクスポートの場合、これは自動的に1に設定されます。 |
device | str | None | エクスポート先のデバイス(GPU(device=0)、CPU (device=cpu)、Apple シリコン用 MPS (device=mps) または NVIDIA Jetson 用の DLA (device=dla:0 または device=dla:1)TensorRTエクスポートはGPUを自動的に使用します。 |
data | str | 'coco8.yaml' | へのパス データセット INT8量子化キャリブレーションに不可欠な設定ファイル。INT8が有効な状態で指定されていない場合、 coco8.yaml キャリブレーションのフォールバックとして使用されます。 |
fraction | float | 1.0 | INT8量子化のキャリブレーションに使用するデータセットの割合を指定します。リソースが限られている場合や実験を行う場合に役立つ、データセットのサブセットでのキャリブレーションが可能です。INT8を有効にして指定しない場合、データセット全体が使用されます。 |
end2end | bool | None | NMSをサポートYOLO (YOLO26、YOLOv10)において、エンドツーエンドモードを上書きします。これを設定すると False これらのモデルを従来のNMSの後処理パイプラインと互換性のある形式でエクスポートできるようにします。 |
これらのパラメータを調整することで、デプロイ環境、ハードウェア制約、パフォーマンス目標など、特定の要件に合わせてエクスポートプロセスをカスタマイズできます。モデルサイズ、速度、精度の最適なバランスを実現するには、適切な形式と設定を選択することが不可欠です。
エクスポート形式
利用可能なYOLO26エクスポート形式は以下の表にあります。以下の方法で任意の形式にエクスポートできます。 format 引数、すなわち、 format='onnx' または format='engine'。エクスポートされたモデルで直接予測または検証できます。つまり、 yolo predict model=yolo26n.onnxエクスポート完了後、モデルの使用例が表示されます。
| 形式 | 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, 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, device |
| TF.js | tfjs | yolo26n_web_model/ | ✅ | imgsz, half, int8, nms, batch, 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, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, int8, data, fraction, device |
よくある質問
YOLO26モデルをONNX形式にエクスポートするにはどうすればよいですか?
Ultralyticsを使用すると、YOLO26モデルをONNX形式にエクスポートするのは簡単です。モデルをエクスポートするためのpythonとCLIの両方のメソッドが提供されています。
例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")
yolo export model=yolo26n.pt format=onnx # export official model
yolo export model=path/to/best.pt format=onnx # export custom-trained model
プロセスの詳細、異なる入力サイズの処理などの高度なオプションについては、ONNX 統合ガイドを参照してください。
モデルのエクスポートに TensorRT を使用する利点は何ですか?
モデルのエクスポートにTensorRTを使用すると、大幅なパフォーマンス向上が得られます。TensorRTにエクスポートされたYOLO26モデルは、最大5倍のGPU高速化を達成でき、リアルタイム推論アプリケーションに最適です。
- 多様性: 特定のハードウェア構成に合わせてモデルを最適化します。
- 速度: 高度な最適化により、より高速な推論を実現します。
- 互換性: NVIDIAハードウェアとスムーズに統合します。
TensorRTの統合について詳しくは、TensorRT統合ガイドをご覧ください。
YOLO26モデルをエクスポートする際にINT8量子化を有効にするにはどうすればよいですか?
INT8 量子化は、モデルを圧縮し、特にエッジデバイスでの推論を高速化する優れた方法です。INT8 量子化を有効にする方法は次のとおりです:
例
from ultralytics import YOLO
model = YOLO("yolo26n.pt") # Load a model
model.export(format="engine", int8=True)
yolo export model=yolo26n.pt format=engine int8=True # export TensorRT model with INT8 quantization
INT8量子化は、次のようなさまざまな形式に適用できます。 TensorRT, OpenVINO、および CoreML最適な量子化結果を得るためには、代表的な データセット を使用 data パラメータ。
モデルのエクスポート時に、動的な入力サイズが重要なのはなぜですか?
動的な入力サイズにより、エクスポートされたモデルはさまざまな画像寸法を処理できるようになり、柔軟性が向上し、さまざまなユースケースに合わせて処理効率が最適化されます。ONNXやTensorRTなどの形式にエクスポートする場合、動的な入力サイズを有効にすると、モデルがさまざまな入力形状にシームレスに適応できるようになります。
この機能を有効にするには、以下を使用します。 dynamic=True エクスポート時のフラグ:
例
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="onnx", dynamic=True)
yolo export model=yolo26n.pt format=onnx dynamic=True
動的な入力サイズ調整は、ビデオ処理やさまざまなソースからの画像を処理する場合など、入力寸法が異なる可能性のあるアプリケーションに特に役立ちます。
モデルのパフォーマンスを最適化するために考慮すべき主要なエクスポート引数には何がありますか?
モデルのパフォーマンスを最適化するには、エクスポート引数を理解し、構成することが重要です。
format:エクスポートされたモデルのターゲット形式(例:onnx,torchscript,tensorflow)。imgsz:モデル入力に必要な画像サイズ(例:640または(height, width))。half:FP16量子化を有効にし、モデルサイズを縮小し、推論を高速化する可能性があります。optimize:モバイル環境や制約のある環境に特化した最適化を適用します。int8:INT8量子化を有効にします。これは、以下に非常に役立ちます。 エッジAI デプロイメント。
特定のハードウェアプラットフォームへのデプロイメントでは、NVIDIA GPU用のTensorRT、Appleデバイス用のCoreML、またはGoogle Coralデバイス用のEdge TPUなどの特殊なエクスポート形式の使用を検討してください。
エクスポートされたYOLOモデルの出力tensorは何を表していますか?
YOLOモデルをONNXやTensorRTのような形式にエクスポートする場合、出力tensorの構造はモデルのタスクに依存します。これらの出力を理解することは、カスタム推論実装にとって重要です。
次の場合 detectモデル (例: yolo26n.pt)の場合、出力は通常、次のような形状の単一のtensorです (batch_size, 4 + num_classes, num_predictions) チャネルがボックス座標とクラスごとのスコアを表し、 num_predictions エクスポート入力解像度に依存し(動的である場合もあります)。
次の場合 セグメンテーションモデル (例: yolo26n-seg.pt)の場合、通常2つの出力が得られます。1つ目のtensorは次の形状です。 (batch_size, 4 + num_classes + mask_dim, num_predictions) (ボックス、クラススコア、マスク係数)、そして2つ目のtensorは次の形状です。 (batch_size, mask_dim, proto_h, proto_w) マスクプロトタイプを含み、係数とともにインスタンスマスクを生成するために使用されます。サイズはエクスポート入力解像度に依存し(動的である場合もあります)。
次の場合 ポーズモデル (例: yolo26n-pose.pt)の場合、出力tensorは通常次の形状です。 (batch_size, 4 + num_classes + keypoint_dims, num_predictions)は、 keypoint_dims ポーズ仕様(例:キーポイントの数、信頼度が含まれるかどうか)に依存し、 num_predictions エクスポート入力解像度に依存し(動的である場合もあります)。
ONNX推論例の例では、各モデルタイプでこれらの出力を処理する方法が示されています。