# PROVENANCE: Metric -> Source JSON + Field Every number on the model card traces to one of the JSONs under `reports/eval_harness/`. This file is the source-of-truth map. ## YAML model-index metrics ### inspectnet-cx-patchcore-bottle | metric (model-index) | value | source JSON(s) | field | aggregation | |----------------------|-----------|---------------------------------------------------------------------------------------------------------------|--------------|----------------------------| | image_auroc | 1.0 | `patchcore_bottle.json`, `patchcore_bottle_seed1.json`, `patchcore_bottle_seed2.json` | `image_auroc`| mean over 3 seeds (std=0) | | pixel_auroc | 0.985188 | same 3 files | `pixel_auroc`| mean over 3 seeds | | aupro | 0.940567 | same 3 files | `aupro` | mean over 3 seeds | ### inspectnet-cx-patchcore-cable | metric (model-index) | value | source JSON | field | aggregation | |----------------------|-----------|--------------------------------------|--------------|--------------------| | image_auroc | 0.991004 | `patchcore_cable.json` | `image_auroc`| single seed (legacy unseeded) | | pixel_auroc | 0.983390 | `patchcore_cable.json` | `pixel_auroc`| single seed | | aupro | 0.928055 | `patchcore_cable.json` | `aupro` | single seed | ### inspectnet-cx-patchcore-capsule | metric (model-index) | value | source JSON | field | aggregation | |----------------------|-----------|--------------------------------------|--------------|--------------------| | image_auroc | 0.994416 | `patchcore_capsule.json` | `image_auroc`| single seed (legacy unseeded) | | pixel_auroc | 0.990176 | `patchcore_capsule.json` | `pixel_auroc`| single seed | | aupro | 0.938241 | `patchcore_capsule.json` | `aupro` | single seed | ### inspectnet-cx-patchcore-leather | metric (model-index) | value | source JSON(s) | field | aggregation | |----------------------|-----------|---------------------------------------------------------------------------------------------------------------|--------------|----------------------------| | image_auroc | 1.0 | `patchcore_leather.json`, `patchcore_leather_seed1.json`, `patchcore_leather_seed2.json` | `image_auroc`| mean over 3 seeds (std=0) | | pixel_auroc | 0.992203 | same 3 files | `pixel_auroc`| mean over 3 seeds | | aupro | 0.975227 | same 3 files | `aupro` | mean over 3 seeds | ## Ablation table values ### PaDiM rows | category | image AUROC | pixel AUROC | AUPRO | source JSON | |----------|-------------|-------------|---------|-----------------------------------| | bottle | 0.9976 | 0.9816 | 0.9406 | `padim_bottle_repro.json` | | cable | 0.8720 | 0.9551 | 0.8519 | `padim_cable_repro.json` | | capsule | 0.8807 | 0.9849 | 0.9149 | `padim_capsule_repro.json` | | leather | 0.9925 | 0.9882 | 0.9682 | `padim_leather_repro.json` | Fields: `image_auroc`, `pixel_auroc`, `aupro`. Single PaDiM run per category. ### PatchCore rows Bottle (n=3 seeds): - `patchcore_bottle.json` (seed 0, legacy unseeded): image 1.0, pixel 0.9850819, aupro 0.9413159 - `patchcore_bottle_seed1.json` (seed 1): image 1.0, pixel 0.9851934, aupro 0.9402802 - `patchcore_bottle_seed2.json` (seed 2): image 1.0, pixel 0.9852876, aupro 0.9401063 - Aggregation: arithmetic mean and population stdev (pstdev) across the 3 values. Cable (single seed, seed 0 legacy unseeded): - `patchcore_cable.json`: image_auroc 0.9910044977511244, pixel_auroc 0.9833900287538287, aupro 0.9280552268028259. Capsule (single seed, seed 0 legacy unseeded): - `patchcore_capsule.json`: image_auroc 0.994415636218588, pixel_auroc 0.990176424065145, aupro 0.9382407665252686. Leather (n=3 seeds): - `patchcore_leather.json` (seed 0, legacy unseeded): image 1.0, pixel 0.9923971, aupro 0.9760316 - `patchcore_leather_seed1.json` (seed 1): image 1.0, pixel 0.9920777, aupro 0.9747776 - `patchcore_leather_seed2.json` (seed 2): image 1.0, pixel 0.9921354, aupro 0.9748721 - Aggregation: arithmetic mean and population stdev across the 3 values. ## Cable coreset sensitivity | coreset | image AUROC | source JSON | |---------|-------------|----------------------------------------------| | 0.01 | 0.9910 | `patchcore_cable.json` | | 0.10 | 0.9856 | `patchcore_cable_coreset010.json` | | 0.25 | 0.9893 | `patchcore_cable_coreset025.json` | Same `image_auroc`, `pixel_auroc`, `aupro` fields per JSON. ## Latency CPU and CUDA min/median/p95/mean/std values are read directly from `per_device.cpu` and `per_device.cuda` blocks in: - bottle: `patchcore_bottle_latency.json` (n_warmup=10) - cable: `patchcore_cable_latency.json` (n_warmup=10) - capsule CPU: `patchcore_capsule_latency_rerun2.json` (n_warmup=30, the clean rerun) - capsule CUDA: `patchcore_capsule_latency.json` (n_warmup=10; CUDA portion of original was fine) - leather: `patchcore_leather_latency.json` (n_warmup=10) Hardware fingerprint is from `hardware` block in any of the latency JSONs: - CPU: `AMD Ryzen 9 9900X 12-Core Processor` - GPU: `NVIDIA GeForce RTX 5070, 570.211.01, 12227 MiB` - Platform: `Linux-6.8.0-117-generic-x86_64-with-glibc2.35` ## OpenVINO Parity All four parity values are from fresh runs in this session: - `openvino_parity_patchcore_bottle.json` - `openvino_parity_patchcore_cable.json` - `openvino_parity_patchcore_capsule.json` - `openvino_parity_patchcore_leather.json` Read these fields: - max abs error per output: `comparison.per_output..max_abs_error` - pred_label flips: `summary.pred_label_flips` - pred_mask pixel flips: `summary.pred_mask_pixel_flips` - ONNX Runtime version: `library_versions.onnxruntime` (1.23.2) - OpenVINO version: `library_versions.openvino` (2026.1.0-21367-63e31528c62-releases/2026/1) - Inference precision hint: `inference_precision_hint` (`f32`) ## Checkpoint SHA256s Each PatchCore eval JSON has `checkpoint_hash` and the latency JSON references the same checkpoint path. The Checkpoints table in README.md reuses these. | category | seed | source JSON | field | |----------|------|----------------------------------------------|-------------------| | bottle | 0 | `patchcore_bottle.json` | `checkpoint_hash` | | bottle | 1 | `patchcore_bottle_seed1.json` | `checkpoint_hash` | | bottle | 2 | `patchcore_bottle_seed2.json` | `checkpoint_hash` | | cable | 0 | `patchcore_cable.json` | `checkpoint_hash` | | capsule | 0 | `patchcore_capsule.json` | `checkpoint_hash` | | leather | 0 | `patchcore_leather.json` | `checkpoint_hash` | | leather | 1 | `patchcore_leather_seed1.json` | `checkpoint_hash` | | leather | 2 | `patchcore_leather_seed2.json` | `checkpoint_hash` |