Ultralytics YOLO を使用したモデルのエクスポート
はじめに
モデルを学習させる最終的な目標は、実際のアプリケーションにデプロイすることです。Ultralytics YOLO11のエクスポートモードは、学習済みモデルをさまざまな形式でエクスポートするための多様なオプションを提供し、さまざまなプラットフォームやデバイスにデプロイできるようにします。この包括的なガイドでは、モデルのエクスポートのニュアンスを説明し、最大限の互換性とパフォーマンスを実現する方法を紹介します。
見る: カスタムトレーニングされたUltralytics YOLOモデルをエクスポートし、Webカメラでライブ推論を実行する方法
YOLO11のエクスポートモードを選ぶ理由
- 汎用性: ONNX、TensorRT、CoreMLなど、複数の形式にエクスポートできます。
- パフォーマンス: TensorRTで最大5倍のGPU高速化、ONNXまたはOpenVINOで3倍のCPU高速化を実現します。
- 互換性: モデルを多数のハードウェアおよびソフトウェア環境に普遍的にデプロイできるようにします。
- 使いやすさ: 迅速かつ簡単なモデルエクスポートのためのシンプルなCLIおよびPython API。
エクスポートモードの主な特徴
主な機能を紹介します。
- ワンクリックエクスポート: さまざまな形式にエクスポートするためのシンプルなコマンドです。
- バッチエクスポート: バッチ推論対応モデルをエクスポートします。
- 最適化された推論: エクスポートされたモデルは、より迅速な推論時間のために最適化されています。
- Tutorial Videos: スムーズなエクスポート体験のための詳細なガイドとチュートリアル。
使用例
YOLO11nモデルをONNXやTensorRTなどの異なる形式にエクスポートします。エクスポート引数の完全なリストについては、以下の引数のセクションを参照してください。
例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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=yolo11n.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(半精度)量子化を有効にし、モデルサイズを縮小し、サポートされているハードウェアでの推論を高速化する可能性があります。ONNXのINT8量子化またはCPUのみのエクスポートとは互換性がありません。 |
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 |
サポートされている場合、エクスポートされたモデルにNon-Maximum Suppression(NMS)を追加し(エクスポート形式を参照)、検出後処理の効率を向上させます。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' |
へのパス データセット 構成ファイル(デフォルト: coco8.yaml )は、INT8量子化のキャリブレーションに不可欠です。INT8を有効にして指定しない場合、デフォルトのデータセットが割り当てられます。 |
fraction |
float |
1.0 |
INT8量子化のキャリブレーションに使用するデータセットの割合を指定します。リソースが限られている場合や実験を行う場合に役立つ、データセットのサブセットでのキャリブレーションが可能です。INT8を有効にして指定しない場合、データセット全体が使用されます。 |
これらのパラメータを調整することで、デプロイ環境、ハードウェア制約、パフォーマンス目標など、特定の要件に合わせてエクスポートプロセスをカスタマイズできます。モデルサイズ、速度、精度の最適なバランスを実現するには、適切な形式と設定を選択することが不可欠です。
エクスポート形式
利用可能なYOLO11のエクスポート形式は、以下の表に記載されています。以下の方法で、任意の形式にエクスポートできます。 format
引数、つまり format='onnx'
または format='engine'
エクスポートされたモデルで直接予測または検証できます。例: yolo predict model=yolo11n.onnx
エクスポート完了後、モデルの使用例が表示されます。
形式 | format 引数 |
モデル | メタデータ | 引数 |
---|---|---|---|---|
PyTorch | - | yolo11n.pt |
✅ | - |
TorchScript | torchscript |
yolo11n.torchscript |
✅ | imgsz , half , dynamic , optimize , nms , batch , device |
ONNX | onnx |
yolo11n.onnx |
✅ | imgsz , half , dynamic , simplify , opset , nms , batch , device |
OpenVINO | openvino |
yolo11n_openvino_model/ |
✅ | imgsz , half , dynamic , int8 , nms , batch , data , fraction , device |
TensorRT | engine |
yolo11n.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , nms , batch , data , fraction , device |
CoreML | coreml |
yolo11n.mlpackage |
✅ | imgsz , half , int8 , nms , batch , device |
TF SavedModel | saved_model |
yolo11n_saved_model/ |
✅ | imgsz , keras , int8 , nms , batch , device |
TF GraphDef | pb |
yolo11n.pb |
❌ | imgsz , batch , device |
TF Lite | tflite |
yolo11n.tflite |
✅ | imgsz , half , int8 , nms , batch , data , fraction , device |
TF Edge TPU | edgetpu |
yolo11n_edgetpu.tflite |
✅ | imgsz , device |
TF.js | tfjs |
yolo11n_web_model/ |
✅ | imgsz , half , int8 , nms , batch , device |
PaddlePaddle | paddle |
yolo11n_paddle_model/ |
✅ | imgsz , batch , device |
MNN | mnn |
yolo11n.mnn |
✅ | imgsz , batch , int8 , half , device |
NCNN | ncnn |
yolo11n_ncnn_model/ |
✅ | imgsz , half , batch , device |
IMX500 | imx |
yolo11n_imx_model/ |
✅ | imgsz , int8 , data , fraction , device |
RKNN | rknn |
yolo11n_rknn_model/ |
✅ | imgsz , batch , name , device |
よくある質問
YOLO11モデルをONNX形式にエクスポートするにはどうすればよいですか?
Ultralyticsを使用すると、YOLO11モデルをONNX形式に簡単にエクスポートできます。モデルをエクスポートするためのPythonとCLIの両方のメソッドが用意されています。
例
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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=yolo11n.pt format=onnx # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model
プロセスの詳細、異なる入力サイズの処理などの高度なオプションについては、ONNX 統合ガイドを参照してください。
モデルのエクスポートに TensorRT を使用する利点は何ですか?
モデルのエクスポートにTensorRTを使用すると、パフォーマンスが大幅に向上します。TensorRTにエクスポートされたYOLO11モデルは、最大5倍のGPU高速化を実現できるため、リアルタイム推論アプリケーションに最適です。
- 多様性: 特定のハードウェア構成に合わせてモデルを最適化します。
- 速度: 高度な最適化により、より高速な推論を実現します。
- 互換性: NVIDIAハードウェアとスムーズに統合します。
TensorRTの統合について詳しくは、TensorRT統合ガイドをご覧ください。
YOLO11モデルをエクスポートする際に、INT8量子化を有効にするにはどうすればよいですか?
INT8 量子化は、モデルを圧縮し、特にエッジデバイスでの推論を高速化する優れた方法です。INT8 量子化を有効にする方法は次のとおりです:
例
from ultralytics import YOLO
model = YOLO("yolo11n.pt") # Load a model
model.export(format="engine", int8=True)
yolo export model=yolo11n.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("yolo11n.pt")
model.export(format="onnx", dynamic=True)
yolo export model=yolo11n.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などの特殊なエクスポート形式の使用を検討してください。