Product recognition demo for supermarket shelf images
The default backend could not be scored by the repo's own evaluator, so the number that justifies the architecture lived only in an ad-hoc script. - eval_identity.py: `--lanes local` wraps identity_lanes.LocalLane and TextLane behind the same four ceilings as every other lane. `Lane.decide` is now the seam: the default runs the shared gate over the lane's ranking, and the fused local+text lane overrides it, so the production decision is what gets scored rather than a re-implementation of it. - rebuild_catalog.py: one-directional image/CSV match (an enrolled image with no row refuses; a row with no image is a text-only coverage gap), packshot OCR against the catalog name, capture-session refusal from an evaluation manifest, and the 160 px floor. The CSV is copied byte-for-byte so all 12 rows survive a rebuild, and unmanaged files are carried over. Reproduced from the repo, live resolution: 59% end-to-end at 95% precision, 2 false accepts of 48 unknowns, 20.6 ms per crop. |
||
|---|---|---|
| .github/workflows | ||
| recognization | ||
| .gitignore | ||