Skip to content

How Fincount AI works

One count, every step, every number.

This page follows one basin through the whole pipeline: the frames, the checks, the scale card, the dots, the range, the sizes and the weight. The numbers on it are the real numbers from that run.

01 / 13

Step 01Input

A ten second video of one basin

This is the whole input: one video of a basin of fish about 1 to 2 cm long. Nothing else is needed, no tags and no special camera.

The worker chose the size group before filming. It tells Fincount AI how big to expect the fish to be.

Length

Frames a second

Picture size

Size group

0 S10 S
Step 02Frames

Fincount AI picks evenly spread frames

Fish move, so no single frame shows them all. Fincount AI skips the first second, where the hand shakes from pressing record, and takes frames evenly spread over the rest. If a frame is blurry it swaps in the sharpest frame next to it.

The cloud check runs on AWS and uses more frames than the phone. The phone uses 10 to stay fast. The cloud check uses 20.

Frames used in this run

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20

Stage: the cloud check

Step 03Picture checks

The picture is checked before anything is counted

A count from a bad picture is worse than no count. Fincount AI checks that the basin is in view, the scale card is found, the picture is sharp and there is no glare, and it measures how crowded the basin is.

A failed check asks for a refilm, in plain words, with the reason.

  • Basin in view
  • Scale card found
  • Sharp950.1
  • No glare0.0
  • Not too crowded0.0
5 of 5 checks passed
Step 04Scale card

The scale card tells it how big a pixel is

The printed black and white card lies on the floor of the basin. Its real size is known, so its four corners tell Fincount AI how many pixels make a millimetre, and how much the phone is tilted.

Without the card, Fincount still counts. It just cannot measure sizes.

Card found

Yes

Pixels to the millimetre

Corners at (912, 537) (1007, 537) (1009, 636) (913, 636)

Step 05Dots

Every fish gets a dot

On each frame, Fincount AI finds the fish and marks each one with a coral dot. It also adds back fish it can tell are hidden under others. This is the frame it counted most clearly, with 88 dots on it.

Because the dots are drawn on the picture, you or a reviewer can check the count with your own eyes.

The frame Fincount AI counted

Dots on this frame

88

Step 06Frame counts

Every frame gives its own count

The same basin is counted once for every frame. The counts differ a little, because fish swim over each other and some are hidden in some frames.

In this run the counts ran from 99 to 108.

10510510610610710810610310410410899106105101105106107103100DASHED LINE: 75TH PERCENTILE, 106FRAME 1FRAME 20
Step 07Correction

The frames are combined, then corrected

Hidden fish mean most frames undercount. So Fincount AI does not take the middle of the frame counts. It takes the 75th percentile, a number near the high end, then corrects it with a calibration made from basins where the true count is known.

We do not follow single fish from frame to frame, because fish swap places when they cross and a tracker would count some twice.

75TH PERCENTILE, 10699108

75th percentile

Count after correction

Method: per frame counts, 75th percentile, calibrated range.

Step 08Range

The count comes with a range

The range is the span the true count falls in. It is set from basins that were counted by hand, so it is wider when the basin is crowded and narrower when it is clear.

This is why Fincount never shows a single number on its own.

Fish counted

Range to

Half the range is % of the count.

The simulator knows the true count of this basin: 100. Fincount counted 104, a difference of +4.

Step 09Crowding

Is the basin too crowded?

Every size of fish has a limit on how many can be counted well in one basin. Fincount AI scores how crowded the basin is and compares it with the limit for the size group.

Above the limit it does not guess. It tells the worker to split the basin and film again.

Crowding score

Limit

Under the limit, so the count can be used.

Step 10Length

Every clear fish is measured

Using the scale card, Fincount AI measures the length of every fish it can see clearly and completely, and corrects for the tilt of the phone. Fish that are partly hidden are left out, because a hidden tail would make a fish look short.

Fish measured

Average length

Smallest tenth to biggest tenth

11218145312AVERAGE 1.4 CM0.8 CM3.2 CM
Step 11Weight

Length becomes weight

Each length is turned into a weight with a curve fitted to the hatchery's own fish. The average weight is the average of the weights, never the weight of the average length, and it always comes as a range.

LENGTHWEIGHT1.4 CM0.06 G

Average weight

Range

Whole basin

Until a hatchery weighs a group of its fish, the curve is a published default for African catfish.

Step 12Size groups

The count is split into size groups

Finally the count is split into the hatchery's own size groups, using the measured lengths. A warning appears when a few fish are growing much faster than the rest, because they eat the small ones.

  • Under 3 cm100
  • 3 to 5 cm4
  • 5 to 8 cm0
  • Over 8 cm0

No fast growers were flagged in this basin.

Step 13Review

Then a person looks, when it matters

Fincount AI flags a basin for review when the range is wide, the basin is too crowded, a picture check failed or no scale card was found. A reviewer then looks at the dots and can add or remove them before the count goes on a certificate.

Needs review in this run

No

The range was narrow enough, the basin was not too crowded, and every check passed.

The whole run took seconds.

Count your next basin with Fincount.

Film a basin, get the count, and send your buyer a count they can check. The first hatcheries get 30 days free.