Ultralytics v8.4.104: Introducing YOLO26-Depth
Ultralytics v8.4.104 expands YOLO26 with complete monocular depth estimation support. You can now predict per-pixel scene depth from a single RGB image using the familiar Ultralytics YOLO training, validation, prediction, calibration, visualization, and export workflows. ![]()
![]()
This release also delivers faster loss computation, more reliable training logs, broader dataset support, and important export and workflow fixes.
New Features
YOLO26-Depth
The new YOLO26-Depth family includes:
yolo26n-depthyolo26s-depthyolo26m-depthyolo26l-depthyolo26x-depth
A DPT-style head fuses multi-scale YOLO26 features into dense depth maps aligned with the input image. Both unbounded log-depth and bounded depth output modes are supported, enabling indoor and long-range outdoor applications.
Depth is now a first-class Ultralytics task across the CLI and Python API:
yolo depth train
yolo depth val
yolo depth predict
yolo export
Python workflows support prediction, training, validation, export, and model.calibrate() for adapting absolute depth scale to specific cameras or environments.
The implementation arrives through PR #25065: New YOLO26-Depth monocular depth estimation task by @Bovey0809. ![]()
Depth Data, Metrics, and Visualization
The new depth pipeline includes:
- Paired RGB images and
.npyfloat32 depth maps - Synchronized geometric transforms and flips
- Validation for missing, corrupt, unreadable, or incorrectly shaped targets
- Depth-specific losses with scale-aware accuracy and multi-scale gradient matching
- Delta1, delta2, delta3, absolute relative error, RMSE, and SILog metrics
- Safe handling of sparse or invalid ground-truth pixels
DepthMapresults, heatmap plotting, and depth-aware summaries- Direct tensor access through
result.depth.data - Existing
.cpu()and.numpy()conversion workflows - Depth8, an eight-image dataset for rapid testing and debugging
- Depth-target support in NDJSON dataset conversion
Broader Dataset and Deployment Support
Configurations and documentation now cover datasets including NYU Depth V2, KITTI, SUN RGB-D, ARKitScenes, DIODE, Hypersim, TartanAir, and Virtual KITTI 2.
Released models are pretrained on approximately 2.19 million images spanning indoor, outdoor, synthetic, real-world, and pseudo-labeled data. Documented zero-shot evaluation includes NYU Depth V2, KITTI, ETH3D, Make3D, and iBims-1.
Depth models can be exported to deployment formats such as ONNX and TensorRT, with dynamic output dimensions that follow the input image shape. Unsupported NMS and IMX export configurations are rejected explicitly.
Performance and Training Improvements
- DFL now computes
log_softmaxonce instead of using two cross-entropy calls, improving the DFL loss path by approximately 1.5โ1.75ร in benchmarks through PR #25329 by @raimbekovm. - TaskAlignedAssigner candidate accumulation is batched into a single
scatter_add_, reducing kernel launches through PR #25326 by @raimbekovm. - Criteria now return loss components as name-keyed dictionaries, improving logging across detection, segmentation, pose, classification, distillation, and depth tasks through PR #25330 by @Laughing-q.
- Semantic-mask bit depth is cached instead of reopening mask files every epoch through PR #24985 by @Y-T-G.
- Objects365 documentation now includes pretrained YOLO26 detection and segmentation checkpoints through PR #25333 by @Y-T-G.
- The documented
ultralytics-inferenceversion is updated to0.0.30through PR #25339 by @onuralpszr.
Bug Fixes and Reliability
- Export metadata now converts
Pathvalues to strings, preventing ONNX metadata reload failures through PR #25324 by @glenn-jocher. - PyPI publishing runs are queued and failed uploads gain retry handling through PR #25331 by @glenn-jocher.
- macOS 26 CI parallelism and the Streamlit Inference model list are hardened through PR #25337 by @glenn-jocher.
- TensorRT documentation now correctly lists supported
opsetandworkspacearguments through PR #25338 by @amanharshx. - Tar archive cleanup with
safe_download(..., delete=True)no longer crashes through PR #25340 by @glenn-jocher. - Plotting threads are now non-daemon so generated plots finish writing before interpreter shutdown through PR #25341 by @glenn-jocher.
Why It Matters
YOLO26-Depth brings scene geometry into the same end-to-end workflow already used for other Ultralytics tasks. It opens new possibilities for robotics, navigation, AR/VR, autonomous systems, 3D reconstruction, and spatial awarenessโwithout introducing a separate training or deployment stack.
YOLO26 remains the recommended latest stable model family for production workflows. For managed annotation, cloud or local training, deployment, monitoring, and collaboration, you can also use the Ultralytics Platform.
Try v8.4.104
Upgrade today with:
pip install -U ultralytics
Explore the v8.4.104 release, review the complete v8.4.103-to-v8.4.104 changelog, and let us know how YOLO26-Depth performs in your projects. Your feedback, benchmarks, and issue reports help the Ultralytics team and YOLO community keep improving every release. ![]()