将 YOLO 模型导出为 LiteRT,用于边缘设备和 Web 部署#
LiteRT(Lite Runtime 的简称)是谷歌用于端侧 AI 的高性能运行时。它是 TensorFlow Lite (TFLite) 的下一代版本和新名称,并且运行相同的 .tflite 模型格式。借助 LiteRT,单个导出的 Ultralytics YOLO 模型即可跨移动端、嵌入式、边缘端和浏览器部署——涵盖了以往较旧的 tflite 和 tfjs 导出格式分别处理的所有场景,现在全部统一在一个伞形架构之下。
LiteRT 导出格式可针对目标检测、图像分割、姿态估计和图像分类等任务优化你的模型,使其能够在各种设备上实现快速的离线运行。
官方的 Ultralytics YOLO Flutter 插件开箱即用地在 Android 上运行 LiteRT .tflite 导出版本——支持所有七个 YOLO26 任务(包括深度任务)的实时相机推理、单图预测、GPU 加速和自动模型下载。对于 Apple 设备,请使用 CoreML 导出;对于高通骁龙 NPU,请参阅高通 QNN 集成。
在 imgsz=224 处导出分类模型。在 imgsz=640 处导出检测、分割、语义、深度、姿态和 OBB 模型。官方的 LiteRT、CoreML 和 QNN 移动端资产共享这一 224/640 标准。
官方 Ultralytics YOLO NPM package 可通过 LiteRT.js 直接在浏览器中运行 LiteRT .tflite 导出模型,无需服务器或 Python——支持跨所有六个 YOLO26 任务(检测、分割、姿态、OBB、分类、语义)的实时网络摄像头推理、单图预测和 WebGPU 加速(自动 CPU/WASM 回退)。在 WebGPU 上,它通常比 ONNX Runtime Web 快约 ~2 倍。
npm i @ultralytics/yolo @litertjs/core为什么你应该导出到 LiteRT?#
LiteRT 是一个专为端侧推理(也称为边缘计算)设计的开源框架。它为开发者提供了各种工具,使训练好的模型能够在移动设备、嵌入式设备和物联网设备、传统计算机上执行,并通过 LiteRT.js 直接在网页浏览器和 Node.js 中运行。
一种模型格式,适用于所有目标:
- 移动与嵌入式: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。
性能测试#
硬件:小米 17,配备 12 GB LPDDR5X 内存以及 Android 16 / API 36。其 3 纳米骁龙 8 至尊版 Gen 5 (SM8850) 拥有 8 核高通 Oryon CPU(2 个最高 4.6 GHz 的超大核和 6 个最高 3.62 GHz 的性能核)、Adreno GPU 以及 Hexagon NPU。
| 模型 | 任务 | 尺寸 (像素) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | 检测 | 640 | 52.2 1.8 / 48.1 / 2.4 | 15.8 2.3 / 8.9 / 4.6 |
| YOLO26n-seg | 分割 | 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 | 分类 | 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资产进行测量。在一次顺序扫描中,CPU/GPU 的顺序在任务之间交替。原生日志确认,每个 CPU 行都使用 LiteRT CPU/XNNPACK,每个 GPU 行都将完整图委派给 LiteRT OpenCL(LITERT_CL)。 - LiteRT 导出直接追踪 PyTorch 模型,生成带有浮点输入的 NCHW
.tflite——GPU 委托会编译整个图(此处所有七个任务都在 Adreno GPU 上运行),并且w8a32无需校准数据。使用者应当读取张量形状和签名名称,而不是假设采用旧版的 onnx2tf NHWC 布局或Identity输出名称;请直接将 RGB 数据打包为平面 CHW 格式,或在推理前进行转置。语义导出返回 NCHW 对数几率(logits),并需要宿主端类 argmax。官方 Android 资产托管在 yolo-flutter-appv0.6.6版本上,详细的基准测试记录在Flutter 性能文档中。 - 相匹配的骁龙 Hexagon NPU 以及 LiteRT CPU/GPU 数据位于高通 QNN 集成中。
- 在CoreML 集成中对比 Apple 的 CPU/加速器结果。
以下设备扫描使用相同的标准化 v0.6.6 资产。
Google Pixel 10#
硬件:谷歌 Pixel 10,配备 12 GB 内存以及 Android 16 / API 36。其 3 纳米谷歌 Tensor G5 拥有 8 核 CPU(1 个最高 3.78 GHz 的超大核、5 个最高 3.05 GHz 的性能核以及 2 个最高 2.25 GHz 的效能核)、PowerVR D 系列 GPU 以及谷歌 TPU。由于谷歌未在链接的规格中公布核心时钟频率和 GPU 驱动程序名称,因此这些是从基准测试设备中读取的。
| 模型 | 任务 | 尺寸 (像素) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | 检测 | 640 | 53.3 1.5 / 50.2 / 1.6 | 45.5 3.8 / 37.7 / 4.0 |
| YOLO26n-seg | 分割 | 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 | 分类 | 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 次预热后,15 次 predict() 调用的平均值,使用了 ultralytics_yolo 0.6.10 和官方的 v0.6.6 资产。CPU/GPU 顺序在一次连续扫描中交替进行。原生日志确认,每个 CPU 行都使用 LiteRT CPU/XNNPACK,每个 GPU 行都将完整计算图委托给 LiteRT OpenCL (LITERT_CL)。
Samsung Galaxy S26#
硬件:三星 Galaxy S26 (SM-S942B),配备 12 GB 内存以及 Android 16 / API 36。其 2 纳米猎户座 2600 (Exynos 2600) 拥有 10 核 Armv9.3 CPU(1 个最高 3.8 GHz 的 C1-Ultra 核心、3 个最高 3.26 GHz 的 C1-Pro 性能核心以及 6 个最高 2.76 GHz 的 C1-Pro 效能核心)、Xclipse 960 GPU 以及三星 NPU。
| 模型 | 任务 | 尺寸 (像素) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | 检测 | 640 | 36.7 1.3 / 33.8 / 1.7 | 16.4 1.4 / 12.3 / 2.6 |
| YOLO26n-seg | 分割 | 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 | 分类 | 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 次预热后,15 次 predict() 调用的平均值,使用了 ultralytics_yolo 0.6.10 和官方的 v0.6.6 资产。CPU/GPU 顺序在一次连续扫描中交替进行。原生日志确认,每个 CPU 行都使用 LiteRT CPU/XNNPACK,每个 GPU 行都将完整计算图委托给 LiteRT OpenCL (LITERT_CL)。
Xiaomi 17T Pro#
硬件:小米 17T Pro (2602EPTC0G),配备 12 GB LPDDR5X 内存以及 Android 16 / API 36。其 3 纳米联发科天玑 9500 (MT6993) 拥有 8 核 Armv9.3 CPU(1 个最高 4.21 GHz 的 C1-Ultra 核心、3 个最高 3.5 GHz 的 C1-Premium 核心以及 4 个最高 2.7 GHz 的 C1-Pro 核心)、Mali-G1 Ultra MC12 GPU 以及联发科 NPU 990。
| 模型 | 任务 | 尺寸 (像素) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | 检测 | 640 | 45.4 1.3 / 42.1 / 2.0 | 26.6 1.9 / 22.0 / 2.7 |
| YOLO26n-seg | 分割 | 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 | 分类 | 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 次预热后,15 次 predict() 调用的平均值,使用了 ultralytics_yolo 0.6.10 和官方的 v0.6.6 资产。CPU/GPU 顺序在一次连续扫描中交替进行。原生日志确认,每个 CPU 行都使用 LiteRT CPU/XNNPACK,每个 GPU 行都将完整计算图委托给 LiteRT OpenCL (LITERT_CL)。
支持的任务#
LiteRT 导出支持所有七个 Ultralytics 任务。语义分割和深度估计仅在 YOLO26 中可用,这是唯一提供这些输出头(head)的模型系列。
导出到 LiteRT:转换你的 YOLO 模型#
通过将模型转换为 LiteRT 格式,你可以提高端侧执行效率并拓宽部署选项。
安装#
要安装所需的软件包,请运行:
# Install the required package for YOLO
pip install ultralytics有关详细说明和最佳实践,请查阅我们的Ultralytics 安装指南。如果遇到任何困难,请参考我们的常见问题指南。
目前在 Linux x86_64 和 macOS 上支持 LiteRT 导出。导出的 .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 | 'coco8.yaml' | 用于 INT8 校准的数据集 YAML。如果在 quantize=8 中省略此项,Ultralytics 将为模型任务选择默认的校准数据集。 |
device | str | None | 指定用于导出的设备。LiteRT 导出在 CPU (device=cpu) 上运行。 |
与旧版的 tflite 导出不同,LiteRT 不需要单独的 FP16 导出。当使用 GPU 委托(WebGPU、OpenCL、Metal)时,FP32 .tflite 模型在运行时以半精度运行——这是官方的 LiteRT FP16 推理方法。
有关导出过程的更多详细信息,请访问 Ultralytics 关于导出的文档页面。
部署导出的 YOLO LiteRT 模型#
将你的 Ultralytics YOLO 模型导出到 LiteRT 后,你可以将其跨平台部署。在本地进行验证的最快方法是上面显示的 YOLO("yolo26n.tflite") 方法。要在其他环境中进行部署,请参阅以下资源:
移动与嵌入式#
- Android:将 LiteRT 集成到 Android 应用程序中的快速入门指南。
- iOS:在 iOS 应用程序中集成和部署 LiteRT 模型的指南。
- 嵌入式 Linux 与 Raspberry Pi:在单板计算机上运行 LiteRT 模型,可选择使用 Coral Edge TPU 进行加速。
- 微控制器:部署在仅有几千字节内存的 MCU 上——核心运行时在 Arm Cortex-M3 上大约占用 16 KB。
浏览器与 Node.js (LiteRT.js)#
- LiteRT.js 概览:借助 WebGPU/WASM 加速直接在浏览器中运行相同的
.tflite模型,免去了服务器端计算,并将数据保留在用户的设备上。 - 端到端示例:在移动端、边缘端和网页端实现 LiteRT 的实用示例和教程。
总结#
在本指南中,我们介绍了如何将 Ultralytics YOLO 模型导出为 LiteRT 格式。通过将移动端/边缘端(原名 TFLite)和浏览器(原名 TF.js)部署合并为一个 .tflite 模型,LiteRT 让你的 YOLO 模型变得更快、更小,并且能够在几乎所有端侧目标上实现跨平台移植。
有关更多详情,请访问 LiteRT 官方文档。
此外,如果你对其他 Ultralytics YOLO 集成感兴趣,请查看我们的集成指南页面以获取大量有用的资源。
常见问题解答#
如何将 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 classification对于 CLI 用户:
yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classification有关更多详情,请访问 Ultralytics 导出指南。
LiteRT、TFLite 和 TF.js 之间有什么区别?#
LiteRT 是 TensorFlow Lite 的新名称——具有相同的 .tflite 模型格式、相同的运行时血统,由谷歌重新命名。在 Ultralytics 中,单个 litert 导出格式现在涵盖了以前需要两种单独格式的两个用例:
- 旧的
tflite格式 → 移动端、嵌入式和边缘端部署。 - 旧的
tfjs格式 → 浏览器和 Node.js 部署,现在由 LiteRT.js 处理,运行相同的.tflite文件。
如果你拥有现有的 .tflite 文件,你可以使用 YOLO("model.tflite") 直接加载它,它将通过 LiteRT 后端运行。
我可以在 Raspberry Pi 上运行 YOLO LiteRT 模型吗?#
可以。将你的模型导出为 LiteRT 格式,然后在 Raspberry Pi 上运行它以提高推理速度。如需进一步优化,请考虑使用 Coral Edge TPU。有关详细步骤,请参考我们的Raspberry Pi 部署指南。
我可以在浏览器中使用 LiteRT 运行 YOLO 模型吗?#
可以。LiteRT.js 借助 WebGPU/WASM 加速,直接在网页浏览器或 Node.js 应用程序中运行相同的导出的 .tflite 模型。这取代了以往的 TensorFlow.js 工作流——无需单独的浏览器导出,只需使用 LiteRT.js 运行时部署你的 LiteRT 模型即可。
LiteRT 支持 FP16(半精度)推理吗?#
可以——在运行时。当在 GPU 委托(WebGPU、OpenCL 或 Metal)上执行时,FP32 LiteRT 模型会自动以 FP16 运行,这是官方的 LiteRT 方法。因此,你不需要专用的 FP16 导出;如需进一步压缩,请使用带 quantize=8 的 INT8 量化。
如何排查 LiteRT 导出过程中的常见问题?#
如果你在将 YOLO 模型导出为 LiteRT 时遇到错误,常见解决方案包括:
- 检查平台:LiteRT 导出在 Linux x86_64 和 macOS 上支持。请验证你的环境是否匹配。
- 检查软件包兼容性:确保你使用的是兼容版本的 Ultralytics。请参阅我们的安装指南。
- 量化问题:当使用 INT8 量化时,请确保在
data参数中正确指定了你的数据集路径。
有关其他故障排除提示,请访问我们的常见问题指南。