Challenge owners: I AM HYDRO and Tallinn University of Technology (TalTech)
Can your AI find the fish without chasing every leaf?
An open computer-vision challenge for real-world river monitoring.
⬇️ Download dataset • 🚀 Start building • 🏆 See the scoring • 📦 Prepare submission
Underwater cameras help show whether fish passages at hydropower plants and river barriers really work. The cameras run continuously—but leaves, twigs, bubbles, sediment, glare, and moving plants can all look like fish to a motion detector.
That can create thousands of false events per station, per day.
Your challenge: build a small proof of concept that finds real fish, rejects drifting debris and noise, and can run efficiently near the camera.
This challenge is brought by I AM HYDRO and Tallinn University of Technology (TalTech) for the EIT Water HACKATHON Munich 2026.
| 🖼️ Images | 🐟 Fish boxes | 🍂 Hard negatives | 📅 Dates | 🌗 Conditions |
|---|---|---|---|---|
| 1,200 | 1,291 | 300 | 13 | Dawn, day, dusk, night |
| Split | Images | Fish-positive | No-fish | Fish boxes |
|---|---|---|---|---|
| Train | 840 | 630 | 210 | 938 |
| Validation | 180 | 135 | 45 | 184 |
| Test | 180 | 135 | 45 | 169 |
The images cover multiple cameras, dates, lighting levels, water conditions, backgrounds, and colour casts. Nearby frames stay in the same split to reduce data leakage.
These are unchanged images from the training split. Yellow circles and camera text are part of the original recordings, not dataset labels.
| ✅ Fish | 🍂 No fish: leaf-like material |
|---|---|
![]() |
![]() |
| Several fish at different sizes and contrast levels. | A leaf-like object and plants, but no annotated fish. |
| ✅ Fish | 💨 No fish: particles and changing light |
|---|---|
![]() |
![]() |
| One fish against uneven light. | Suspended particles and glare, but no annotated fish. |
Important
no_fish is a reviewed frame-level label. The negative images are not
annotated with separate object classes such as leaf, bubble, or twig.
The captions above describe what is visible; they do not add new labels.
| 1. Explore 🔎 | 2. Build 🛠️ | 3. Prove 📊 | 4. Pitch 🎤 |
|---|---|---|---|
| Study fish and no-fish scenes. | Train a detector and reduce false alarms. | Test accuracy, speed, memory, and model size. | Show a working demo, a failure, and your next step. |
- Download the complete dataset. The public read-only link needs no sign-in and is valid through 13 March 2027 under TalTech's anonymous-link policy.
- Check the downloaded files against
metadata/SHA256SUMS. - Read the participant guide.
- Train with
trainand choose settings withvalidation. - Freeze your system before the final
testrun. - Report results using the submission template.
Install the tools in this repository when you are ready to validate or score results:
git clone https://github.com/jtuhtan/taltech-fish-debris-hackathon.git
cd taltech-fish-debris-hackathon
python -m pip install -r requirements.txtCreate a model or application that takes an underwater image and returns a bounding box and confidence score for each fish. A no-fish image should normally return no boxes.
COCO boxes use [x, y, width, height] in pixels. The example score 0.91 is
only illustrative: participants' models must produce their own confidence
scores. The dataset provides the ground-truth box, not a model confidence. The
overlay is a presentation example; the original dataset image remains
unchanged.
Your proof of concept can be a:
- notebook or training experiment;
- command-line inference tool;
- small web or desktop demo;
- model optimised for an edge device; or
- useful combination of detection, filtering, and event review.
The judges must be able to run or inspect the result. Pretrained models and outside data are allowed when clearly declared.
Every eligible entry is scored out of 100 points.
| Area | Points | Main question |
|---|---|---|
| 🎯 Model performance | 60 | Does it find fish and reject false alarms? |
| ⚡ Edge readiness | 15 | Is it fast, small, and practical near a camera? |
| 🔁 Reproducibility | 10 | Can another person run and understand it? |
| 🌍 Real-world value | 10 | Is the idea useful and feasible? |
| 🎤 Demo | 5 | Does the team show clear evidence and limitations? |
The scored model metrics include fish F2, no-fish rejection, COCO mAP50:95,
and performance across times of day. The operating point is fixed at confidence
0.25 and IoU 0.50 so teams are compared fairly.
Read the full scoring formula, judging process, and tie-breaks →
| Event | EIT Water HACKATHON Munich 2026 |
| When | 28 September 2026, 10:00–19:00 |
| Where | Gewerbehof Ostbahnhof, Haagerstr. 5-11, 80339 München, Germany |
| Format | One-day innovation sprint; working language is English |
| Challenge owners | I AM HYDRO and TalTech |
| Organiser | DEEP Ecosystems |
The goal is an early-stage proof of concept: a working experiment, mockup, user journey, or quick feasibility check. It does not need to be a finished commercial product.
Dataset files and formats
COCO, YOLO, and Fishbox annotations are included.
images/{train,validation,test}/
labels/yolo/{train,validation,test}/
annotations/instances_{train,validation,test}.json
annotations/fishbox_annotations.json
metadata/manifest.csv
metadata/build_report.json
data.yaml
fish: bounding-box annotation for a visible fish.no_fish: reviewed hard-negative frame, represented by an empty YOLO label file.- Each
frame_idstarts withf-and uses the first 12 hexadecimal characters of the complete image's SHA-256 digest. - Exported bounding boxes are clamped to the image boundary.
Split and curation policy
The deterministic 70/15/15 split groups images by capture source and 10-minute time window. Adjacent frames therefore do not cross splits. Selection covers project, deployment, date, time band, and coarse visual-condition groups.
See metadata/build_report.json for exact counts and
metadata/selection_manifest.csv for one auditable row per image.
Responsible use and limitations
This dataset is for research, education, benchmarking, and prototype development. It comes from a limited number of camera deployments and does not represent every river, species, season, camera, or flow condition. A strong benchmark result still needs site-specific testing before operational use.
See the dataset card for more detail.
The images and annotations are released under Creative Commons Attribution 4.0. The supporting code is released under the MIT License.
If you improve the documentation or tools, contributions are welcome—see CONTRIBUTING.md.
Protect fish passage. Reduce false alarms. Build something that can work in the river. 🌊






