デプロイ用TFLiteモデルのエクスポート(非推奨)#
Ultralytics 8.4.83以降、単独のtfliteエクスポート形式は削除され、統合されたGoogle LiteRT形式に置き換えられています。LiteRT(Lite Runtime)はTensorFlow Liteの次世代版であり、新しい名称です。また、同じ.tfliteモデルをエクスポートし、モバイル、組み込み、エッジ、ブラウザーへのデプロイを単一の形式でサポートします。
format="tflite"は引き続き動作しますが、非推奨の警告を出し、代わりにLiteRTモデルをエクスポートします。今後はformat="litert"を使用してください。最新のエクスポート手順とオプションについては、LiteRTエクスポートガイドをご覧ください。
エッジデバイスや組み込みデバイスにコンピュータービジョンモデルをデプロイするには、シームレスなパフォーマンスを実現できる形式が必要です。
従来のTensorFlow LiteまたはTFLiteエクスポート形式は、エッジアプリケーションでの物体検出や画像分類などのタスク向けに、Ultralytics YOLO26モデルを最適化していました。このガイドでは従来のTFLiteデプロイ環境について説明します。新しいエクスポートにはLiteRTを使用してください。
エクスポートにTFLiteが使われていた理由#
2017年5月にGoogleがTensorFlowフレームワークの一部として発表したTensorFlow Lite、略してTFLiteは、エッジコンピューティングとも呼ばれるオンデバイス推論向けのオープンソース深層学習フレームワークでした。開発者はこのフレームワークのツールを使って、学習済みモデルをモバイル、組み込み、IoTデバイス、および従来型のコンピューターで実行できました。
TensorFlow Liteは、組み込みLinux、Android、iOS、マイクロコントローラー(MCU)など、幅広いプラットフォームに対応していました。TFLiteにエクスポートすると、アプリケーションでモデルをローカルかつオフラインで実行できました。
TFLiteモデルの主な機能#
TFLiteモデルには、開発者がモバイル、組み込み、エッジデバイスでモデルを実行できるようにし、オンデバイス機械学習を可能にするさまざまな主要機能があります。
-
オンデバイス最適化: TFLiteはオンデバイスML向けに最適化されており、データをローカルで処理してレイテンシを低減し、個人データを送信しないことでプライバシーを強化し、モデルサイズを最小限に抑えてストレージを節約します。
-
複数プラットフォームへの対応: TFLiteは幅広いプラットフォームとの互換性を備え、Android、iOS、組み込みLinux、マイクロコントローラーをサポートしています。
-
多様な言語への対応: TFLiteは、Java、Swift、Objective-C、C++、Pythonなど、さまざまなプログラミング言語と互換性があります。
-
高いパフォーマンス: ハードウェアアクセラレーションとモデル最適化により、優れたパフォーマンスを実現します。
実測パフォーマンス(過去の記録)#
これらの結果は、Android 16/API 36上で、12 GB LPDDR5Xメモリを搭載したXiaomi 17を使用し、Ultralytics Flutterプラグイン0.6.8とLiteRT 2.1.5で記録されました。3 nmのSnapdragon 8 Elite Gen 5(SM8850)は、8コアのQualcomm Oryon CPU(最大4.6 GHzのPrimeコア2基と最大3.62 GHzのPerformanceコア6基)、Adreno GPU、Hexagon NPUを搭載しています。これらの表は、従来のonnx2tf INT8 TFLiteアセットと、移行中に評価した候補のlitert-torchエクスポートを比較しています。リリースアセットはその後、標準化されたエクスポートで上書きされたため、これらの数値は現在のv0.6.6アセットのバイトデータを示すものではありません。最新の測定値については、LiteRTパフォーマンステーブルをご覧ください。
両形式は、表示された入力サイズで同じ連続GPUスイープを実行しました。各セルは合計時間(前処理 + 推論 + 後処理)を示し、その下に各ステージの内訳を記載しています。ネイティブログにより、どちらの形式もAdreno GPU上でLiteRT OpenCL(LITERT_CL)にグラフ全体の処理を委譲したことが確認されました。
| モデル | タスク | サイズ (ピクセル) | 従来版 onnx2tf INT8 TFLite (ms) | 候補 w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 14.0 1.8 / 8.1 / 4.2 | 13.5 1.9 / 8.1 / 3.5 |
| YOLO26n-seg | Segment | 640 | 30.1 1.9 / 20.3 / 8.0 | 28.6 1.8 / 20.1 / 6.7 |
| YOLO26n-sem | セマンティック | 640 | 26.4 1.9 / 16.4 / 8.1 | 32.9 1.8 / 23.0 / 8.2 |
| YOLO26n-cls | 分類 | 224 | 3.5 0.9 / 2.2 / 0.4 | 3.2 1.0 / 2.2 / 0.1 |
| YOLO26n-pose | 姿勢推定 | 640 | 17.4 2.4 / 9.9 / 5.1 | 14.0 1.9 / 9.3 / 2.8 |
| YOLO26n-obb | OBB | 640 | 13.9 3.0 / 8.3 / 2.7 | 13.0 2.9 / 7.9 / 2.3 |
同じ移行テストでは、YOLO26n detectの量子化形式も比較しました。形式に依存する指標として比較できるのは推論時間です。
| Android形式 | GPU推論(ms) | GPUコンパイル |
|---|---|---|
| onnx2tf INT8(従来のTFLite) | 8.6 | はい |
| LiteRT w8a32(候補) | 8.4 | はい |
LiteRT INT8(quantize=8) | 11.0 | はい |
| LiteRT FP32 | 8.8 | はい |
LiteRT w8a16(quantize="w8a16") | CPUフォールバック | いいえ |
このテストでは、w8a16はCPUにフォールバックし、合計時間は約660 msでした。一方、GPU形式では約17 msでした。これらの結果を受けてw8a32の出荷が決まりましたが、デリゲートの互換性とパフォーマンスはデバイスおよびランタイムのバージョンによって異なります。対象デバイスでベンチマークを実施し、ランタイムログでアクセラレーターの配置を確認してください。
TFLiteのデプロイオプション#
LiteRTへの置き換えとなるエクスポート例を見る前に、TFLiteモデルの一般的な使い方を確認しましょう。
TFLiteには、機械学習モデル向けのさまざまなオンデバイスデプロイオプションがあります。
- AndroidおよびiOSへのデプロイ: TFLiteを使用するAndroidおよびiOSアプリケーションは、エッジカメラの映像やセンサーのデータを分析して、物体を検出・識別できます。TFLiteは、SwiftおよびObjective-Cで記述されたiOSネイティブライブラリも提供しています。以下のアーキテクチャ図は、TensorFlow Liteを使用して学習済みモデルをAndroidおよびiOSプラットフォームにデプロイするプロセスを示しています。
-
組み込みLinuxでの実装: Ultralyticsガイドを使用して Raspberry Piで推論を実行しても、ユースケースの速度要件を満たせない場合は、エクスポート済みTFLiteモデルを使用して推論時間を短縮できます。さらに、Coral Edge TPUデバイスを利用すると、パフォーマンスを一段と向上させることができます。
-
マイクロコントローラーへのデプロイ: TFLiteモデルは、マイクロコントローラーや数キロバイトのメモリしか持たない他のデバイスにもデプロイできます。コアランタイムはArm Cortex M3上でわずか16 KBに収まり、多くの基本的なモデルを実行できます。オペレーティングシステムのサポート、標準CまたはC++ライブラリ、動的メモリ割り当ては必要ありません。
TFLiteエクスポートをLiteRTに置き換える#
新しいエクスポートでは、モデルをLiteRTに変換してください。生成されるモデルのファイル拡張子は.tfliteのままです。
インストール#
必要なパッケージをインストールするには、次を実行します。
# Install the required package for YOLO26
pip install ultralyticsインストール手順の詳細とベストプラクティスについては、Ultralyticsのインストールガイドをご覧ください。YOLO26に必要なパッケージのインストールで問題が発生した場合は、解決策とヒントが記載されたよくある問題のガイドをご確認ください。
使用方法#
すべてのUltralytics YOLO26モデルは、追加設定なしでエクスポートできるように設計されているため、希望するデプロイワークフローに簡単に統合できます。アプリケーションに最適な設定を選ぶには、対応するエクスポート形式と設定オプションの一覧をご覧ください。
置き換え後のLiteRT形式は、エクスポート、予測、検証の各モードをサポートしています。モデルをエクスポートし、エクスポート済みの.tfliteモデルを読み込んで、推論を実行するか精度を検証してください。
from ultralytics import YOLO
# YOLO26モデルを読み込みます
model = YOLO("yolo26n.pt")
# モデルをLiteRT形式にエクスポートします
model.export(format="litert", imgsz=640) # 分類ではimgsz=224を使用しますfrom ultralytics import YOLO
# エクスポート済みTFLiteモデルを読み込みます
model = YOLO("yolo26n.tflite")
# 推論を実行
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# エクスポート済みTFLiteモデルを読み込みます
model = YOLO("yolo26n.tflite")
# COCO8データセットで精度を検証します
metrics = model.val(data="coco8.yaml")エクスポート引数#
| 引数 | 種類 | デフォルト | 説明 |
|---|---|---|---|
format | str | 'litert' | エクスポートしたモデルのターゲットフォーマットです。さまざまなデプロイ環境との互換性を定義します。 |
imgsz | intまたはtuple | 640 | モデル入力の画像サイズです。正方形画像の場合は整数、特定のサイズの場合はタプル(height, width)を指定できます。 |
quantize | intまたはstr | None | 量子化の精度: 8(静的INT8、int8の重みとint8のアクティベーション。キャリブレーション用のdata/fractionが必要)、'w8a16'(静的、int8の重みとint16のアクティベーション。キャリブレーション用のdata/fractionが必要)、'w8a32'(動的INT8、int8の重みとFP32のアクティベーション。キャリブレーション不要)、または32/未設定(FP32)を指定します。FP16は個別にエクスポートされません。FP32モデルはGPUデリゲート上で自動的にFP16で実行されます。非推奨のhalf/int8フラグに代わるものです。 |
batch | int | 1 | エクスポートモデルのバッチ推論サイズ、またはpredictモードでエクスポートモデルが同時に処理する画像の最大数を指定します。 |
data | str | None | 量子化に必要なデータセットのYAMLへのパスです。分類タスクの場合は、データセットディレクトリまたは組み込みのデータセット名を指定します。quantize=8または'w8a16'を指定してこの項目を省略すると、Ultralyticsがモデルタスクに応じたデフォルトのキャリブレーションデータセットを選択します。 |
fraction | float、int、またはlist | 1.0 | キャリブレーション用サブセットを、比率、画像数、または[train, val, test]の比率/件数として指定します。2項目のリストではtestがすべて含まれ、0では除外されます。 |
device | str | None | エクスポートに使用するデバイスを指定します。CPU (device=cpu)、Appleシリコン向けMPS (device=mps)です。 |
エクスポートプロセスの詳細については、Ultralyticsのエクスポートに関するドキュメントページをご覧ください。
エクスポート済みYOLO26 TFLiteモデルのデプロイ#
Ultralytics YOLO26モデルをLiteRT形式にエクスポートした後、生成された.tfliteモデルをデプロイできます。TFLiteモデルを実行する際の主な推奨ステップは、前述の使用例コードに示すYOLO("model.tflite")メソッドを使うことです。TFLiteモデルをさまざまな環境にデプロイする詳しい手順については、以下のリソースをご覧ください。
-
Android: TensorFlow LiteをAndroidアプリケーションに統合するクイックスタートガイドです。機械学習モデルのセットアップと実行手順を分かりやすく説明しています。
-
iOS: TensorFlow LiteモデルをiOSアプリケーションに統合してデプロイするための、開発者向け詳細ガイドをご覧ください。手順とリソースを段階的に説明しています。
-
エンドツーエンドの例: TensorFlow Liteのさまざまな例を概説し、開発者がモバイルやエッジデバイスでの機械学習プロジェクトにTensorFlow Liteを実装するのに役立つ実用的なアプリケーションとチュートリアルを紹介しています。
概要#
このガイドでは、従来のTFLiteデプロイワークフローについて説明します。新しいエクスポートでは、LiteRTを使用してエッジコンピューティング環境向けの.tfliteモデルを作成してください。
使い方の詳細については、TFLite公式ドキュメントをご覧ください。
ほかのUltralytics YOLO26インテグレーションに関心がある場合は、インテグレーションガイドページもご覧ください。役立つ情報や知見を多数掲載しています。
よくある質問#
新しいエクスポートでは、LiteRT形式を使用してください。まず、次のコマンドで必要なパッケージをインストールします。
pip install ultralytics次に、以下のコードスニペットを使ってモデルをエクスポートします。
from ultralytics import YOLO # YOLO26モデルを読み込みます model = YOLO("yolo26n.pt") # モデルをLiteRT形式にエクスポートします model.export(format="litert", imgsz=640) # 分類ではimgsz=224を使用しますCLIを使用する場合は、次のコマンドを実行します。
yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classification詳細については、Ultralyticsエクスポートガイドをご覧ください。
はい。YOLO26 TFLiteモデルをRaspberry Piで実行すると、推論速度を向上させることができます。まず、上記の説明に従ってモデルをLiteRT形式にエクスポートしてください。次に、TensorFlow Lite Interpreterなどのツールを使用して、Raspberry Pi上でモデルを実行します。
さらなる最適化には、Coral Edge TPUの利用を検討してください。詳しい手順については、Raspberry PiデプロイガイドとEdge TPUインテグレーションガイドをご覧ください。
TFLiteは、リソースが限られたマイクロコントローラーへのデプロイをサポートしています。コアランタイムに必要なメモリはArm Cortex M3上でわずか16 KBで、多くの基本的なモデルを実行できます。ただし、YOLO26モデルは一般的なマイクロコントローラーのメモリ容量を超える場合が多いため、YOLO26にはシングルボードコンピューター、モバイルデバイス、または専用アクセラレーターの使用が適しています。
使い始めるには、マイクロコントローラー向けTFLite Microガイドをご覧ください。
TensorFlow Liteは幅広いプラットフォームに対応しており、次のような多様なデバイスにYOLO26モデルをデプロイできます。
- AndroidおよびiOS: TFLiteのAndroidおよびiOSライブラリによるネイティブサポート。
- 組み込みLinux: Raspberry Piなどのシングルボードコンピューターに適しています。
- マイクロコントローラー: リソースが限られたMCUに適しています。
デプロイオプションの詳細については、詳しいデプロイガイドをご覧ください。
YOLO26モデルをLiteRTにエクスポートする際にエラーが発生した場合は、次の一般的な解決策を試してください。
- パッケージの互換性を確認する: Ultralytics、
litert-torch、ai-edge-litertの互換性のあるバージョンを使用していることを確認してください。インストールガイドをご覧ください。 - モデルのサポートを確認する: Ultralyticsのエクスポートドキュメントページを確認し、対象のYOLO26モデルがLiteRTエクスポートに対応していることを確認してください。
- 量子化の問題: INT8量子化を使用する場合は、
dataパラメーターでデータセットのパスが正しく指定されていることを確認してください。
その他のトラブルシューティングのヒントについては、一般的な問題のガイドをご覧ください。
- パッケージの互換性を確認する: Ultralytics、