product-recognition-demo/recognization/data
kiyo9w 8754738dc1 docs(decision): refresh every number the corrected labels moved
Five blocks still printed pre-correction figures. Each was re-run through the
evaluator and replaced with what it actually outputs now:

- The lane comparison: local 75% at 91% against Van 64% at 38% (full), and
  59% at 93% against 66% at 39% (live). At live resolution Van now answers more
  facings correctly and is wrong on 67 of them to the local lane's 3 - stated
  plainly rather than left as a win on both axes.
- The accept sweep: 75/67/67/62% end-to-end at 91/91/93/95% precision, with the
  evaluator's own column definitions spelled out, since my first re-derivation
  used the wrong denominator.
- The G1 stream claim: four pan replays give 63-70% coverage at 76-84%
  precision, not 75% at 100%.
- The upscale paragraph: the guard is intact, but sku_l09.jpg is now a
  1000x1000 packshot, so the current run no longer exercises it.
- catalog_hash and the pyramid floor: the hash covers view bytes, not just
  names, and every view is now above the 800 px floor.

Also refreshes the server smoke against the renamed catalog: 53 named in 2.58 s,
no view-suffixed ids, no missing product info. l12 is not among them - it has
no enrolled view, which is the documented gap.
2026-09-29 03:18:30 +09:00
..
evaluations/2026-09-29-session docs(decision): refresh every number the corrected labels moved 2026-09-29 03:18:30 +09:00
external-eval test(external): score 8 independent-source images, 0 false accepts 2026-09-29 03:13:16 +09:00
packshots docs(packshots): record l04/l07/l10 identity provenance 2026-09-29 02:51:55 +09:00
README.md Enroll from a repo data dir; read packshots in every orientation 2026-09-29 02:33:47 +09:00

Recognition data

Everything the identity work needs to be reproducible: sourced packshots, evaluation runs, and the audits that produced them. Nothing here is ephemeral; a run that matters is written here, not to a temp directory.

packshots/source/

Front packshots as downloaded, before enrollment. ATTRIBUTION.json records the source URL, the product as printed, and the manufacturer for each. ocr-reads.json holds the OCR text each image produced, so a name/OCR refusal can be re-checked without re-running Vision.

rebuild_catalog.py reads this directory and writes a catalog:

.venv/bin/python code/rebuild_catalog.py --source data/packshots/source \
    --output stock-lopia-clean --csv stock-lopia/stock.csv --min-views 1 --replace

evaluations/

One directory per session. Each holds the raw artifacts a claim was computed from, so a number in DECISION.md can be traced back to the run that produced it.

Directory Contents
stream/ WebSocket track dumps from stream_client.py, scored by score_stream.py.
still/ /v1/recognize responses for the still-image path.
catalog-audit/ rebuild_catalog.py --json reports.
scratch/ Intermediate images (rotations, crops) kept because they document a finding.

Scoring a stream dump:

.venv/bin/python code/score_stream.py data/evaluations/<session>/stream/<file>.json \
    --labels eval/labels/image6.json --stock-dir stock-lopia-clean