Product recognition demo for supermarket shelf images
Find a file
tngo 5f6de4d48a
Some checks failed
tests / model-free (pull_request) Has been cancelled
perf: read each package once per track, not once per attempt
Vision took a crop from 5 ms to 25 ms, so re-reading the same package on every
attempt was the measured cause of the live coverage collapse: 789 -> 60 crops/s
at 8 workers, and 12/8/2/6 labels on the same clip at four pacings.

The reading is now cached on the track and later attempts re-run only the local
lane. Measured through the real server on add/image6.jpg:

  saturated pool   15.9 -> 49.4 crops/s (8 workers, 64 crops)
  per crop         142 -> 92 ms on a 300x400 crop
  3 s clip, send   19.7 mean labels (15-24, unstable) -> 24.0 (23-25, stable)
  12 s clip, send  48/131 -> 53/131; result pacing 53/134 -> 50/135

The 12 s numbers are within run-to-run noise; the short clip is where the
pacing sensitivity lived and it is now flat across pacings.

An empty read is not cached - a crop too small or too blurry to read says
nothing about the next one - and the cache is cleared with the rest of the
evidence on a method change or a drift relabel, so a reading never outlives the
product it described. The native crop lane skips OCR on the same rule.

Test: OCR runs once per track while the local lane keeps running. Disabling the
skip makes it fail 2 != 1. Suite 280 -> 281.
2026-09-28 23:25:09 +09:00
.github/workflows chore: run the Python suite from the repository root 2026-09-28 17:26:58 +09:00
recognization perf: read each package once per track, not once per attempt 2026-09-28 23:25:09 +09:00
.gitignore Initial commit for push folder 2026-09-18 09:13:53 +09:00