Competition · AI Cup 2026 · Feb – Mar 2026
AI Cup 2026: bird species from radar
A national AI challenge by Team Epoch and TNO: identify which birds are flying past wind turbines from radar data alone, so turbines can be slowed down only when vulnerable species are at risk. I entered solo, as team “Rambler”, in both the model-performance track and the system-design track.
- Result
- 26th of 89 teams (215 participants) on the final hidden test set
- Role
- Solo
- Data
- ~5,200 expert-validated radar tracks, Eemshaven wind farm
- Links
- Challenge ↗
The problem
Wind farms protect birds today mostly through blunt, conservative shutdowns, which cost a lot of energy. Bird radar sees every bird, day and night and in any weather, but it doesn't see species. The challenge data came from a Robin Radar MAX at the Eemshaven wind farm: about 5,200 tracks validated by ornithologists over 18 field visits. In TNO's analysis they fall into 9 bird groups plus radar clutter, and the classes are very uneven: gulls alone make up roughly 2,770 tracks, while cormorants have 74. Each track comes with features such as flight height, radar cross-section, speed, directionality, track quality and length.
Performance track: the classifier
I trained an ensemble of state-of-the-art classifiers on the radar-track features and placed 26th of 89 teams (215 participants) in the organisers' final evaluation on a hidden test set, as a one-person team. The public Kaggle leaderboard was only for validation. I used 6 submissions, against about 30 per team on average (2,672 in total), so the result reflects offline validation rather than tuning to the leaderboard. With strong class imbalance and overlapping radar signatures between clutter and similar bird groups, I combined models with different strengths rather than relying on a single architecture.
Implementation track: from radar track to turbine decision
A good classifier alone doesn't protect any birds. For the second track I designed the system around it: a radar-first pipeline that turns species predictions into targeted, auditable curtailment. It is modular, so each layer can be validated and deployed on its own.
1 · sense
Sensing & ingestion
Bird radar at the turbines, plus weather, time and turbine status. Cameras, microphones and observers are used only to create labels.
2 · classify
Species classification
Species or species-group probabilities per radar track, with calibrated confidence and an explicit “uncertain” outcome.
3 · decide
Risk & decision logic
Per-track collision risk, aggregated over turbines and 10–15 min windows, then fed through simple, auditable rules.
4 · learn
Monitoring & learning
Operator interface, performance monitoring, and active learning that picks which tracks to label next.
Key design choices
- A label taxonomy that matches reality. Species-level classes only where the radar signature is distinctive, functional groups (for example, small nocturnal songbirds) where it isn't, and “unclassified large/small bird” catch-alls. Species that radar can't separate can still share one mitigation rule.
- A two-branch model with a simple fallback. A Conv1D + GRU branch reads the track as a time series, and a feed-forward branch reads summary features. A gradient-boosted tree baseline runs in parallel, for interpretability and as a fallback.
- Calibrated uncertainty. Deep ensembles or Monte-Carlo dropout, plus temperature scaling. Low-confidence tracks are routed to “uncertain” and never trigger automatic action.
- Evaluation that reflects deployment. Splits by site and season, class-wise metrics, and high recall prioritised for vulnerable species, even at the cost of more false alarms.
| Mode | Triggered when | Action |
|---|---|---|
| Normal | Low aggregated risk | Log species and risk and update dashboards. No action. |
| Alert | Risk above the lower threshold, or a high-priority species nearby | Warn operators and prepare for curtailment. |
| Curtail | High-priority species in or near the rotor zone with high confidence, and risk above the upper threshold | Slow down only the affected turbines, for a limited time. Resume automatically once risk stays low. |
Rollout is staged, so trust is earned before any automation. Every phase is evaluated on both ecological benefit and lost energy:
- Offline analysis
- Shadow mode
- Assisted operation
- Limited automation
What I took from it
It's the same problem as in my research, in a different domain. The data is small, imbalanced and noisy, and the classes overlap physically, so a raw accuracy number says little. What matters is calibrated uncertainty, class-wise recall where it counts, and a decision layer that stays safe when the model is unsure.