yolo-flutter-app

ultralyticsAGPL-3.0活跃维护

Ultralytics 官方 Flutter 插件,让 Android 和 iOS 应用直接跑 YOLO 实时推理,覆盖检测、分割、分类、姿态与深度估计等视觉任务。

Official Ultralytics YOLO Flutter plugin for real-time inference on Android and iOS across major vision tasks.

v0.7.2发布于 2026-11-08 03:07 UTC513star +1 / 7 天176fork同步于 2026-11-10 17:59 UTC

怎么上手

由 README 提炼,执行前请确认
dependencies:
  ultralytics_yolo: ^0.7.2

flutter pub get
硬件要求按 README 说明

README 未说明显存或 CPU 运行要求;QNN 模型需骁龙 8 Gen 2 及以上(官方 _v73 资产),_v81 面向 Snapdragon 8 Elite Gen 5。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

Ultralytics 官方 Flutter 插件,在 Android 和 iOS 上运行 YOLO 模型做实时推理

Ultralytics 官方 Flutter 插件,让 Android 和 iOS 应用直接跑 YOLO 实时推理,覆盖检测、分割、分类、姿态与深度估计等视觉任务。

核心能力

  • 用 YOLO 和 YOLOView 两个入口分别做单图推理与相机实时推理
  • 覆盖检测、实例/语义分割、深度、分类、姿态和 OBB 任务
  • 按官方模型 ID 自动下载并缓存模型,无需打包进应用
  • 读取导出模型内嵌元数据自动推断任务与类别标签
  • 支持阈值、加速器选择和结果流式回调

容易踩的坑

官方模型首次使用时才下载并缓存,需联网;自定义模型缺元数据时要显式传 task;QNN 需在 build.gradle 加 useLegacyPackaging 和 onnxruntime-android-qnn、qnn-runtime 依赖,且导出需 ultralytics>=8.4.188;Core AI 仅 iOS 27 及以上且模拟器不可用。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.7.2
  1. v0.7.2v0.7.2 - Release 0.7.2: use UltralyticsYOLO 8.9.19 annotation colors and model colors metadata (#620)最新正式版2026-11-08 · 2026-11-08 03:07 UTC

    🌟 Summary

    Ultralytics YOLO Flutter 0.7.2 brings model-specific annotation colors, faster Android overlays, and more consistent prediction defaults across Android, iOS, and Dart.

    📊 Key Changes

    • 🎨 Uses custom model colors: Android and iOS now read optional colors metadata, so annotations can reflect class colors set on Ultralytics Platform. Models without this metadata keep the default palette.
    • 🍎 Shares iOS annotation code: The plugin now depends on UltralyticsYOLO 8.9.19 or newer and uses the shared package’s annotation and label styling instead of maintaining duplicate copies.
    • ⚡ Improves Android overlay performance: Live detection, segmentation, and pose overlays reduce per-box work, and depth colorization is reported as about 40% faster.
    • 🎯 Changes the default NMS IoU threshold to 0.5 across Android, iOS, and Dart, matching Ultralytics prediction defaults.
    • 📱 Raises the minimum Flutter version to 3.41.0 to fix iOS Swift Package Manager dependency resolution.
    • 📚 Updates benchmark and deployment guidance, including NPU measurements. These NPU results were collected with a prototype build and do not mean NPU execution is included in this release.

    🎯 Purpose & Impact

    • Custom-trained models can show their chosen class colors on-device, making results easier to recognize and consistent with their training or annotation setup.
    • Faster overlay drawing should help make live camera results feel smoother, particularly for depth and tasks with many detections.
    • The IoU default is more likely to suppress overlapping duplicate detections without requiring users to change a setting.
    • iOS users benefit from one shared source for annotation behavior, while developers upgrading must use Flutter 3.41.0 or newer.

    What's Changed

    New Contributors

    Full Changelog: https://github.com/ultralytics/yolo-flutter-app/compare/v0.7.1...v0.7.2

  2. v0.7.1v0.7.1 - Import and select custom Platform models in Flutter (#604)2026-10-24 · 2026-10-24 21:56 UTC
    查看更新说明

    🌟 Summary

    v0.7.1 makes it easier to import, choose, and use custom Ultralytics Platform models, while refreshing Android’s official models for improved compatibility and performance.

    📊 Key Changes

    • 📲 Import Platform models with QR codes: Scan an export QR code from the existing camera view. The app previews the model before downloading it, then adds it to the model list for selection, removal, and offline use. Each export gets its own identity, so models with matching names won’t overwrite one another.
    • 🎛️ A simpler model picker: The task and model name now open one compact picker for official models and custom imports. Official model sizes that aren’t on the device are shown as dimmed choices.
    • ⚡ Refreshed Android model assets: Official LiteRT and QNN models now use newer exports hosted in the v0.7.0 model release. Android’s model cache refreshes once to use the updated assets; iOS Core ML assets remain unchanged.
    • 🚀 Faster QNN depth inference: On Snapdragon 8 Elite Gen 5, the measured depth inference time drops from 26.1 ms to 7.4 ms.
    • 🛠️ Updated compatibility guidance: QNN exports should use Ultralytics 8.4.188 or newer; the updated QNN assets also require qnn-runtime 2.51.0 or newer. iOS custom-model imports require UltralyticsYOLO 8.9.17 or newer.

    🎯 Purpose & Impact

    • Makes it straightforward for users to bring their own Platform exports into the example app and keep using them offline.
    • Scanning reuses the camera pipeline already in the app, rather than adding a separate scanner screen or camera session.
    • Distinct export IDs and download validation help prevent accidental overwrites and incomplete or incompatible installs.
    • The refreshed Android exports improve QNN compatibility and can substantially speed up depth inference on supported devices.

    What's Changed

    Full Changelog: https://github.com/ultralytics/yolo-flutter-app/compare/v0.7.0...v0.7.1

  3. v0.7.0v0.7.0 - Release 0.7.0: upgrade Android LiteRT to 2.3.0 (#605)2026-10-24 · 2026-10-24 18:43 UTC
    查看更新说明

    🌟 Summary

    Ultralytics YOLO Flutter 0.7.0 modernizes Android inference dependencies and prepares the way for broader NPU support, with a higher Android and Kotlin tooling requirement.

    📊 Key Changes

    • 🚀 Upgraded Android LiteRT to 2.3.0 and added the separate GPU accelerator package so GPU inference remains available.
    • 🧠 Updated optional Qualcomm QNN dependencies to ONNX Runtime 1.29.0 and QAIRT 2.51.0, supporting current Ultralytics QNN exports and newer Snapdragon devices.
    • 📱 Raised Android’s minimum version to API 24 and requires Kotlin Gradle plugin 2.3 or newer.
    • 🔧 Added Java 21 to CI and prevented duplicate Slack notifications when release workflows are rerun.

    🎯 Purpose & Impact

    • ⚡ The dependency updates keep Android inference current and preserve GPU acceleration. LiteRT 2.3 also provides runtimes and compiler tooling that lay groundwork for future NPU support; this release does not enable a new LiteRT NPU inference path.
    • 📦 Developers must update projects targeting Android to API 24+ and use a compatible Kotlin Gradle plugin. Apps supporting API 23 will need to adjust their compatibility requirements.
    • ✅ Existing inference behavior is unchanged; the main impact is updated platform and build requirements, plus improved optional QNN support.

    What's Changed

    Full Changelog: https://github.com/ultralytics/yolo-flutter-app/compare/v0.6.16...v0.7.0

  4. v0.6.16v0.6.16 - Release 0.6.16: align Android and iOS depth inputs with validation (#601)2026-10-09 · 2026-10-09 12:45 UTC
    查看更新说明

    🌟 Summary

    YOLO Flutter 0.6.16 improves depth estimation consistency by matching Android and iOS model inputs to Ultralytics validation, while also addressing iOS build and model-loading issues.

    📊 Key Changes

    • 📏 Depth estimation input alignment: Android now stretches images to fill the model input instead of letterboxing them. iOS uses the updated UltralyticsYOLO package, version 8.9.16 or later, for the corresponding depth-input behavior. Other Android tasks keep their existing letterbox preprocessing.
    • 🗺️ Full-resolution depth maps: Depth results now retain the full model-resolution map rather than cropping away padding. The documentation explains that map coordinates should be scaled to the original image when reading depth.
    • ✅ iOS reliability fixes: Camera views now resolve supported model files from the app bundle and report a missing model as a failure, rather than starting the camera as if loading succeeded.
    • 📱 Xcode 27 example compatibility: The example app’s iOS deployment targets are raised to iOS 15. The plugin itself still supports iOS 13 with older toolchains.
    • ⚙️ Simpler release workflows: GitHub workflows use setup-uv defaults for Python and dependency installation.

    🎯 Purpose & Impact

    • 🎯 Matching the input format used for validation and calibration is intended to improve depth estimates, particularly for wide images. The release notes do not provide numerical improvement results.
    • 🔄 Keeping the full depth map avoids cropping data and makes the result’s coverage consistent with the stretched input.
    • 🧪 The release documentation reports testing on Android across multiple image shapes and camera orientations, with full-size depth maps returned; it also records iOS testing of depth and other camera tasks.
    • 🛠️ Apps built with Xcode 27 should set their app and CocoaPods deployment targets to iOS 15 or higher; older toolchains can continue using the plugin’s iOS 13 minimum.

    What's Changed

    New Contributors

    Full Changelog: https://github.com/ultralytics/yolo-flutter-app/compare/v0.6.15...v0.6.16

  5. v0.6.15v0.6.15 - Support opt-in Apple Core AI (.aimodel) models on iOS 27+ (#596)2026-09-20 · 2026-09-20 14:43 UTC
    查看更新说明

    🌟 Summary

    Ultralytics YOLO Flutter v0.6.15 adds opt-in Apple Core AI model support for iOS 27+, modernizes Android LiteRT exports, and refreshes release documentation and tooling. 🚀

    📊 Key Changes

    • 🍏 Added opt-in Apple Core AI support

      • Apps can load .aimodel files from:
        • A local .aimodel path
        • An .aimodel.zip Flutter asset
        • An .aimodel.zip URL
      • Core ML remains the default, and official model IDs continue resolving to .mlpackage.zip assets.
      • Requires iOS 27+ devices and UltralyticsYOLO >= 8.9.15.
      • Core AI models are not supported on earlier iOS versions or in the iOS Simulator.
      • Added Core AI archive extraction, metadata inspection, caching, model validation, and accelerator reporting.
    • 📦 Updated Android LiteRT and QNN export guidance

      • LiteRT exports now use nms=None, preserving raw model outputs for Android-native NMS processing.
      • Requires ultralytics >= 8.4.142 for the updated export workflow.
      • Removed redundant LiteRT metadata and fallback settings while retaining the graph descriptor.
      • Updated export scripts, examples, documentation, and installation commands accordingly.
    • 🧠 Expanded and clarified model support

      • Depth Estimation is now documented throughout the plugin as a supported task on Android and iOS.
      • YOLO26 w8a32 LiteRT assets are identified as the canonical Android download format.
      • Added guidance for Core AI model export and its supported model assets.
    • 🛠️ Improved project maintenance

      • Updated the iOS dependency and example project to UltralyticsYOLO 8.9.15.
      • Updated the very_good_analysis development dependency range.
      • Simplified agent guidance and refreshed version references across package metadata and documentation.
      • CLA workflow now accepts valid signature comments with surrounding Markdown or trailing whitespace.

    🎯 Purpose & Impact

    • ⚡ More Apple hardware flexibility: iOS 27+ developers can experiment with Apple Core AI execution while keeping the existing Core ML path unchanged.
    • 🔄 Minimal migration impact: Existing official model IDs and Core ML applications continue to work as before. Core AI is selected only by using the .aimodel extension.
    • 📱 Better mobile export compatibility: Android-side NMS handling provides a consistent path for LiteRT and QNN models using raw one-to-many outputs.
    • 📚 Clearer developer experience: Updated examples and documentation make it easier to export compatible models, support Depth Estimation, and understand platform-specific formats.
    • ⚠️ Important Core AI limitations: Core AI assets may be larger, can be slower for some tasks, and may have runtime issues on early iOS 27 releases. Developers should benchmark on physical target devices before production use.

    What's Changed

    Full Changelog: https://github.com/ultralytics/yolo-flutter-app/compare/v0.6.14...v0.6.15

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    English | 简体中文

    🚀 YOLO Flutter - Ultralytics Official Plugin

    Ultralytics Actions .github/workflows/ci.yml codecov CocoaPods

    Ultralytics Discord Ultralytics Forums Ultralytics Reddit

    Ultralytics YOLO Flutter is the official plugin for running YOLO models in Flutter apps on iOS and Android. It supports detection, instance segmentation, semantic segmentation, depth estimation, classification, pose, and OBB on both platforms, with two simple entry points:

    • YOLO for single-image inference
    • YOLOView for real-time camera inference

    The main goal is simple integration: use an official model ID, or drop in your own exported model and let the plugin resolve task metadata for you.

    ✨ Features

    • Official Ultralytics plugin for Flutter
    • One Dart API for Android and iOS
    • Metadata-first model loading with official model download and caching
    • Real-time camera inference and single-image inference
    • Controls for thresholds, accelerator selection, and result streaming
    • YOLO26 and YOLO11 model families supported
    FeatureAndroidiOSDetails
    Object Detection✅✅Bounding boxes, labels, and confidence scores
    Instance Segmentation✅✅Instance masks with boxes and classes
    Semantic Segmentation✅✅Dense class masks for every pixel
    Monocular Depth Estimation✅✅Official LiteRT and Core ML models
    Image Classification✅✅Top class predictions and scores
    Pose Estimation✅✅Keypoints with boxes and confidence scores
    Oriented Bounding Box (OBB) Detection✅✅Rotated boxes and polygon corners
    Real-Time Camera Inference✅✅YOLOView for live camera workflows
    Single-Image Inference✅✅YOLO for image bytes
    Official Models✅✅Discovery, download, and caching for packaged model IDs
    Custom Models✅✅LiteRT (TFLite) on Android, Core ML on iOS, metadata-first tasks
    Qualcomm NPU (QNN)✅—Opt-in Hexagon NPU inference for *_qnn.onnx models on Snapdragon

    ⚡ Quick Start

    Install the package:

    Package: https://pub.dev/packages/ultralytics_yolo

    dependencies:
      ultralytics_yolo: ^0.7.2
    
    flutter pub get
    

    Start with the default official model:

    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}');
        }
      },
    )
    

    For single-image inference:

    final yolo = YOLO(modelPath: 'yolo26n');
    await yolo.loadModel();
    final results = await yolo.predict(imageBytes);
    

    ▶️ Example App | 📖 Installation Guide | ⚡ Quick Start Guide

    Import models from Ultralytics Platform

    In your model's Export tab, click the QR button on a completed LiteRT export (or Core ML for iPhone), then open the app, tap the QR button in the bottom toolbar, and point the existing camera preview at the code. While scanning, the camera dims around a viewfinder; tap Cancel or the QR button again to return to live inference. Use LiteRT with FP32 or W8A32 precision for Android, or Core ML for iPhone; exports must use batch 1 and static input shapes. The example app previews the model before downloading and adds it to the Models picker for selection, removal, and offline use. Tap the active model's name to choose a Custom import or any Official model from compact task rows with size choices. The header shows the task, with a Custom marker for imports, above the model name. The Custom section also provides a Scan QR row with a help button for the Platform export guide. Core AI import links open in the native iOS app.

    Import links authorize one export for 24 hours. Anyone with the link can download it during that time; installed models keep working after the link expires. Each export installs separately, even when model names match. App-link handling belongs to the example app; the plugin's resolver and model picker remain usable with your own download source.

    📦 Model Loading

    The plugin supports three model flows.

    1. Official model IDs

    Use the default official model or a specific official ID and let the plugin handle download and caching:

    final yolo = YOLO(modelPath: YOLO.defaultOfficialModel() ?? 'yolo26n');
    

    Call YOLO.officialModels() to see which official IDs are available on the current platform. Official assets are downloaded on first use and cached in app storage, so the app package does not carry large model files.

    Official assets are maintained as GitHub release assets:

    PlatformRuntime assetRelease
    AndroidLiteRT w8a32 .tfliteyolo-flutter-app v0.7.0
    Android NPU (opt-in)QNN *_v73/_v81_qnn.onnxyolo-flutter-app v0.7.0
    iOSCore ML int8 .mlpackage.zipyolo-ios-app v8.3.0

    The Flutter resolver uses the LiteRT release for Android and the Core ML release for Apple platforms. Every mobile asset uses a fixed 224 × 224 classification input or 640 × 640 input for every other task. These release tags are intentionally pinned for reproducible first-use downloads. See the model guide for the official export matrix, URL patterns, and model properties.

    Core ML (.mlpackage) remains the default. Core AI (.aimodel) is an opt-in for iOS 27 and later devices: pass an .aimodel path, an .aimodel.zip Flutter asset, or an .aimodel.zip URL. It is not available on earlier iOS versions or in the iOS Simulator. The Ultralytics iOS app exposes the same opt-in as a Settings toggle (off by default). The official opt-in assets are the .aimodel.zip files on the yolo-ios-app v8.3.0 release; see the yolo-ios-app performance record for the trade-offs.

    final yolo = YOLO(modelPath: 'https://github.com/ultralytics/yolo-ios-app/releases/download/v8.3.0/yolo26n.aimodel.zip');
    

    2. Your own exported model

    Pass your own exported YOLO model as a local path or Flutter asset path:

    final yolo = YOLO(modelPath: 'assets/models/my-finetuned-model.tflite');
    

    If the exported model includes embedded metadata, the plugin infers task and class labels automatically — it reads Ultralytics' appended-ZIP metadata, with a standard TFLite (FlatBuffers) metadata fallback — so drag-and-drop custom models auto-detect. If metadata is missing, pass task explicitly.

    final yolo = YOLO(
      modelPath: 'assets/models/my-finetuned-model.tflite',
      task: YOLOTask.detect,
    );
    

    3. Remote model URL

    Pass an http or https URL and the plugin will download it into app storage before loading it.

    4. Qualcomm NPU models (Android, opt-in)

    Android ships with LiteRT (TFLite) and that remains the default — nothing changes for existing apps, and the QNN support adds zero bytes to your build. Any model path ending in _qnn.onnx (a Qualcomm QNN context binary exported with yolo export model=yolo26n.pt format=qnn nms=None imgsz=640, or imgsz=224 for classification) is routed to the Hexagon NPU through the ONNX Runtime QNN Execution Provider instead. Export with ultralytics>=8.4.188: earlier releases running onnxruntime-qnn 2.4 or newer write context binaries that fail to load here with Input name not found. nms=None selects raw one-to-many outputs for Android-side NMS.

    Running QNN models requires a Snapdragon device with a Hexagon HTP (Snapdragon 8 Gen 2 or newer for the official _v73 assets; _v81 targets Snapdragon 8 Elite Gen 5) and three additions to your app's android/app/build.gradle:

    android {
        packagingOptions {
            jniLibs {
                useLegacyPackaging = true // the Hexagon DSP loader needs real .so files, not APK-mmapped ones
            }
        }
    }
    
    dependencies {
        implementation 'com.microsoft.onnxruntime:onnxruntime-android-qnn:1.29.0'
        implementation 'com.qualcomm.qti:qnn-runtime:2.51.0' // newer than the AAR's bundled QAIRT; required for the latest Snapdragons
    }
    
    final yolo = YOLO(
      modelPath: 'https://github.com/ultralytics/yolo-flutter-app/releases/download/v0.7.0/yolo26n_v73_qnn.onnx',
      task: YOLOTask.detect,
    );
    

    Without the Gradle opt-in, loading a _qnn.onnx model fails with a clear error and TFLite models are unaffected. The bundled example app follows the same opt-in — it ships without the QNN runtime to keep its download small, so build it with ENABLE_QNN=1 (e.g. ENABLE_QNN=1 flutter run --release) to test the NPU path on a device. See the performance guide for measured CPU/GPU/NPU numbers and tuning notes.

    🧭 Official vs. Custom

    Use caseRecommended path
    Fastest first integrationOfficial model ID like yolo26n
    You trained or exported your own modelCustom asset or local file
    You ship different models per customer or environmentRemote URL
    You need the plugin to infer task automaticallyAny export with metadata
    You have an older or stripped export without metadataCustom model plus explicit task

    For official models, start with YOLO.defaultOfficialModel() or YOLO.officialModels(). For custom models, start with the exported file you actually plan to ship.

    📥 Using Your Own Model

    For custom models, keep the app-side setup minimal.

    • Android native assets: place .tflite files in android/app/src/main/assets
    • Flutter assets on Android: place .tflite files in assets/models/
    • iOS bundle: drag .mlpackage or .mlmodel into ios/Runner.xcworkspace
    • Flutter assets on iOS: place .mlpackage.zip files in assets/models/

    Then point modelPath at that file or asset path.

    Official asset maintenance

    The Android TFLite release assets are generated by scripts/export-tflite-models.py. The script defines the official YOLO26 task/size matrix, w8a32 export settings (int8 weights, FP32 activations — dynamic-range, so no calibration data is needed), optional one-shot TFLite inference verification, and optional GitHub release upload.

    Run it on Linux x86 or macOS with Python ≥3.10:

    uv venv --python 3.12 .venv
    uv pip install --torch-backend cpu "ultralytics-opencv-headless[export-litert]>=8.4.188"
    uv run python scripts/export-tflite-models.py --verify
    

    Use --upload --repo ultralytics/yolo-flutter-app --tag v0.7.0 to replace the existing .tflite assets. Export QNN with Ultralytics using the same task-specific imgsz. Core ML assets are generated by ../yolo-ios-app/scripts/export-models.py and hosted on the existing iOS v8.3.0 release.

    Android inference runs on LiteRT 2.x through an automatic GPU -> CPU accelerator ladder. w8a32 assets are the official download artifacts (the smallest GPU-compatible litert format); the GPU delegate compiles the whole graph on supported devices and otherwise falls back to CPU. GPU coverage still depends on the device driver and graph, so confirm delegate placement on your target hardware (the GPU delegate runs the graph in FP16):

    # Requires ultralytics>=8.4.142
    from ultralytics import YOLO
    
    YOLO("yolo26n.pt").export(format="litert", nms=None, imgsz=640)
    # Classification models use imgsz=224.
    

    🎯 Choosing an API

    Use YOLO when you already have image bytes and want one prediction at a time:

    final yolo = YOLO(modelPath: 'yolo26n');
    await yolo.loadModel();
    final results = await yolo.predict(imageBytes);
    

    Use YOLOView when you want live camera inference:

    final controller = YOLOViewController();
    
    YOLOView(
      modelPath: 'yolo26n',
      controller: controller,
      onResult: (results) {},
    )
    
    await controller.switchModel('assets/models/custom.tflite', YOLOTask.detect);
    

    Use YOLOShowcase when you want the complete Ultralytics camera UI:

    YOLOShowcase(
      initialTask: YOLOTask.detect,
      initialModelSize: 'n',
      onCapture: (bytes) {},
    )
    

    🔄 Migrating From 0.3.x UI APIs

    Version 0.4.0 removes the old Dart-side overlay/control layer. Camera detections are rendered natively by YOLOView; Flutter now owns only the surrounding app controls.

    Removed 0.3.x API0.4.0 replacement
    YOLOOverlay, YOLOOverlayThemeRemove these widgets. Use native YOLOView overlays, or consume onResult/YOLO.predict() data.
    YOLOControlsUse YOLOShowcase for the full UI, or compose the exported Material widgets directly.
    YOLOView.showNativeUIUse YOLOShowcase for built-in controls; use bare YOLOView when building your own UI.
    YOLOView.showOverlays, YOLOView.overlayThemeNo constructor replacement. Camera overlay drawing is native and not themed from Dart.
    YOLOViewController.setShowUIControls()Show/hide your own Flutter controls around YOLOView.
    YOLOViewController.setShowOverlays()Still available: toggles native overlay rendering. capturePhoto(withOverlays: false) only affects captured JPEG output.

    🧩 Recommended Patterns

    App typeModel loading pattern
    Live camera appYOLOView(modelPath: 'yolo26n')
    Photo picker or gallery workflowYOLO(modelPath: 'yolo26n')
    App with your own bundled modelYOLO(modelPath: 'assets/models/custom.tflite')
    Cross-platform Core ML + TFLite appUse platform-appropriate exported assets and let metadata drive task
    App that changes models at runtimeYOLOViewController.switchModel(...)

    📚 Documentation

    GuideDescription
    Installation GuideRequirements and platform setup
    Quick StartMinimal setup for the first working app
    Model GuideOfficial models, custom models, export flow
    Usage GuideCommon app patterns and examples
    API ReferenceFull API surface
    Performance GuideTuning controls and on-device benchmark record
    TroubleshootingCommon problems and fixes

    🤝 Community & Support

    Ultralytics Discord Ultralytics Forums Ultralytics Reddit

    💡 Contribute

    Ultralytics thrives on community collaboration, and we deeply value your contributions! Whether it's bug fixes, feature enhancements, or documentation improvements, your involvement is crucial. Please review our Contributing Guide for detailed insights on how to participate. We also encourage you to share your feedback through our Survey. A heartfelt thank you 🙏 goes out to all our contributors!

    Ultralytics open-source contributors

    📄 License

    Ultralytics offers two licensing options to accommodate diverse needs:

    • AGPL-3.0 License: Ideal for students, researchers, and enthusiasts passionate about open-source collaboration. This OSI-approved license promotes knowledge sharing and open contribution. See the LICENSE file for details.
    • Enterprise License: Designed for commercial applications, this license permits seamless integration of Ultralytics software and AI models into commercial products and services, bypassing the open-source requirements of AGPL-3.0. For commercial use cases, please inquire about an Enterprise License.

    🔗 Related Resources

    Native iOS Development

    If you're interested in using YOLO models directly in iOS applications with Swift (without Flutter), check out our dedicated iOS repository:

    👉 Ultralytics YOLO iOS App - A native iOS application for real-time detection, instance segmentation, semantic segmentation, depth estimation, classification, pose estimation, and OBB detection with Ultralytics YOLO models.

    This repository provides:

    • Pure Swift implementation for iOS
    • Direct Core ML integration
    • Native iOS UI components
    • Example code for various YOLO tasks
    • Optimized for iOS performance

    [!NOTE] On iOS this plugin is built on the shared UltralyticsYOLO Swift package (import UltralyticsYOLO) — the same inference core used by the native iOS app — so both stay in sync from a single source of truth. The plugin's iOS sources (ios/ultralytics_yolo/) hold only the Flutter bridge and the camera/view components, and ship for both Swift Package Manager and CocoaPods.

    📮 Contact

    Encountering issues or have feature requests related to Ultralytics YOLO? Please report them via GitHub Issues. For broader discussions, questions, and community support, join our Discord server!