YOLOモデルをLiteRTにエクスポートしてエッジおよびWebにデプロイする#
LiteRT(Lite Runtimeの略)は、オンデバイスAI向けのGoogleの高性能ランタイムです。TensorFlow Lite(TFLite)の次世代版かつ新しい名称であり、同じ.tfliteモデル形式を実行します。LiteRTを使用すると、1つのエクスポート済みUltralytics YOLOモデルをモバイル、組み込み、エッジ、ブラウザーにまたがってデプロイできます。従来のtfliteおよびtfjsエクスポート形式が個別に対応していたすべての環境を、1つの形式でカバーします。
Watch: How to Export Ultralytics YOLO26 to Google LiteRT | Deploy Vision AI on Android & iOS | Mobile AI 📱🚀
LiteRTエクスポート形式は、物体検出、セグメンテーション、姿勢推定、分類などのタスク向けにモデルを最適化し、幅広いデバイス上で高速かつオフラインで実行できるようにします。
公式のUltralytics YOLO Flutterプラグインは、LiteRTの.tfliteエクスポートをAndroid上ですぐに実行できます。リアルタイムカメラ推論、単一画像予測、GPUアクセラレーション、Depthを含む7つすべてのYOLO26タスク向けのモデル自動ダウンロードに対応しています。AppleデバイスではCoreMLエクスポートを使用し、Qualcomm Snapdragon NPUについてはQualcomm QNN統合を参照してください。
分類モデルはimgsz=224でエクスポートします。detect、segment、semantic、depth、pose、OBBモデルは
imgsz=640でエクスポートします。この224/640標準は、公式LiteRT、CoreML、QNNモバイルアセットで共有されています。
公式のUltralytics YOLO NPMパッケージは、LiteRT.jsを介してLiteRTの.tfliteエクスポートをサーバーやPythonなしでブラウザー上で直接実行します。リアルタイムWebカメラ推論、単一画像予測、WebGPUアクセラレーション(CPU/WASMへの自動フォールバック)に対応し、YOLO26の6つすべてのタスク(detect、segment、pose、OBB、classify、semantic)で利用できます。WebGPUでは、ONNX Runtime Webより約~2倍高速になることがよくあります。
npm i @ultralytics/yolo @litertjs/coreLiteRTにエクスポートする理由#
LiteRTは、エッジコンピューティングとも呼ばれるオンデバイス推論向けのオープンソースフレームワークです。トレーニング済みモデルをモバイル、組み込み、IoTデバイス、従来型コンピューター上で実行するためのツールを開発者に提供します。また、LiteRT.jsを通じて、WebブラウザーやNode.js上で直接実行できます。
1つのモデル形式で、あらゆるターゲットに対応:
- モバイルと組み込み: Android、iOS、組み込みLinux、マイクロコントローラー(MCU)。
- エッジアクセラレーター: さらなる高速化のために、Coral Edge TPUと互換性があります。
- ブラウザーとNode.js: LiteRT.jsは、WebGPU/WASMアクセラレーションを使用してWeb上で同じ
.tfliteモデルを実行するため、個別のTensorFlow.jsエクスポートは不要です。
LiteRTモデルの主な機能#
- オンデバイス最適化: データをローカルで処理してレイテンシを削減し、個人データを送信しないことでプライバシーを強化し、モデルサイズを縮小してストレージ容量を節約します。
- 複数プラットフォームのサポート: Android、iOS、組み込みLinux、マイクロコントローラー、最新のWebブラウザーで実行できます。
- ハードウェアアクセラレーション: CPUではXNNPACKを活用し、OpenCL、Metal、WebGPUを介してGPUアクセラレーションを利用します。GPUデリゲートは、さらなる高速化のためデフォルトでFP16を使用します。
- 量子化: FP32、静的INT8(
quantize=8、int8重み + int8アクティベーション)、静的INT16アクティベーション(quantize="w8a16"、int8重み + int16アクティベーションで高精度)、動的INT8(quantize="w8a32"、int8重み + FP32アクティベーションでキャリブレーションデータ不要)をサポートし、モデルを圧縮して推論を高速化します。精度の低下は最小限に抑えられます。 - 多様な言語のサポート: Java/Kotlin、Swift、Objective-C、C++、Python、JavaScriptと互換性があります。
実測パフォーマンス#
ハードウェア: 12 GB LPDDR5XメモリとAndroid 16 / API 36を搭載したXiaomi 17。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を搭載しています。
| モデル | タスク | サイズ (ピクセル) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 52.2 1.8 / 48.1 / 2.4 | 15.8 2.3 / 8.9 / 4.6 |
| YOLO26n-seg | Segment | 640 | 73.4 1.8 / 65.6 / 6.0 | 33.2 1.8 / 23.8 / 7.6 |
| YOLO26n-sem | Semantic | 640 | 61.2 1.8 / 51.1 / 8.3 | 34.2 1.8 / 24.0 / 8.3 |
| YOLO26n-depth | 深度 | 640 | 124.4 1.9 / 115.1 / 7.4 | 23.0 1.8 / 13.5 / 7.7 |
| YOLO26n-cls | 分類 | 224 | 4.4 0.4 / 4.0 / 0.0 | 3.1 0.8 / 2.1 / 0.2 |
| YOLO26n-pose | ポーズ | 640 | 57.4 1.8 / 53.8 / 1.8 | 16.6 2.7 / 10.1 / 3.9 |
| YOLO26n-obb | OBB | 640 | 50.3 1.8 / 47.2 / 1.4 | 11.7 1.8 / 7.8 / 2.0 |
- 速度の値は単一画像バーストレイテンシです。
bus.jpg上で3回のウォームアップ後に15回実行した平均値であり、Ultralytics Flutterプラグインの0.6.10と標準化されたv0.6.6アセットを使用して測定しています。1回の逐次スイープ内で、タスク間のCPU/GPUの順序を交互に変更しました。ネイティブログにより、すべてのCPU行がLiteRT CPU/XNNPACKを使用し、すべてのGPU行がLiteRT OpenCL(LITERT_CL)に完全なグラフを委譲していることを確認しました。 - LiteRTエクスポートはPyTorchモデルを直接トレースし、float入力を持つNCHW
.tfliteを生成します。GPUデリゲートはグラフ全体をコンパイルし(ここでは7つすべてのタスクがAdreno GPU上で実行されます)、w8a32にはキャリブレーションデータが不要です。利用側では、従来のonnx2tf NHWCレイアウトやIdentityの出力名を前提とせず、テンソル形状とシグネチャ名を読み取ってください。RGBデータは平面CHWとして直接パックするか、推論前に転置してください。SemanticエクスポートはNCHW logitsを返すため、ホスト側でクラスargmaxが必要です。公式Androidアセットはyolo-flutter-appのv0.6.6リリースでホストされており、詳細なベンチマーク記録はFlutterパフォーマンスドキュメントにあります。 - 対応するSnapdragon Hexagon NPUおよびLiteRT CPU/GPUの数値は、Qualcomm QNN統合に記載されています。
- AppleのCPU/アクセラレーターの結果は、CoreML統合で比較できます。
以下のデバイススイープでは、同じ標準化されたv0.6.6アセットを使用しています。
Google Pixel 10#
ハードウェア: 12 GBメモリとAndroid 16 / API 36を搭載したGoogle Pixel 10。3 nmのGoogle Tensor G5は、 8コアCPU(最大3.78 GHzのPrimeコア1個、最大3.05 GHzのPerformanceコア5個、最大 2.25 GHzのEfficiencyコア2個)、PowerVR D-Series GPU、Google TPUを搭載しています。コアクロックとGPUドライバー名は、リンク先の仕様でGoogleが公開していないため、ベンチマーク対象デバイスから読み取りました。
| モデル | タスク | サイズ (ピクセル) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 53.3 1.5 / 50.2 / 1.6 | 45.5 3.8 / 37.7 / 4.0 |
| YOLO26n-seg | Segment | 640 | 87.7 1.8 / 78.5 / 7.5 | 50.9 3.0 / 36.9 / 10.9 |
| YOLO26n-sem | Semantic | 640 | 68.6 1.5 / 59.0 / 8.0 | 71.6 1.5 / 59.5 / 10.6 |
| YOLO26n-depth | 深度 | 640 | 120.3 1.5 / 112.5 / 6.3 | 52.5 2.0 / 37.5 / 13.0 |
| YOLO26n-cls | 分類 | 224 | 4.0 0.3 / 3.4 / 0.2 | 17.6 0.9 / 16.7 / 0.1 |
| YOLO26n-pose | ポーズ | 640 | 59.7 1.5 / 57.0 / 1.2 | 46.6 3.8 / 39.2 / 3.5 |
| YOLO26n-obb | OBB | 640 | 52.0 1.5 / 48.9 / 1.7 | 45.5 4.0 / 38.5 / 2.9 |
ベンチマーク: bus.jpg上で3回のウォームアップ後にpredict()を15回呼び出した平均値です。ultralytics_yolo、0.6.10、公式のv0.6.6アセットを使用しています。1回の逐次スイープ内で、タスク間のCPU/GPUの順序を交互に変更しました。ネイティブログにより、すべてのCPU行がLiteRT CPU/XNNPACKを使用し、すべてのGPU行がLiteRT OpenCL(LITERT_CL)に完全なグラフを委譲していることを確認しました。
Samsung Galaxy S26#
ハードウェア: 12 GBメモリとAndroid 16 / API 36を搭載したSamsung Galaxy S26(SM-S942B)。2 nmのExynos 2600は、10コアのArmv9.3 CPU(最大3.8 GHzのC1-Ultraコア1個、最大3.26 GHzのPerformance C1-Proコア3個、最大2.76 GHzのEfficiency C1-Proコア6個)、Xclipse 960 GPU、Samsung NPUを搭載しています。
| モデル | タスク | サイズ (ピクセル) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 36.7 1.3 / 33.8 / 1.7 | 16.4 1.4 / 12.3 / 2.6 |
| YOLO26n-seg | Segment | 640 | 54.6 1.2 / 48.0 / 5.3 | 32.8 1.3 / 24.5 / 7.0 |
| YOLO26n-sem | Semantic | 640 | 47.8 1.2 / 38.4 / 8.1 | 34.2 1.3 / 24.9 / 8.0 |
| YOLO26n-depth | 深度 | 640 | 92.9 1.2 / 84.8 / 6.9 | 33.5 1.3 / 22.4 / 9.8 |
| YOLO26n-cls | 分類 | 224 | 2.7 0.2 / 2.3 / 0.2 | 2.6 0.2 / 2.4 / 0.0 |
| YOLO26n-pose | ポーズ | 640 | 42.8 1.3 / 40.5 / 1.0 | 18.4 1.4 / 14.1 / 2.9 |
| YOLO26n-obb | OBB | 640 | 37.5 1.3 / 35.1 / 1.2 | 18.8 2.5 / 14.6 / 1.8 |
ベンチマーク: bus.jpg上で3回のウォームアップ後にpredict()を15回呼び出した平均値です。ultralytics_yolo、0.6.10、公式のv0.6.6アセットを使用しています。1回の逐次スイープ内で、タスク間のCPU/GPUの順序を交互に変更しました。ネイティブログにより、すべてのCPU行がLiteRT CPU/XNNPACKを使用し、すべてのGPU行がLiteRT OpenCL(LITERT_CL)に完全なグラフを委譲していることを確認しました。
Xiaomi 17T Pro#
ハードウェア: 12 GB LPDDR5XメモリとAndroid 16 / API 36を搭載したXiaomi 17T Pro(2602EPTC0G)。3 nmのMediaTek Dimensity 9500(MT6993)は、8コアのArmv9.3 CPU(最大4.21 GHzのC1-Ultraコア1個、最大3.5 GHzのC1-Premiumコア3個、最大2.7 GHzのC1-Proコア4個)、Mali-G1 Ultra MC12 GPU、MediaTek NPU 990を搭載しています。
| モデル | タスク | サイズ (ピクセル) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 45.4 1.3 / 42.1 / 2.0 | 26.6 1.9 / 22.0 / 2.7 |
| YOLO26n-seg | Segment | 640 | 126.2 2.6 / 113.9 / 9.7 | 46.7 2.6 / 33.3 / 10.8 |
| YOLO26n-sem | Semantic | 640 | 117.9 2.6 / 98.8 / 16.5 | 74.3 2.6 / 54.7 / 17.0 |
| YOLO26n-depth | 深度 | 640 | 182.4 2.5 / 167.6 / 12.3 | 47.8 2.5 / 32.3 / 12.9 |
| YOLO26n-cls | 分類 | 224 | 6.2 0.4 / 5.3 / 0.4 | 7.4 0.4 / 6.9 / 0.1 |
| YOLO26n-pose | ポーズ | 640 | 97.6 2.5 / 93.3 / 1.8 | 28.6 2.5 / 23.3 / 2.8 |
| YOLO26n-obb | OBB | 640 | 91.5 2.6 / 85.8 / 3.2 | 27.5 2.7 / 21.8 / 2.9 |
ベンチマーク: bus.jpg上で3回のウォームアップ後にpredict()を15回呼び出した平均値です。ultralytics_yolo、0.6.10、公式のv0.6.6アセットを使用しています。1回の逐次スイープ内で、タスク間のCPU/GPUの順序を交互に変更しました。ネイティブログにより、すべてのCPU行がLiteRT CPU/XNNPACKを使用し、すべてのGPU行がLiteRT OpenCL(LITERT_CL)に完全なグラフを委譲していることを確認しました。
サポートされるタスク#
LiteRTエクスポートは、Ultralyticsの7つすべてのタスクをサポートします。Semantic segmentationとdepth estimationはYOLO26でのみ利用できます。これらのヘッドを提供する唯一のファミリーです。
LiteRTへのエクスポート: YOLOモデルの変換#
モデルをLiteRT形式に変換することで、オンデバイス実行の効率を高め、デプロイの選択肢を広げることができます。
インストール#
必要なパッケージをインストールするには、次を実行します。
# Install the required package for YOLO
pip install ultralytics詳細な手順とベストプラクティスについては、Ultralyticsインストールガイドを確認してください。問題が発生した場合は、一般的な問題のガイドを参照してください。
LiteRTのエクスポートは現在、Linux x86_64およびmacOSでサポートされています。エクスポートされた.tfliteモデル自体は、LiteRTがサポートするすべてのプラットフォーム(モバイル、組み込み、エッジ、ブラウザー)で実行できます。
使用方法#
すべてのUltralytics YOLOモデルは、すぐにエクスポートを利用できます。LiteRT形式はExport、Predict、Validateモードをサポートしているため、モデルをエクスポートしてから読み込み、推論の実行や精度のローカル検証を行えます。
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to LiteRT format
model.export(format="litert", imgsz=640) # use imgsz=224 for classificationfrom ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Dynamic INT8: int8 weights, FP32 activations - no calibration data needed
model.export(format="litert", quantize="w8a32", imgsz=640) # use imgsz=224 for classification
# Static INT8: int8 weights + int8 activations - needs calibration data
model.export(format="litert", quantize=8, data="coco8.yaml", imgsz=640) # use 224 for classification
# Static w8a16: int8 weights + int16 activations (higher accuracy) - needs calibration data
model.export(format="litert", quantize="w8a16", data="coco8.yaml", imgsz=640) # use 224 for classificationfrom ultralytics import YOLO
# Load the exported LiteRT model
model = YOLO("yolo26n.tflite")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported LiteRT model
model = YOLO("yolo26n.tflite")
# Validate accuracy on the COCO8 dataset
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は個別にはエクスポートされません(下記の注記を参照)。非推奨のhalf/int8フラグを置き換えます。 |
batch | int | 1 | エクスポートするモデルのバッチ推論サイズ、またはpredictモードでエクスポート済みモデルが同時に処理する画像の最大数を指定します。 |
data | str | None | INT8キャリブレーションに使用するデータセットYAMLです。分類では、代わりにデータセットディレクトリまたは組み込みデータセット名を指定します。quantize=8 または 'w8a16' と併用して省略した場合、Ultralyticsはモデルタスクに対応するデフォルトのキャリブレーション用データセットを選択します。 |
device | str | None | エクスポートに使用するデバイスを指定します。LiteRTのエクスポートはCPU(device=cpu)で実行されます。 |
従来のtfliteエクスポートとは異なり、LiteRTでは個別のFP16エクスポートは必要ありません。GPUデリゲート(WebGPU、OpenCL、Metal)を使用すると、FP32の.tfliteモデルは実行時にハーフ精度で実行されます。これは、FP16推論に対するLiteRTの公式アプローチです。
エクスポートプロセスの詳細については、エクスポートに関するUltralyticsドキュメントページをご覧ください。
エクスポート済みYOLO LiteRTモデルのデプロイ#
Ultralytics YOLOモデルをLiteRTにエクスポートした後、さまざまなプラットフォームにデプロイできます。ローカルで最も簡単に動作を確認する方法は、上記のYOLO("yolo26n.tflite")メソッドです。他の環境にデプロイする場合は、以下のリソースを参照してください。
モバイルおよび組み込み#
- Android:LiteRTをAndroidアプリケーションに統合するためのクイックスタートガイドです。
- iOS:LiteRTモデルをiOSアプリケーションに統合してデプロイするためのガイドです。
- 組み込みLinuxおよびRaspberry Pi:シングルボードコンピューターでLiteRTモデルを実行します。Coral Edge TPUによるアクセラレーションも利用できます。
- マイクロコントローラー:数キロバイトのメモリしかないMCUにデプロイできます。コアランタイムはArm Cortex-M3上で約16 KBに収まります。
ブラウザーおよびNode.js(LiteRT.js)#
- LiteRT.jsの概要:WebGPU/WASMアクセラレーションを使用して、同じ
.tfliteモデルをブラウザーで直接実行できます。これによりサーバー側の計算が不要になり、データをユーザーのデバイス上に保持できます。 - エンドツーエンドの例:モバイル、エッジ、WebにわたるLiteRTの実装に役立つ実践的な例とチュートリアルです。
まとめ#
このガイドでは、Ultralytics YOLOモデルをLiteRT形式にエクスポートする方法を説明しました。モバイル/エッジ(旧TFLite)とブラウザー(旧TF.js)のデプロイを単一の.tfliteモデルに統合することで、LiteRTはYOLOモデルを高速化、小型化し、ほぼすべてのオンデバイスターゲットに移植できるようにします。
詳しくは、LiteRT公式ドキュメントを参照してください。
また、その他のUltralytics YOLO統合に関心がある場合は、役立つリソースを多数掲載した統合ガイドページをご覧ください。
FAQ#
Ultralyticsライブラリを使用して、YOLOモデルをLiteRT(
.tflite)にエクスポートします。まず、パッケージをインストールします。pip install ultralytics次に、モデルをエクスポートします。
from ultralytics import YOLO # Load a YOLO26 model model = YOLO("yolo26n.pt") # Export the model to LiteRT format model.export(format="litert", imgsz=640) # use imgsz=224 for classificationCLIユーザーの場合:
yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classification詳しくは、Ultralyticsエクスポートガイドを参照してください。
LiteRTはTensorFlow Liteの新しい名称です。
.tfliteと同じモデル形式、同じランタイム系列で、Googleによってブランドが変更されました。Ultralyticsでは、従来は2つの別々の形式が必要だった以下の両方の用途を、単一のlitertエクスポート形式でカバーできるようになりました。- 従来の
tflite形式 → モバイル、組み込み、エッジへのデプロイ。 - 従来の
tfjs形式 → ブラウザーおよびNode.jsへのデプロイ。現在は、同じ.tfliteファイルを実行するLiteRT.jsによって処理されます。
既存の
.tfliteファイルがある場合は、YOLO("model.tflite")で直接読み込むことができ、LiteRTバックエンドを介して実行されます。- 従来の
はい。モデルをLiteRT形式にエクスポートし、Raspberry Piで実行すると、推論速度を向上できます。さらなる最適化には、Coral Edge TPUの利用を検討してください。詳しい手順については、Raspberry Piデプロイガイドを参照してください。
はい。LiteRT.jsは、WebGPU/WASMアクセラレーションにより、エクスポート済みの同じ
.tfliteモデルをWebブラウザーまたはNode.jsアプリケーションで直接実行します。これにより、従来のTensorFlow.jsワークフローが置き換えられます。個別のブラウザー用エクスポートは必要なく、LiteRT.jsランタイムでLiteRTモデルをデプロイするだけです。はい、実行時にサポートしています。FP32のLiteRTモデルは、GPUデリゲート(WebGPU、OpenCL、またはMetal)で実行すると自動的にFP16で実行されます。これはLiteRTの公式アプローチです。そのため、専用のFP16エクスポートは必要ありません。さらなる圧縮には、
quantize=8を使用したINT8量子化を利用してください。YOLOモデルをLiteRTにエクスポートする際にエラーが発生した場合、一般的な解決策には以下が含まれます。
- プラットフォームを確認:LiteRTのエクスポートはLinux x86_64およびmacOSでサポートされています。環境が一致していることを確認してください。
- パッケージの互換性を確認:互換性のあるバージョンのUltralyticsを使用していることを確認してください。インストールガイドを参照してください。
- 量子化の問題:INT8量子化を使用する場合は、
dataパラメーターでデータセットパスが正しく指定されていることを確認してください。
その他のトラブルシューティングのヒントについては、一般的な問題のガイドをご覧ください。