コンテンツにスキップ

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

Ultralytics YOLOのエコシステムと統合

はじめに

モデルを学習させる最終的な目標は、実際のアプリケーションにデプロイすることです。Ultralytics YOLO11のエクスポートモードは、学習済みモデルをさまざまな形式でエクスポートするための多様なオプションを提供し、さまざまなプラットフォームやデバイスにデプロイできるようにします。この包括的なガイドでは、モデルのエクスポートのニュアンスを説明し、最大限の互換性とパフォーマンスを実現する方法を紹介します。



見る: カスタムトレーニングされたUltralytics YOLOモデルをエクスポートし、Webカメラでライブ推論を実行する方法

YOLO11のエクスポートモードを選ぶ理由

  • 汎用性: ONNXTensorRTCoreMLなど、複数の形式にエクスポートできます。
  • パフォーマンス: TensorRTで最大5倍のGPU高速化、ONNXまたはOpenVINOで3倍のCPU高速化を実現します。
  • 互換性: モデルを多数のハードウェアおよびソフトウェア環境に普遍的にデプロイできるようにします。
  • 使いやすさ: 迅速かつ簡単なモデルエクスポートのためのシンプルなCLIおよびPython API。

エクスポートモードの主な特徴

主な機能を紹介します。

  • ワンクリックエクスポート: さまざまな形式にエクスポートするためのシンプルなコマンドです。
  • バッチエクスポート: バッチ推論対応モデルをエクスポートします。
  • 最適化された推論: エクスポートされたモデルは、より迅速な推論時間のために最適化されています。
  • Tutorial Videos: スムーズなエクスポート体験のための詳細なガイドとチュートリアル。

ヒント

  • 最大3倍のCPU高速化のためにONNXまたはOpenVINOにエクスポートします。
  • 最大5倍のGPU高速化のためにTensorRTにエクスポートします。

使用例

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 パラメータ。

モデルのエクスポート時に、動的な入力サイズが重要なのはなぜですか?

動的な入力サイズにより、エクスポートされたモデルはさまざまな画像寸法を処理できるようになり、柔軟性が向上し、さまざまなユースケースに合わせて処理効率が最適化されます。ONNXTensorRTなどの形式にエクスポートする場合、動的な入力サイズを有効にすると、モデルがさまざまな入力形状にシームレスに適応できるようになります。

この機能を有効にするには、以下を使用します。 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などの特殊なエクスポート形式の使用を検討してください。



📅 1年前に作成 ✏️ 5ヶ月前に更新

コメント