コンテンツぞスキップ

モデル・゚クスポヌト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)

コメント