Instructions to use blackbeedrones/sae-2026-hang-all-yolo26n-seg-v2-960 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- ultralytics
How to use blackbeedrones/sae-2026-hang-all-yolo26n-seg-v2-960 with ultralytics:
# Couldn't find a valid YOLO version tag. # Replace XX with the correct version. from ultralytics import YOLOvXX model = YOLOvXX.from_pretrained("blackbeedrones/sae-2026-hang-all-yolo26n-seg-v2-960") source = 'http://images.cocodataset.org/val2017/000000039769.jpg' model.predict(source=source, save=True) - Notebooks
- Google Colab
- Kaggle
SAE Eletroquad 2026 - Hook segmentation (YOLO26n-seg)
Instance-segmentation model for the "hang the wire" hook mission of the SAE
Brasil Eletroquad 2026 competition, trained by
Black Bee Drones. It segments two
classes - rose (each visible segment of the suspended rope) and sphere
(the orange sphere on the rope) - and runs on every control-loop tick of the
mission. The team finished 2nd overall
(official results).
- Base model:
yolo26n-seg.pt(Ultralytics) - Task: instance segmentation
- Classes:
rose(0),sphere(1) - Input size: 960
- Dataset: blackbeedrones/sae-2026-hook
Mission
The drone takes off, finds the orange sphere mounted on one of two suspended
ropes, parks a fixed distance from it, picks which side of the rope to fly
along, turns perpendicular to the rope, descends on LIDAR, releases a hook with
a servo, and lands. Because each visible rope segment is its own rose
instance, the controller can measure both rope arms and choose a side. The
mission runs on a Jetson Orin Nano through
Nectar SDK.
Results
Evaluated on the dataset's test split (395 images, 501 instances), NMS
iou=0.6. The numbers below are Ultralytics-native (COCO 101-point
interpolation); see SUMMARY.md for the full breakdown, including
the SDK/torchmetrics figures (which run a different curve discretization and
read systematically lower at mAP@50-95).
| Metric | Box | Mask |
|---|---|---|
| mAP@50 | 0.9929 | 0.9844 |
| mAP@50-95 | 0.9640 | 0.8535 |
Per-class mAP@50-95:
| Class | Box | Mask |
|---|---|---|
rose |
0.9450 | 0.7555 |
sphere |
0.9831 | 0.9515 |
Operating-point precision / recall / F1 at the per-class optimal confidences (from the F1 curve):
| Class | conf | Box P / R / F1 | Mask P / R / F1 |
|---|---|---|---|
rose |
0.47 | 0.963 / 0.975 / 0.969 | 0.946 / 0.958 / 0.952 |
sphere |
0.70 | 0.987 / 0.993 / 0.990 | 0.987 / 0.993 / 0.990 |
Recommended inference settings
| Setting | Value |
|---|---|
imgsz |
960 |
iou (NMS) |
0.6 |
conf (rose) |
0.47 |
conf (sphere) |
0.70 |
Predict at the lower of the two confidences and apply a per-class filter, so each class keeps its own threshold.
Usage
Nectar SDK
from nectar.ai.segmentation import Segmentor
from nectar.ai.detection.postprocess import PerClassConfidenceFilter
# loads weights/best.pt from the Hub
segmentor = Segmentor("blackbeedrones/sae-2026-hang-all-yolo26n-seg-v2-960")
segmentor.load()
result = segmentor.segment(image, conf=0.47, iou=0.6, imgsz=960)
# rose=0, sphere=1
per_class = PerClassConfidenceFilter(threshold_mapping={0: 0.47, 1: 0.70}, default_threshold=0.47)
kept = per_class.filter(result.to_supervision())
for seg in result:
print(seg.class_name, f"{seg.confidence:.2f}", f"area={seg.mask_area}px")
Ultralytics
from huggingface_hub import hf_hub_download
from ultralytics import YOLO
weights = hf_hub_download("blackbeedrones/sae-2026-hang-all-yolo26n-seg-v2-960", "weights/best.pt")
model = YOLO(weights)
results = model.predict("image.jpg", imgsz=960, iou=0.6, conf=0.47)
Training
Trained with Ultralytics through the Nectar SDK on
blackbeedrones/sae-2026-hook
(Roboflow sae-2026-hang v2: 9,235 train / 396 val / 395 test images). Full
configuration in experiment.config.yaml.
| Parameter | Value |
|---|---|
| Base model | yolo26n-seg.pt |
| Image size | 960 |
| Batch size | 48 |
| Epochs | up to 250, early-stopped at 165 (patience 20) |
| LR / schedule | 0.01, linear with cosine (cos_lr), lrf=0.01 |
| Weight decay | 5e-4 |
| Warmup | 3 epochs |
| EMA | on (decay 0.9997) |
| Augmentation | mosaic 1.0 (closed last 10 epochs), HSV, fliplr 0.5, scale 0.5, translate 0.1 |
| Mask | overlap_mask=true, mask_ratio=4 |
| Seed | 42 |
Files
weights/best.pt- recommended checkpoint (best validation).weights/last.pt,weights/epoch*.pt- last and per-epoch checkpoints.evaluation/- curves, confusion matrix, prediction samples, per-class CSV/JSON.experiment.config.yaml,args.yaml,results.csv- training configuration and log.SUMMARY.md- full evaluation breakdown and threshold analysis.
References
- Downloads last month
- 4,056
Dataset used to train blackbeedrones/sae-2026-hang-all-yolo26n-seg-v2-960
Collection including blackbeedrones/sae-2026-hang-all-yolo26n-seg-v2-960
Evaluation results
- Mask mAP@50 on SAE Eletroquad 2026 - Hooktest set self-reported0.984
- Mask mAP@50-95 on SAE Eletroquad 2026 - Hooktest set self-reported0.854
- Box mAP@50 on SAE Eletroquad 2026 - Hooktest set self-reported0.993
- Box mAP@50-95 on SAE Eletroquad 2026 - Hooktest set self-reported0.964



