Connecting…

Ganaraska River: Live Model Outputs Experimental

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.

Live now

Latest fish identified
Boxes coloured by species, with the fish's movement path.
Season totals
0 fish identified this season
SpeciesSeenNet up
This season so far
Today:
Up0Down0Total =0
quiet so far
model, fish moving upstreamdownstreamRiverwatcher counter, fish up (all species)

Fall season total

Fish up this fall, model all species · live, from the clips on this page
Fish up this fall, Riverwatcher counter raw scanner count, all species · riverwatcherdaily.is
Cumulative past the counter
2026 model (fish up, all species, since Aug 24) 2026 Riverwatcher counter (fish up, all species, since Aug 1) 2020–2025 range past-years median 2026 forecast ±21%

Events Captured:

Newest first
WhenSpeciesDirectionClipConf.
Aug 25 2:18 PMChinook↑ up14-18-28.mp492%
Aug 25 2:18 PMChinook↑ up14-18-28.mp486%
Aug 25 2:17 PMChinook— stay14-17-40.mp491%
Aug 25 2:02 PMChinook↑ up14-02-24.mp496%
Aug 25 1:06 PMChinook↑ up13-06-21.mp493%
Aug 25 12:59 PMChinook↑ up12-59-20.mp494%
Aug 25 12:51 PMChinook↑ up12-51-10.mp498%
Aug 25 11:40 AMChinook↑ up11-40-56.mp498%
Aug 25 11:40 AMChinook— stay11-40-34.mp497%
Aug 25 11:39 AMBrown— stay11-39-26.mp466%
Aug 25 11:39 AMChinook↑ up11-39-26.mp489%
Aug 25 11:36 AMBrown↑ up11-36-08.mp4100%
Aug 25 11:28 AMBrown— stay11-28-53.mp485%
Aug 25 11:16 AMChinook↑ up11-16-24.mp499%
Aug 25 11:01 AMChinook— stay11-01-11.mp469%
Aug 25 10:57 AMChinook↑ up10-57-47.mp499%
Aug 25 10:55 AMChinook↑ up10-55-50.mp494%
Aug 25 10:54 AMChinook↑ up10-54-56.mp497%
Aug 25 10:54 AMChinook— stay10-54-09.mp4100%
Aug 25 10:53 AMChinook↑ up10-53-25.mp492%
Aug 25 10:52 AMChinook↑ up10-52-12.mp475%
Aug 25 10:47 AMChinook↑ up10-47-39.mp494%
Aug 25 10:43 AMChinook↑ up10-43-41.mp476%
Aug 25 10:39 AMChinook↑ up10-39-26.mp499%
Aug 25 10:33 AMChinook↑ up10-33-28.mp491%
Aug 25 10:27 AMChinook— stay10-27-54.mp478%
Aug 25 10:26 AMChinook↑ up10-26-05.mp492%
Aug 25 10:21 AMChinook↑ up10-21-35.mp470%
Aug 25 10:15 AMChinook— stay10-15-50.mp496%
Aug 25 10:15 AMChinook— stay10-15-35.mp482%
Aug 25 10:01 AMChinook↑ up10-01-39.mp488%
Aug 25 9:58 AMChinook— stay09-58-44.mp499%
Aug 25 9:56 AMChinook↑ up09-56-21.mp495%
Aug 25 9:52 AMChinook↑ up09-52-08.mp494%
Aug 25 9:51 AMChinook↑ up09-51-50.mp495%
Aug 25 9:49 AMChinook↑ up09-49-52.mp498%
Aug 25 9:49 AMChinook↑ up09-49-52.mp497%
Aug 25 9:46 AMChinook↑ up09-46-39.mp495%
Aug 25 9:45 AMChinook— stay09-45-28.mp472%
Aug 25 9:42 AMChinook↑ up09-42-12.mp492%
Aug 25 9:36 AMChinook↑ up09-36-13.mp491%
Aug 25 9:36 AMChinook↑ up09-36-13.mp4100%
Aug 25 9:36 AMChinook— stay09-36-13.mp481%
Aug 25 9:34 AMChinook↑ up09-34-27.mp482%
Aug 25 9:34 AMChinook↑ up09-34-27.mp496%
Aug 25 9:34 AMChinook↑ up09-34-27.mp470%
Aug 25 9:34 AMBrown↑ up09-34-15.mp481%
Aug 25 9:26 AMChinook↑ up09-26-33.mp484%
Aug 25 9:10 AMChinook↑ up09-10-25.mp486%
Aug 24 4:11 PMChinook↑ up16-11-18.mp498%
Aug 24 4:09 PMChinook↑ up16-09-35.mp495%
Aug 24 4:04 PMChinook— stay16-04-20.mp490%
Aug 24 4:03 PMChinook↑ up16-03-46.mp492%
Aug 24 3:53 PMChinook↑ up15-53-48.mp498%

How the model works

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.

1 DETECT & IDENTIFY
Find and name it, in one look
A single DEIMv2 network, built on a DINOv3 vision backbone, reads the whole frame, draws a box around each fish and names its species with a confidence — all in the same pass. No separate crop-and-classify step.
2 TRACK
Follow it
ByteTrack links each fish’s boxes from frame to frame into one track, so a fish that lingers is still one fish, and its direction — up, down or holding — is read from where the track starts and ends.
3 COUNT
Keep the confident ones
A track counts only if the fish was seen on at least three frames with a confident species read. In turbid water a weak read is still counted, but filed as Unclassified salmonid.

How it fits into the counter

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.

Underwater tunnel cameraat the counter
the camera feeds both paths
Existing counter (untouched)
Vaki Riverwatcherinfrared scanner
Maricamrecords the clips
Official count — runs exactly as before
The model (new, read-only)
iSpylive camera view, no recording
Tailscale secure link
Model on the RTX 5090detect + identify → track
↓ this live page
The feature space — drag to rotate

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.

How it was made

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.

  • Detector + classifier — one DEIMv2-X network (DINOv3 ViT-S+/16 backbone) boxes and names each fish in a single pass.
  • Tracker — ByteTrack links a fish across frames to count it once and read its direction.
  • Accuracy — about 96% species agreement on 366 held-out fish it never trained on.

A research tool, not an official count. The “Ganaraska River” caption in the clips is burned in by the camera itself.

Atlant-o-vision

0 reviewer-confirmed Atlantic passages — the season log
0 flagged for review — tap to view