A computer vision model watches the counter tunnel camera in real time, identifies each salmon or trout by species, and tallies it. A research view, not an official count.
| Species | Seen | Net up |
|---|
Unclassified salmonid: fish counted while the water was turbid (visibility index below 0.55), where a species call under 75% confidence is withheld. Still counted, still given a direction; the model’s own read stays in the events log.
| When | Species | Direction | Clip | Conf. |
|---|---|---|---|---|
| Aug 25 2:18 PM | Chinook | ↑ up | 14-18-28.mp4 | 92% |
| Aug 25 2:18 PM | Chinook | ↑ up | 14-18-28.mp4 | 86% |
| Aug 25 2:17 PM | Chinook | — stay | 14-17-40.mp4 | 91% |
| Aug 25 2:02 PM | Chinook | ↑ up | 14-02-24.mp4 | 96% |
| Aug 25 1:06 PM | Chinook | ↑ up | 13-06-21.mp4 | 93% |
| Aug 25 12:59 PM | Chinook | ↑ up | 12-59-20.mp4 | 94% |
| Aug 25 12:51 PM | Chinook | ↑ up | 12-51-10.mp4 | 98% |
| Aug 25 11:40 AM | Chinook | ↑ up | 11-40-56.mp4 | 98% |
| Aug 25 11:40 AM | Chinook | — stay | 11-40-34.mp4 | 97% |
| Aug 25 11:39 AM | Brown | — stay | 11-39-26.mp4 | 66% |
| Aug 25 11:39 AM | Chinook | ↑ up | 11-39-26.mp4 | 89% |
| Aug 25 11:36 AM | Brown | ↑ up | 11-36-08.mp4 | 100% |
| Aug 25 11:28 AM | Brown | — stay | 11-28-53.mp4 | 85% |
| Aug 25 11:16 AM | Chinook | ↑ up | 11-16-24.mp4 | 99% |
| Aug 25 11:01 AM | Chinook | — stay | 11-01-11.mp4 | 69% |
| Aug 25 10:57 AM | Chinook | ↑ up | 10-57-47.mp4 | 99% |
| Aug 25 10:55 AM | Chinook | ↑ up | 10-55-50.mp4 | 94% |
| Aug 25 10:54 AM | Chinook | ↑ up | 10-54-56.mp4 | 97% |
| Aug 25 10:54 AM | Chinook | — stay | 10-54-09.mp4 | 100% |
| Aug 25 10:53 AM | Chinook | ↑ up | 10-53-25.mp4 | 92% |
| Aug 25 10:52 AM | Chinook | ↑ up | 10-52-12.mp4 | 75% |
| Aug 25 10:47 AM | Chinook | ↑ up | 10-47-39.mp4 | 94% |
| Aug 25 10:43 AM | Chinook | ↑ up | 10-43-41.mp4 | 76% |
| Aug 25 10:39 AM | Chinook | ↑ up | 10-39-26.mp4 | 99% |
| Aug 25 10:33 AM | Chinook | ↑ up | 10-33-28.mp4 | 91% |
| Aug 25 10:27 AM | Chinook | — stay | 10-27-54.mp4 | 78% |
| Aug 25 10:26 AM | Chinook | ↑ up | 10-26-05.mp4 | 92% |
| Aug 25 10:21 AM | Chinook | ↑ up | 10-21-35.mp4 | 70% |
| Aug 25 10:15 AM | Chinook | — stay | 10-15-50.mp4 | 96% |
| Aug 25 10:15 AM | Chinook | — stay | 10-15-35.mp4 | 82% |
| Aug 25 10:01 AM | Chinook | ↑ up | 10-01-39.mp4 | 88% |
| Aug 25 9:58 AM | Chinook | — stay | 09-58-44.mp4 | 99% |
| Aug 25 9:56 AM | Chinook | ↑ up | 09-56-21.mp4 | 95% |
| Aug 25 9:52 AM | Chinook | ↑ up | 09-52-08.mp4 | 94% |
| Aug 25 9:51 AM | Chinook | ↑ up | 09-51-50.mp4 | 95% |
| Aug 25 9:49 AM | Chinook | ↑ up | 09-49-52.mp4 | 98% |
| Aug 25 9:49 AM | Chinook | ↑ up | 09-49-52.mp4 | 97% |
| Aug 25 9:46 AM | Chinook | ↑ up | 09-46-39.mp4 | 95% |
| Aug 25 9:45 AM | Chinook | — stay | 09-45-28.mp4 | 72% |
| Aug 25 9:42 AM | Chinook | ↑ up | 09-42-12.mp4 | 92% |
| Aug 25 9:36 AM | Chinook | ↑ up | 09-36-13.mp4 | 91% |
| Aug 25 9:36 AM | Chinook | ↑ up | 09-36-13.mp4 | 100% |
| Aug 25 9:36 AM | Chinook | — stay | 09-36-13.mp4 | 81% |
| Aug 25 9:34 AM | Chinook | ↑ up | 09-34-27.mp4 | 82% |
| Aug 25 9:34 AM | Chinook | ↑ up | 09-34-27.mp4 | 96% |
| Aug 25 9:34 AM | Chinook | ↑ up | 09-34-27.mp4 | 70% |
| Aug 25 9:34 AM | Brown | ↑ up | 09-34-15.mp4 | 81% |
| Aug 25 9:26 AM | Chinook | ↑ up | 09-26-33.mp4 | 84% |
| Aug 25 9:10 AM | Chinook | ↑ up | 09-10-25.mp4 | 86% |
| Aug 24 4:11 PM | Chinook | ↑ up | 16-11-18.mp4 | 98% |
| Aug 24 4:09 PM | Chinook | ↑ up | 16-09-35.mp4 | 95% |
| Aug 24 4:04 PM | Chinook | — stay | 16-04-20.mp4 | 90% |
| Aug 24 4:03 PM | Chinook | ↑ up | 16-03-46.mp4 | 92% |
| Aug 24 3:53 PM | Chinook | ↑ up | 15-53-48.mp4 | 98% |
Every frame from the counter's underwater tunnel camera runs through one network and one tracker — find and name the fish in a single look, then follow it. No infrared beam, no fixed clip length: the model decides when a fish is there and captures the whole passage.
The model runs alongside the existing Vaki counter, reading only the live camera view. It never touches the infrared scanner or the official recordings, so nothing it does can affect the count. Running the two in parallel is exactly how we test the model against the scanner-and-clip method.
DINOv3, the vision backbone inside the model, maps each fish into a high-dimensional “fingerprint” space where same-species fish land together. Above are 1,000 real fish from the validation set, coloured by species — that space squeezed down to 3 so you can spin it around. The clean clusters are why the model can tell them apart; notice Chinook and Coho, the trickiest pair, sitting closest.
The model is DEIMv2-X, a real-time object detector built on a DINOv3 vision backbone that was pre-trained on 1.7 billion images, so it already understands shape, colour and texture. We fine-tuned it on thousands of fish frames that technicians had labelled by species, across both rivers and several seasons, so that one network both finds the fish and names it.
A research tool, not an official count. The “Ganaraska River” caption in the clips is burned in by the camera itself.