Ultralytics YOLO27:

用于部署的 TFLite 模型导出(已弃用)#

已弃用 — 已由 LiteRT 替代

Ultralytics 8.4.83 起,独立的 tflite 导出格式已被移除,并由统一的 Google LiteRT 格式替代。LiteRT(Lite Runtime)是 TensorFlow Lite 的下一代版本和新名称,并导出相同的 .tflite 模型——现在通过一种格式覆盖移动端、嵌入式设备、边缘设备和浏览器部署。

format="tflite" 仍可使用,但会发出弃用警告,并改为导出 LiteRT 模型。今后请使用 format="litert";如需查看当前的导出说明和选项,请参阅 LiteRT 导出指南

TensorFlow Lite edge deployment framework

在边缘设备或嵌入式设备上部署计算机视觉模型,需要使用能够确保流畅运行的格式。

之前的 TensorFlow Lite 或 TFLite 导出格式针对边缘应用中的目标检测图像分类等任务,对 Ultralytics YOLO26 模型进行了优化。本指南保留了旧版 TFLite 部署背景;对于新的导出,请使用 LiteRT

为什么使用 TFLite 进行导出?#

TensorFlow Lite 由 Google 于 2017 年 5 月作为 TensorFlow 框架的一部分推出,简称 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 上,使用 Ultralytics Flutter 插件 0.6.8 和 LiteRT 2.1.5 记录的,测试设备为一台配备 12 GB LPDDR5X 内存的 Xiaomi 17。其 3 nm Snapdragon 8 Elite Gen 5(SM8850)搭载 8 核 Qualcomm Oryon CPU(2 个最高 4.6 GHz 的 Prime 核心和 6 个最高 3.62 GHz 的 Performance 核心)、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)
YOLO26nDetect64014.0
1.8 / 8.1 / 4.2
13.5
1.9 / 8.1 / 3.5
YOLO26n-segSegment64030.1
1.9 / 20.3 / 8.0
28.6
1.8 / 20.1 / 6.7
YOLO26n-sem语义分割64026.4
1.9 / 16.4 / 8.1
32.9
1.8 / 23.0 / 8.2
YOLO26n-cls分类2243.5
0.9 / 2.2 / 0.4
3.2
1.0 / 2.2 / 0.1
YOLO26n-pose姿态64017.4
2.4 / 9.9 / 5.1
14.0
1.9 / 9.3 / 2.8
YOLO26n-obbOBB64013.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=811.0
LiteRT FP328.8
LiteRT w8a16(quantize="w8a16"CPU 回退

在此次运行中,w8a16 回退到 CPU,总耗时约 660 ms,而 GPU 格式约为 17 ms。这些结果促使我们发布 w8a32,但委托兼容性和性能取决于设备及运行时版本。请在目标设备上进行基准测试,并在其运行时日志中确认加速器的使用位置。

TFLite 中的部署选项#

在查看 LiteRT 替代导出示例之前,我们先了解 TFLite 模型通常是如何使用的。

TFLite 为机器学习模型提供了多种设备端部署选项,包括:

  • 使用 Android 和 iOS 部署:借助 TFLite,Android 和 iOS 应用都可以分析基于边缘设备的摄像头数据流和传感器数据,以检测和识别对象。TFLite 还提供使用 SwiftObjective-C 编写的原生 iOS 库。下面的架构图展示了使用 TensorFlow Lite 将训练好的模型部署到 Android 和 iOS 平台的流程。

TensorFlow Lite deployment architecture for mobile

  • 使用嵌入式 Linux 实现:如果使用 Ultralytics 指南Raspberry Pi 上运行推理无法满足你的使用场景对速度的要求,可以使用导出的 TFLite 模型来加快推理速度。此外,还可以使用 Coral Edge TPU 设备进一步提升性能。

  • 使用微控制器部署:TFLite 模型还可以部署到微控制器和其他仅有几 KB 内存的设备上。核心运行时在 Arm Cortex M3 上仅需 16 KB 即可运行,并且能够运行许多基础模型。它不需要操作系统支持、任何标准 C 或 C++ 库,也不需要动态内存分配。

使用 LiteRT 替代 TFLite 导出#

对于新的导出,请将模型转换为 LiteRT。生成的模型仍使用 .tflite 文件扩展名。

安装#

要安装所需的软件包,请运行:

安装
# Install the required package for YOLO26
pip install ultralytics

有关安装流程的详细说明和最佳实践,请参阅我们的 Ultralytics 安装指南。在为 YOLO26 安装所需软件包时,如果遇到任何困难,请参阅我们的常见问题指南以获取解决方案和建议。

使用方法#

所有 Ultralytics YOLO26 模型 都支持开箱即用的导出,因此可以轻松将其集成到你首选的部署工作流中。你可以查看支持的导出格式和配置选项完整列表,为你的应用选择最佳配置。

替代的 LiteRT 格式支持 导出预测验证 模式。导出模型,然后加载导出的 .tflite 模型以运行推理或验证其准确率。

导出
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
Predict
from ultralytics import YOLO

# Load the exported TFLite model
model = YOLO("yolo26n.tflite")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
验证
from ultralytics import YOLO

# Load the exported TFLite model
model = YOLO("yolo26n.tflite")

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

导出参数#

参数类型默认值描述
formatstr'litert'导出模型的目标格式,用于定义其与各种部署环境的兼容性。
imgszinttuple640模型输入所需的图像尺寸。可以使用表示正方形图像的整数,也可以使用元组 (height, width) 指定具体尺寸。
quantizeintstrNone量化精度:8(静态 INT8,int8 权重 + int8 激活值;需要校准 data/fraction)、'w8a16'(静态,int8 权重 + int16 激活值;需要校准 data/fraction)、'w8a32'(动态 INT8,int8 权重 + FP32 激活值;无需校准)或 32/未设置(FP32)。FP16 不会单独导出——FP32 模型在 GPU 委托上会自动以 FP16 运行。替代已弃用的 half/int8 标志。
batchint1指定导出模型的批量推理大小,或指定导出模型在 predict 模式下并发处理的最大图像数量。
datastrNone数据集 YAML 的路径,是量化所必需的;分类任务则需要数据集目录或内置数据集名称。如果在使用 quantize=8'w8a16' 时省略该参数,Ultralytics 会为相应模型任务选择默认校准数据集。
fractionfloatintlist1.0校准子集可以按比例、图像数量或 [train, val, test] 的比例/数量指定。包含两个项目的列表会保留 test 的完整内容,同时跳过 0
devicestrNone指定导出所使用的设备:CPU(device=cpu)、Apple silicon 上的 MPS(device=mps)。

如需详细了解导出流程,请访问 Ultralytics 导出文档页面

部署导出的 YOLO26 TFLite 模型#

将 Ultralytics YOLO26 模型导出为 LiteRT 格式后,你可以部署生成的 .tflite 模型。运行 TFLite 模型的首要且推荐的第一步,是使用 YOLO("model.tflite") 方法,具体如前面的用法代码片段所示。不过,如需了解在各种其他环境中部署 TFLite 模型的详细说明,请参阅以下资源:

  • Android:将 TensorFlow Lite 集成到 Android 应用中的快速入门指南,提供设置和运行机器学习模型的简明步骤。

  • iOS:面向开发者的详细指南,介绍如何在 iOS 应用中集成和部署 TensorFlow Lite 模型,并提供分步说明和相关资源。

  • 端到端示例:本页面概述了各种 TensorFlow Lite 示例,展示了实用应用和教程,帮助开发者在移动设备和边缘设备上将 TensorFlow Lite 应用于机器学习项目。

总结#

本指南保留了旧版 TFLite 部署工作流。对于新的导出,请使用 LiteRT 为边缘计算环境创建 .tflite 模型。

如需进一步了解使用详情,请访问 TFLite 官方文档

此外,如果你想了解其他 Ultralytics YOLO26 集成,请查看我们的集成指南页面。你可以在那里找到大量有用的信息和见解。

常见问题#

  • 对于新的导出,请使用 LiteRT 格式。首先,使用以下命令安装所需的软件包:

    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 导出指南

  • TensorFlow Lite(TFLite)是一个专为设备端推理设计的开源深度学习框架,非常适合在移动设备、嵌入式设备和 IoT 设备上部署 YOLO26 模型。主要优势包括:

    • 设备端优化:通过在本地处理数据,降低延迟并增强隐私。
    • 平台兼容性:支持 Android、iOS、嵌入式 Linux 和 MCU。
    • 性能:利用硬件加速优化模型速度和效率。

    如需了解更多信息,请查看 TFLite 指南

  • 可以,你可以在 Raspberry Pi 上运行 YOLO26 TFLite 模型,以提升推理速度。首先,按照上文说明将模型导出为 LiteRT 格式。然后,使用 TensorFlow Lite Interpreter 等工具在 Raspberry Pi 上执行模型。

    如需进一步优化,可以考虑使用 Coral Edge TPU。详细步骤请参阅我们的 Raspberry Pi 部署指南Edge TPU 集成指南

  • 可以,TFLite 支持部署到资源有限的微控制器上。TFLite 核心运行时在 Arm Cortex M3 上仅需 16 KB 内存,并且可以运行基础 YOLO26 模型。因此,它适合部署到计算能力和内存都非常有限的设备上。

    如需开始使用,请访问 TFLite Micro 微控制器指南

  • TensorFlow Lite 提供广泛的平台兼容性,因此你可以将 YOLO26 模型部署到多种设备上,包括:

    • Android 和 iOS:通过 TFLite Android 和 iOS 库提供原生支持。
    • 嵌入式 Linux:非常适合 Raspberry Pi 等单板计算机。
    • 微控制器:适用于资源受限的 MCU。

    如需了解更多部署选项,请参阅我们的详细部署指南

  • 如果在将 YOLO26 模型导出到 LiteRT 时遇到错误,常见解决方案包括:

    • 检查软件包兼容性:确保使用兼容版本的 Ultralytics、litert-torchai-edge-litert。请参阅我们的安装指南
    • 模型支持:查看 Ultralytics 导出文档页面,确认具体的 YOLO26 模型支持 LiteRT 导出。
    • 量化问题:使用 INT8 量化时,请确保已在 data 参数中正确指定数据集路径。

    如需其他故障排查建议,请访问我们的常见问题指南

评论