ultralytics/yolo-flutter-app
Official Ultralytics YOLO Flutter plugin for real-time inference on Android and iOS across major vision tasks.
📦 什么是 YOLO Flutter?
YOLO Flutter 是一个官方的 Ultralytics 插件,让您可以直接在 Flutter 移动应用程序中运行热门的 YOLO 计算机视觉模型系列。它抽象了平台特定的细节(iOS 上的 Core ML、Android 上的 LiteRT/TFLite,以及可选的 Qualcomm NPU 支持),并为您提供单一的 Dart API 来进行:
- 单张图像推理 –
YOLO - 实时相机推理 –
YOLOView
这两个入口点皆支持 iOS 和 Android 上完整的 YOLO 任务(目标检测、实例/语义分割、深度、分类、姿态、旋转边界框)。
✨ 主要功能(如 README 所述)
| 功能 | 详细信息 |
|---|---|
| 跨平台 API | 一个 Dart API 即可在 iOS 和 Android 上运行。 |
| 元数据优先的模型加载 | 提供官方模型 ID 或自定义导出模型;插件会读取内嵌的元数据来推理任务和类别标签。 |
| 实时相机推理 | YOLOView 可流式传输设备相机的结果。 |
| 单张图像推理 | YOLO 可对图像的字节数组进行预测。 |
| 支持的任务 | 检测、实例分割、语义分割、深度估计、分类、姿态、OBB。 |
| 模型系列 | YOLOv8 26 和 YOLOv11 系列。 |
| 官方模型处理 | 自动下载与缓存 Ultralytics 托管的资产(Android 的 LiteRT .tflite,iOS 的 Core ML .mlpackage)。 |
| 自定义模型 | 加载任何导出的 TFLite、Core ML 或 ONNX (QNN) 模型;若有元数据则会使用。 |
| Qualcomm NPU (QNN) 支持 | 通过 ONNX Runtime QNN 提供者,在 Snapdragon 设备上提供可选的 Hexagon NPU 推理。 |
| 加速器选择 | 在运行时选择 CPU、GPU (LiteRT delegate) 或 NPU。 |
| 结果流式传输 | 推理结果通过回调 (onResult) 传递。 |
| 版本化发布 | 模型资产锁定在 GitHub 发布标签,以确保可重现的下载。 |
🚀 快速入门概览(来自 README)
- 添加包
然后运行dependencies: ultralytics_yolo: ^0.6.16flutter pub get。 - 运行默认模型
import 'package:ultralytics_yolo/ultralytics_yolo.dart'; final modelId = YOLO.defaultOfficialModel() ?? 'yolo26n'; YOLOView( modelPath: modelId, onResult: (results) { for (final r in results) { debugPrint('${r.className}: ${r.confidence}'); } }, ); - 单张图像推理
final yolo = YOLO(modelPath: 'yolo26n'); await yolo.loadModel(); final results = await yolo.predict(imageBytes); - 自定义或远程模型 – 提供本地资产路径、打包的
.tflite/.mlpackage或 HTTP URL。插件会自动下载并缓存远程模型。
📂 模型加载工作方式
| 流程 | 您提供的内容 | 插件的操作 |
|---|---|---|
| 官方模型 ID | YOLO.defaultOfficialModel() 或特定 ID 如 yolo26n |
从 Ultralytics GitHub 发布下载对应的 LiteRT (Android) 或 Core ML (iOS) 资产,缓存并加载。 |
| 自定义导出模型 | .tflite (Android) 或 .mlpackage/.mlmodel (iOS) 文件路径 |
读取内嵌元数据(若存在)以推理任务和类别列表;否则您必须传入 task。 |
| 远程 URL | https://…/mymodel.tflite |
将文件下载到应用程序存储空间,然后加载。 |
| Qualcomm NPU 模型 | 以 _qnn.onnx 结尾的路径 |
将模型路由至 ONNX Runtime QNN 执行提供者(需要额外的 Gradle 依赖项和 Snapdragon 设备)。 |
🛠️ 平台特定细节
- Android – 使用 LiteRT(Google 的边缘运行时)并具备 GPU 代理回退。模型为 w8a32 .tflite 文件(int8 权重,FP32 激活)。可选的 QNN 支持会加入
onnxruntime-android-qnn和qnn-runtime库。 - iOS – 默认使用 Core ML (
.mlpackage)。在 iOS 27+ 设备上提供可选的 Core AI (.aimodel) 格式。 - 加速器阶梯 – 运行时会在可用时自动选择 GPU;否则会在 CPU 上运行。NPU 仅在提供
_qnn.onnx模型且设备符合硬件要求时使用。
📚 文档与指南(来自 README 的链接)
- 安装指南 –
doc/install.md - 快速入门 –
doc/quickstart.md - 模型指南 –
doc/models.md(官方 ID、导出矩阵、元数据) - 使用指南 –
doc/usage.md - API 参考 –
doc/api.md - 性能指南 –
doc/performance.md - 故障排除 –
doc/troubleshooting.md
🤝 社区与支持
- Discord、论坛、Reddit – 官方 Ultralytics 频道。
- GitHub Issues – 用于错误报告和功能请求。
- 贡献 – 请遵循 Ultralytics 贡献指南;本项目欢迎代码、文档和反馈。
📄 许可
本仓库采用双重许可:开源使用采用 AGPL-3.0,专有项目则提供商业许可选项(详细信息请见 README)。
总结
YOLO Flutter 是一个生产就绪的桥梁,将 Ultralytics 的 YOLO 模型带入任何 Flutter 应用程序,通过简洁的 Dart API 处理模型下载、平台特定运行时以及实时相机推理。对于想要在设备端进行计算机视觉(检测、分割、深度、姿态等)而无需编写原生 iOS/Android 代码的开发者来说,这是理想的选择。
相关
- 项目
- 项目
- 项目
- 项目
- 项目