New Release: Ultralytics v8.4.43

Ultralytics v8.4.43 is out :tada:

Quick summary: Ultralytics v8.4.43 improves dataset reliability by fixing how NDJSON and Ultralytics Platform datasets are resolved during validation, not just training :white_check_mark: This makes train/val behavior more consistent and helps prevent validation-time dataset setup issues, especially in distributed runs :rocket:

Highlights

The biggest change in v8.4.43 is a unified dataset resolution path for NDJSON and ul://.../datasets/... sources.

If you’re using Ultralytics YOLO with NDJSON datasets or datasets hosted on the Ultralytics Platform, validation now follows the same automatic conversion logic as training. That means fewer surprises, fewer setup failures, and smoother standalone validation workflows :puzzle_piece:

New Features and Improvements

:white_check_mark: Unified NDJSON and Platform dataset handling

In PR #24365 by @glenn-jocher, we introduced a shared resolver, convert_ndjson_to_yolo_if_needed(), in ultralytics.data.utils.

This update:

  • adds a reusable dataset conversion utility
  • replaces the previous train-only inline conversion path
  • applies the same logic during validation
  • correctly resolves both .ndjson and ul://... dataset sources in standalone val runs
  • adds distributed-safe handling to reduce race conditions in multi-GPU and distributed environments :gear:

:books: Documentation update

The new utility function is now included in the data utilities docs reference, making it easier to discover and use in advanced workflows.

:broom: Minor cleanup

In PR #24351 by @ahmet-f-gumustas, redundant for ... in dict.keys() patterns were replaced with direct dictionary iteration across several files.

This is a small internal code-quality improvement with no intended functional change.

Why this matters

More consistent train + val behavior

Users working with NDJSON or Platform datasets now get the same automatic dataset conversion flow across both stages :white_check_mark:

Fewer validation-time failures

A key practical benefit of v8.4.43 is that validation is now much more robust when data is provided as .ndjson files or ul://... URIs :shield:

Better distributed stability

For multi-process and multi-GPU validation, dataset conversion is now coordinated more safely to avoid duplicate work and race issues :desktop_computer::desktop_computer:

Low upgrade risk

This release is focused and lightweight: aside from the dataset-resolution fix, the rest is mainly internal cleanup :+1:

What changed

You can explore the full diff in the v8.4.42 to v8.4.43 changelog comparison, or view the release directly on the Ultralytics v8.4.43 release page.

Try it out

To upgrade:

pip install -U ultralytics

If you’re validating NDJSON datasets or using datasets from the Ultralytics Platform, this is a great release to pull in right away.

As always, give it a try and let us know how it works for your workflows :speech_balloon: Your feedback helps the Ultralytics team and the broader YOLO community keep improving things.