Ultralytics YOLO27:

YOLOモデルをLiteRTにエクスポートしてエッジやWebにデプロイ#

LiteRT edge deployment framework

LiteRT(軽量ランタイムの略)は、Googleが提供する高性能なオンデバイスAIランタイムです。これはTensorFlow Lite(TFLite)の次世代版であり、新しい名称です。また、同じ.tfliteモデル形式を使用します。LiteRTを使えば、エクスポートした1つのUltralytics YOLOモデルを、モバイル、組み込み、エッジ、ブラウザーにデプロイできます。従来は別々に対応していたtfliteとtfjsのエクスポート形式を、1つの形式に統合します。



視聴: Ultralytics YOLO26をGoogle LiteRTにエクスポートする方法 | AndroidとiOSでビジョンAIをデプロイ | モバイルAI 📱🚀

LiteRTのエクスポート形式は、物体検出、セグメンテーション、姿勢推定、分類などのタスクに合わせてモデルを最適化し、幅広いデバイスで高速かつオフラインで実行できるようにします。

公式Flutterプラグインを使って、今すぐLiteRTでAndroid上のYOLOを実行しましょう

公式のUltralytics YOLO Flutterプラグインは、LiteRTの.tfliteエクスポートをそのままAndroidで実行できます。リアルタイムのカメラ推論、単一画像の予測、GPUアクセラレーション、Depthを含むYOLO26の7つすべてのタスクに対応したモデルの自動ダウンロードが可能です。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でWeb上のYOLOを実行しましょう

公式のUltralytics YOLO NPMパッケージは、LiteRT.jsを介してLiteRTの.tfliteエクスポートをブラウザーで直接実行します。サーバーもPythonも必要ありません。リアルタイムのWebカメラ推論、単一画像の予測、WebGPUアクセラレーション(CPU/WASMへの自動フォールバック)に対応し、YOLO26の6つのタスク(detect、segment、semantic、classify、pose、OBB)を実行できます。WebGPUでは、ONNX Runtime Webより約~2倍高速になることがよくあります。

npm i @ultralytics/yolo @litertjs/core

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

LiteRTは、オンデバイス推論、つまりエッジコンピューティング向けに設計されたオープンソースのフレームワークです。開発者はこのフレームワークを使って、トレーニング済みモデルをモバイル、組み込み、IoTデバイスや従来型のコンピューターで実行できます。また、LiteRT.jsを使えば、WebブラウザーやNode.jsでも直接実行できます。

1つのモデル形式で、あらゆるターゲットに対応します。

  • モバイルと組み込み: Android、iOS、組み込みLinux、マイクロコントローラー(MCU)に対応します。
  • エッジアクセラレータ: Coral Edge TPUと互換性があり、さらなる高速化が可能です。
  • ブラウザーとNode.js: LiteRT.jsは、同じ.tfliteモデルをWeb上で実行し、WebGPU/WASMアクセラレーションに対応します。これにより、別途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)
YOLO26nDetect64052.2
1.8 / 48.1 / 2.4
15.8
2.3 / 8.9 / 4.6
YOLO26n-segSegment64073.4
1.8 / 65.6 / 6.0
33.2
1.8 / 23.8 / 7.6
YOLO26n-semセマンティック64061.2
1.8 / 51.1 / 8.3
34.2
1.8 / 24.0 / 8.3
YOLO26n-depth深度640124.4
1.9 / 115.1 / 7.4
23.0
1.8 / 13.5 / 7.7
YOLO26n-cls分類2244.4
0.4 / 4.0 / 0.0
3.1
0.8 / 2.1 / 0.2
YOLO26n-pose姿勢推定64057.4
1.8 / 53.8 / 1.8
16.6
2.7 / 10.1 / 3.9
YOLO26n-obbOBB64050.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モデルを直接トレースし、浮動小数点入力のNCHW .tfliteを生成します。GPUデリゲートはグラフ全体をコンパイルし(ここでは7つすべてのタスクがAdreno GPU上で実行されます)、w8a32ではキャリブレーションデータは不要です。従来のonnx2tf NHWCレイアウトやIdentityの出力名を前提とせず、テンソル形状とシグネチャ名を確認してください。RGBデータは平面CHW形式で直接パックするか、推論前に転置してください。セマンティックエクスポートはNCHWロジットを返すため、ホスト側でクラスの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を搭載しています。Googleはリンク先の仕様でコアクロックとGPUドライバー名を公開していないため、ベンチマーク対象デバイスから読み取りました。

モデルタスクサイズ
(ピクセル)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
YOLO26nDetect64053.3
1.5 / 50.2 / 1.6
45.5
3.8 / 37.7 / 4.0
YOLO26n-segSegment64087.7
1.8 / 78.5 / 7.5
50.9
3.0 / 36.9 / 10.9
YOLO26n-semセマンティック64068.6
1.5 / 59.0 / 8.0
71.6
1.5 / 59.5 / 10.6
YOLO26n-depth深度640120.3
1.5 / 112.5 / 6.3
52.5
2.0 / 37.5 / 13.0
YOLO26n-cls分類2244.0
0.3 / 3.4 / 0.2
17.6
0.9 / 16.7 / 0.1
YOLO26n-pose姿勢推定64059.7
1.5 / 57.0 / 1.2
46.6
3.8 / 39.2 / 3.5
YOLO26n-obbOBB64052.0
1.5 / 48.9 / 1.7
45.5
4.0 / 38.5 / 2.9

ベンチマーク: bus.jpg上でpredict()を3回ウォームアップした後、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のC1-Proパフォーマンスコア3基、最大2.76 GHzのC1-Pro効率コア6基)、Xclipse 960 GPU、Samsung NPUを搭載しています。

モデルタスクサイズ
(ピクセル)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
YOLO26nDetect64036.7
1.3 / 33.8 / 1.7
16.4
1.4 / 12.3 / 2.6
YOLO26n-segSegment64054.6
1.2 / 48.0 / 5.3
32.8
1.3 / 24.5 / 7.0
YOLO26n-semセマンティック64047.8
1.2 / 38.4 / 8.1
34.2
1.3 / 24.9 / 8.0
YOLO26n-depth深度64092.9
1.2 / 84.8 / 6.9
33.5
1.3 / 22.4 / 9.8
YOLO26n-cls分類2242.7
0.2 / 2.3 / 0.2
2.6
0.2 / 2.4 / 0.0
YOLO26n-pose姿勢推定64042.8
1.3 / 40.5 / 1.0
18.4
1.4 / 14.1 / 2.9
YOLO26n-obbOBB64037.5
1.3 / 35.1 / 1.2
18.8
2.5 / 14.6 / 1.8

ベンチマーク: bus.jpg上でpredict()を3回ウォームアップした後、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)
YOLO26nDetect64045.4
1.3 / 42.1 / 2.0
26.6
1.9 / 22.0 / 2.7
YOLO26n-segSegment640126.2
2.6 / 113.9 / 9.7
46.7
2.6 / 33.3 / 10.8
YOLO26n-semセマンティック640117.9
2.6 / 98.8 / 16.5
74.3
2.6 / 54.7 / 17.0
YOLO26n-depth深度640182.4
2.5 / 167.6 / 12.3
47.8
2.5 / 32.3 / 12.9
YOLO26n-cls分類2246.2
0.4 / 5.3 / 0.4
7.4
0.4 / 6.9 / 0.1
YOLO26n-pose姿勢推定64097.6
2.5 / 93.3 / 1.8
28.6
2.5 / 23.3 / 2.8
YOLO26n-obbOBB64091.5
2.6 / 85.8 / 3.2
27.5
2.7 / 21.8 / 2.9

ベンチマーク: bus.jpg上でpredict()を3回ウォームアップした後、15回呼び出した平均値です。ultralytics_yolo 0.6.10と公式のv0.6.6アセットを使用しています。1回の連続実行では、タスク間でCPU/GPUの順序を交互にしています。ネイティブログにより、すべてのCPU行でLiteRT CPU/XNNPACKが使用され、すべてのGPU行でグラフ全体がLiteRT OpenCL(LITERT_CL)に委譲されたことを確認しました。

対応タスク#

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

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

LiteRTへのエクスポート: YOLOモデルの変換#

モデルをLiteRT形式に変換することで、オンデバイス実行の効率を向上させ、デプロイの選択肢を広げることができます。

インストール#

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

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

詳しい手順とベストプラクティスについては、Ultralyticsインストールガイドをご覧ください。問題が発生した場合は、よくある問題のガイドを参照してください。

プラットフォームのサポート

LiteRTのエクスポートは現在、Linux x86_64とmacOSでサポートされています。エクスポートされた.tfliteモデル自体は、LiteRTがサポートするすべてのプラットフォーム(モバイル、組み込み、エッジ、ブラウザー)で動作します。

使用方法#

すべてのUltralytics YOLOモデルは、そのままエクスポートをサポートしています。LiteRT形式はエクスポート、予測、検証モードをサポートしているため、モデルをエクスポートした後に読み込んで、推論を実行したり、ローカルで精度を検証したりできます。

エクスポート
from ultralytics import YOLO

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

# モデルをLiteRT形式にエクスポートします
model.export(format="litert", imgsz=640)  # 'yolo26n.tflite'を生成します。分類ではimgsz=224を使用します
量子化エクスポート
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# 動的INT8: int8ウェイト、FP32アクティベーション — キャリブレーションデータ不要
model.export(format="litert", quantize="w8a32", imgsz=640)  # 'yolo26n_w8a32.tflite'を生成します

# 静的INT8: int8ウェイト + int8アクティベーション — キャリブレーションデータが必要です
model.export(format="litert", quantize=8, data="coco8.yaml", imgsz=640)  # 'yolo26n_int8.tflite'を生成します

# 静的w8a16: int8ウェイト + int16アクティベーション(精度向上)— キャリブレーションデータが必要です
model.export(format="litert", quantize="w8a16", data="coco8.yaml", imgsz=640)  # 'yolo26n_w8a16.tflite'を生成します
推論
from ultralytics import YOLO

# エクスポートしたLiteRTモデルを読み込みます
model = YOLO("yolo26n.tflite")

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

# エクスポートしたLiteRTモデルを読み込みます
model = YOLO("yolo26n.tflite")

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

エクスポート引数#

引数種類デフォルト説明
formatstr'litert'エクスポートしたモデルのターゲットフォーマットです。さまざまなデプロイ環境との互換性を定義します。
imgszintまたはtuple640モデル入力の画像サイズです。正方形画像の場合は整数、特定のサイズの場合はタプル(height, width)を指定できます。
quantizeintまたはstrNone量子化の精度: 8(静的INT8、int8ウェイト + int8アクティベーション。キャリブレーションdata/fractionが必要)、'w8a16'(静的、int8ウェイト + int16アクティベーション。キャリブレーションdata/fractionが必要)、'w8a32'(動的INT8、int8ウェイト + FP32アクティベーション。キャリブレーション不要)、または32/未設定(FP32)。FP16は個別にはエクスポートされません(下記の注記を参照)。非推奨のhalf/int8フラグに代わるものです。
batchint1エクスポートモデルのバッチ推論サイズ、またはpredictモードでエクスポートモデルが同時に処理する画像の最大数を指定します。
datastrNoneINT8キャリブレーションに使用するデータセットYAMLです。分類の場合は、代わりにデータセットディレクトリまたは組み込みデータセット名を指定します。quantize=8または'w8a16'を指定して省略した場合、Ultralyticsはモデルのタスクに応じたデフォルトのキャリブレーションデータセットを選択します。
fractionfloat、int、またはlist1.0キャリブレーション用サブセットを、比率、画像数、または[train, val, test]の比率/件数として指定します。2項目のリストではtestがすべて含まれ、0では除外されます。
devicestrNoneエクスポートに使用するデバイスを指定します。LiteRTエクスポートはCPU(device=cpu)で実行されます。
FP16精度

従来の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の概要: 同じ.tfliteモデルを、WebGPU/WASMアクセラレーションを使用してブラウザーで直接実行できます。サーバー側の計算が不要になり、データをユーザーのデバイス内に保持できます。
  • エンドツーエンドの例: モバイル、エッジ、ウェブでLiteRTを実装するための実用的な例とチュートリアルです。

概要#

このガイドでは、Ultralytics YOLOモデルをLiteRT形式にエクスポートする方法を説明しました。モバイル/エッジ(旧TFLite)とブラウザー(旧TF.js)のデプロイを単一の.tfliteモデルに統合することで、LiteRTを使えばYOLOモデルを高速化、小型化でき、ほぼすべてのオンデバイス環境に移植できます。

詳細については、LiteRT公式ドキュメントをご覧ください。

また、ほかのUltralytics YOLO統合に関心がある場合は、役立つリソースを多数掲載した統合ガイドページをご覧ください。

よくある質問#

  • Ultralyticsライブラリを使用して、YOLOモデルをLiteRT(.tflite)にエクスポートします。まず、パッケージをインストールします。

    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エクスポートガイドをご覧ください。

  • 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を使用すると、エクスポート済みの同じ.tfliteモデルを、WebGPU/WASMアクセラレーションを利用してウェブブラウザーまたは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パラメーターでデータセットのパスが正しく指定されていることを確認してください。

    その他のトラブルシューティングのヒントについては、一般的な問題のガイドをご覧ください。

コメント