Skip to content

YOLO26 Updates#223

Merged
glenn-jocher merged 17 commits intomainfrom
yolo26-minimal
Feb 8, 2026
Merged

YOLO26 Updates#223
glenn-jocher merged 17 commits intomainfrom
yolo26-minimal

Conversation

@glenn-jocher
Copy link
Member

@glenn-jocher glenn-jocher commented Feb 8, 2026

🛠️ PR Summary

Made with ❤️ by Ultralytics Actions

🌟 Summary

Updates the iOS app and Swift YOLO package to default to YOLO26 (NMS-free) models, with new post-processing paths and improved Core ML/Vision handling 🚀📱

📊 Key Changes

  • Migration from YOLO11 → YOLO26 across example apps, tests, docs, and remote model URLs (e.g., yolo11nyolo26n) 🔄
  • Adds explicit support for YOLO26 “NMS-free” outputs in the Swift package:
    • BasePredictor now detects whether a model requires NMS via the model’s user-defined metadata (nms=false) 🧠
    • ObjectDetector can now parse raw tensor outputs (MLMultiArray) from Vision for YOLO26 detection models (end-to-end format), while still supporting older VNRecognizedObjectObservation-style outputs ✅
    • Segmenter, PoseEstimator, and ObbDetector gain end-to-end YOLO26 output parsing paths (new post-processing functions) 🎯
  • Core ML configuration update: sets MLModelConfiguration.computeUnits = .all for better on-device performance (CPU+GPU+Neural Engine) ⚡️
  • OBB rendering fix: oriented boxes are now converted to pixel-space polygons to avoid distortion on non-square views (prevents “parallelogram” artifacts) 📐🖼️
  • Model packaging cleanup:
    • Consolidates app model folders into a single Models/ structure (e.g., Models/Detect, Models/Segment, etc.) 🗂️
    • Updates the Xcode project resources to bundle one Models folder instead of multiple task folders 🔧
  • External display handling improvements: introduces an iOS 16+ compatible external-screen check using connected scenes (more reliable than only UIScreen.screens.count) 🖥️
  • Tooling updates:
    • download-models.sh now downloads YOLO26 models into the new folder structure and handles nested zip extraction more robustly 📥
    • Adds new scripts/export-models.py to export and copy 25 YOLO26 Core ML models (sizes × tasks) into the app folders and zip them for releases 🧰
  • Docs + requirements refresh:
    • Swift package minimums updated to iOS 16+ / macOS 13+, Swift 5.10+, Xcode 15.3+ 📌
    • Documentation now consistently notes YOLO26 detect is NMS-free (export with nms=False) 📝
  • Misc cleanup: removes various *.backup test files and .gitkeep placeholders 🧹

🎯 Purpose & Impact

  • Easier “latest default” experience: users get the recommended YOLO26 models everywhere by default 🏁
  • Correct results with YOLO26 Core ML exports: NMS-free models no longer rely on Vision’s built-in NMS pipeline; the app now parses raw outputs properly, improving compatibility and reducing confusion ✅📦
  • Better performance on Apple hardware: enabling .all compute units can improve speed and efficiency on supported devices (especially with Neural Engine) ⚡️🔋
  • More accurate OBB visualization: rotated boxes render correctly across different aspect ratios, improving UI trustworthiness for OBB tasks 🎯🖼️
  • Cleaner model management: unified Models/ structure plus improved scripts makes downloading/exporting models simpler for developers and CI setups 🛠️
  • Potential breaking change: projects targeting older OS/toolchains may need upgrades due to the iOS 16+/Xcode 15.3+/Swift 5.10+ requirement bump ⚠️

@UltralyticsAssistant UltralyticsAssistant added documentation Improvements or additions to documentation enhancement New feature or request fixed Bug has been resolved labels Feb 8, 2026
@UltralyticsAssistant
Copy link
Member

👋 Hello @glenn-jocher, thank you for submitting a ultralytics/yolo-ios-app 🚀 PR! This is an automated message to help with PR intake—an Ultralytics engineer will assist shortly. Please review the checklist below to ensure a smooth merge:

-✅ Define a Purpose: Clearly explain the purpose of your fix or feature in your PR description, and link to any relevant issues. Ensure your commit messages are clear, concise, and adhere to the project's conventions.
-✅ Synchronize with Source: Confirm your PR is synchronized with the ultralytics/yolo-ios-app main branch. If it's behind, update it by clicking the 'Update branch' button or by running git pull and git merge main locally.
-✅ Ensure CI Checks Pass: Verify all Ultralytics Continuous Integration (CI) checks are passing. If any checks fail, please address the issues.
-✅ Update Documentation: Update the relevant documentation for any new or modified features.
-✅ Add Tests: If applicable, include or update tests to cover your changes, and confirm that all tests are passing.
-✅ Sign the CLA: Please ensure you have signed our Contributor License Agreement if this is your first Ultralytics PR by writing "I have read the CLA Document and I sign the CLA" in a new message.
-✅ Minimize Changes: Limit your changes to the minimum necessary for your bug fix or feature addition. "It is not daily increase but daily decrease, hack away the unessential. The closer to the source, the less wastage there is." — Bruce Lee

For more guidance, please refer to our Contributing Guide. Don't hesitate to leave a comment if you have any questions. Thank you for contributing to Ultralytics! 🚀

Copy link
Member

@UltralyticsAssistant UltralyticsAssistant left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 PR Review

Made with ❤️ by Ultralytics Actions

Clean update overall. The code changes look solid and I didn’t find any functional bugs or reliability issues in the diff.

⚠️ Large PR: Review focused on critical issues. Some details may not be covered.

@codecov
Copy link

codecov bot commented Feb 8, 2026

Codecov Report

❌ Patch coverage is 12.45902% with 267 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
Sources/YOLO/ObjectDetector.swift 0.00% 113 Missing ⚠️
Sources/YOLO/PoseEstimator.swift 0.00% 63 Missing ⚠️
Sources/YOLO/Segmenter.swift 0.00% 41 Missing ⚠️
Sources/YOLO/ObbDetector.swift 0.00% 37 Missing ⚠️
Sources/YOLO/BasePredictor.swift 7.14% 13 Missing ⚠️

📢 Thoughts on this report? Let us know!

@glenn-jocher glenn-jocher merged commit 5ca11d6 into main Feb 8, 2026
3 of 5 checks passed
@glenn-jocher glenn-jocher deleted the yolo26-minimal branch February 8, 2026 01:58
@UltralyticsAssistant
Copy link
Member

Merged! Huge thanks @glenn-jocher for driving this iOS + Swift package upgrade to YOLO26 as the new default—this is a major quality-of-life win for everyone building on Apple platforms.

“Perfection is not attainable, but if we chase perfection we can catch excellence.” — Vince Lombardi

This PR is a great example of that: moving to YOLO26’s NMS-free outputs, adding robust raw-tensor post-processing across tasks, enabling .all compute units for better on-device performance, fixing OBB rendering, and cleaning up model packaging/scripts all add up to a smoother “it just works” experience. It brings the app in line with the recommended model family and makes Core ML + Vision behavior far clearer for users.

Appreciate the thoughtful engineering and polish—this sets a strong foundation for anyone deploying YOLO26 via the Ultralytics iOS app repo and the wider ecosystem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request fixed Bug has been resolved

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants