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)

  1. 添加包
    dependencies:
      ultralytics_yolo: ^0.6.16
    
    然后运行 flutter pub get。
  2. 运行默认模型
    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}');
        }
      },
    );
    
  3. 单张图像推理
    final yolo = YOLO(modelPath: 'yolo26n');
    await yolo.loadModel();
    final results = await yolo.predict(imageBytes);
    
  4. 自定义或远程模型 – 提供本地资产路径、打包的 .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 代码的开发者来说,这是理想的选择。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目