lunar-trn-seg — lunar crater segmentation (NASA Crater Detection Challenge)
YOLO26s-seg trained on the NASA Crater Detection Challenge dataset: 4,150 synthetic
shaded-relief renders (2,592×2,048) with ellipse ground truth. Instance masks are
converted to ellipses with cv2.fitEllipse (rotation-aware).
Results
Held-out split of 200 images, official challenge scorer (scorer.py), output truncated to
the 11 most confident detections per image:
| Metric | Value |
|---|---|
| CDA | 91.97 (95% bootstrap CI 89.93–93.80) |
| Box baselines | v1s 76.29 · v1n 71.90 |
Why segmentation: the CDA metric scores ellipses including their rotation. Box detections
cannot express rotation; masks + fitEllipse recover it (the box head of this model even
scores lower box-mAP than the box detector, yet CDA is +15.7 higher).
Usage
from ultralytics import YOLO
model = YOLO("best.pt")
results = model.predict("lunar_image.png", imgsz=1024, conf=0.05)
# masks -> ellipses: cv2.fitEllipse on each instance mask
Training/inference/evaluation code: https://github.com/huseyincavusbi/lunar-trn
Training
| Architecture | YOLO26s-seg |
| Data | NASA Crater Detection Challenge (4,150 synthetic renders; 3,950/200 split) |
| Input | imgsz 1024, batch 8 |
| Epochs | 15 |
| GPU | AMD RX 9060 XT 16 GB (ROCm) |
Limitations
- Synthetic domain. Zero-shot transfer to real lunar imagery is poor (mAP50 ≈ 0.03 at
the matched inference scale; 0.09 at the best inference scale). The companion model
huseyincavus/lunar-trn-ft-realis fine-tuned on real imagery. - The official CDA metric depends strongly on output truncation (top-k); this number uses k=11, the optimum on the held-out split.
- Research model; not flight-qualified.
License
Weights: MIT. Training data: NASA Crater Detection Challenge (research use; see the challenge terms).