Skip to content

fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.189 ) - #98

Merged
jazzlyn-bot[bot] merged 1 commit into
mainfrom
renovate/ultralytics-8.x
Aug 30, 2025
Merged

fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.189 )#98
jazzlyn-bot[bot] merged 1 commit into
mainfrom
renovate/ultralytics-8.x

Conversation

@jazzlyn-bot

@jazzlyn-bot jazzlyn-bot Bot commented Aug 18, 2025

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Type Update Change OpenSSF
ultralytics (changelog) project.dependencies patch ==8.3.179 -> ==8.3.189 OpenSSF Scorecard

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

ultralytics/ultralytics (ultralytics)

v8.3.189: - ultralytics 8.3.189 3x faster inplace model.fuse() (#​21844)

Compare Source

🌟 Summary

ultralytics 8.3.189 delivers a 3x faster in-place model.fuse() for leaner, quicker inference, plus better NVIDIA Jetson handling with version-aware detection and more robust autobackend behavior. 🚀

📊 Key Changes

  • In-place layer fusion (primary change) ⚡

    • Conv/BatchNorm and Deconv/BatchNorm fusion now happens in-place, updating existing layers directly with gradients disabled.
    • Smarter bias handling (including transposed conv): correctly registers or updates fused bias without creating new layer objects.
    • Result: faster fuse(), lower memory use, and cleaner models. See PR “3x faster inplace model.fuse()” by @​glenn-jocher.
  • Jetson-aware autobackend improvements ✅

    • On Jetson with JetPack 5: move the model to device before fuse() to avoid runtime issues; other devices fuse first, then move to device.
    • attempt_load_weights now performs fuse().eval() before a single, final .to(device) for consistency.
    • is_jetson is imported and cached for faster repeated checks. See PR “Autobackend model.fuse() order of operations speedup” by @​Laughing-q.
  • Version-aware Jetson detection 🔍

  • Version bump

    • version → 8.3.189.

🎯 Purpose & Impact

  • Faster inference setups and smaller memory footprint 🚀

    • In-place fuse() eliminates extra allocations and object creation, accelerating model preparation and inference.
  • More reliable Jetson deployments, especially on JetPack 5 🧩

    • Adjusted fuse/device order fixes fusion-related errors on edge devices, improving stability in production pipelines.
  • Easier, precise hardware targeting 🛠️

    • Version-aware is_jetson() enables conditional logic by JetPack version (e.g., selecting models, dependencies, or optimizations) with a simple call.
  • Backward compatible and safer defaults ✅

    • Existing usage of model.fuse() and is_jetson() continues to work, now faster and more robust.

Quick examples:

  • Faster in-place fusion

    from ultralytics import YOLO
    
    model = YOLO('yolov8n.pt').model
    model = model.fuse()  # now runs ~3x faster and in-place
  • Jetson version checks

    from ultralytics.utils import is_jetson
    
    if is_jetson():        # Any Jetson
        ...
    if is_jetson(5):       # Specifically JetPack 5
        ...

Happy building and deploying! ✨

What's Changed

Full Changelog: ultralytics/ultralytics@v8.3.188...v8.3.189

v8.3.188: - ultralytics 8.3.188 Faster downloads via a single request (#​21850)

Compare Source

🌟 Summary

Faster, more reliable downloads and smoother developer workflows, plus improved export compatibility and clearer JSON outputs — all wrapped in Ultralytics 8.3.188. 🚀

📊 Key Changes

  • Faster downloads via single request flow and smarter disk-space checks (PR #​21850 by @​glenn-jocher) ⚡
    • Eliminates slow HEAD requests; checks disk only after getting Content-Length.
    • Adaptive buffer size for streaming; precise progress updates.
    • Immediate fail on low disk space to avoid pointless retries.
    • Modernized type hints and cleaner signatures across download utilities.
  • Export compatibility updates (PR #​21758 by @​Y-T-G) 🔄
    • ONNX upper bound removed on Linux/Windows; macOS retains <1.18.0 due to TensorFlow hangs.
    • Updated simplification stack: onnxslim>=0.1.65.
  • JSON outputs include file_name for easier traceability (PR #​21837 by @​olena-hul-dataspan) 🏷️
    • Added "file_name" across RT-DETR, YOLO Detect, and YOLO OBB validators.
  • TQDM robustness improvements (PR #​21849 by @​Laughing-q) 📈
    • Handles total=0 gracefully; richer type hints for better DX.
  • Docs developer UX upgrades (PRs #​21842 by @​glenn-jocher, #​21848 by @​Laughing-q) 🧰
    • Auto-serve docs after build on macOS and Linux with unified logging.
  • Benchmark display polish (PR #​21820 by @​onuralpszr) 🧪
    • Clear, full, and indexed tables with safe null handling.
  • Docs/content touch-ups (PRs #​21835 typo fixes, #​21841 authors metadata) ✨

🎯 Purpose & Impact

  • Speed and reliability: Large model and asset downloads are faster and more robust, improving setup and update times. 🚄
  • Fewer dependency conflicts: Relaxed ONNX constraints reduce install friction on Linux/Windows; macOS remains stable. 🧩
  • Easier result tracking: Including file_name in predictions.json simplifies mapping outputs back to source images. 🔎
  • Better progress feedback: More accurate progress bars and safer behavior for edge cases. ✅
  • Smoother docs workflows: Auto-serve on macOS/Linux and consistent logging streamline local documentation development. 🧑‍💻
  • Cleaner benchmarks: Readable, complete tables help compare formats and performance at a glance. 📊

Upgrade with:
pip install -U ultralytics

What's Changed

New Contributors

Full Changelog: ultralytics/ultralytics@v8.3.187...v8.3.188

v8.3.187: - ultralytics 8.3.187 SAM2: Add SAM2DynamicInteractivePredictor support few-shot inference (#​21232)

Compare Source

🌟 Summary

SAM 2 gets a powerful, training‑free upgrade for interactive, few‑shot multi-object segmentation and tracking, while Ultralytics switches core data operations to Polars for faster, lighter analytics. 🚀

📊 Key Changes

  • SAM2DynamicInteractivePredictor (new, priority)

    • Adds dynamic, interactive few-shot segmentation/tracking across images and video-like sequences.
    • Supports prompts via boxes, points, and masks with real-time memory updates and per-object IDs.
    • Enables continual learning: refine existing objects over time without retraining. 🎯
    • Integrates seamlessly with existing SAM2 models.
    • Docs include examples, API reference, and use cases. See the SAM 2 docs page.
  • Data layer refactor: Pandas ➜ Polars

    • to_df() now returns a Polars DataFrame; CSV/JSON exports use Polars.
    • Removed export helpers: XML, HTML, SQL (and related tests/docs).
    • Training/benchmarks/plotting reading results now use Polars.
    • Dependencies updated: added polars, removed pandas and pandas-stubs.
    • See refactor PR details.
  • Visualization and UX

    • labels.jpg now shows instance counts on class bars for small-class datasets. 📊
    • plot_tune_results() gains consistent Matplotlib styling via @plt_settings() for headless and notebook runs.
    • README/docs banners updated for the YOLOvision event (correct sizing + tracking). 🖼️
  • Documentation improvements

    • SAM 2 docs: detailed guide for dynamic interactive segment-and-track with examples and API reference.
    • OBB task docs: clarify YOLO11 OBB angles must be in [0, 90). 🧭
    • MobileSAM docs: corrected comparison—MobileSAM is “7× smaller, 5× faster” than FastSAM.
    • Docs build reliability improved via mkdocs-ultralytics-plugin>=0.1.29.

🎯 Purpose & Impact

  • Interactive, few-shot segmentation/tracking (SAM2DynamicInteractivePredictor)
    • Purpose: Let users add/track multiple objects over time, refine them interactively, and share memory across frames or independent images—no additional training needed.
    • Impact: Faster video annotation, interactive editing, surveillance, medical/time-series use cases, and semi-automatic dataset labeling with improved consistency. ✨
    • Minimal example:
      from ultralytics.models.sam import SAM2DynamicInteractivePredictor
      
      overrides = dict(model="sam2_t.pt", task="segment", mode="predict", imgsz=1024, conf=0.01, save=False)
      predictor = SAM2DynamicInteractivePredictor(overrides=overrides, max_obj_num=10)

Add an object with a box prompt and store in memory

predictor.inference(img="image1.jpg", bboxes=[[100, 100, 200, 200]], obj_ids=[1], update_memory=True)

Track it in a new image

results = predictor(source="image2.jpg")

Add another object later

predictor.inference(img="image3.jpg", bboxes=[[300, 300, 400, 400]], obj_ids=[2], update_memory=True)

Continue inference

results = predictor(source="image4.jpg")
```
  • Faster, lighter data workflows with Polars

    • Purpose: Improve performance and reduce dependencies across training, validation, benchmarking, and logging.
    • Impact: Quicker data exports and plotting; smaller dependency footprint. Breaking change: code expecting Pandas DataFrames from to_df() must adapt to Polars (e.g., df.to_pandas() if needed). Removed XML/HTML/SQL export helpers—use CSV/JSON or Polars I/O instead.
  • Better plots and docs

    • Purpose: Enhance clarity and reliability of visual outputs and documentation accuracy.
    • Impact: Easier result interpretation (bar labels), more robust plotting in CI/headless environments, clearer OBB labeling constraints, and corrected MobileSAM claims. No changes to training/inference APIs.

Useful links:

  • Read the SAM 2 dynamic interactive docs with examples
  • See the Polars refactor PR
  • Learn about the OBB angle clarification
  • Check the labels.jpg improvement PR
  • Follow the YOLOvision event updates

What's Changed

New Contributors

Full Changelog: ultralytics/ultralytics@v8.3.186...v8.3.187

v8.3.186: - ultralytics 8.3.186 Zero-dependency TQDM progress bars (#​21790)

Compare Source

🌟 Summary

Lean and polished progress bars, sturdier downloads, and smarter GPU handling. v8.3.186 replaces third‑party tqdm with a fast, zero‑dependency TQDM, improves reliability across downloads and exports, and streamlines CI/docs. 🚀

📊 Key Changes

  • Zero‑dependency TQDM progress bars (PR #​21790 by @​glenn-jocher) ✨
    • New ultralytics.utils.tqdm.TQDM with iterator/context support and clean single‑line, rich‑style output.
    • Auto-disables on quiet logs, adapts to terminal width, shows rate/ETA, and throttles in GitHub Actions.
    • tqdm is removed from package dependencies; internal code and docs now use TQDM.
    • New docs reference: utils/tqdm.
    • Minor UX tweak: zip/unzip units now read “files” for clarity.
  • More reliable downloads (PRs #​21791, #​21794) 🔁
    • safe_download() detects partial downloads via Content-Length, logs clear warnings, and cleans incomplete files between retries.
  • Smarter DataLoader memory pinning (PR #​21807) 🧠
    • pin_memory is now enabled only on CUDA systems to avoid unnecessary warnings on CPU-only setups.
  • Export stability fix (PR #​21802) ⚙️
    • Ensures CoreML export tensors are created on the same device as the model (works across CPU/GPU, macOS/Linux).
  • Region counting visualization upgrade (PR #​21805) 🗺️
    • Draws true polygon regions and centers labels at polygon centroids for clearer overlays.
  • GPU monitoring package update (PR #​21795) 🧩
    • Switch from pynvml to NVIDIA’s official nvidia-ml-py package; CI installs it for GPU tests (PR #​21792).
  • Faster installs in notebooks/docs (PR #​21793) ⚡
    • Examples now use !uv pip install ... for speed and reliability.
  • Docs/infra cleanups (PRs #​21797, #​21810 and content/link updates) 🧹
    • Dependency simplification in docs build; downloads badge now links to a richer ClickHouse dashboard.

Minimal example with the new progress bar:

from ultralytics.utils import TQDM

for _ in TQDM(range(100), desc="Processing", unit="items"):
    ...

🎯 Purpose & Impact

  • Lighter installs and fewer external dependencies ➜ smaller footprint, fewer warnings, and more predictable behavior. 📦
  • Cleaner, consistent progress output across terminals and CI, with better rate/ETA reporting. 📈
  • More robust model/dataset downloads; fewer corrupt files and clearer diagnostics on flaky networks. 🌐
  • Reduced “pin_memory” warnings and smarter defaults for CPU/GPU environments. 🧘
  • Fixes export device mismatches for CoreML, improving cross‑platform stability. ✅
  • Better region visualizations improve clarity for zone/region counting solutions. 🎨
  • CI and docs improvements don’t change APIs—no user action required for training, inference, or exports. 🙌

See the Ultralytics Docs for details: https://docs.ultralytics.com

What's Changed

Full Changelog: ultralytics/ultralytics@v8.3.185...v8.3.186

v8.3.185: - Fix TQDM Rich bars to 10 width (#​21789)

Compare Source

🌟 Summary

Improved training progress bars for Rich TQDM users, plus robustness and CI/documentation polish for a smoother overall experience. 🎛️✨

📊 Key Changes

  • Progress bars (priority)
    • Fixed Rich-based TQDM bars to always render clearly: Console width set to 200 and bar width set to 10 when YOLO_TQDM_RICH=true. ✅
    • Resolves missing or truncated bars seen at width 80 in some terminals/CI/Colab.
    • Version bump to 8.3.185.
  • Data loading reliability
    • YOLODataset now defaults to 3 image channels (RGB) if not provided.
    • yolo_bbox2segment() explicitly sets channels=3 to avoid missing-key errors.
  • CI improvements
    • GPU CI job switches to uv for environment management: uv pip install and uv pip list.
    • Removes extra installs (e.g., pynvml, tensorrt, onnxruntime-gpu) to streamline runs.
  • Docs and maintenance
    • Updated link-check workflow to correctly exclude CI files.
    • Clarified SystemLogger.get_metrics() docstring with accurate Python examples.
    • Neural Magic integration links now point to internal docs for a smoother reading experience.

🎯 Purpose & Impact

  • Better UX for progress tracking
    • Rich TQDM users get consistent, readable progress bars across terminals and notebooks. 🙌
    • Default users are unaffected unless YOLO_TQDM_RICH=true is set.
  • More robust workflows
    • Prevents crashes when dataset channel info is missing; safer bbox-to-segmentation conversion. 🛡️
  • Faster, cleaner CI
    • Quicker, more reproducible tests with uv; note some GPU backend tests may have reduced coverage. ⚡
  • Clearer docs
    • Easier navigation and more accurate examples for contributors and users. 📚

Enable Rich progress bars:

  • CLI: YOLO_TQDM_RICH=true yolo train ...
  • Python:
import os
os.environ["YOLO_TQDM_RICH"] = "true"
from ultralytics import YOLO
YOLO("yolo11n.pt").train(data="coco8.yaml", epochs=1)

See the Ultralytics Docs for details: https://docs.ultralytics.com 🚀

What's Changed

Full Changelog: ultralytics/ultralytics@v8.3.184...v8.3.185

v8.3.184: - ultralytics 8.3.184 New SystemLogger class (#​21764)

Compare Source

🌟 Summary

v8.3.184 introduces a new SystemLogger for real-time system metrics and a high-performance ConsoleLogger for early, continuous training log capture — improving observability, reliability, and integrations across YOLO11 workflows. 📈🖥️📝

📊 Key Changes

  • New SystemLogger (ultralytics.utils.logger.SystemLogger)
    • Collects CPU, RAM, disk I/O, network I/O, and NVIDIA GPU stats via pynvml.
    • Integrated into training via platform callbacks; metrics sampled at epoch end.
  • New ConsoleLogger (ultralytics.utils.logger.ConsoleLogger)
    • Captures stdout/stderr and Ultralytics logger output early in training.
    • Deduplicates noisy lines/progress bars and streams to file (train.log) or an API.
    • Enabled via new platform callbacks; logging now starts on trainer initialization.
  • Platform callbacks module
    • ultralytics.utils.callbacks.platform registers start/stop hooks for console capture and metrics collection.
  • Metrics type consistency
    • Checkpoints now save metrics as plain Python floats for better serialization and tool compatibility.
  • Cleaner CI progress bars
    • TQDM updates are throttled on GitHub Actions for cleaner logs; no change for local runs.
  • Documentation improvements
    • API docs now include async functions and a reference for the new NDJSON-to-YOLO converter.
    • New docs pages for platform callbacks and the logger utilities.

🎯 Purpose & Impact

  • Better training visibility and debugging
    • SystemLogger provides actionable telemetry (CPU/GPU/memory/disk/network) to diagnose bottlenecks and environment issues. 🔍
  • More reliable, complete logs
    • ConsoleLogger starts early and deduplicates noise for stable, searchable training logs locally or via APIs. 📜
  • Smoother integrations and exports
    • Float metrics avoid serialization errors when working with Ultralytics HUB, W&B, TensorBoard, JSON/CSV/YAML. 🔗
  • Cleaner CI pipelines
    • Reduced log spam and fewer rate-limit risks on GitHub Actions. ✅
  • Documentation catch-up
    • Clearer API references and discoverability for new utilities and data conversion tools. 📚

Quick start examples:

  • Capture console output to file:
from ultralytics.utils.logger import ConsoleLogger

logger = ConsoleLogger("train.log")
logger.start_capture()
print("Training starts...")
logger.stop_capture()
  • Fetch system metrics on demand:
from ultralytics.utils.logger import SystemLogger

syslog = SystemLogger()
print(syslog.get_metrics())  # {'cpu': ..., 'ram': ..., 'disk': {...}, 'network': {...}, 'gpus': {...}}

See the Ultralytics Docs for details.

What's Changed

Full Changelog: ultralytics/ultralytics@v8.3.183...v8.3.184

v8.3.183: - ultralytics 8.3.183 New NDJSON dataset format support (#​21747)

Compare Source

🌟 Summary

Train YOLO11 models directly from NDJSON datasets with one command — including automatic conversion and image downloading — plus improved YOLOE docs/examples and more reliable GPU CI on GitHub. 🚀

📊 Key Changes

  • NDJSON training support (priority)
    • Built-in NDJSON→YOLO11 converter: convert_ndjson_to_yolo(ndjson_path, output_path=None) by @​glenn-jocher
    • Trainer integration: pass an .ndjson file to model.train(data=...) and it auto-converts and generates data.yaml
    • Fast, resumable downloads: fetches images from URLs with async parallel workers and progress bar ⚡
    • Rich annotation support: handles detection boxes, segments, pose, OBB, and classification; writes the first available type found 🧰
    • Docs updated with NDJSON format examples and advantages
  • YOLOE improvements
    • Corrected pretrained checkpoints and a clearer prompt-free validation example with single_cls=True, plus quieter device selection logs by @​ShuaiLYU 📚
  • CI upgrades
    • Enabled GPU CI on T4 runners, switched to pip for reliability, conditional installs for heavy deps, and adjusted ONNX/TensorRT tests for stability 🔧

Minimal examples:

  • Python:
    from ultralytics import YOLO
    model = YOLO("yolo11n.pt")
    model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)
  • CLI:
    yolo detect train data=path/to/dataset.ndjson model=yolo11n.pt epochs=100 imgsz=640

🎯 Purpose & Impact

  • Simpler data onboarding: Use a single NDJSON file (with remote URLs) to kick off training — no manual conversion required. 🧩
  • Faster, scalable pipelines: Async, parallel downloads and streaming-friendly NDJSON make large datasets more manageable. 🚄
  • Broader task coverage: Works across detection, segmentation, pose, OBB, and classification in a unified flow. 🏷️
  • Fewer mistakes: Updated YOLOE examples ensure correct weights and cleaner validation outputs, reducing user friction. ✅
  • More reliable CI: GPU tests run on GitHub with better dependency handling, improving confidence in CUDA/ONNX/TensorRT paths. 🧪

See the Ultralytics Docs for details.

What's Changed

New Contributors

Full Changelog: ultralytics/ultralytics@v8.3.182...v8.3.183

v8.3.182: - ultralytics 8.3.182 Enable type-checking with py.typed marker (#​21698)

Compare Source

🌟 Summary

Ultralytics 8.3.182 declares the package as “partially typed” for better IDE/type-checker support, plus key robustness and usability tweaks for SAM image sizing and mask plotting. 🧩✨

📊 Key Changes

  • Packaging: Added py.typed with a “partial” marker to enable static type checking tools (mypy/pyright) 🏷️
  • SAM reliability: Synced predictor image size with the model and updated internal embedding size calculations to match imgsz changes, preventing shape mismatches 🧠
  • Plotting flexibility: Annotator.masks now accepts NumPy masks and works without a GPU tensor for easier CPU rendering 🎨
  • Docs clarity: imgsz documented as int; clarified rect behavior and how resizing differs for YOLO vs RTDETR models 📚
  • Version bump to 8.3.182 ✅

Tip: You can now plot masks on CPU without providing a torch image tensor:

  • annotator.masks(np_masks, colors, im_gpu=None, alpha=0.5)

See the Ultralytics Docs for details: https://docs.ultralytics.com

🎯 Purpose & Impact

  • Better developer experience: richer IDE autocompletion, fewer type-related false positives, clearer signals that typing is partial 🛠️
  • More robust SAM workflows: avoids feature map mismatches after changing imgsz and stabilizes mask/prompt behavior across batches 🛡️
  • Easier CPU-only visualization: plot segmentation masks directly with NumPy arrays—no GPU tensor required 🚀
  • Clearer training setup: reduced confusion around imgsz and rect across YOLO and RTDETR, leading to more predictable training outcomes 🧭
  • Safe upgrade: no behavioral changes to core training/inference; improvements are non-breaking and quality-of-life focused ✅

What's Changed

Full Changelog: ultralytics/ultralytics@v8.3.181...v8.3.182

v8.3.181: - ultralytics 8.3.181 Support half inference for SAM models (#​21735)

Compare Source

🌟 Summary

v8.3.181 focuses on safer, faster mixed-precision (FP16) support for SAM/SAM2 and YOLOE pipelines, plus reliability fixes across validation exports, source loading, and single-class training. 🚀

📊 Key Changes

  • SAM FP16 support and dtype/device consistency (PR #​21735, priority)

    • Enables half-precision inference for SAM models with consistent dtype handling across blocks, encoders, decoders, utils, and predict paths.
    • Avoids unnecessary float32 casts; ops now respect input tensor dtype (float16/bfloat16 where safe).
    • Predictor now normalizes before casting and sets model dtype based on args.half; unified self.torch_dtype for prompts/masks/buffers.
  • SAM2 robustness without high_res_features (PR #​21726)

    • Decoder gracefully falls back when high-res features are absent; accepts tensor or dict feature inputs.
  • YOLOE device/half propagation and stability (PR #​21670)

    • Predict now forwards device/half flags; prompt tensors follow model precision; softmax casting simplified for consistency.
  • Validation export consistency across tasks (PR #​21719)

    • New scale_preds unifies scaling to original image sizes for detect, OBB, pose, and segment before saving JSON/TXT.
  • YOLOE visual prompt predictor switching fix (PR #​21731)

    • Predictor instance now correctly switches after initialization when using visual prompts.
  • Single-class training compatibility (PR #​21725)

    • Restores classes with single_cls by safely constraining max class index to 0 (no label mutation).
  • CSV source support for inference (PR #​21729)

    • Dataloaders now accept .csv source lists with whitespace-safe parsing.
  • Streamlit Live Inference improvements (PR #​21553)

    • Accepts multiple export formats (.pt, .onnx, .torchscript, .mlpackage, .engine, OpenVINO) and respects full paths provided by users.
  • YOLOE docs enhancements (PR #​21728)

    • Clearer fine-tuning, linear probing, and new export examples; minor classify docs correction.

🎯 Purpose & Impact

  • Faster inference on modern GPUs ⚡
    • FP16 support for SAM reduces memory use and can speed up inference on compatible hardware.
  • Greater numerical stability and fewer dtype/device surprises 🛡️
    • Consistent dtype handling across SAM/SAM2 and YOLOE reduces precision mismatches and unintended casts.
  • More robust segmentation and visual prompting workflows 🧩
    • SAM2 now works even without high-res features; YOLOE honors device/half flags and switches predictors reliably.
  • Accurate and consistent validation exports across tasks 📏
    • JSON/TXT outputs now consistently match original image sizes for detect/OBB/pose/segment.
  • Easier deployment and input management 🧰
    • CSV sources work out of the box; Streamlit Live Inference loads multiple model formats seamlessly.
  • Smoother single-class training ✅
    • Prevents spurious “class exceeds count” errors, improving reliability for single-class projects.

What's Changed

Full Changelog: ultralytics/ultralytics@v8.3.180...v8.3.181

v8.3.180: - ultralytics 8.3.180 new inference_features method for SAM models (#​21708)

Compare Source

🌟 Summary

SAM/SAM2 get a new feature-based inference path with standardized tensor outputs, smarter prompt scaling, and a cleaner API — making segmentation faster to integrate and more consistent end-to-end. 🚀

📊 Key Changes

  • SAM/SAM2: Added inference_features API to run decoding directly from image features (no full image pass required) 🧠⚡
  • Unified outputs: masks and scores now return torch.Tensor (instead of numpy) for consistent PyTorch workflows 🧱
  • Improved prompt handling: _prepare_prompts now takes src_shape and dst_shape for accurate scaling across pipelines 🎯
  • Refactor & cleanup: SAM2 duplicate prompt_inference path removed; shared feature-based logic used for both models 🧹
  • New utilities:
    • _inference_features internal helpers for SAM and SAM2
    • Public inference_features returning masks and xyxy boxes with scores 📦
  • Docs fixes and enhancements:
    • Corrected SAM predictor example labels format 📝
    • Added a Comet ML tutorial video for YOLO11 integration 🎥
  • Downloader improvements: multi-threaded downloads show progress, clearer logs, and no curl dependency in VOC/VisDrone datasets 📥
  • CI/Infra: actions/checkout updated to v5; SBOM generation made more reliable via a dedicated venv 🛠️

🎯 Purpose & Impact

  • Faster pipelines and easier integration: Feature-level inference lets advanced users cache encoder outputs and run multiple prompt decodes without re-encoding images, reducing latency and compute costs 🚄
  • More robust, less brittle code: Standardized tensor outputs simplify downstream processing, batching, and device management ✅
  • Higher accuracy in prompt placement: Explicit source/destination shapes ensure prompts scale correctly, improving segmentation quality across varied image sizes 🎯
  • Cleaner APIs for SAM/SAM2: Reduced duplication and consistent methods make it easier to build on top of SAM models and maintain custom workflows 🧩
  • Better user experience: Clearer docs and examples reduce errors; improved download feedback and reliability save time and headaches ⏱️
  • Stronger CI and compliance posture: Updated actions and SBOM workflow enhance build reliability and security readiness 🔒

What's Changed

Full Changelog: ultralytics/ultralytics@v8.3.179...v8.3.180


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

@jazzlyn-bot
jazzlyn-bot Bot force-pushed the renovate/ultralytics-8.x branch from ff3dd10 to c220d4c Compare August 19, 2025 00:43
@jazzlyn-bot
jazzlyn-bot Bot force-pushed the renovate/ultralytics-8.x branch from c220d4c to 8123f9b Compare August 19, 2025 12:16
@jazzlyn-bot jazzlyn-bot Bot changed the title fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.180 ) fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.181 ) Aug 19, 2025
@jazzlyn-bot
jazzlyn-bot Bot force-pushed the renovate/ultralytics-8.x branch from 8123f9b to abe899d Compare August 20, 2025 12:16
@jazzlyn-bot jazzlyn-bot Bot changed the title fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.181 ) fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.182 ) Aug 20, 2025
@jazzlyn-bot
jazzlyn-bot Bot force-pushed the renovate/ultralytics-8.x branch from abe899d to 0aa6a91 Compare August 21, 2025 12:17
@jazzlyn-bot jazzlyn-bot Bot changed the title fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.182 ) fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.183 ) Aug 21, 2025
@jazzlyn-bot
jazzlyn-bot Bot force-pushed the renovate/ultralytics-8.x branch from 0aa6a91 to e1e5b61 Compare August 22, 2025 12:16
@jazzlyn-bot jazzlyn-bot Bot changed the title fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.183 ) fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.184 ) Aug 22, 2025
@jazzlyn-bot
jazzlyn-bot Bot force-pushed the renovate/ultralytics-8.x branch 2 times, most recently from b3b4864 to 05f178e Compare August 25, 2025 00:43
@jazzlyn-bot jazzlyn-bot Bot changed the title fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.184 ) fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.185 ) Aug 25, 2025
@jazzlyn-bot
jazzlyn-bot Bot force-pushed the renovate/ultralytics-8.x branch from 05f178e to 7aef3d8 Compare August 26, 2025 00:41
@jazzlyn-bot jazzlyn-bot Bot changed the title fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.185 ) fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.186 ) Aug 26, 2025
@jazzlyn-bot
jazzlyn-bot Bot force-pushed the renovate/ultralytics-8.x branch from 7aef3d8 to 637ab4b Compare August 27, 2025 12:16
@jazzlyn-bot jazzlyn-bot Bot changed the title fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.186 ) fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.187 ) Aug 27, 2025
@jazzlyn-bot
jazzlyn-bot Bot force-pushed the renovate/ultralytics-8.x branch from 637ab4b to e23ce3f Compare August 28, 2025 12:16
@jazzlyn-bot jazzlyn-bot Bot changed the title fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.187 ) fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.188 ) Aug 28, 2025
@jazzlyn-bot
jazzlyn-bot Bot force-pushed the renovate/ultralytics-8.x branch from e23ce3f to 2f4cd37 Compare August 29, 2025 00:40
@jazzlyn-bot jazzlyn-bot Bot changed the title fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.188 ) fix(deps): update dependency ultralytics ( 8.3.179 → 8.3.189 ) Aug 29, 2025
@jazzlyn-bot
jazzlyn-bot Bot force-pushed the renovate/ultralytics-8.x branch from 2f4cd37 to fdb2863 Compare August 29, 2025 12:16
| datasource | package     | from    | to      |
| ---------- | ----------- | ------- | ------- |
| pypi       | ultralytics | 8.3.179 | 8.3.189 |
@jazzlyn-bot
jazzlyn-bot Bot force-pushed the renovate/ultralytics-8.x branch from fdb2863 to 0fadff1 Compare August 30, 2025 00:38
@jazzlyn-bot
jazzlyn-bot Bot merged commit 493c730 into main Aug 30, 2025
1 check passed
@jazzlyn-bot
jazzlyn-bot Bot deleted the renovate/ultralytics-8.x branch August 30, 2025 12:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants