YOLO11 模型导出到 TFLite 以进行部署的指南
在边缘设备或嵌入式设备上部署计算机视觉模型需要一种能够确保无缝性能的格式。
TensorFlow Lite 或 TFLite 导出格式允许您优化 Ultralytics YOLO11 模型,以用于基于边缘设备的应用程序中的目标检测和图像分类等任务。在本指南中,我们将逐步介绍将模型转换为 TFLite 格式的步骤,从而使您的模型更容易在各种边缘设备上表现良好。
为什么要导出到 TFLite?
TensorFlow Lite(简称 TFLite)是 Google 于 2017 年 5 月作为其 TensorFlow 框架的一部分推出的一个开源深度学习框架,专为设备上的推理而设计,也称为边缘计算。它为开发者提供了在移动设备、嵌入式设备和 IoT 设备以及传统计算机上执行其训练模型的必要工具。
TensorFlow Lite 与各种平台兼容,包括嵌入式 Linux、Android、iOS 和 MCU。将您的模型导出到 TFLite 可以使您的应用程序更快、更可靠,并且能够离线运行。
TFLite 模型的主要特性
TFLite 模型提供了一系列关键特性,通过帮助开发者在移动设备、嵌入式设备和边缘设备上运行模型,从而实现设备上的机器学习:
-
设备端优化:TFLite 针对设备端 ML 进行了优化,通过在本地处理数据来减少延迟,通过不传输个人数据来增强隐私,并通过最小化模型大小来节省空间。
-
多平台支持: TFLite 提供广泛的平台兼容性,支持 Android、iOS、嵌入式 Linux 和微控制器。
-
多样化的语言支持: TFLite 与各种编程语言兼容,包括 Java、Swift、Objective-C、C++ 和 Python。
-
高性能: 通过硬件加速和模型优化实现卓越性能。
TFLite 中的部署选项
在查看将 YOLO11 模型导出为 TFLite 格式的代码之前,让我们先了解 TFLite 模型通常是如何使用的。
TFLite 为机器学习模型提供各种设备端部署选项,包括:
- 使用 Android 和 iOS 进行部署: 带有 TFLite 的 Android 和 iOS 应用程序可以分析基于边缘的摄像头 feed 和传感器,以检测和识别对象。TFLite 还提供用 Swift 和 Objective-C 编写的本机 iOS 库。下面的架构图显示了使用 TensorFlow Lite 将训练好的模型部署到 Android 和 iOS 平台的过程。
-
使用嵌入式 Linux 实施: 如果使用 Raspberry Pi 上的 Ultralytics 指南 运行推理无法满足您的用例的速度要求,您可以使用导出的 TFLite 模型来加速推理时间。此外,还可以通过使用 Coral Edge TPU 设备 来进一步提高性能。
-
使用微控制器部署: TFLite 模型还可以部署在微控制器和其他只有几 KB 内存的设备上。核心运行时仅占用 Arm Cortex M3 上的 16 KB,并且可以运行许多基本模型。它不需要操作系统支持、任何标准 C 或 C++ 库或动态内存分配。
导出到 TFLite:转换您的 YOLO11 模型
您可以通过将模型转换为 TFLite 格式来提高设备上模型执行效率并优化性能。
安装
要安装所需的软件包,请运行:
安装
# Install the required package for YOLO11
pip install ultralytics
有关安装过程的详细说明和最佳实践,请查看我们的 Ultralytics 安装指南。如果在为 YOLO11 安装所需软件包时遇到任何困难,请查阅我们的 常见问题指南以获取解决方案和提示。
用法
所有Ultralytics YOLO11 模型都设计为支持开箱即用的导出,从而可以轻松地将其集成到您首选的部署工作流程中。您可以查看支持的导出格式和配置选项的完整列表,以选择最适合您应用程序的设置。
用法
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to TFLite format
model.export(format="tflite") # creates 'yolo11n_float32.tflite'
# Load the exported TFLite model
tflite_model = YOLO("yolo11n_float32.tflite")
# Run inference
results = tflite_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to TFLite format
yolo export model=yolo11n.pt format=tflite # creates 'yolo11n_float32.tflite'
# Run inference with the exported model
yolo predict model='yolo11n_float32.tflite' source='https://ultralytics.com/images/bus.jpg'
导出参数
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
format |
str |
'tflite' |
导出模型的目标格式,定义与各种部署环境的兼容性。 |
imgsz |
int 或 tuple |
640 |
模型输入的所需图像大小。 可以是正方形图像的整数或元组 (height, width) 用于指定特定维度。 |
half |
bool |
False |
启用 FP16(半精度)量化,从而减小模型大小并可能加快受支持硬件上的推理速度。 |
int8 |
bool |
False |
激活 INT8 量化,进一步压缩模型并以最小的精度损失加快推理速度,主要用于边缘设备。 |
nms |
bool |
False |
添加非极大值抑制 (NMS),这对于准确高效的检测后处理至关重要。 |
batch |
int |
1 |
指定导出模型批处理推理大小或导出模型将并发处理的最大图像数量,在 predict 模式下。 |
data |
str |
'coco8.yaml' |
路径指向 数据集 配置文件(默认: coco8.yaml ),这对于量化至关重要。 |
fraction |
float |
1.0 |
指定用于 INT8 量化校准的数据集比例。允许在完整数据集的子集上进行校准,这对于实验或资源有限时非常有用。如果未在使用 INT8 启用时指定,则将使用完整数据集。 |
device |
str |
None |
指定导出设备:CPU(device=cpu ),适用于 Apple 芯片的 MPS(device=mps )。 |
有关导出过程的更多详细信息,请访问Ultralytics 文档页面上的导出。
部署导出的 YOLO11 TFLite 模型
成功将 Ultralytics YOLO11 模型导出为 TFLite 格式后,您现在可以部署它们。运行 TFLite 模型的主要和推荐的第一步是使用 YOLO("model.tflite")
方法,如之前的用法代码片段中所述。但是,有关在各种其他设置中部署 TFLite 模型的深入说明,请查看以下资源:
-
Android: 将 TensorFlow Lite 集成到 Android 应用程序的快速入门指南,提供易于遵循的步骤来设置和运行 机器学习 模型。
-
iOS:查看此针对开发人员的详细指南,了解如何在 iOS 应用程序中集成和部署 TensorFlow Lite 模型,提供分步说明和资源。
-
端到端示例: 此页面概述了各种TensorFlow Lite示例,展示了旨在帮助开发人员在移动和边缘设备的机器学习项目中实施TensorFlow Lite的实际应用和教程。
总结
在本指南中,我们重点介绍了如何导出为 TFLite 格式。通过将您的 Ultralytics YOLO11 模型转换为 TFLite 模型格式,您可以提高 YOLO11 模型的效率和速度,使其更有效并适用于边缘计算环境。
有关使用详情,请访问 TFLite 官方文档。
此外,如果您对其他 Ultralytics YOLO11 集成感到好奇,请务必查看我们的集成指南页面。您将在那里找到大量有用的信息和见解。
常见问题
如何将 YOLO11 模型导出为 TFLite 格式?
要将 YOLO11 模型导出为 TFLite 格式,可以使用 Ultralytics 库。首先,使用以下命令安装所需的包:
pip install ultralytics
然后,使用以下代码片段导出您的模型:
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to TFLite format
model.export(format="tflite") # creates 'yolo11n_float32.tflite'
对于 CLI 用户,您可以使用以下命令实现:
yolo export model=yolo11n.pt format=tflite # creates 'yolo11n_float32.tflite'
更多详情,请访问Ultralytics 导出指南。
使用 TensorFlow Lite 进行 YOLO11 模型部署有哪些好处?
TensorFlow Lite (TFLite) 是一个开源深度学习框架,专为设备端推理而设计,使其成为在移动设备、嵌入式设备和 IoT 设备上部署 YOLO11 模型的理想选择。主要优势包括:
- 设备端优化: 通过在本地处理数据,最大限度地减少延迟并增强隐私。
- 平台兼容性:支持 Android、iOS、嵌入式 Linux 和 MCU。
- 性能: 利用硬件加速来优化模型速度和效率。
要了解更多信息,请查看 TFLite 指南。
是否可以在 Raspberry Pi 上运行 YOLO11 TFLite 模型?
是的,您可以在 Raspberry Pi 上运行 YOLO11 TFLite 模型以提高推理速度。首先,如上所述,将您的模型导出为 TFLite 格式。然后,使用 TensorFlow Lite Interpreter 等工具在您的 Raspberry Pi 上执行该模型。
为了进一步优化,您可以考虑使用 Coral Edge TPU。有关详细步骤,请参阅我们的 Raspberry Pi 部署指南 和 Edge TPU 集成指南。
我可以在微控制器上使用TFLite模型进行YOLO11预测吗?
是的,TFLite 支持在资源有限的微控制器上部署。TFLite 的核心运行时在 Arm Cortex M3 上仅需要 16 KB 的内存,并且可以运行基本的 YOLO11 模型。这使其适合在计算能力和内存最小的设备上部署。
要开始使用,请访问 TFLite Micro for Microcontrollers 指南。
哪些平台与 TFLite 导出的 YOLO11 模型兼容?
TensorFlow Lite 提供了广泛的平台兼容性,允许您在各种设备上部署 YOLO11 模型,包括:
- Android 和 iOS: 通过 TFLite Android 和 iOS 库提供原生支持。
- 嵌入式 Linux: 适用于 Raspberry Pi 等单板计算机。
- 微控制器: 适用于资源受限的 MCU。
有关部署选项的更多信息,请参阅我们详细的 部署指南。
如何解决将 YOLO11 模型导出到 TFLite 期间的常见问题?
如果在将 YOLO11 模型导出到 TFLite 时遇到错误,常见的解决方案包括:
- 检查包兼容性: 确保您使用的是兼容版本的 Ultralytics 和 TensorFlow。请参考我们的安装指南。
- 模型支持: 通过查看 Ultralytics 导出文档页面,验证特定的 YOLO11 模型是否支持 TFLite 导出。
- 量化问题: 当使用 INT8 量化时,请确保在 中正确指定了数据集路径
data
参数。
有关其他故障排除提示,请访问我们的 常见问题解答指南。