Ultralytics YOLO Flutter 是官方 Flutter 插件,用于在 iOS 和 Android 应用中运行 YOLO 模型。它支持目标检测、实例分割、图像分类、姿态估计和旋转框检测,并提供两种核心用法:
YOLO:单张图片推理YOLOView:实时相机推理
这个插件的目标很直接:要么使用官方模型 ID,要么把你自己的导出模型丢进应用里,让插件自动解析任务元数据。
- Ultralytics 官方插件
- 一套 Dart API 同时覆盖 Android 和 iOS
- 基于元数据加载模型,并内置官方模型下载与缓存
- 同时支持实时相机推理和单图推理
- 提供阈值、GPU、流式数据等生产环境控制项
- 支持 YOLO26 和 YOLO11 系列模型
| 功能 | Android | iOS | 说明 |
|---|---|---|---|
| 目标检测 | ✅ | ✅ | 边界框、类别和置信度 |
| 图像分类 | ✅ | ✅ | Top-1/Top-5 类别预测和分数 |
| 实例分割 | ✅ | ✅ | 实例掩膜、边界框和类别 |
| 姿态估计 | ✅ | ✅ | 关键点、边界框和置信度 |
| 旋转框(OBB)检测 | ✅ | ✅ | 旋转框和多边形角点 |
| 实时相机推理 | ✅ | ✅ | 使用 YOLOView 构建实时相机场景 |
| 单图推理 | ✅ | ✅ | 使用 YOLO 处理图片字节 |
| 官方模型 | ✅ | ✅ | 内置模型 ID 发现、下载和缓存 |
| 自定义模型 | ✅ | ✅ | Android 用 TFLite,iOS 用 Core ML,并优先读取元数据 |
安装插件:
插件地址:https://pub.dev/packages/ultralytics_yolo
dependencies:
ultralytics_yolo: ^0.3.4flutter 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);插件支持三种模型来源。
可直接使用默认官方模型,或传入指定官方 ID,例如 yolo26n:
final yolo = YOLO(modelPath: YOLO.defaultOfficialModel() ?? 'yolo26n');插件会自动下载并缓存当前平台对应的官方产物。可通过
YOLO.officialModels() 查看当前平台可用的全部官方 ID。
传入你自己的导出 YOLO 模型本地路径或 Flutter 资源路径:
final yolo = YOLO(modelPath: 'assets/models/my-finetuned-model.tflite');如果模型导出时带有元数据,插件会自动推断 task。如果没有,就显式传入 task。
final yolo = YOLO(
modelPath: 'assets/models/my-finetuned-model.tflite',
task: YOLOTask.detect,
);传入 http 或 https URL,插件会先下载到应用存储,再完成加载。
| 场景 | 推荐方式 |
|---|---|
| 想最快跑通接入 | 使用官方模型 ID,例如 yolo26n |
| 你训练或导出了自己的模型 | 使用自定义资源或本地文件 |
| 不同客户或环境需要不同模型 | 使用远程 URL |
希望插件自动推断 task |
使用带元数据的导出模型 |
| 你的导出模型没有元数据 | 自定义模型并显式传入 task |
官方模型可直接从 YOLO.defaultOfficialModel() 或
YOLO.officialModels() 开始;自定义模型则直接从你准备实际交付的导出文件开始。
对于自定义模型,应用侧配置应尽量简单:
- Android 原生资源:把
.tflite放到android/app/src/main/assets - Android Flutter 资源:把
.tflite放到assets/models/ - iOS 工程资源:把
.mlpackage或.mlmodel拖进ios/Runner.xcworkspace - iOS Flutter 资源:把
.mlpackage.zip放到assets/models/
然后把对应路径传给 modelPath 即可。
导出 Core ML 检测模型时必须使用 nms=True:
from ultralytics import YOLO
# Square [640, 640] works best when one model must run in both portrait and landscape.
# Ultralytics imgsz order is [height, width]; use [640, 384] for portrait-only or [384, 640] for landscape-only.
YOLO("yolo26n.pt").export(format="coreml", nms=True, imgsz=[640, 640])其他任务可以使用默认导出参数,imgsz 同样优先使用方形尺寸。
固定方向场景再使用对应的长宽比。
如果你已经拿到了图片字节并且只想做单次推理,用 YOLO:
final yolo = YOLO(modelPath: 'yolo26n');
await yolo.loadModel();
final results = await yolo.predict(imageBytes);如果你要做实时相机推理,用 YOLOView:
final controller = YOLOViewController();
YOLOView(
modelPath: 'yolo26n',
controller: controller,
onResult: (results) {},
)
await controller.switchModel('assets/models/custom.tflite', YOLOTask.detect);| 应用类型 | 推荐模型加载方式 |
|---|---|
| 实时相机场景 | YOLOView(modelPath: 'yolo26n') |
| 图库或单图推理流程 | YOLO(modelPath: 'yolo26n') |
| 应用内置自定义模型 | YOLO(modelPath: 'assets/models/custom.tflite') |
| 同时支持 Core ML 与 TFLite 的跨平台应用 | 使用各平台对应导出文件,并让元数据决定 task |
| 运行时动态切换模型 | YOLOViewController.switchModel(...) |
| 指南 | 说明 |
|---|---|
| 安装指南 | 环境要求与平台配置 |
| 快速开始 | 最短路径跑通第一个示例 |
| 模型指南 | 官方模型、自定义模型、导出流程 |
| 使用指南 | 常见应用模式与示例 |
| API 参考 | 完整 API 文档 |
| 性能优化 | 性能调优与控制项 |
| 故障排查 | 常见问题与修复方法 |
- 💬 有问题? Discord | Forums | GitHub Issues
- 🐛 发现 bug? 在这里提交
- 💡 想提功能建议? 欢迎告诉我们
Ultralytics 的成长离不开社区协作,我们非常重视你的贡献。无论是修复 bug、增强功能还是改进文档,你的参与都非常重要。请查看我们的贡献指南以了解如何参与,也欢迎通过问卷分享你的反馈。衷心感谢所有贡献者的支持!🙏
Ultralytics 提供两种许可证,以适应不同需求:
- AGPL-3.0 License:适合学生、研究人员以及热衷于开源协作的开发者。这是一个经 OSI 批准的许可证,鼓励知识共享和开放贡献。详情请参阅 LICENSE 文件。
- Enterprise License:适用于商业应用,允许将 Ultralytics 软件和 AI 模型无缝集成到商业产品与服务中,而无需遵守 AGPL-3.0 的开源要求。如有商业使用需求,请了解企业许可证。
如果你希望在 iOS 应用中直接使用 YOLO 模型与 Swift 集成,而不是通过 Flutter,可以查看我们的专用 iOS 仓库:
👉 Ultralytics YOLO iOS App - 一个原生 iOS 应用,演示如何使用 Ultralytics YOLO 模型进行实时目标检测、分割、分类、姿态估计和旋转框检测。
该仓库提供:
- 面向 iOS 的纯 Swift 实现
- 直接的 Core ML 集成
- 原生 iOS UI 组件
- 多种 YOLO 任务的示例代码
- 针对 iOS 性能的优化
如果你在使用 Ultralytics YOLO 时遇到问题,或有功能建议,请通过 GitHub Issues 提交。若想参与更广泛的讨论、提问或获取社区支持,欢迎加入我们的 Discord 服务器。









