Object Detection
ultralytics
yolo11
wildlife
bird
synthet commited on
Commit
9c58f35
·
verified ·
1 Parent(s): 8218cef

Add bird_detect_v1 (CUB + teacher pseudo-labels); model card documents v0 and v1

Browse files
Files changed (2) hide show
  1. README.md +91 -61
  2. bird_detect_v1.pt +3 -0
README.md CHANGED
@@ -1,61 +1,91 @@
1
- ---
2
- license: mit
3
- tags:
4
- - ultralytics
5
- - yolo11
6
- - object-detection
7
- - wildlife
8
- - bird
9
- library_name: ultralytics
10
- base_model: ultralytics/yolo11n
11
- datasets:
12
- - synthet/image-scoring-model
13
- ---
14
-
15
- # bird-detect-v0
16
-
17
- YOLO11n detect model fine-tuned on CUB-200-2011 bird bounding boxes (single class `bird`).
18
- Companion to [synthet/eye-pose-v0](https://huggingface.co/synthet/eye-pose-v0) for subject localization
19
- when eye keypoints are not required (species crops, gating, counting).
20
-
21
- Used with the [image-scoring-model](https://github.com/synthet/image-scoring-model) `eye-quality detect` CLI.
22
-
23
- ## Class
24
-
25
- | Index | Name |
26
- |------:|------|
27
- | 0 | bird |
28
-
29
- ## Training
30
-
31
- - **Base:** YOLO11n (`yolo11n.pt`)
32
- - **Dataset:** CUB-200-2011 boxes via `data/wildlife_bird_det` (~10k train / 1.7k val)
33
- - **Epochs:** 100 (imgsz 640, batch 16)
34
- - **Final validation (epoch 100):**
35
- - Box mAP50: **0.994**
36
- - Box mAP50-95: **0.892**
37
- - Precision: **0.993**
38
- - Recall: **0.997**
39
-
40
- ## Usage
41
-
42
- ```python
43
- from ultralytics import YOLO
44
-
45
- model = YOLO("hf://synthet/bird-detect-v0/bird_detect_v0.pt")
46
- results = model.predict("bird.jpg", imgsz=640)
47
- ```
48
-
49
- Or with the `eye_quality` package:
50
-
51
- ```bash
52
- pip install -e "git+https://github.com/synthet/image-scoring-model.git"
53
- huggingface-cli download synthet/bird-detect-v0 bird_detect_v0.pt --local-dir models/
54
- python -m eye_quality detect bird.jpg --weights models/bird_detect_v0.pt
55
- ```
56
-
57
- ## Limitations
58
-
59
- - Single-class bird boxes only; not a multi-species detector.
60
- - Trained on CUB-200 studio/Flickr-style photos; validate on your field library.
61
- - CUB labels are typically one bird per image; crowded frames need care.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ tags:
4
+ - ultralytics
5
+ - yolo11
6
+ - object-detection
7
+ - wildlife
8
+ - bird
9
+ library_name: ultralytics
10
+ base_model: ultralytics/yolo11n
11
+ datasets:
12
+ - synthet/image-scoring-model
13
+ ---
14
+
15
+ # bird-detect (v0, v1)
16
+
17
+ YOLO11n detect models for bird bounding boxes (single class `bird`).
18
+ Companion to [synthet/eye-pose-v0](https://huggingface.co/synthet/eye-pose-v0) for subject localization
19
+ when eye keypoints are not required (species crops, gating, counting).
20
+
21
+ Used with the [image-scoring-model](https://github.com/synthet/image-scoring-model) `eye-quality detect` CLI.
22
+
23
+ | File | What | Use |
24
+ |---|---|---|
25
+ | `bird_detect_v1.pt` | **v1** (2026-09-27): v0 fine-tuned on CUB plus teacher pseudo-labels from real field photos | Recommended |
26
+ | `bird_detect_v0.pt` | v0: CUB-200-2011 only | Kept for reproducibility |
27
+
28
+ ## Class
29
+
30
+ | Index | Name |
31
+ |------:|------|
32
+ | 0 | bird |
33
+
34
+ ## v1
35
+
36
+ **Why.** v0 learned from CUB's well-framed, centred birds. On long-lens field frames it missed most small or
37
+ distant birds and had never seen a bird-free frame.
38
+
39
+ **Training.**
40
+ - **Start:** `bird_detect_v0.pt`, fine-tuned 30 epochs (imgsz 640, batch 16, lr0 0.002).
41
+ - **Data:** CUB-200-2011 boxes (10,018 train images) plus **803 teacher-labelled field frames** listed 5× per
42
+ epoch (29% of each epoch):
43
+ - 455 bird boxes and 385 bird-free frames;
44
+ - labelled by the upstream Apache-2.0 **RTMDet-tiny COCO** detector used as a teacher (full frame plus 2×2
45
+ tiles; only COCO `bird` ≥ 0.50 makes a box; anything ambiguous is excluded);
46
+ - thresholds calibrated on an owner-labelled cohort whose folders are excluded from training.
47
+ - **Validation (CUB val + teacher val, final epoch):** mAP50 0.994, mAP50-95 0.878, precision 0.991,
48
+ recall 0.982. Not comparable with v0's CUB-only validation numbers: the set now includes harder field frames.
49
+
50
+ **Field evaluation** (339-frame owner-labelled cohort from a wildlife library, never used in training;
51
+ presence per frame, Wilson 95% intervals):
52
+
53
+ | Frames | v0 | v1 |
54
+ |---|---|---|
55
+ | Birds v0 missed (78 bird frames): recall | 0% (0-5%) | **81% (71-88%)** |
56
+ | Bird-free frames among them (71): false positives | 0% (0-5%) | 7% (3-15%) |
57
+ | Frames v0 detected, with a bird (101): recall | 100% | 98% (93-99%) |
58
+ | Frames v0 detected wrongly (28 bird-free): still fire | 100% | **50% (33-67%)** |
59
+ | Small birds (< 4% of frame, 48): recall | 100% | 100% |
60
+
61
+ ## v0 training
62
+
63
+ - **Base:** YOLO11n (`yolo11n.pt`)
64
+ - **Dataset:** CUB-200-2011 boxes via `data/wildlife_bird_det` (~10k train / 1.7k val)
65
+ - **Epochs:** 100 (imgsz 640, batch 16)
66
+ - **Final validation (epoch 100):** Box mAP50 0.994, mAP50-95 0.892, precision 0.993, recall 0.997
67
+
68
+ ## Usage
69
+
70
+ ```python
71
+ from ultralytics import YOLO
72
+
73
+ model = YOLO("hf://synthet/bird-detect-v0/bird_detect_v1.pt")
74
+ results = model.predict("bird.jpg", imgsz=640)
75
+ ```
76
+
77
+ Or with the `eye_quality` package:
78
+
79
+ ```bash
80
+ pip install -e "git+https://github.com/synthet/image-scoring-model.git"
81
+ huggingface-cli download synthet/bird-detect-v0 bird_detect_v1.pt --local-dir models/
82
+ python -m eye_quality detect bird.jpg --weights models/bird_detect_v1.pt
83
+ ```
84
+
85
+ ## Limitations
86
+
87
+ - Single-class bird boxes only; not a multi-species detector.
88
+ - v1's field data comes from one photographer's library (North American birds, long lens); validate on yours.
89
+ - The teacher excludes very small, silhouetted or occluded birds rather than labelling them, so those remain weak.
90
+ - CUB labels are typically one bird per image; crowded frames need care.
91
+ - CUB-200-2011 is a research dataset; check its terms for your use.
bird_detect_v1.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6d09339fb3286c8d10395c29e3b0c14da92d86be5c9d4753c38d4a2ef2e447ba
3
+ size 5445786