DistYOLO extends the Ultralytics YOLO implementation (YOLOv11) by augmenting the model output to include a discrete probability distribution over each predicted bounding box. This enables downstream systems to reason about detection uncertainty rather than relying solely on point estimates.
Training and inference follow the same interface as YOLOv11. For general usage patterns, CLI options, and configuration details, refer to the Ultralytics YOLOv11 documentation.
An example demonstrating how to extract the discrete bounding box distribution is included in this repository.
This work was developed as part of the engineering honours thesis Belief-Space Planning for a Vision-Guided Lunar Rover. A summary of results and application context is available here.
Training uses the same interface as Ultralytics YOLOv11:
from distyolo import DistYOLO
model = DistYOLO(data="data.yaml", epochs=100, batch=12)
results = model.train(**override)
print(results)data.yaml should follow the standard YOLO dataset format:
train: "path to training set text file"
val: "path to validation set text file"
test: "path to test set text file"
nc: <number of classes>
labels: ["class A", "class B", "..."]The train, val, and test entries should reference text files containing paths to the corresponding image sets.
Refer to example.py for a minimal inference example, including extraction of the predicted bounding box distribution.