New Release: Ultralytics v8.4.123

:rocket: Ultralytics v8.4.123: Expanded Depth Dataset Support

Ultralytics v8.4.123 makes depth-estimation datasets easier to adopt across training, NDJSON conversion, and Ultralytics Platform workflows. Standard scaled PNG files and floating-point NPY depth maps now work directly, reducing preprocessing and improving dataset portability. :glowing_star:

:sparkles: New Features

:card_index_dividers: Broader depth format support

  • Use standard 16-bit grayscale PNG depth maps without Ultralytics-specific embedded metadata.
  • Load floating-point .npy depth maps containing values in meters.
  • Match depth files by filename stem across parallel images/ and depth/ directories.
  • Prefer PNG files automatically, with fallback to NPY files.

:gear: Configurable depth scaling

Dataset YAML files now support an optional depth_scale field:

depth_scale: 1000

The default value is 1000, interpreting PNG values as millimeters. Other native dataset conventions are also supported, including:

  • KITTI: 256
  • Virtual KITTI 2: 100

This preserves each dataset’s intended precision and depth range without requiring custom conversions.

:inbox_tray: NDJSON depth dataset support

  • Depth records now require only a paired depth.url.
  • Dataset-level depth_scale values are retained during NDJSON-to-YOLO conversion.
  • Large downloads are processed in batches to reduce memory usage.

:cloud: Ultralytics Platform Improvements

Depth datasets can now be uploaded, exported, and used for training through the Ultralytics Platform, enabling a more complete end-to-end depth workflow.

NDJSON exports now include:

  • The depth task type
  • Depth scaling configuration
  • Paired depth URLs

Depth estimation is also fully listed among the Platform’s supported task types. :rocket:

:hammer_and_wrench: Validation and Reliability Improvements

  • Depth maps may have a lower resolution than their paired RGB images when aspect ratios match.
  • Invalid depth values—including zero, NaN, and infinity—are handled safely.
  • PNG-to-NPY fallback improves compatibility with mixed-format datasets.
  • Batched processing reduces memory pressure during large dataset downloads.

:books: Dataset Configuration Updates

Built-in depth datasets now retain their native storage scales instead of converting all data into meter-based metadata PNGs.

Documentation and tests were updated across ARKitScenes, DIODE, KITTI, TartanAir, Virtual KITTI 2, Depth8, and additional depth datasets. The updated depth dataset format documentation explains the supported structure and scaling behavior in detail.

:warning: Migration Note

Older self-describing Ultralytics depth PNGs that depend on embedded metadata may need conversion to the new scaled PNG format. Review the depth dataset documentation before migrating existing pipelines.

:wrench: What Changed

This release was implemented in PR #25859: Accept existing depth dataset formats, contributed by GitHub author @glenn-jocher.

You can review every change in the v8.4.122 to v8.4.123 full changelog, including the associated code, documentation, and test updates.

:package: Try It Today

Upgrade to the latest release:

pip install -U ultralytics

Visit the Ultralytics v8.4.123 release page for the official release details, then try your existing PNG or NPY depth datasets and share your feedback with the community. :raising_hands: