Ultralytics YOLO27:
Get Started

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(简称 TFLite)由 Google 于 2017 年 5 月作为 TensorFlow 框架的一部分推出,是一种开源深度学习框架,专为设备端推理而设计,也称为边缘计算。它为开发者提供了工具,可在移动设备、嵌入式设备和物联网设备以及传统计算机上运行训练好的模型。

TensorFlow Lite 支持多种平台,包括嵌入式 Linux、Android、iOS 和微控制器(MCU)。TFLite 导出模型可让应用在本地离线运行。

TFLite 模型的主要功能#

TFLite 模型具备多种关键功能,可帮助开发者在移动设备、嵌入式设备和边缘设备上运行模型,从而实现设备端机器学习:

  • 设备端优化:TFLite 针对设备端机器学习进行优化,通过在本地处理数据来降低延迟,通过不传输个人数据来增强隐私保护,并通过缩小模型尺寸来节省空间。

  • 支持多种平台: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 个 Prime 核心,最高 4.6 GHz;6 个 Performance 核心,最高 3.62 GHz)、Adreno GPU 和 Hexagon NPU。这些表格比较了旧版 onnx2tf INT8 TFLite 资源与迁移期间评估的候选 litert-torch 导出模型。随后,发布资源已被标准化导出模型覆盖,因此这些数字并不代表当前 v0.6.6 资源文件的字节内容。当前测量结果请参阅 LiteRT 性能表。

两种格式均在同一轮连续 GPU 测试中以所示输入尺寸运行。每个单元格显示总耗时 (预处理 + 推理 + 后处理),下方列出了各阶段的耗时明细;原生日志确认,两种格式都通过 LiteRT OpenCL(LITERT_CL)将完整计算图交由 Adreno GPU 执行。

模型任务尺寸
(像素)
旧版
onnx2tf INT8 TFLite
(毫秒)
候选
w8a32 LiteRT
(毫秒)
YOLO26n检测64014.0
1.8 / 8.1 / 4.2
13.5
1.9 / 8.1 / 3.5
YOLO26n-seg分割64030.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 检测模型的量化格式。推理时间是可比较且取决于格式的指标:

Android 格式GPU 推理(毫秒)GPU 编译
onnx2tf INT8(旧版 TFLite)8.6是
LiteRT w8a32(候选)8.4是
LiteRT INT8(quantize=8)11.0是
LiteRT FP328.8是
LiteRT w8a16(quantize="w8a16")CPU 回退否

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

TFLite 部署选项#

在查看 LiteRT 替代导出示例之前,先了解 TFLite 模型的常见用法。

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

  • 使用 Android 和 iOS 部署:搭载 TFLite 的 Android 和 iOS 应用都可以分析边缘摄像头画面和传感器数据,以检测和识别物体。TFLite 还提供使用 Swift 和 Objective-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

# 加载 YOLO26 模型
model = YOLO("yolo26n.pt")

# 将模型导出为 LiteRT 格式
model.export(format="litert", imgsz=640)  # 分类任务使用 imgsz=224
预测
from ultralytics import YOLO

# 加载导出的 TFLite 模型
model = YOLO("yolo26n.tflite")

# 运行推理
results = model("https://ultralytics.com/images/bus.jpg")
验证
from ultralytics import YOLO

# 加载导出的 TFLite 模型
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 不会单独导出 — FP32 模型会在 GPU 委托程序上自动以 FP16 运行。此选项取代了已弃用的 half/int8 标志。
batchint1指定导出模型的批量推理大小,或导出模型在 predict 模式下可同时处理的最大图像数。
datastrNone数据集 YAML 文件的路径,是量化所必需的;分类任务则使用数据集目录或内置数据集名称。如果在使用 quantize=8 或 'w8a16' 时未指定,Ultralytics 会根据模型任务选择默认校准数据集。
fractionfloat、int 或 list1.0校准子集,可按比例、图像数量或 [train, val, test] 比例/数量指定。包含两个项目的列表会让 test 保持完整,而 0 会跳过它。
devicestrNone指定导出设备:CPU (device=cpu),Apple 芯片上的 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
    
    # 加载 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 导出指南。

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

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

    如需了解更多信息,请参阅 TFLite 指南。

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

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

  • TFLite 支持在资源有限的微控制器上部署:其核心运行时在 Arm Cortex M3 上仅需 16 KB 内存,并可运行许多基础模型。不过,YOLO26 模型通常对于典型微控制器的内存容量来说过大,因此单板计算机、移动设备或专用加速器更适合运行 YOLO26。

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

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

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

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

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

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

    如需了解更多故障排除技巧,请访问我们的常见问题指南。

评论