fix(catalog): correct sku_l10 to 400g and enroll its packshot
Ajinomoto ピュアセレクト マヨネーズ has no 450g size: the official lineup is 250g/400g/600g/1kg, the shelf tag in add/image6.jpg reads 400g, and DECISION.md already recorded the mismatch. Both CSVs carried 450g, so every l10 answer shipped a wrong size. The packshot is the exact 400g front (JAN 4901001114030, 1000x1000) with its source URL and the 450g rejection recorded in data/packshots/research/sku_l10/manifest.json. Enrolling it moves the catalog ceiling from 69% to 87% of in-catalog facings answerable by image (l10 was 11 unenrolled facings). Measured on the corrected image6 labels: local lane 92% identity at 84% precision full, 85% at 91% live. Also points external-eval defaults at the repository-local data path; the licensed Wikimedia corpus remains uncommitted pending manifest review.
This commit is contained in:
parent
68061635d9
commit
601d72296c
7 changed files with 38 additions and 7 deletions
|
|
@ -129,7 +129,9 @@ def image_info(titles: list) -> dict:
|
|||
|
||||
|
||||
def main() -> None:
|
||||
root = sys.argv[1] if len(sys.argv) > 1 else os.path.expanduser("~/dorayaki-data/shelf-images")
|
||||
default = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
|
||||
"data", "external-shelves", "wikimedia-commons")
|
||||
root = sys.argv[1] if len(sys.argv) > 1 else default
|
||||
os.makedirs(root, exist_ok=True)
|
||||
|
||||
print("searching Commons...")
|
||||
|
|
|
|||
|
|
@ -1,10 +1,14 @@
|
|||
"""
|
||||
Run the pipeline over store photos it has never seen.
|
||||
|
||||
python code/eval_external_images.py [~/dorayaki-data/shelf-images]
|
||||
python code/eval_external_images.py [data/external-shelves/wikimedia-commons]
|
||||
|
||||
Reports detection and identity per image, and writes a JSON summary. See
|
||||
docs/EXTERNAL-EVAL.md for what the numbers mean.
|
||||
|
||||
The images live in the repository (`data/external-shelves/`), not in a home
|
||||
directory: they are evaluation evidence, and evidence that only exists on one
|
||||
machine cannot be re-checked.
|
||||
"""
|
||||
import json, os, sys, time
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
|
|
@ -13,8 +17,9 @@ from engine import build_default_engine, EngineSettings
|
|||
from tags import TagService, TagSettings
|
||||
from reconcile import attach_tags_to_boxes
|
||||
|
||||
ROOT = os.path.expanduser(sys.argv[1] if len(sys.argv) > 1 else "~/dorayaki-data/shelf-images")
|
||||
manifest = json.load(open(os.path.join(ROOT, "manifest.json")))
|
||||
DEFAULT_ROOT = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
|
||||
"data", "external-shelves", "wikimedia-commons")
|
||||
ROOT = os.path.expanduser(sys.argv[1] if len(sys.argv) > 1 else DEFAULT_ROOT)
|
||||
|
||||
engine = build_default_engine(EngineSettings(stock_dir="stock-lopia"))
|
||||
catalog_by_sku = {p["sku_id"]: p for p in engine.catalog()}
|
||||
|
|
|
|||
|
|
@ -292,7 +292,9 @@ def main() -> None:
|
|||
parser.add_argument("--epochs", type=int, default=60)
|
||||
parser.add_argument("--views", type=int, default=2, help="enrolment views per class")
|
||||
parser.add_argument("--augment", type=int, default=12, help="augmented copies per enrolment view")
|
||||
parser.add_argument("--image", default=os.path.expanduser("~/dorayaki-data/shelf-images"))
|
||||
parser.add_argument("--image", default=os.path.join(
|
||||
os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
|
||||
"data", "external-shelves", "wikimedia-commons"))
|
||||
parser.add_argument("--stock", default=None,
|
||||
help="train on a store's enrolled views instead of the milk shelf, "
|
||||
"and write <stock>/identity_head.pt for the gallery to load")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue