コンテンツへスキップ

モデル・エクスポートUltralytics YOLO

Ultralytics YOLO エコシステムと統合

はじめに

モデルをトレーニングする最終的な目標は、実世界のアプリケーションにモデルを導入することです。Ultralytics YOLOv8 のエクスポートモードでは、トレーニングしたモデルをさまざまなフォーマットにエクスポートするための多彩なオプションを提供し、さまざまなプラットフォームやデバイスに展開できるようにします。この包括的なガイドは、モデルのエクスポートのニュアンスを説明し、最大の互換性とパフォーマンスを達成する方法を紹介することを目的としています。



見るんだ: カスタム学習Ultralytics YOLOv8 モデルをエクスポートし、ウェブカメラ上でライブ推論を実行する方法。

なぜYOLOv8 のエクスポート・モードを選ぶのか?

  • 汎用性: ONNX,TensorRT,CoreML, などを含む複数のフォーマットにエクスポート。
  • パフォーマンス: TensorRT でGPU を最大 5 倍、ONNX またはOpenVINO でCPU を最大 3 倍高速化。
  • 互換性:多数のハードウェアおよびソフトウェア環境において、モデルを普遍的に展開できるようにします。
  • 使いやすさ:シンプルなCLI 、Python APIにより、素早く簡単にモデルをエクスポートできます。

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

ここでは、目立った機能をいくつか紹介しよう:

  • ワンクリックエクスポート:簡単なコマンドで様々なフォーマットにエクスポートできます。
  • バッチエクスポート:バッチ推論可能なモデルをエクスポートします。
  • 最適化された推論:エクスポートされたモデルは、推論時間を短縮するために最適化されています。
  • チュートリアルビデオ:スムーズな書き出しのための詳細なガイドとチュートリアル。

チップ

  • 輸出先 ONNXまたは OpenVINOにエクスポートすると、CPU が最大3倍高速化されます。
  • にエクスポートする。 TensorRTにエクスポートすると、GPU が最大5倍高速化されます。

使用例

YOLOv8n モデルをONNX やTensorRT のような別のフォーマットにエクスポートする。 エクスポート引数の完全なリストについては、以下の引数のセクションを参照のこと。

例

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.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=yolov8n.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', 'tensorflow'など、さまざまな展開環境との互換性を定義している。
imgsz int または tuple 640 モデル入力に必要な画像サイズ。正方形画像の場合は整数,正方形画像の場合はタプルになります. (height, width) 具体的な寸法については
keras bool False TensorFlow SavedModel 用の Keras フォーマットへのエクスポートを可能にし、TensorFlow サービングや API との互換性を提供します。
optimize bool False TorchScript へのエクスポート時にモバイルデバイス向けの最適化を適用し、モデルサイズを縮小してパフォーマンスを向上させる可能性があります。
half bool False FP16(半精度)量子化を有効にし、モデルサイズを縮小し、サポートされているハードウェアでの推論を高速化する可能性があります。
int8 bool False INT8量子化を有効にすることで、モデルをさらに圧縮し、主にエッジデバイスに対して、最小限の精度損失で推論を高速化する。
dynamic bool False ONNX 、TensorRT エクスポートのための動的な入力サイズを可能にし、さまざまな画像寸法を扱う柔軟性を高めます。
simplify bool False のモデルグラフを簡略化します。 ONNX エクスポート onnxslimこれにより、パフォーマンスと互換性が向上する可能性があります。
opset int None 異なるONNX パーサーやランタイムとの互換性のために、ONNX のオペセットのバージョンを指定します。設定されていない場合は、サポートされている最新のバージョンを使用します。
workspace float 4.0 TensorRT 、メモリ使用量とパフォーマンスのバランスをとりながら最適化するために、ワークスペースの最大サイズをGiB単位で設定します。
nms bool False 正確で効率的な検出の後処理に不可欠な非最大抑制(NMS)をCoreML エクスポートに追加します。
batch int 1 エクスポート モデルのバッチ推論サイズ、またはエクスポートされたモデルが同時に処理する画像の最大数を指定します predict モードだ。

これらのパラメータを調整することで、展開環境、ハードウェアの制約、パフォーマンス目標など、特定の要件に合わせてエクスポートプロセスをカスタマイズすることができます。適切なフォーマットと設定を選択することは、モデルサイズ、スピード、精度の最適なバランスを実現するために不可欠です。

輸出フォーマット

利用可能なYOLOv8 エクスポート形式は以下の表の通りです。どのフォーマットでも format 引数、すなわち format='onnx' または format='engine'.エクスポートされたモデルを直接予測または検証することができます。 yolo predict model=yolov8n.onnx.使用例は、エクスポート完了後に表示されます。

フォーマット format 議論 モデル メタデータ 論争
PyTorch - yolov8n.pt ✅ -
TorchScript torchscript yolov8n.torchscript ✅ imgsz, optimize, batch
ONNX onnx yolov8n.onnx ✅ imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolov8n_openvino_model/ ✅ imgsz, half, int8, batch
TensorRT engine yolov8n.engine ✅ imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolov8n.mlpackage ✅ imgsz, half, int8, nms, batch
TF SavedModel saved_model yolov8n_saved_model/ ✅ imgsz, keras, int8, batch
TF GraphDef pb yolov8n.pb ❌ imgsz, batch
TF ライト tflite yolov8n.tflite ✅ imgsz, half, int8, batch
TF エッジTPU edgetpu yolov8n_edgetpu.tflite ✅ imgsz
TF.js tfjs yolov8n_web_model/ ✅ imgsz, half, int8, batch
PaddlePaddle paddle yolov8n_paddle_model/ ✅ imgsz, batch
NCNN ncnn yolov8n_ncnn_model/ ✅ imgsz, half, batch

よくあるご質問

YOLOv8 モデルをONNX フォーマットにエクスポートする方法を教えてください。

Ultralytics を使えば、YOLOv8 のモデルをONNX フォーマットにエクスポートするのは簡単です。モデルをエクスポートするために、Python とCLI の両方のメソッドが用意されています。

例

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.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=yolov8n.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

異なる入力サイズへの対応など、高度なオプションを含むプロセスの詳細については、以下のセクションを参照してください。 ONNXセクションを参照してください。

モデルのエクスポートにTensorRT を使用する利点は何ですか?

モデルのエクスポートにTensorRT を使用すると、パフォーマンスが大幅に向上します。TensorRT にエクスポートされたYOLOv8 モデルは、GPU 最大5倍のスピードアップを達成でき、リアルタイム推論アプリケーションに最適です。

  • 汎用性:特定のハードウェアセットアップにモデルを最適化します。
  • スピード:高度な最適化により、より高速な推論を実現。
  • 互換性: NVIDIA ハードウェアとスムーズに統合。

TensorRT との統合の詳細については TensorRT統合ガイドをご覧ください。

YOLOv8 モデルをエクスポートする際、INT8量子化を有効にするにはどうすればよいですか?

INT8量子化は、特にエッジデバイスにおいて、モデルを圧縮し、推論を高速化する優れた方法です。ここでは、INT8量子化を有効にする方法を説明します:

例

from ultralytics import YOLO

model = YOLO("yolov8n.pt")  # Load a model
model.export(format="onnx", int8=True)
yolo export model=yolov8n.pt format=onnx int8=True   # export model with INT8 quantization

INT8 量子化は、TensorRT やCoreML など、さまざまなフォーマットに適用できます。詳細はエクスポートのセクションにあります。

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

動的入力サイズは、エクスポートされたモデルが様々な画像寸法を扱うことを可能にし、柔軟性を提供し、様々なユースケースに対して処理効率を最適化します。ONNX やTensorRT のような形式にエクスポートする場合、ダイナミック入力サイズを有効にすることで、モデルが異なる入力形状にシームレスに適応できるようになります。

この機能を有効にするには dynamic=True フラグを立てる:

例

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
model.export(format="onnx", dynamic=True)
yolo export model=yolov8n.pt format=onnx dynamic=True

詳しくは、ダイナミック・インプット・サイズのコンフィギュレーションを参照のこと。

モデルのパフォーマンスを最適化するために考慮すべき重要な輸出論拠とは?

エクスポートの引数を理解し設定することは、モデルのパフォーマンスを最適化するために非常に重要です:

  • format: エクスポートされるモデルのターゲットフォーマット(例. onnx, torchscript, tensorflow).
  • imgsz: モデル入力に必要な画像サイズ(例. 640 または (height, width)).
  • half: FP16量子化が可能になり、モデルサイズが小さくなり、推論が高速化する可能性がある。
  • optimize: モバイルや制約のある環境向けに、特定の最適化を適用する。
  • int8: INT8量子化を可能にし、エッジ展開に非常に有効。

すべてのエクスポート引数の詳細なリストと説明については、エクスポート引数のセクションをご覧ください。



作成日:2023-11-12 更新日:2024-07-04
作成者:glenn-jocher(17),Burhan-Q(4),Kayzwer(2)

コメント