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は、人気のYOLOコンピュータビジョンモデルファミリーをFlutterモバイルアプリ内で直接実行できるようにする、公式のUltralyticsプラグインです。プラットフォーム固有の詳細(iOSのCore ML、AndroidのLiteRT/TFLite、オプションのQualcomm NPUサポート)を抽象化し、以下のための単一のDart APIを提供します:

  • 単一画像推論 – YOLO
  • ライブカメラ推論 – YOLOView

どちらのエントリポイントも、iOSおよびAndroidでのあらゆるYOLOタスク(物体検出、インスタンス/セマンティックセグメンテーション、深度、分類、姿勢、回転バウンディングボックス)をサポートしています。


✨ 主な機能(READMEより)

機能 詳細
クロスプラットフォームAPI 1つの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() または yolo26n などのID 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を参照)。


TL;DR

YOLO Flutterは、UltralyticsのYOLOモデルをあらゆるFlutterアプリにもたらすプロダクションレディなブリッジです。モデルのダウンロード、プラットフォーム固有のランタイム、リアルタイムカメラ推論をクリーンなDart APIで処理します。ネイティブのiOS/Androidコードを書かずに、デバイス上でコンピュータビジョン(検出、セグメンテーション、深度、姿勢など)を実現したい開発者に最適です。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト