Ultralytics YOLO27:

迅速なデプロイに向けたYOLO26モデルのTorchScriptエクスポート#

PyTorchでTorchScriptの提供が終了します

PyTorchではTorchScriptが非推奨となり、その機能が段階的に削除されています。新たにモバイルやエッジにデプロイする場合は、サポート対象のExecuTorchインテグレーションを使用してください。Ultralyticsでは、従来のC++との互換性のため、通常のTorchScriptエクスポートを引き続き提供しています。

Pythonを使わずにC++環境でコンピュータービジョンモデルをデプロイするには、ポータブルなシリアル化形式が必要です。TorchScriptは、従来のLibTorchアプリケーションとの互換性を提供します。

Ultralytics YOLO26モデルをTorchScriptにエクスポートしてシリアル化すると、クロスプラットフォームの互換性を確保し、デプロイを効率化できます。このガイドでは、YOLO26モデルをTorchScript形式にエクスポートする方法を説明します。これにより、より幅広いアプリケーションでモデルを使いやすくなります。

TorchScriptにエクスポートする理由#

TorchScriptモデルのシリアル化とデプロイのワークフロー概要

PyTorchの開発者によって開発されたTorchScriptは、さまざまなプラットフォームでPyTorchモデルを最適化し、デプロイするための強力なツールです。YOLO26モデルをTorchScriptにエクスポートすることは、研究から実用への移行に不可欠です。PyTorchフレームワークの一部であるTorchScriptを使うと、Pythonをサポートしない環境でもPyTorchモデルを使用できるため、この移行を円滑に進められます。

このプロセスでは、トレーシングとスクリプティングという2つの手法を使用します。トレーシングではモデルの実行中に演算を記録し、スクリプティングではPythonのサブセットを使ってモデルを定義できます。これらの手法により、YOLO26のようなモデルは、通常のPython環境以外でも引き続き機能します。

TorchScriptのスクリプティングとトレーシングの比較

TorchScriptモデルは、演算子フュージョンやメモリ使用量の改善などの手法で最適化することもでき、効率的な実行が可能になります。TorchScriptにエクスポートするもう1つのメリットは、さまざまなハードウェアプラットフォームでモデルの実行を高速化できる可能性があることです。PyTorchモデルをスタンドアロンの本番環境対応形式に変換でき、C++環境に統合できます。

TorchScriptモデルの主な機能#

PyTorchエコシステムの重要な要素であるTorchScriptは、ディープラーニングモデルの最適化とデプロイに役立つ強力な機能を提供します。

TorchScriptの主な機能の概要

TorchScriptが開発者にとって有用なツールとなる主な機能は、次のとおりです。

  • 静的グラフ実行: TorchScriptは、PyTorchの動的グラフ実行とは異なり、モデルの計算を静的グラフで表現します。静的グラフ実行では、実際の実行前に計算グラフを定義して一度コンパイルするため、推論時のパフォーマンスが向上します。

  • モデルのシリアル化: TorchScriptを使うと、PyTorchモデルをプラットフォームに依存しない形式にシリアル化できます。シリアル化されたモデルは、元のPythonコードを必要とせずに読み込めるため、さまざまなランタイム環境にデプロイできます。

  • JITコンパイル: TorchScriptは、Just-In-Time (JIT)コンパイルを使用して、PyTorchモデルを最適化された中間表現に変換します。JITはモデルの計算グラフをコンパイルし、ターゲットデバイス上で効率的に実行できるようにします。

  • 段階的な変換: TorchScriptでは、PyTorchモデルの一部を段階的にTorchScriptに変換できます。この柔軟な方法は、複雑なモデルを扱う場合や、コードの特定部分を最適化したい場合に特に有用です。

TorchScriptのデプロイオプション#

YOLO26モデルをTorchScript形式にエクスポートするコードを見る前に、TorchScriptモデルが通常どこで使用されるかを確認しましょう。

TorchScriptは、機械学習モデル向けに次のようなさまざまなデプロイオプションを提供します。

  • C++ API: TorchScriptの最も一般的なユースケースはLibTorch C++ APIです。これを使うと、最適化済みのTorchScriptモデルをC++アプリケーション内で直接読み込んで実行できます。Pythonが適さない、または利用できない本番環境に最適です。C++ APIはTorchScriptモデルを低オーバーヘッドかつ効率的に実行し、パフォーマンスを最大限に引き出します。

  • モバイルへのデプロイ: モバイルデバイスで低レイテンシのオフライン推論とデータプライバシーを実現するには、PyTorch Mobileに代わるTorchScriptの後継であるExecuTorchを使用してください。

  • クラウドへのデプロイ: TorchScriptモデルは、TorchServeなどのソリューションを使ってクラウドベースのサーバーにデプロイできます。TorchServeは、モデルのバージョン管理、バッチ処理、メトリクスのモニタリングなどの機能を提供し、本番環境でのスケーラブルなデプロイを可能にします。TorchScriptをクラウドにデプロイすると、APIやその他のWebサービスを通じてモデルを利用できるようになります。

対応タスク#

TorchScriptエクスポートは、Ultralyticsの7つすべてのタスクをサポートします。セマンティックセグメンテーションと深度推定を利用できるのはYOLO26のみです。これらのヘッドを搭載しているのはYOLO26ファミリーだけです。

タスクYOLOv8YOLO11YOLO26
検出✅✅✅
セグメンテーション✅✅✅
セマンティック❌❌✅
深度❌❌✅
分類✅✅✅
姿勢推定✅✅✅
OBB✅✅✅

TorchScriptへのエクスポート: YOLO26モデルの変換#

YOLO26モデルをTorchScriptにエクスポートすると、さまざまな環境で使いやすくなり、実行速度と効率も向上します。これは、実際のアプリケーションでディープラーニングモデルをより効果的に活用したい方に適しています。

インストール#

必要なパッケージをインストールするには、次を実行します。

インストール
# Install the required package for YOLO26
pip install ultralytics

インストール手順の詳細とベストプラクティスについては、Ultralyticsのインストールガイドをご覧ください。YOLO26に必要なパッケージのインストールで問題が発生した場合は、解決策とヒントが記載されたよくある問題のガイドをご確認ください。

使用方法#

すべてのUltralytics YOLO26モデルは、追加設定なしでエクスポートできるように設計されているため、希望するデプロイワークフローに簡単に統合できます。アプリケーションに最適な設定を選ぶには、対応するエクスポート形式と設定オプションの一覧をご覧ください。

TorchScript形式は、エクスポート、予測、検証の各モードをサポートします。モデルをエクスポートした後、エクスポート済みモデルを読み込んで推論を実行するか、精度を検証してください。

エクスポート
from ultralytics import YOLO

# YOLO26モデルを読み込みます
model = YOLO("yolo26n.pt")

# モデルをTorchScript形式にエクスポート
model.export(format="torchscript")  # 'yolo26n.torchscript'を作成
推論
from ultralytics import YOLO

# エクスポート済みのTorchScriptモデルを読み込む
model = YOLO("yolo26n.torchscript")

# 推論を実行
results = model("https://ultralytics.com/images/bus.jpg")
検証
from ultralytics import YOLO

# エクスポート済みのTorchScriptモデルを読み込む
model = YOLO("yolo26n.torchscript")

# COCO8データセットで精度を検証します
metrics = model.val(data="coco8.yaml")

エクスポート引数#

引数種類デフォルト説明
formatstr'torchscript'エクスポートしたモデルのターゲットフォーマットです。さまざまなデプロイ環境との互換性を定義します。
imgszintまたはtuple640モデル入力の画像サイズです。正方形画像の場合は整数、特定のサイズの場合はタプル(height, width)を指定できます。
dynamicboolFalse動的な入力サイズを使用できるようにし、さまざまな画像サイズを柔軟に扱えるようにします。
quantizeintまたはstrNone量子化の精度: 16 (FP16)には、device=0を指定したGPUエクスポートが必要です。32/未設定の場合はFP32です。非推奨のhalfフラグを置き換えます。
nmsbool、省略可Noneraw出力(None、デフォルト)、組み込みNMS(True)、NMSなしのヘッド(False)から選択します。
batchint1エクスポートモデルのバッチ推論サイズ、またはpredictモードでエクスポートモデルが同時に処理する画像の最大数を指定します。
devicestrNoneエクスポートに使用するデバイスを指定します。GPU(device=0)、CPU(device=cpu)、Appleシリコン向けMPS(device=mps)から選択します。

エクスポートプロセスの詳細については、Ultralyticsのエクスポートに関するドキュメントページをご覧ください。

エクスポート済みYOLO26 TorchScriptモデルのデプロイ#

Ultralytics YOLO26モデルをTorchScript形式に正常にエクスポートできたら、モデルをデプロイできます。TorchScriptモデルを実行する際の最初の手順として推奨される方法は、前述の使用例のコードスニペットに示すYOLO("model.torchscript")メソッドを使用することです。TorchScriptモデルを他の環境にデプロイする詳しい手順については、次のリソースをご覧ください。

  • モバイルへのデプロイ方法を見る: 現在のPyTorchモバイルデプロイでは、ExecuTorch独自のtorch.export() → .pteパイプラインを使用してください。

  • サーバーサイドへのデプロイ方法を確認する: TorchServeを使ってモデルをサーバーサイドにデプロイする方法を、スケーラブルで効率的なモデルサービングの手順を追ったチュートリアルで学べます。

  • C++へのデプロイを実装する: 「C++でTorchScriptモデルを読み込むチュートリアル」を確認し、TorchScriptモデルをC++アプリケーションに統合して、パフォーマンスと汎用性を高める方法をご覧ください。

概要#

このガイドでは、Ultralytics YOLO26モデルをTorchScript形式にエクスポートする手順を紹介しました。説明した手順に従うことで、YOLO26モデルのパフォーマンスを最適化し、さまざまなプラットフォームや環境に柔軟にデプロイできます。

使用方法の詳細については、TorchScriptの公式ドキュメントをご覧ください。

また、Ultralytics YOLO26の他の統合方法について詳しく知りたい場合は、統合ガイドページをご覧ください。役立つリソースや情報を多数ご紹介しています。

よくある質問#

  • Ultralytics YOLO26モデルをTorchScriptにエクスポートすると、柔軟なクロスプラットフォームデプロイが可能になります。PyTorchエコシステムの一部であるTorchScriptを使うと、モデルをシリアル化して、Pythonをサポートしない環境で実行できます。このため、C++環境でのモデルのデプロイに役立ちます。

  • YOLO26モデルをTorchScriptにエクスポートするには、次のコード例を使用できます。

    使用方法
    from ultralytics import YOLO
    
    # YOLO26モデルを読み込みます
    model = YOLO("yolo26n.pt")
    
    # モデルをTorchScript形式にエクスポート
    model.export(format="torchscript")  # 'yolo26n.torchscript'を作成
    
    # エクスポート済みのTorchScriptモデルを読み込む
    torchscript_model = YOLO("yolo26n.torchscript")
    
    # 推論を実行
    results = torchscript_model("https://ultralytics.com/images/bus.jpg")

    エクスポート手順の詳細については、エクスポートに関するUltralyticsドキュメントをご覧ください。

  • YOLO26モデルのデプロイにTorchScriptを使用すると、次のようなメリットがあります。

    • ポータビリティ: エクスポート済みモデルは、Pythonを使わずにC++アプリケーションで実行できます。
    • 最適化: TorchScriptは静的グラフ実行とJust-In-Time (JIT)コンパイルをサポートし、モデルのパフォーマンスを最適化できます。
    • 言語間の統合: TorchScriptモデルは他のプログラミング言語に統合できるため、柔軟性と拡張性が高まります。
    • シリアル化: モデルをシリアル化することで、プラットフォームに依存せずに読み込み、推論を実行できます。

    デプロイの詳細については、TorchServe DocumentationとC++ Deployment Guideをご覧ください。モバイルデバイス上でデプロイする場合、PyTorchは現在ExecuTorchを推奨しています。ExecuTorchはTorchScriptではなく、独自のtorch.export() → .pteパイプラインを使用します。

  • YOLO26モデルのエクスポートに必要なパッケージをインストールするには、次のコマンドを使用します。

    インストール
    # Install the required package for YOLO26
    pip install ultralytics

    詳しい手順については、Ultralytics Installation guideをご覧ください。インストール中に問題が発生した場合は、Common Issues guideを参照してください。

  • YOLO26モデルをTorchScript形式にエクスポートした後、さまざまなプラットフォームにデプロイできます。

    • C++ API: オーバーヘッドが少なく、高効率が求められる本番環境では、LibTorchを使用します。
    • モバイルデプロイ: PyTorchがサポートする代替手段であり、独自の.pteエクスポートパイプラインを備えたExecuTorchを使用します。
    • クラウドデプロイ: スケーラブルなサーバーサイドデプロイには、TorchServeなどのサービスを活用します。

    TorchScriptの機能を最大限に活用できるよう、これらの環境でモデルをデプロイするための包括的なガイドラインをご覧ください。

コメント