Instructions to use merdiofrivia/YOLO26-Bird with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- ultralytics
How to use merdiofrivia/YOLO26-Bird with ultralytics:
# Couldn't find a valid YOLO version tag. # Replace XX with the correct version. from ultralytics import YOLOvXX model = YOLOvXX.from_pretrained("merdiofrivia/YOLO26-Bird") source = 'http://images.cocodataset.org/val2017/000000039769.jpg' model.predict(source=source, save=True) - Notebooks
- Google Colab
- Kaggle
YOLO26-Bird — single-class bird-dropping detector
Fine-tuned Ultralytics YOLO26-L detector for a single class: bird-droppings on
solar-panel imagery. Intended as a soiling/obstruction screen feeding the Szászberek
solar-inspection pipeline.
⚠️ Read the evaluation section before using. Validation looks reasonable (mAP50 ≈ 0.60) but the held-out test mAP50 is only ≈ 0.22. There is a large val→test generalization gap. Treat this as a v0 baseline, not a production model.
Model
- Base:
yolo26l.pt(COCO-pretrained, ~24.7M params, 86.1 GFLOPs) - Task: detection,
nc=1,names: ['bird-droppings'] - Train config: imgsz 640, batch 16, optimizer
auto, 100 epochs requested, patience 30 → early-stopped at epoch 70, best @ epoch 40. - Files:
weights/best.pt(use this),weights/last.pt, fullresults/.
Data
Built by unifying three public bird-dropping detection datasets into one single-class set, with cross-dataset perceptual-hash (pHash) dedup to prevent train/val/test leakage:
| Source | Role |
|---|---|
Roboflow dusty-and-bird-droppings |
bird-dropping boxes |
Roboflow bird-drop-detection-lot2 |
bird-dropping boxes |
GitHub IsuruMunasinghe98/solar-panel-inspection-dataset (COCO) |
bird-dropping boxes |
All non-bird classes were dropped; all bird classes remapped to class 0. Split sizes:
| Split | Images |
|---|---|
| train | 1,909 (723 positive / 1,186 background) |
| valid | 189 |
| test | 106 |
Evaluation
| Split | Images | Precision | Recall | mAP50 | mAP50-95 |
|---|---|---|---|---|---|
| val (best ep40) | 189 | 0.561 | 0.634 | 0.598 | 0.231 |
| test (held-out) | 106 | 0.367 | 0.250 | 0.220 | 0.075 |
Interpretation. The ~0.38 mAP50 drop from val to test indicates the three source datasets differ in capture conditions (altitude, resolution, panel type, lighting), and the model has not learned a distribution-robust notion of "bird dropping." Recall on the held-out test is low (0.25) — it misses most droppings it hasn't seen close analogues of.
To improve: add site-specific labeled droppings from the actual Szászberek flights, harder negatives, and stronger augmentation; consider a single-source curated test set so the metric reflects deployment conditions.
Usage
from ultralytics import YOLO
model = YOLO("weights/best.pt")
results = model.predict("panel_image.jpg", conf=0.25)
Provenance
Trained on an NVIDIA L4 (CUDA), Ultralytics 8.4.81, torch 2.8.0+cu128. This is a side model for the Szászberek inspection project and is not the thermal fault detector used in the main RGB→thermal cascade.
- Downloads last month
- 51