YOLOモデルをエッジおよびWeb展開用にLiteRTへエクスポートする#
LiteRT (Lite Runtime の略称) は、オンデバイスAI向けのGoogle製高性能ランタイムです。これは TensorFlow Lite (TFLite) の次世代であり新しい名称であり、同じ .tflite モデル形式を実行します。LiteRT を使用すると、エクスポートされた単一の Ultralytics YOLO モデルが、モバイル、組み込み、エッジ、ブラウザの全体にわたってデプロイされます。従来の tflite および tfjs エクスポート形式が個別に処理していたすべての範囲を、今や1つの統合環境の下でカバーします。
LiteRT エクスポート形式は、オブジェクト検出、セグメンテーション、姿勢推定、分類などのタスクに向けてモデルを最適化し、幅広いデバイス上で高速かつオフラインで実行できるようにします。
公式の Ultralytics YOLO Flutter plugin は、Android 上で LiteRT .tflite のエクスポートをそのまま実行します。リアルタイムのカメラ推論、単一画像予測、GPUアクセラレーション、および Depth を含む全7つの YOLO26 タスクに対する自動モデルダウンロードに対応しています。Apple デバイスの場合は CoreML export を使用し、Qualcomm Snapdragon NPU の場合は Qualcomm QNN integration を参照してください。
分類モデルは imgsz=224 でエクスポートします。検出、セグメント、セマンティック、デプス、ポーズ、および OBB モデルは imgsz=640 でエクスポートします。この 224/640 の標準は、公式の LiteRT、CoreML、および QNN のモバイルアセット間で共有されます。
公式の Ultralytics YOLO NPM package は、サーバーや Python を必要とせず、LiteRT.js を介してブラウザ上で直接 LiteRT .tflite エクスポートを実行します。6 つの YOLO26 タスク(detect、segment、pose、OBB、classify、semantic)すべてにおいて、リアルタイムのウェブカメラ推論、単一画像予測、および WebGPU アクセラレーション(自動 CPU/WASM フォールバック)を提供します。WebGPU 上では、通常 ONNX Runtime Web よりも ~2 倍高速です。
npm i @ultralytics/yolo @litertjs/coreなぜLiteRTにエクスポートすべきなのか?#
LiteRT は、エッジコンピューティングとしても知られるオンデバイス推論向けに設計されたオープンソースフレームワークです。モバイル、組み込み、IoTデバイス、従来のコンピュータで学習済みモデルを実行するためのツールを提供し、LiteRT.js を通じてウェブブラウザや Node.js 内で直接実行することも可能です。
1つのモデル形式で、あらゆるターゲットに対応:
- モバイルおよび組み込み:Android、iOS、組み込みLinux、およびマイクロコントローラ(MCU)。
- エッジアクセラレータ: さらなるアクセラレーションのために Coral Edge TPU と互換性があります。
- ブラウザ & Node.js: LiteRT.js は、WebGPU/WASM アクセラレーションを使用してウェブ上で同じ
.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 の 2 個のプライムコアと最大 3.62 GHz の 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 | セマンティック | 640 | 61.2 1.8 / 51.1 / 8.3 | 34.2 1.8 / 24.0 / 8.3 |
| YOLO26n-depth | Depth | 640 | 124.4 1.9 / 115.1 / 7.4 | 23.0 1.8 / 13.5 / 7.7 |
| YOLO26n-cls | Classify(分類) | 224 | 4.4 0.4 / 4.0 / 0.0 | 3.1 0.8 / 2.1 / 0.2 |
| YOLO26n-pose | 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 plugin0.6.10および標準化されたv0.6.6アセットを使用して測定されています。CPU と GPU の順序は、1回の連続スイープ内でタスクごとに交互に入れ替わりました。ネイティブログにより、すべての CPU 行が LiteRT CPU/XNNPACK を使用し、すべての GPU 行がグラフ全体を LiteRT OpenCL (LITERT_CL) に委譲したことが確認されています。 - LiteRT エクスポートは PyTorch モデルを直接トレースし、float 入力を持つ NCHW
.tfliteを生成します。GPU デリゲートはグラフ全体をコンパイルし(ここではすべての7つのタスクが Adreno GPU で実行されます)、w8a32は較正データを必要としません。利用者は、レガシーな onnx2tf の NHWC レイアウトやIdentityの出力名を前提とするのではなく、テンソル形状とシグネチャ名を読み取る必要があります。RGB データを平面 CHW として直接パッキングするか、推論の前に転置してください。セマンティックエクスポートは NCHW ロジットを返し、ホスト側のクラス argmax を必要とします。公式の Android アセットは yolo-flutter-appv0.6.6release でホストされており、詳細なベンチマーク記録は the Flutter performance doc にあります。 - 一致する Snapdragon Hexagon NPU および LiteRT CPU/GPU の数値は、Qualcomm QNN integration に記載されています。
- Apple の CPU/アクセラレータの結果については、CoreML integration で比較してください。
以下のデバイススイープでは、同じ標準化された 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 のプライムコア 1 基、最大 3.05 GHz のパフォーマンスコア 5 基、最大 2.25 GHz の高効率コア 2 基)、PowerVR D-Series GPU、および Google TPU を備えています。Google がリンクされた仕様で公開していないため、コアクロックと GPU ドライバ名はベンチマークデバイスから読み取られました。
| モデル | タスク | サイズ (ピクセル) | 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 | セマンティック | 640 | 68.6 1.5 / 59.0 / 8.0 | 71.6 1.5 / 59.5 / 10.6 |
| YOLO26n-depth | Depth | 640 | 120.3 1.5 / 112.5 / 6.3 | 52.5 2.0 / 37.5 / 13.0 |
| YOLO26n-cls | Classify(分類) | 224 | 4.0 0.3 / 3.4 / 0.2 | 17.6 0.9 / 16.7 / 0.1 |
| YOLO26n-pose | 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 |
ベンチマーク: predict() での 3 回のウォームアップ後の 15 回の呼び出しの平均で、bus.jpg 上で、ultralytics_yolo 0.6.10 および公式の v0.6.6 アセットを使用しています。CPU と GPU の順序は、1回の連続スイープ内でタスクごとに交互に入れ替わります。ネイティブログにより、すべての 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 のパフォーマンス C1-Pro コア 3 基、最大 2.76 GHz の高効率 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 | セマンティック | 640 | 47.8 1.2 / 38.4 / 8.1 | 34.2 1.3 / 24.9 / 8.0 |
| YOLO26n-depth | Depth | 640 | 92.9 1.2 / 84.8 / 6.9 | 33.5 1.3 / 22.4 / 9.8 |
| YOLO26n-cls | Classify(分類) | 224 | 2.7 0.2 / 2.3 / 0.2 | 2.6 0.2 / 2.4 / 0.0 |
| YOLO26n-pose | 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 |
ベンチマーク: predict() での 3 回のウォームアップ後の 15 回の呼び出しの平均で、bus.jpg 上で、ultralytics_yolo 0.6.10 および公式の v0.6.6 アセットを使用しています。CPU と GPU の順序は、1回の連続スイープ内でタスクごとに交互に入れ替わります。ネイティブログにより、すべての 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 | セマンティック | 640 | 117.9 2.6 / 98.8 / 16.5 | 74.3 2.6 / 54.7 / 17.0 |
| YOLO26n-depth | Depth | 640 | 182.4 2.5 / 167.6 / 12.3 | 47.8 2.5 / 32.3 / 12.9 |
| YOLO26n-cls | Classify(分類) | 224 | 6.2 0.4 / 5.3 / 0.4 | 7.4 0.4 / 6.9 / 0.1 |
| YOLO26n-pose | 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 |
ベンチマーク: predict() での 3 回のウォームアップ後の 15 回の呼び出しの平均で、bus.jpg 上で、ultralytics_yolo 0.6.10 および公式の v0.6.6 アセットを使用しています。CPU と GPU の順序は、1回の連続スイープ内でタスクごとに交互に入れ替わります。ネイティブログにより、すべての CPU 行が LiteRT CPU/XNNPACK を使用し、すべての GPU 行がグラフ全体を LiteRT OpenCL (LITERT_CL) に委譲したことが確認されています。
サポートされているタスク#
LiteRT エクスポートは 7 つすべての Ultralytics タスクをサポートしています。セマンティックセグメンテーションおよび深度推定は、それらのヘッドを出荷する唯一のファミリーである YOLO26 でのみ利用可能です。
LiteRTへのエクスポート:YOLOモデルの変換#
モデルをLiteRT形式に変換することで、オンデバイスでの実行効率を向上させ、展開先の選択肢を広げることができます。
インストール#
必要なパッケージをインストールするには、以下を実行してください:
# Install the required package for YOLO
pip install ultralytics詳細な手順とベストプラクティスについては、Ultralytics Installation guide をご確認ください。問題が発生した場合は、Common Issues guide を参照してください。
LiteRT のエクスポートは現在、Linux x86_64およびmacOSでサポートされています。エクスポートされた .tflite モデル自体は、LiteRT がサポートするすべてのプラットフォーム(モバイル、組み込み、エッジ、ブラウザ)で実行されます。
使用方法#
すべての Ultralytics YOLO models は、エクスポートをそのままサポートしています。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 | 'coco8.yaml' | INT8 較正に使用されるデータセット YAML。quantize=8 で省略した場合、Ultralytics はモデルタスクのデフォルトの較正データセットを選択します。 |
device | str | None | エクスポート用のデバイスを指定します。LiteRT エクスポートは CPU (device=cpu) 上で実行されます。 |
レガシーな tflite エクスポートとは異なり、LiteRT は個別の FP16 エクスポートを必要としません。GPU デリゲート(WebGPU、OpenCL、Metal)を使用する場合、FP32 .tflite モデルは実行時に半精度で実行されます。これが FP16 推論に対する公式の LiteRT アプローチです。
エクスポートプロセスの詳細については、Ultralytics documentation page on exporting をご覧ください。
エクスポートしたYOLO LiteRTモデルの展開#
Ultralytics YOLO モデルを LiteRT にエクスポートした後、プラットフォーム全体にデプロイできます。ローカルで検証する最も早い方法は、上面に示されている YOLO("yolo26n.tflite") メソッドです。他の環境でのデプロイについては、次のリソースを参照してください:
モバイルおよび組み込み#
- Android: Android アプリケーションに LiteRT を統合するためのクイックスタートガイド。
- iOS: iOS アプリケーションに LiteRT モデルを統合およびデプロイするためのガイド。
- Embedded Linux & Raspberry Pi: シングルボードコンピュータ上で LiteRT モデルを実行し、必要に応じて Coral Edge TPU でアクセラレーションします。
- Microcontrollers: わずか数キロバイトのメモリしか持たないマイコンにデプロイします。コアランタイムは Arm Cortex-M3 上で約 16 KB に収まります。
ブラウザおよびNode.js (LiteRT.js)#
- LiteRT.js overview: WebGPU/WASM アクセラレーションを使用してブラウザ内で直接同じ
.tfliteモデルを実行し、サーバー側の計算をなくしてデータをユーザーのデバイス内に保持します。 - End-to-End Examples: モバイル、エッジ、およびウェブ全体で LiteRT を実装するための実践的な例とチュートリアル。
要約#
このガイドでは、Ultralytics YOLO モデルを LiteRT 形式にエクスポートする方法について説明しました。モバイル/エッジ(旧 TFLite)とブラウザ(旧 TF.js)のデプロイメントを単一の .tflite モデルに統合することで、LiteRT は YOLO モデルをより高速に、より小さく、事実上すべてのオンデバイスターゲット間で移植可能にします。
詳細については、LiteRT official documentation をご覧ください。
また、他の Ultralytics YOLO 統合に興味がある場合は、役立つリソースが多数掲載されているintegration guide pageをご確認ください。
よくある質問 (FAQ)#
YOLOモデルをLiteRT形式にエクスポートするにはどうすればよいですか?#
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 export guide をご覧ください。
LiteRT、TFLite、TF.jsの違いは何ですか?#
LiteRT は TensorFlow Lite の新しい名称であり、同じ .tflite モデル形式、同じランタイムの系譜を持ち、Google によってリブランドされました。Ultralytics において、単一の litert エクスポート形式は、以前は2つの異なる形式を必要としていた両方のユースケースをカバーするようになりました:
- 古い
tflite形式 → モバイル、組み込み、およびエッジへのデプロイ。 - 古い
tfjsフォーマットによるブラウザおよび Node.js へのデプロイメントは、現在では同じ.tfliteファイルを実行する LiteRT.js によって処理されます。
既存の .tflite ファイルがある場合は、YOLO("model.tflite") で直接ロードすると、LiteRT バックエンドを介して実行されます。
YOLO LiteRTモデルをRaspberry Piで実行できますか?#
はい。モデルを LiteRT 形式にエクスポートしてから Raspberry Pi上で実行することで、推論速度を向上させることができます。さらなる最適化のために、Coral Edge TPU の使用を検討してください。詳細な手順については、Raspberry Pi deployment guide を参照してください。
LiteRTを使ってブラウザでYOLOモデルを実行できますか?#
はい。LiteRT.js は、WebGPU/WASM アクセラレーションを使用して、ウェブブラウザまたは Node.js アプリケーション内で直接、エクスポートされた同じ .tflite モデルを実行します。これにより、以前の TensorFlow.js ワークフローが置き換わり、個別のブラウザエクスポートは必要なくなり、LiteRT ランタイムを使用して LiteRT モデルをデプロイするだけになります。
LiteRTはFP16(半精度)推論をサポートしていますか?#
はい。実行時に行われます。FP32 LiteRT モデルは、GPU デリゲート(WebGPU、OpenCL、または Metal)上で実行されると、自動的に FP16 で実行されます。これは公式の LiteRT アプローチです。したがって、専用の FP16 エクスポートは必要ありません。さらなる圧縮を行うには、quantize=8 を使用した INT8 量子化を使用してください。
LiteRTエクスポート中に発生する一般的な問題をトラブルシューティングするにはどうすればよいですか?#
YOLOモデルをLiteRTにエクスポートする際にエラーが発生した場合、一般的な解決策は以下の通りです:
- プラットフォームの確認:LiteRTのエクスポートはLinux x86_64およびmacOSでサポートされています。環境が適合しているか確認してください。
- パッケージの互換性の確認: 互換性のあるバージョンの Ultralytics を使用していることを確認してください。installation guide を参照してください。
- 量子化の問題: INT8 量子化を使用する場合は、
dataパラメータでデータセットのパスが正しく指定されていることを確認してください。
その他のトラブルシューティングのヒントについては、Common Issues guide をご覧ください。