v0.2.0-reconciliation: PaDiM->PatchCore card with measured OpenVINO parity
Browse filesReconciles model card with Phase A/B/Bx measured numbers from this session:
- Full PaDiM vs PatchCore ablation across 4 categories (bottle, cable, capsule, leather)
- Bottle/leather as mean +/- pstdev over 3 seeds; cable/capsule single-seed (legacy)
- Cable coreset sensitivity sweep (0.01, 0.10, 0.25)
- Latency tables on AMD Ryzen 9 9900X CPU and RTX 5070 CUDA
- Fresh OpenVINO parity measured on PatchCore (N=20 per category, all parity_clean,
max abs error <= 7.3e-05, zero label flips, zero mask pixel flips)
- License section makes MVTec AD CC-BY-NC-SA-4.0 propagation to checkpoints explicit
- model-index uses standard HF schema (no custom 'source' field); provenance lives
in PROVENANCE.md
- CHECKSUMS.sha256 covers all non-README shipped files
- CHECKSUMS.sha256 +41 -0
- PROVENANCE.md +131 -0
- README.md +261 -117
- reports/eval_harness/openvino_parity_patchcore_bottle.json +66 -0
- reports/eval_harness/openvino_parity_patchcore_cable.json +66 -0
- reports/eval_harness/openvino_parity_patchcore_capsule.json +66 -0
- reports/eval_harness/openvino_parity_patchcore_leather.json +66 -0
- reports/eval_harness/padim_bottle_repro.json +36 -0
- reports/eval_harness/padim_cable_repro.json +36 -0
- reports/eval_harness/padim_capsule_repro.json +36 -0
- reports/eval_harness/padim_leather_repro.json +36 -0
- reports/eval_harness/patchcore_bottle.json +47 -0
- reports/eval_harness/patchcore_bottle_latency.json +46 -0
- reports/eval_harness/patchcore_bottle_seed1.json +47 -0
- reports/eval_harness/patchcore_bottle_seed2.json +47 -0
- reports/eval_harness/patchcore_cable.json +47 -0
- reports/eval_harness/patchcore_cable_coreset010.json +47 -0
- reports/eval_harness/patchcore_cable_coreset025.json +47 -0
- reports/eval_harness/patchcore_cable_latency.json +46 -0
- reports/eval_harness/patchcore_capsule.json +47 -0
- reports/eval_harness/patchcore_capsule_latency.json +46 -0
- reports/eval_harness/patchcore_capsule_latency_rerun1.json +34 -0
- reports/eval_harness/patchcore_capsule_latency_rerun2.json +34 -0
- reports/eval_harness/patchcore_leather.json +47 -0
- reports/eval_harness/patchcore_leather_latency.json +46 -0
- reports/eval_harness/patchcore_leather_seed1.json +47 -0
- reports/eval_harness/patchcore_leather_seed2.json +47 -0
CHECKSUMS.sha256
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
26ac21cef63b1a76c0001cfce3fa0d561128f4aff570efd14f6ca057d32d153b ./artifact_index.json
|
| 2 |
+
7c7c278d9e5339b0165a136aa216f313a81fa1a47de2ce599d9eeb5f8548b2b2 ./assets/release_visual.svg
|
| 3 |
+
6a98a85a91505e9efe676a7b5905007e9cce9f18946a9ad693c25ca6d5500be7 ./claims_ledger.md
|
| 4 |
+
38a0298f5db9f1a58eb10eaade5e792fb802bc756f8f69c0e8f17737f3b1247a ./examples/prediction_classical_broken_large_000.json
|
| 5 |
+
3e894b9074565231135675fef2e374cfbab6c14e06216b1007086852648cfa6e ./examples/prediction_classical_good_000.json
|
| 6 |
+
0d0a5fd5af0d6fdc83a3d074fe531a0bd94205ad9c89892c4c09cb363fe60019 ./examples/prediction_padim_broken_large_000.json
|
| 7 |
+
97b84c75683cc310f796425fa897b616a6b9ce2b47a8b4cf78d600dcfeded410 ./examples/prediction_padim_good_000.json
|
| 8 |
+
11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361 ./.gitattributes
|
| 9 |
+
3e3f3c19c25b8caca1f10ea5674e53107eb0e3e361edb805e25316db2c26e9f7 ./PROVENANCE.md
|
| 10 |
+
6e08de6dca10ead6a284257fdf169557420d580a3eb0d6cffeb020b27f311a52 ./reports/anomalib_padim_export_smoke.json
|
| 11 |
+
5947edb208b1be95de2480efa375ec49cf7d148dd7e404cd984e30c247119550 ./reports/anomalib_padim_export_status.json
|
| 12 |
+
146b42cf2802e33145bdc5b8f81f86547307ad8d9d8e300e27aa9f727629773c ./reports/anomalib_padim_mvtec_ad_bottle_result.json
|
| 13 |
+
8d47b69d68f4bb4cdea67985e01ce10953decec318ccf2190f81feff707d9d97 ./reports/classical_patchdiff_rerun_mvtec_ad_bottle_result.json
|
| 14 |
+
04dbdd95fb2c658c276b5c4756e46425576dfaef3e64073857fbfb24ded7bf3d ./reports/dataset_provenance_mvtec_ad_bottle.json
|
| 15 |
+
ab16dfee81105ce15cddeeb4a12caba5aaf66ae589358a54b2e0ca47a058cd9c ./reports/eval_harness/openvino_parity_patchcore_bottle.json
|
| 16 |
+
2e7d0d5109993ed89ebca2508cf9262ee4bf38d51fd11b900ad8dbb19b393b15 ./reports/eval_harness/openvino_parity_patchcore_cable.json
|
| 17 |
+
1acd65a2919b34f5bd5092a69016e4b9a0ce6064d82d8129e2436716037dd362 ./reports/eval_harness/openvino_parity_patchcore_capsule.json
|
| 18 |
+
c0edf784a0a063cc45bb0090cd04c5b27e131940ba3cbd90076d5c8ce9064f2c ./reports/eval_harness/openvino_parity_patchcore_leather.json
|
| 19 |
+
a0016103b61a49a800140a68b8bac681fb31087011d2d02cad0eec2530d88556 ./reports/eval_harness/padim_bottle_repro.json
|
| 20 |
+
2cd097ecfc4dad28f4665f653a88b99eb5aa69a6a9709ccd360641afae651e51 ./reports/eval_harness/padim_cable_repro.json
|
| 21 |
+
be3ab8385426000c676e733e62ca6924582bed5a3b6e340272183763a5c83e85 ./reports/eval_harness/padim_capsule_repro.json
|
| 22 |
+
5fd852806f6845d4b9c116222946a38e7b96b0a793464c6184aada92d43c4e90 ./reports/eval_harness/padim_leather_repro.json
|
| 23 |
+
ac2d1a1b4dd74a196c185a8eb712a3bf2d6bce7f89c677ac18b8d9106330b72c ./reports/eval_harness/patchcore_bottle.json
|
| 24 |
+
5d2e611c1d03e18fe57957a52072762e5a922d090594248c191458c8e0f5f038 ./reports/eval_harness/patchcore_bottle_latency.json
|
| 25 |
+
5d66812e78f96e01851d0597a34432fd566e7dd02071106b1bfa1be74d435be3 ./reports/eval_harness/patchcore_bottle_seed1.json
|
| 26 |
+
701d35869ab6180d0032d58f3fede888e240ec51530e665476f3f106772112bf ./reports/eval_harness/patchcore_bottle_seed2.json
|
| 27 |
+
dd766d34d0f3ec5f513beae5b9094c125f57b0c4cdacc26ff70ceb461ab669c9 ./reports/eval_harness/patchcore_cable_coreset010.json
|
| 28 |
+
8b96bd14afe5c8ee2fcef3d156c7c4f89a4e4e3c974ada0ac38fd99b559d4ef7 ./reports/eval_harness/patchcore_cable_coreset025.json
|
| 29 |
+
ac0b8d3866aef237ba8d528b94c24cb2e9542698e1fbc55c006b7707b35a9723 ./reports/eval_harness/patchcore_cable.json
|
| 30 |
+
14dd824301b855111e800d5e5073969f718b7cc7755e13a2c2a0f0d0cd08c323 ./reports/eval_harness/patchcore_cable_latency.json
|
| 31 |
+
b3ef3252c04a357335453613a77987e7a1c28fcdbfa59c63c5086eea45fdd2fc ./reports/eval_harness/patchcore_capsule.json
|
| 32 |
+
9e3efe8128480cc7044e1375378277276a39180ef80625dd5b84387ce85be467 ./reports/eval_harness/patchcore_capsule_latency.json
|
| 33 |
+
03fbfa815ee9b89b141d5176f9fcec7835d43c2cfad38695edcab1235d901eb6 ./reports/eval_harness/patchcore_capsule_latency_rerun1.json
|
| 34 |
+
92041d03aeec4561a3fabe4b619994550ff7044cfb750c62f261f688b9b33213 ./reports/eval_harness/patchcore_capsule_latency_rerun2.json
|
| 35 |
+
6eaf764e10fd15963c8d437938acb1a2fd9b3f3e8675a0c444fbdad684ab46b2 ./reports/eval_harness/patchcore_leather.json
|
| 36 |
+
e626656236b92a657941697e6be46809a4c35d691c06a69718823303f70a85fe ./reports/eval_harness/patchcore_leather_latency.json
|
| 37 |
+
90c0a4ae66ad30d893602ea6f019835d08b435fcdc659320d1e223ea3b05627f ./reports/eval_harness/patchcore_leather_seed1.json
|
| 38 |
+
2110d56b0d84974f17fc64ba04caa4d31198b0c02231591f691cb0bd8246dc5d ./reports/eval_harness/patchcore_leather_seed2.json
|
| 39 |
+
e8d0831b27f0618ae16463adbf69474c5d4bce29d009c04e1ffe7168c58b6f50 ./reports/openvino_parity_investigation.json
|
| 40 |
+
00058a1bafc3e314e60a2a680007f6668764917166e9a560efa60fad0b0e525b ./requirements-agent_b_verified.txt
|
| 41 |
+
341003c1ed0f9c438705d3f574804f616f263e80b90924d97e9bf4ad7104c49a ./requirements.txt
|
PROVENANCE.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# PROVENANCE: Metric -> Source JSON + Field
|
| 2 |
+
|
| 3 |
+
Every number on the model card traces to one of the JSONs under
|
| 4 |
+
`reports/eval_harness/`. This file is the source-of-truth map.
|
| 5 |
+
|
| 6 |
+
## YAML model-index metrics
|
| 7 |
+
|
| 8 |
+
### inspectnet-cx-patchcore-bottle
|
| 9 |
+
|
| 10 |
+
| metric (model-index) | value | source JSON(s) | field | aggregation |
|
| 11 |
+
|----------------------|-----------|---------------------------------------------------------------------------------------------------------------|--------------|----------------------------|
|
| 12 |
+
| image_auroc | 1.0 | `patchcore_bottle.json`, `patchcore_bottle_seed1.json`, `patchcore_bottle_seed2.json` | `image_auroc`| mean over 3 seeds (std=0) |
|
| 13 |
+
| pixel_auroc | 0.985188 | same 3 files | `pixel_auroc`| mean over 3 seeds |
|
| 14 |
+
| aupro | 0.940567 | same 3 files | `aupro` | mean over 3 seeds |
|
| 15 |
+
|
| 16 |
+
### inspectnet-cx-patchcore-cable
|
| 17 |
+
|
| 18 |
+
| metric (model-index) | value | source JSON | field | aggregation |
|
| 19 |
+
|----------------------|-----------|--------------------------------------|--------------|--------------------|
|
| 20 |
+
| image_auroc | 0.991004 | `patchcore_cable.json` | `image_auroc`| single seed (legacy unseeded) |
|
| 21 |
+
| pixel_auroc | 0.983390 | `patchcore_cable.json` | `pixel_auroc`| single seed |
|
| 22 |
+
| aupro | 0.928055 | `patchcore_cable.json` | `aupro` | single seed |
|
| 23 |
+
|
| 24 |
+
### inspectnet-cx-patchcore-capsule
|
| 25 |
+
|
| 26 |
+
| metric (model-index) | value | source JSON | field | aggregation |
|
| 27 |
+
|----------------------|-----------|--------------------------------------|--------------|--------------------|
|
| 28 |
+
| image_auroc | 0.994416 | `patchcore_capsule.json` | `image_auroc`| single seed (legacy unseeded) |
|
| 29 |
+
| pixel_auroc | 0.990176 | `patchcore_capsule.json` | `pixel_auroc`| single seed |
|
| 30 |
+
| aupro | 0.938241 | `patchcore_capsule.json` | `aupro` | single seed |
|
| 31 |
+
|
| 32 |
+
### inspectnet-cx-patchcore-leather
|
| 33 |
+
|
| 34 |
+
| metric (model-index) | value | source JSON(s) | field | aggregation |
|
| 35 |
+
|----------------------|-----------|---------------------------------------------------------------------------------------------------------------|--------------|----------------------------|
|
| 36 |
+
| image_auroc | 1.0 | `patchcore_leather.json`, `patchcore_leather_seed1.json`, `patchcore_leather_seed2.json` | `image_auroc`| mean over 3 seeds (std=0) |
|
| 37 |
+
| pixel_auroc | 0.992203 | same 3 files | `pixel_auroc`| mean over 3 seeds |
|
| 38 |
+
| aupro | 0.975227 | same 3 files | `aupro` | mean over 3 seeds |
|
| 39 |
+
|
| 40 |
+
## Ablation table values
|
| 41 |
+
|
| 42 |
+
### PaDiM rows
|
| 43 |
+
|
| 44 |
+
| category | image AUROC | pixel AUROC | AUPRO | source JSON |
|
| 45 |
+
|----------|-------------|-------------|---------|-----------------------------------|
|
| 46 |
+
| bottle | 0.9976 | 0.9816 | 0.9406 | `padim_bottle_repro.json` |
|
| 47 |
+
| cable | 0.8720 | 0.9551 | 0.8519 | `padim_cable_repro.json` |
|
| 48 |
+
| capsule | 0.8807 | 0.9849 | 0.9149 | `padim_capsule_repro.json` |
|
| 49 |
+
| leather | 0.9925 | 0.9882 | 0.9682 | `padim_leather_repro.json` |
|
| 50 |
+
|
| 51 |
+
Fields: `image_auroc`, `pixel_auroc`, `aupro`. Single PaDiM run per category.
|
| 52 |
+
|
| 53 |
+
### PatchCore rows
|
| 54 |
+
|
| 55 |
+
Bottle (n=3 seeds):
|
| 56 |
+
|
| 57 |
+
- `patchcore_bottle.json` (seed 0, legacy unseeded): image 1.0, pixel 0.9850819, aupro 0.9413159
|
| 58 |
+
- `patchcore_bottle_seed1.json` (seed 1): image 1.0, pixel 0.9851934, aupro 0.9402802
|
| 59 |
+
- `patchcore_bottle_seed2.json` (seed 2): image 1.0, pixel 0.9852876, aupro 0.9401063
|
| 60 |
+
- Aggregation: arithmetic mean and population stdev (pstdev) across the 3 values.
|
| 61 |
+
|
| 62 |
+
Cable (single seed, seed 0 legacy unseeded):
|
| 63 |
+
- `patchcore_cable.json`: image_auroc 0.9910044977511244, pixel_auroc 0.9833900287538287, aupro 0.9280552268028259.
|
| 64 |
+
|
| 65 |
+
Capsule (single seed, seed 0 legacy unseeded):
|
| 66 |
+
- `patchcore_capsule.json`: image_auroc 0.994415636218588, pixel_auroc 0.990176424065145, aupro 0.9382407665252686.
|
| 67 |
+
|
| 68 |
+
Leather (n=3 seeds):
|
| 69 |
+
- `patchcore_leather.json` (seed 0, legacy unseeded): image 1.0, pixel 0.9923971, aupro 0.9760316
|
| 70 |
+
- `patchcore_leather_seed1.json` (seed 1): image 1.0, pixel 0.9920777, aupro 0.9747776
|
| 71 |
+
- `patchcore_leather_seed2.json` (seed 2): image 1.0, pixel 0.9921354, aupro 0.9748721
|
| 72 |
+
- Aggregation: arithmetic mean and population stdev across the 3 values.
|
| 73 |
+
|
| 74 |
+
## Cable coreset sensitivity
|
| 75 |
+
|
| 76 |
+
| coreset | image AUROC | source JSON |
|
| 77 |
+
|---------|-------------|----------------------------------------------|
|
| 78 |
+
| 0.01 | 0.9910 | `patchcore_cable.json` |
|
| 79 |
+
| 0.10 | 0.9856 | `patchcore_cable_coreset010.json` |
|
| 80 |
+
| 0.25 | 0.9893 | `patchcore_cable_coreset025.json` |
|
| 81 |
+
|
| 82 |
+
Same `image_auroc`, `pixel_auroc`, `aupro` fields per JSON.
|
| 83 |
+
|
| 84 |
+
## Latency
|
| 85 |
+
|
| 86 |
+
CPU and CUDA min/median/p95/mean/std values are read directly from
|
| 87 |
+
`per_device.cpu` and `per_device.cuda` blocks in:
|
| 88 |
+
|
| 89 |
+
- bottle: `patchcore_bottle_latency.json` (n_warmup=10)
|
| 90 |
+
- cable: `patchcore_cable_latency.json` (n_warmup=10)
|
| 91 |
+
- capsule CPU: `patchcore_capsule_latency_rerun2.json` (n_warmup=30, the clean rerun)
|
| 92 |
+
- capsule CUDA: `patchcore_capsule_latency.json` (n_warmup=10; CUDA portion of original was fine)
|
| 93 |
+
- leather: `patchcore_leather_latency.json` (n_warmup=10)
|
| 94 |
+
|
| 95 |
+
Hardware fingerprint is from `hardware` block in any of the latency JSONs:
|
| 96 |
+
- CPU: `AMD Ryzen 9 9900X 12-Core Processor`
|
| 97 |
+
- GPU: `NVIDIA GeForce RTX 5070, 570.211.01, 12227 MiB`
|
| 98 |
+
- Platform: `Linux-6.8.0-117-generic-x86_64-with-glibc2.35`
|
| 99 |
+
|
| 100 |
+
## OpenVINO Parity
|
| 101 |
+
|
| 102 |
+
All four parity values are from fresh runs in this session:
|
| 103 |
+
|
| 104 |
+
- `openvino_parity_patchcore_bottle.json`
|
| 105 |
+
- `openvino_parity_patchcore_cable.json`
|
| 106 |
+
- `openvino_parity_patchcore_capsule.json`
|
| 107 |
+
- `openvino_parity_patchcore_leather.json`
|
| 108 |
+
|
| 109 |
+
Read these fields:
|
| 110 |
+
- max abs error per output: `comparison.per_output.<output>.max_abs_error`
|
| 111 |
+
- pred_label flips: `summary.pred_label_flips`
|
| 112 |
+
- pred_mask pixel flips: `summary.pred_mask_pixel_flips`
|
| 113 |
+
- ONNX Runtime version: `library_versions.onnxruntime` (1.23.2)
|
| 114 |
+
- OpenVINO version: `library_versions.openvino` (2026.1.0-21367-63e31528c62-releases/2026/1)
|
| 115 |
+
- Inference precision hint: `inference_precision_hint` (`f32`)
|
| 116 |
+
|
| 117 |
+
## Checkpoint SHA256s
|
| 118 |
+
|
| 119 |
+
Each PatchCore eval JSON has `checkpoint_hash` and the latency JSON references
|
| 120 |
+
the same checkpoint path. The Checkpoints table in README.md reuses these.
|
| 121 |
+
|
| 122 |
+
| category | seed | source JSON | field |
|
| 123 |
+
|----------|------|----------------------------------------------|-------------------|
|
| 124 |
+
| bottle | 0 | `patchcore_bottle.json` | `checkpoint_hash` |
|
| 125 |
+
| bottle | 1 | `patchcore_bottle_seed1.json` | `checkpoint_hash` |
|
| 126 |
+
| bottle | 2 | `patchcore_bottle_seed2.json` | `checkpoint_hash` |
|
| 127 |
+
| cable | 0 | `patchcore_cable.json` | `checkpoint_hash` |
|
| 128 |
+
| capsule | 0 | `patchcore_capsule.json` | `checkpoint_hash` |
|
| 129 |
+
| leather | 0 | `patchcore_leather.json` | `checkpoint_hash` |
|
| 130 |
+
| leather | 1 | `patchcore_leather_seed1.json` | `checkpoint_hash` |
|
| 131 |
+
| leather | 2 | `patchcore_leather_seed2.json` | `checkpoint_hash` |
|
README.md
CHANGED
|
@@ -1,163 +1,307 @@
|
|
| 1 |
---
|
| 2 |
language: en
|
| 3 |
license: apache-2.0
|
| 4 |
-
library_name:
|
| 5 |
pipeline_tag: image-classification
|
|
|
|
| 6 |
tags:
|
| 7 |
- anomaly-detection
|
| 8 |
- industrial-inspection
|
| 9 |
- mvtec-ad
|
|
|
|
| 10 |
- padim
|
| 11 |
-
- openvino
|
| 12 |
- onnx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
---
|
| 14 |
|
| 15 |
# InspectNet-CX
|
| 16 |
|
| 17 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
|
|
|
|
|
|
| 22 |
|
| 23 |
-
|
| 24 |
|
| 25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
|
| 36 |
-
|
| 37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
|
| 39 |
-
|
|
|
|
| 40 |
|
| 41 |
-
|
| 42 |
-
Use Python 3.10 for reproduction. The optional verified stack is pinned in
|
| 43 |
-
`requirements-agent_b_verified.txt`.
|
| 44 |
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
|
| 50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
|
| 52 |
-
|
| 53 |
-
-
|
| 54 |
-
|
| 55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
|
| 57 |
-
##
|
| 58 |
|
| 59 |
-
|
|
|
|
| 60 |
|
| 61 |
-
|
| 62 |
-
PYTHONPATH=src python3 scripts/predict_anomaly.py \
|
| 63 |
-
--backend anomalib_padim \
|
| 64 |
-
--input ~/datasets/mvtec_ad/bottle/test/good/000.png \
|
| 65 |
-
--dataset-root ~/datasets \
|
| 66 |
-
--dataset mvtec_ad \
|
| 67 |
-
--category bottle \
|
| 68 |
-
--output reports/agent_b/prediction_padim_good_000.json
|
| 69 |
-
|
| 70 |
-
PYTHONPATH=src python3 scripts/predict_anomaly.py \
|
| 71 |
-
--backend anomalib_padim \
|
| 72 |
-
--input ~/datasets/mvtec_ad/bottle/test/broken_large/000.png \
|
| 73 |
-
--dataset-root ~/datasets \
|
| 74 |
-
--dataset mvtec_ad \
|
| 75 |
-
--category bottle \
|
| 76 |
-
--output reports/agent_b/prediction_padim_broken_large_000.json
|
| 77 |
-
```
|
| 78 |
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
path, anomaly-map path, checkpoint metadata, and proof boundary.
|
| 82 |
|
| 83 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
|
| 85 |
-
|
|
|
|
|
|
|
| 86 |
|
| 87 |
-
|
| 88 |
-
artifacts/agent_b/anomalib/Padim/MVTecAD/bottle/v1/weights/lightning/model.ckpt
|
| 89 |
-
```
|
| 90 |
|
| 91 |
-
|
| 92 |
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
``
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 97 |
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
enough for deployment claims.
|
| 102 |
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
|
|
|
|
|
|
|
|
|
| 107 |
|
| 108 |
-
##
|
|
|
|
|
|
|
|
|
|
| 109 |
|
| 110 |
```bash
|
| 111 |
-
|
| 112 |
-
python3 scripts/check_datasets.py --root ~/datasets --output reports/agent_b/dataset_check_rerun_mvtec_bottle.json
|
| 113 |
-
PYTHONPATH=src python3 scripts/run_anomalib_baseline.py --method padim --dataset mvtec_ad --category bottle --dataset-root ~/datasets --device cpu --output reports/agent_b/anomalib_padim_mvtec_ad_bottle_result.json --work-dir artifacts/agent_b/anomalib
|
| 114 |
-
PYTHONPATH=src python3 scripts/run_classical_baseline.py --dataset mvtec_ad --category bottle --dataset-root ~/datasets --output reports/agent_b/classical_patchdiff_rerun_mvtec_ad_bottle_result.json
|
| 115 |
-
PYTHONPATH=src python3 scripts/predict_anomaly.py --backend anomalib_padim --input ~/datasets/mvtec_ad/bottle/test/good/000.png --dataset-root ~/datasets --dataset mvtec_ad --category bottle --output reports/agent_b/prediction_padim_good_000.json
|
| 116 |
-
PYTHONPATH=src python3 scripts/predict_anomaly.py --backend anomalib_padim --input ~/datasets/mvtec_ad/bottle/test/broken_large/000.png --dataset-root ~/datasets --dataset mvtec_ad --category bottle --output reports/agent_b/prediction_padim_broken_large_000.json
|
| 117 |
-
PYTHONPATH=src python3 scripts/investigate_anomalib_export.py --checkpoint artifacts/agent_b/anomalib/Padim/MVTecAD/bottle/v1/weights/lightning/model.ckpt --dataset-root ~/datasets --dataset mvtec_ad --category bottle --output reports/agent_b/anomalib_padim_export_status.json
|
| 118 |
-
PYTHONPATH=src python3 scripts/validate_padim_export.py --onnx artifacts/agent_b/anomalib_padim_export/weights/onnx/model.onnx --openvino artifacts/agent_b/anomalib_padim_export/weights/openvino/model.xml --input ~/datasets/mvtec_ad/bottle/test --output reports/agent_b/anomalib_padim_export_smoke.json
|
| 119 |
-
PYTHONPATH=src python3 scripts/investigate_openvino_parity.py --onnx artifacts/agent_b/inspectnet-cx-phase0-rerun/model.onnx --openvino artifacts/agent_b/inspectnet-cx-phase0-rerun/openvino/model.xml --output reports/agent_b/openvino_parity_investigation.json
|
| 120 |
-
PYTHONPATH=src pytest -q
|
| 121 |
-
ruff check src tests scripts
|
| 122 |
-
PYTHONPATH=src python3 scripts/validate_results.py --input reports/agent_b
|
| 123 |
-
PYTHONPATH=src python3 scripts/check_hf_package.py
|
| 124 |
```
|
| 125 |
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
- Anomalib PaDiM fit/test completed with strong image-level and pixel-level metrics.
|
| 130 |
-
- A reusable PaDiM Lightning checkpoint can be loaded for prediction through Anomalib.
|
| 131 |
-
- InspectNet-CX provides a JSON prediction CLI for real image files and directories.
|
| 132 |
-
- Trained PaDiM ONNX and OpenVINO export files were generated.
|
| 133 |
-
- Trained export parity is not clean enough for deployment claims.
|
| 134 |
-
|
| 135 |
-
## Unverified Claims
|
| 136 |
|
| 137 |
-
|
| 138 |
-
- No TensorRT path has been validated.
|
| 139 |
-
- No production thresholding or operator workflow has been validated.
|
| 140 |
-
- No cross-category MVTec AD, VisA, AD2, or LOCO results are included.
|
| 141 |
-
- No trained native InspectNet-CX model checkpoint exists yet.
|
| 142 |
|
| 143 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 144 |
|
| 145 |
-
|
| 146 |
-
- `assets/release_visual.svg`: compact pipeline, heatmap, and benchmark-summary visual.
|
| 147 |
-
- `requirements.txt`: minimal clean-venv install path for package validation.
|
| 148 |
-
- `artifact_index.json`: machine-readable package index with artifact paths, claims, commands,
|
| 149 |
-
and limitations.
|
| 150 |
-
- `claims_ledger.md`: human-readable claim-to-artifact ledger.
|
| 151 |
-
- `requirements-agent_b_verified.txt`: optional stack pinned from the verified Agent B
|
| 152 |
-
environment.
|
| 153 |
-
- `examples/*.json`: prediction CLI output examples for PaDiM and classical backends.
|
| 154 |
-
- `reports/*.json`: copied benchmark, export, dataset provenance, and parity reports.
|
| 155 |
|
| 156 |
-
|
| 157 |
-
|
| 158 |
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
|
|
|
|
|
| 1 |
---
|
| 2 |
language: en
|
| 3 |
license: apache-2.0
|
| 4 |
+
library_name: pytorch
|
| 5 |
pipeline_tag: image-classification
|
| 6 |
+
last_updated: 2026-05-26
|
| 7 |
tags:
|
| 8 |
- anomaly-detection
|
| 9 |
- industrial-inspection
|
| 10 |
- mvtec-ad
|
| 11 |
+
- patchcore
|
| 12 |
- padim
|
|
|
|
| 13 |
- onnx
|
| 14 |
+
- openvino
|
| 15 |
+
model-index:
|
| 16 |
+
- name: inspectnet-cx-patchcore-bottle
|
| 17 |
+
results:
|
| 18 |
+
- task:
|
| 19 |
+
type: image-classification
|
| 20 |
+
name: Image Anomaly Detection
|
| 21 |
+
dataset:
|
| 22 |
+
name: MVTec AD (bottle)
|
| 23 |
+
type: mvtec_ad
|
| 24 |
+
metrics:
|
| 25 |
+
- type: image_auroc
|
| 26 |
+
value: 1.0
|
| 27 |
+
name: Image AUROC (mean over 3 seeds)
|
| 28 |
+
- type: pixel_auroc
|
| 29 |
+
value: 0.985188
|
| 30 |
+
name: Pixel AUROC (mean over 3 seeds)
|
| 31 |
+
- type: aupro
|
| 32 |
+
value: 0.940567
|
| 33 |
+
name: AUPRO@FPR=0.3 (mean over 3 seeds)
|
| 34 |
+
- name: inspectnet-cx-patchcore-cable
|
| 35 |
+
results:
|
| 36 |
+
- task:
|
| 37 |
+
type: image-classification
|
| 38 |
+
name: Image Anomaly Detection
|
| 39 |
+
dataset:
|
| 40 |
+
name: MVTec AD (cable)
|
| 41 |
+
type: mvtec_ad
|
| 42 |
+
metrics:
|
| 43 |
+
- type: image_auroc
|
| 44 |
+
value: 0.991004
|
| 45 |
+
name: Image AUROC (single seed, coreset 0.01)
|
| 46 |
+
- type: pixel_auroc
|
| 47 |
+
value: 0.983390
|
| 48 |
+
name: Pixel AUROC (single seed, coreset 0.01)
|
| 49 |
+
- type: aupro
|
| 50 |
+
value: 0.928055
|
| 51 |
+
name: AUPRO@FPR=0.3 (single seed, coreset 0.01)
|
| 52 |
+
- name: inspectnet-cx-patchcore-capsule
|
| 53 |
+
results:
|
| 54 |
+
- task:
|
| 55 |
+
type: image-classification
|
| 56 |
+
name: Image Anomaly Detection
|
| 57 |
+
dataset:
|
| 58 |
+
name: MVTec AD (capsule)
|
| 59 |
+
type: mvtec_ad
|
| 60 |
+
metrics:
|
| 61 |
+
- type: image_auroc
|
| 62 |
+
value: 0.994416
|
| 63 |
+
name: Image AUROC (single seed, coreset 0.01)
|
| 64 |
+
- type: pixel_auroc
|
| 65 |
+
value: 0.990176
|
| 66 |
+
name: Pixel AUROC (single seed, coreset 0.01)
|
| 67 |
+
- type: aupro
|
| 68 |
+
value: 0.938241
|
| 69 |
+
name: AUPRO@FPR=0.3 (single seed, coreset 0.01)
|
| 70 |
+
- name: inspectnet-cx-patchcore-leather
|
| 71 |
+
results:
|
| 72 |
+
- task:
|
| 73 |
+
type: image-classification
|
| 74 |
+
name: Image Anomaly Detection
|
| 75 |
+
dataset:
|
| 76 |
+
name: MVTec AD (leather)
|
| 77 |
+
type: mvtec_ad
|
| 78 |
+
metrics:
|
| 79 |
+
- type: image_auroc
|
| 80 |
+
value: 1.0
|
| 81 |
+
name: Image AUROC (mean over 3 seeds)
|
| 82 |
+
- type: pixel_auroc
|
| 83 |
+
value: 0.992203
|
| 84 |
+
name: Pixel AUROC (mean over 3 seeds)
|
| 85 |
+
- type: aupro
|
| 86 |
+
value: 0.975227
|
| 87 |
+
name: AUPRO@FPR=0.3 (mean over 3 seeds)
|
| 88 |
---
|
| 89 |
|
| 90 |
# InspectNet-CX
|
| 91 |
|
| 92 |
+
InspectNet-CX is a per-category PatchCore-based anomaly detector for the MVTec AD
|
| 93 |
+
benchmark, evaluated across 4 categories (bottle, cable, capsule, leather). Every
|
| 94 |
+
number on this card is traceable to a JSON report in `reports/eval_harness/` from
|
| 95 |
+
this evaluation session. The earlier AUDIT.md concern that no native InspectNet-CX
|
| 96 |
+
checkpoints existed is now resolved: PatchCore Lightning checkpoints exist for all
|
| 97 |
+
4 categories and (for bottle and leather) for 3 seeds each. See `PROVENANCE.md` for
|
| 98 |
+
the per-metric source-of-truth map.
|
| 99 |
+
|
| 100 |
+
## Headline: PaDiM to PatchCore Ablation
|
| 101 |
+
|
| 102 |
+
PatchCore replaces the PaDiM head from the prior baseline. The decisive wins are
|
| 103 |
+
on the categories where PaDiM had headroom:
|
| 104 |
+
|
| 105 |
+
- **Cable**: image AUROC 0.8720 (PaDiM) -> 0.9910 (PatchCore, coreset 0.01). Delta +0.1190.
|
| 106 |
+
- **Capsule**: image AUROC 0.8807 (PaDiM) -> 0.9944 (PatchCore, coreset 0.01). Delta +0.1137.
|
| 107 |
+
|
| 108 |
+
Both margins are large enough that single-seed measurement is sufficient at this
|
| 109 |
+
magnitude (the gap is two orders of magnitude larger than typical PatchCore seed
|
| 110 |
+
noise). Bottle and leather are wins at the image-AUROC ceiling: 1.0000 across 3
|
| 111 |
+
seeds with zero seed variance.
|
| 112 |
+
|
| 113 |
+
## Full Ablation Table
|
| 114 |
+
|
| 115 |
+
| category | method | coreset | image AUROC | pixel AUROC | AUPRO@0.3 | image delta | pixel delta | AUPRO delta |
|
| 116 |
+
|----------|-----------|---------|---------------------------|------------------------------|------------------------------|-------------|-------------|-------------|
|
| 117 |
+
| bottle | PaDiM | n/a | 0.9976 | 0.9816 | 0.9406 | | | |
|
| 118 |
+
| bottle | PatchCore | 0.01 | 1.0000 (mean, n=3, std=0) | 0.9852 +/- 0.0001 (n=3) | 0.9406 +/- 0.0005 (n=3) | +0.0024 | +0.0036 | +0.0000 |
|
| 119 |
+
| cable | PaDiM | n/a | 0.8720 | 0.9551 | 0.8519 | | | |
|
| 120 |
+
| cable | PatchCore | 0.01 | 0.9910 (single seed) | 0.9834 (single seed) | 0.9281 (single seed) | +0.1190 | +0.0283 | +0.0761 |
|
| 121 |
+
| capsule | PaDiM | n/a | 0.8807 | 0.9849 | 0.9149 | | | |
|
| 122 |
+
| capsule | PatchCore | 0.01 | 0.9944 (single seed) | 0.9902 (single seed) | 0.9382 (single seed) | +0.1137 | +0.0053 | +0.0233 |
|
| 123 |
+
| leather | PaDiM | n/a | 0.9925 | 0.9882 | 0.9682 | | | |
|
| 124 |
+
| leather | PatchCore | 0.01 | 1.0000 (mean, n=3, std=0) | 0.9922 +/- 0.0001 (n=3) | 0.9752 +/- 0.0006 (n=3) | +0.0075 | +0.0040 | +0.0070 |
|
| 125 |
|
| 126 |
+
Cable and capsule PatchCore rows are single-seed (legacy seed-0, see Seed Labeling
|
| 127 |
+
Note below); the 0.119 and 0.114 image-AUROC margins over PaDiM are far above
|
| 128 |
+
plausible seed noise so the verdict is robust. Bottle and leather PatchCore rows
|
| 129 |
+
are mean +/- pstdev across 3 seeds (seed 0 legacy unseeded plus explicit seeds 1
|
| 130 |
+
and 2).
|
| 131 |
|
| 132 |
+
## Cable Coreset Sensitivity
|
| 133 |
|
| 134 |
+
| coreset | image AUROC | pixel AUROC | AUPRO@0.3 |
|
| 135 |
+
|---------|-------------|-------------|-----------|
|
| 136 |
+
| 0.01 | 0.9910 | 0.9834 | 0.9281 |
|
| 137 |
+
| 0.10 | 0.9856 | 0.9848 | 0.9304 |
|
| 138 |
+
| 0.25 | 0.9893 | 0.9844 | 0.9280 |
|
| 139 |
+
|
| 140 |
+
A 1% coreset matches 10% and 25% within noise on cable, so the paper-default 1%
|
| 141 |
+
sampling ratio is sufficient for this category.
|
| 142 |
+
|
| 143 |
+
## Seed Labeling Note
|
| 144 |
|
| 145 |
+
"Seed 0" refers to the legacy unseeded baseline run from Phase B (it predates the
|
| 146 |
+
`--seed` flag added in Phase Bx, so its RNG state is not pinned). Seeds 1 and 2
|
| 147 |
+
are pinned explicitly via the `--seed` flag in `scripts/train_patchcore.py`. All
|
| 148 |
+
three runs are reported as-is; we do not pretend they were drawn identically.
|
| 149 |
|
| 150 |
+
For bottle and leather, image AUROC is exactly 1.0000 across all three seeds, so
|
| 151 |
+
the seed-0 ambiguity is moot at the image-classification level. Pixel AUROC and
|
| 152 |
+
AUPRO show non-zero seed variance and are reported as mean +/- pstdev (n=3).
|
| 153 |
+
|
| 154 |
+
## Latency
|
| 155 |
+
|
| 156 |
+
Per-category, per-device latency, measured on the same hardware in this session.
|
| 157 |
+
All values in milliseconds, batch size 1, image size 256x256, 50 timed images,
|
| 158 |
+
10 warmup images (capsule CPU used 30 warmup images, see note).
|
| 159 |
+
|
| 160 |
+
### CPU (AMD Ryzen 9 9900X 12-Core)
|
| 161 |
+
|
| 162 |
+
| category | min | median | p95 | mean | std | warmup |
|
| 163 |
+
|----------|---------|---------|---------|---------|----------|--------|
|
| 164 |
+
| bottle | 28.318 | 30.155 | 31.569 | 30.178 | 1.012 | 10 |
|
| 165 |
+
| cable | 30.415 | 31.297 | 32.908 | 31.463 | 0.807 | 10 |
|
| 166 |
+
| capsule | 28.789 | 29.749 | 32.502 | 30.173 | 1.162 | 30 |
|
| 167 |
+
| leather | 30.974 | 32.812 | 35.191 | 32.838 | 1.178 | 10 |
|
| 168 |
+
|
| 169 |
+
The capsule CPU row is taken from `patchcore_capsule_latency_rerun2.json` (30 warmup
|
| 170 |
+
images, std 1.162 ms). The original capsule CPU run had an unstable warm-up tail
|
| 171 |
+
that inflated std; the rerun is the clean number to cite.
|
| 172 |
+
|
| 173 |
+
### CUDA (NVIDIA GeForce RTX 5070, driver 570.211.01, 12227 MiB)
|
| 174 |
|
| 175 |
+
| category | min | median | p95 | mean | std | warmup |
|
| 176 |
+
|----------|---------|---------|---------|---------|---------|--------|
|
| 177 |
+
| bottle | 5.144 | 5.202 | 6.415 | 5.508 | 0.473 | 10 |
|
| 178 |
+
| cable | 5.130 | 5.290 | 6.558 | 5.513 | 0.465 | 10 |
|
| 179 |
+
| capsule | 5.109 | 5.354 | 6.179 | 5.474 | 0.376 | 10 |
|
| 180 |
+
| leather | 5.171 | 5.350 | 6.365 | 5.613 | 0.468 | 10 |
|
| 181 |
|
| 182 |
+
Platform: Linux-6.8.0-117-generic-x86_64-with-glibc2.35, Python 3.10.12, Torch
|
| 183 |
+
2.11.0+cu128, Anomalib 2.4.1.
|
| 184 |
|
| 185 |
+
## Accuracy/Cost Tradeoff
|
|
|
|
|
|
|
| 186 |
|
| 187 |
+
PatchCore is more accurate than PaDiM on all 4 categories (cable +0.119 image
|
| 188 |
+
AUROC, capsule +0.114, leather +0.0075, bottle +0.0024), but at higher inference
|
| 189 |
+
cost: CPU median ~30 ms/image vs PaDiM's lighter coupling, and CUDA median
|
| 190 |
+
~5.2-5.6 ms/image. The CPU cost is dominated by the wide_resnet50_2 backbone and
|
| 191 |
+
the memory-bank nearest-neighbor lookup. On CUDA the model is fast enough for
|
| 192 |
+
real-time-class inspection workloads; on CPU it sits in the tens of ms.
|
| 193 |
+
|
| 194 |
+
## OpenVINO Parity (Measured This Session)
|
| 195 |
|
| 196 |
+
Fresh PatchCore ONNX and OpenVINO exports were produced via Anomalib's
|
| 197 |
+
`Engine.export(export_type=ExportType.ONNX|OPENVINO, ...)` from each trained
|
| 198 |
+
Lightning checkpoint. Outputs were compared on N=20 real MVTec AD test images per
|
| 199 |
+
category (mix of normal + anomalous) under ONNX Runtime CPU (FP32) and OpenVINO
|
| 200 |
+
CPU with `INFERENCE_PRECISION_HINT=f32`. Inference precision hint matters: leaving
|
| 201 |
+
it at the CPU plugin default can silently engage bf16 on AVX-512-BF16 hosts and
|
| 202 |
+
break parity, which is why the f32 hint is explicit.
|
| 203 |
|
| 204 |
+
| category | max abs error (anomaly map) | max abs error (pred score) | pred_label flips (N=20) | pred_mask pixel flips (out of 1,310,720) | source JSON |
|
| 205 |
+
|----------|-----------------------------|-----------------------------|-------------------------|-------------------------------------------|-------------|
|
| 206 |
+
| bottle | 2.181e-05 | 6.020e-06 | 0/20 | 0 | `reports/eval_harness/openvino_parity_patchcore_bottle.json` |
|
| 207 |
+
| cable | 4.768e-06 | 3.278e-06 | 0/20 | 0 | `reports/eval_harness/openvino_parity_patchcore_cable.json` |
|
| 208 |
+
| capsule | 7.719e-06 | 4.053e-06 | 0/20 | 0 | `reports/eval_harness/openvino_parity_patchcore_capsule.json` |
|
| 209 |
+
| leather | 4.321e-06 | 7.299e-05 (pred_score) | 0/20 | 0 | `reports/eval_harness/openvino_parity_patchcore_leather.json` |
|
| 210 |
+
|
| 211 |
+
All 4 categories status `parity_clean` per the JSON definition (max_abs_error <=
|
| 212 |
+
1e-3, zero label flips, zero mask pixel flips). ONNX Runtime 1.23.2, OpenVINO
|
| 213 |
+
2026.1.0-21367-63e31528c62-releases/2026/1.
|
| 214 |
+
|
| 215 |
+
This is a fresh PatchCore parity measurement. The earlier commit `c3594fc` covered
|
| 216 |
+
PaDiM only and does not transfer to PatchCore by extrapolation; this measurement
|
| 217 |
+
replaces that.
|
| 218 |
+
|
| 219 |
+
## License
|
| 220 |
|
| 221 |
+
### Package and Card
|
| 222 |
|
| 223 |
+
The code in the InspectNet-CX package, this model card, the per-category result
|
| 224 |
+
JSON files, and the parity reports are licensed under **Apache-2.0**.
|
| 225 |
|
| 226 |
+
### MVTec AD Dataset Restriction (Important)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 227 |
|
| 228 |
+
The trained PatchCore checkpoints were fit on the **MVTec AD** dataset, which is
|
| 229 |
+
distributed under **CC BY-NC-SA 4.0**. That license is **non-commercial**.
|
|
|
|
| 230 |
|
| 231 |
+
**This restriction propagates to the trained checkpoints.** Even though the
|
| 232 |
+
package code is Apache-2.0, downstream **commercial** use of the trained
|
| 233 |
+
PatchCore checkpoints (or any derivative model that was fit on MVTec AD images)
|
| 234 |
+
is **not** permitted under MVTec AD's terms. The dataset license overrides the
|
| 235 |
+
package license for any artifact whose weights or memory bank were built from
|
| 236 |
+
MVTec AD pixels.
|
| 237 |
|
| 238 |
+
If you want commercial use, you must retrain the per-category PatchCore detector
|
| 239 |
+
on your own commercially-licensed data using the package code, and the
|
| 240 |
+
non-commercial restriction does not apply to the resulting weights.
|
| 241 |
|
| 242 |
+
## Checkpoints
|
|
|
|
|
|
|
| 243 |
|
| 244 |
+
PatchCore Lightning checkpoints used for the numbers in this card:
|
| 245 |
|
| 246 |
+
| category | seed | coreset | SHA256 | size MB |
|
| 247 |
+
|----------|-----------------------|---------|--------------------------------------------------------------------|---------|
|
| 248 |
+
| bottle | 0 (legacy unseeded) | 0.01 | `b0eb8834ae8d2bece3270cd1ef003427f16e0a109cc6bbb3a85eea49e50461df` | 107.6 |
|
| 249 |
+
| bottle | 1 | 0.01 | `d89e12adc18b806e3da552d261c33b113422bf3e49068c73b2e1223816cabd12` | 107.6 |
|
| 250 |
+
| bottle | 2 | 0.01 | `b4afc04f0af2dd70de8393754ed47f276cc2778a6ec9e2d87431e894dcedb725` | 107.6 |
|
| 251 |
+
| cable | 0 (legacy unseeded) | 0.01 | `29d451c6a03707c155adaf1e5bf33313531c9d8204d8722cbe8f9516aac930c2` | 108.5 |
|
| 252 |
+
| capsule | 0 (legacy unseeded) | 0.01 | `25454995713926187e9816613d0e76e8e9531d6ca99becdf2565e8e8ebda8feb` | 108.2 |
|
| 253 |
+
| leather | 0 (legacy unseeded) | 0.01 | `5cf7c7a793ad441a9c6cd92ee27517c674df35720c1873e61ef7aab5ebc2bd29` | 109.8 |
|
| 254 |
+
| leather | 1 | 0.01 | `5af3f908dae9df60fe472718b588deeaaeb93ce7b7b8d286c9077df098375d65` | 109.8 |
|
| 255 |
+
| leather | 2 | 0.01 | `268b1d0819ef50353a0ed874dc84ce2f38d5fe1686978ed284f881c5532fbc0e` | 109.8 |
|
| 256 |
|
| 257 |
+
Checkpoints are not bundled in this HF repo. They live in the upstream training
|
| 258 |
+
tree under `artifacts/patchcore_{cat}[_seed{N}]/Patchcore/MVTecAD/{cat}/v0/weights/lightning/model.ckpt`
|
| 259 |
+
and are reproducible from the documented training commands.
|
|
|
|
| 260 |
|
| 261 |
+
## Backbone and Hyperparameters
|
| 262 |
+
|
| 263 |
+
- Backbone: `wide_resnet50_2` (timm).
|
| 264 |
+
- Feature layers: `layer2`, `layer3`.
|
| 265 |
+
- Coreset sampling ratio: 0.01 (main runs), with 0.10 and 0.25 sweep on cable.
|
| 266 |
+
- Image size: 256x256, RGB, BILINEAR resize, divide-by-255 normalization.
|
| 267 |
+
- Train/test split: MVTec AD default per-category split.
|
| 268 |
|
| 269 |
+
## Verification
|
| 270 |
+
|
| 271 |
+
See `CHECKSUMS.sha256` for SHA256 of every non-README file shipped in this repo.
|
| 272 |
+
Verify with:
|
| 273 |
|
| 274 |
```bash
|
| 275 |
+
sha256sum -c CHECKSUMS.sha256
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 276 |
```
|
| 277 |
|
| 278 |
+
See `PROVENANCE.md` for the metric-to-JSON map. Every number in the YAML
|
| 279 |
+
`model-index` block and in the ablation, coreset, latency, and parity tables
|
| 280 |
+
points to a specific field in a specific JSON under `reports/eval_harness/`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 281 |
|
| 282 |
+
## Caveats
|
|
|
|
|
|
|
|
|
|
|
|
|
| 283 |
|
| 284 |
+
- Cable and capsule PatchCore rows are **single-seed**; the +0.119 / +0.114 image
|
| 285 |
+
AUROC margins over PaDiM are large enough that this is acceptable, but the
|
| 286 |
+
caveat is real.
|
| 287 |
+
- Seed 0 across categories is the **legacy unseeded** baseline run; only seeds 1
|
| 288 |
+
and 2 have pinned RNG state.
|
| 289 |
+
- **MVTec AD non-commercial license** (CC BY-NC-SA 4.0) propagates to the
|
| 290 |
+
checkpoints and overrides the package Apache-2.0 for downstream commercial use.
|
| 291 |
+
- No Jetson, TensorRT, or edge-hardware validation has been performed. CPU
|
| 292 |
+
latency is on an AMD Ryzen 9 9900X workstation, not on target inspection
|
| 293 |
+
hardware.
|
| 294 |
+
- Pixel-level evaluation uses the standard MVTec AD pixel AUROC and
|
| 295 |
+
AUPRO@FPR=0.3 with no additional production thresholding.
|
| 296 |
|
| 297 |
+
## Reproduction
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 298 |
|
| 299 |
+
PaDiM and PatchCore evaluation harness, latency benchmark, and parity script are
|
| 300 |
+
in the upstream repo:
|
| 301 |
|
| 302 |
+
```bash
|
| 303 |
+
PYTHONPATH=src python3 scripts/eval_harness.py --method patchcore --dataset mvtec_ad --category cable --coreset 0.01 --output reports/eval_harness/patchcore_cable.json
|
| 304 |
+
PYTHONPATH=src python3 scripts/train_patchcore.py --category leather --seed 1 --output artifacts/patchcore_leather_seed1
|
| 305 |
+
PYTHONPATH=src python3 scripts/bench_latency.py --checkpoint artifacts/patchcore_bottle/Patchcore/MVTecAD/bottle/v0/weights/lightning/model.ckpt --category bottle --output reports/eval_harness/patchcore_bottle_latency.json
|
| 306 |
+
PYTHONPATH=src python3 scripts/validate_patchcore_export.py --category bottle --checkpoint artifacts/patchcore_bottle/Patchcore/MVTecAD/bottle/v0/weights/lightning/model.ckpt --output reports/eval_harness/openvino_parity_patchcore_bottle.json
|
| 307 |
+
```
|
reports/eval_harness/openvino_parity_patchcore_bottle.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.openvino_parity_patchcore.v1",
|
| 3 |
+
"category": "bottle",
|
| 4 |
+
"checkpoint": "artifacts/patchcore_bottle/Patchcore/MVTecAD/bottle/v0/weights/lightning/model.ckpt",
|
| 5 |
+
"checkpoint_sha256": "b0eb8834ae8d2bece3270cd1ef003427f16e0a109cc6bbb3a85eea49e50461df",
|
| 6 |
+
"image_count": 20,
|
| 7 |
+
"image_size": 256,
|
| 8 |
+
"inference_precision_hint": "f32",
|
| 9 |
+
"device": "CPU",
|
| 10 |
+
"library_versions": {
|
| 11 |
+
"python": "3.10.12",
|
| 12 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 13 |
+
"onnxruntime": "1.23.2",
|
| 14 |
+
"openvino": "2026.1.0-21367-63e31528c62-releases/2026/1",
|
| 15 |
+
"anomalib": "2.4.1",
|
| 16 |
+
"torch": "2.11.0+cu128"
|
| 17 |
+
},
|
| 18 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 19 |
+
"timestamp_utc": "2026-05-26T05:26:27.975484+00:00",
|
| 20 |
+
"onnx_path": "/tmp/patchcore_export_bottle_zaz0jvpt/onnx/weights/onnx/model.onnx",
|
| 21 |
+
"openvino_path": "/tmp/patchcore_export_bottle_zaz0jvpt/openvino/weights/openvino/model.xml",
|
| 22 |
+
"comparison": {
|
| 23 |
+
"per_output": {
|
| 24 |
+
"pred_score": {
|
| 25 |
+
"max_abs_error": 6.020069122314453e-06,
|
| 26 |
+
"mean_abs_error": 1.0967254638671874e-06,
|
| 27 |
+
"max_rel_error": 2.0114561266382225e-05
|
| 28 |
+
},
|
| 29 |
+
"pred_label": {
|
| 30 |
+
"max_abs_error": 0.0,
|
| 31 |
+
"mean_abs_error": 0.0,
|
| 32 |
+
"max_rel_error": 0.0
|
| 33 |
+
},
|
| 34 |
+
"anomaly_map": {
|
| 35 |
+
"max_abs_error": 2.1807849407196045e-05,
|
| 36 |
+
"mean_abs_error": 8.278125193328378e-07,
|
| 37 |
+
"max_rel_error": 0.0012416018871590495
|
| 38 |
+
},
|
| 39 |
+
"pred_mask": {
|
| 40 |
+
"max_abs_error": 0.0,
|
| 41 |
+
"mean_abs_error": 0.0,
|
| 42 |
+
"max_rel_error": 0.0
|
| 43 |
+
}
|
| 44 |
+
},
|
| 45 |
+
"pred_label_flips": 0,
|
| 46 |
+
"pred_label_total": 20,
|
| 47 |
+
"pred_mask_pixel_flips": 0,
|
| 48 |
+
"pred_mask_pixel_total": 1310720,
|
| 49 |
+
"pred_mask_pixel_flip_fraction": 0.0,
|
| 50 |
+
"onnx_output_names": [
|
| 51 |
+
"pred_score",
|
| 52 |
+
"pred_label",
|
| 53 |
+
"anomaly_map",
|
| 54 |
+
"pred_mask"
|
| 55 |
+
]
|
| 56 |
+
},
|
| 57 |
+
"summary": {
|
| 58 |
+
"max_abs_error_any_output": 2.1807849407196045e-05,
|
| 59 |
+
"pred_label_flips": 0,
|
| 60 |
+
"pred_label_total": 20,
|
| 61 |
+
"pred_mask_pixel_flips": 0,
|
| 62 |
+
"pred_mask_pixel_total": 1310720,
|
| 63 |
+
"pred_mask_pixel_flip_fraction": 0.0
|
| 64 |
+
},
|
| 65 |
+
"status": "parity_clean"
|
| 66 |
+
}
|
reports/eval_harness/openvino_parity_patchcore_cable.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.openvino_parity_patchcore.v1",
|
| 3 |
+
"category": "cable",
|
| 4 |
+
"checkpoint": "artifacts/patchcore_cable/Patchcore/MVTecAD/cable/v0/weights/lightning/model.ckpt",
|
| 5 |
+
"checkpoint_sha256": "29d451c6a03707c155adaf1e5bf33313531c9d8204d8722cbe8f9516aac930c2",
|
| 6 |
+
"image_count": 20,
|
| 7 |
+
"image_size": 256,
|
| 8 |
+
"inference_precision_hint": "f32",
|
| 9 |
+
"device": "CPU",
|
| 10 |
+
"library_versions": {
|
| 11 |
+
"python": "3.10.12",
|
| 12 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 13 |
+
"onnxruntime": "1.23.2",
|
| 14 |
+
"openvino": "2026.1.0-21367-63e31528c62-releases/2026/1",
|
| 15 |
+
"anomalib": "2.4.1",
|
| 16 |
+
"torch": "2.11.0+cu128"
|
| 17 |
+
},
|
| 18 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 19 |
+
"timestamp_utc": "2026-05-26T05:26:41.886549+00:00",
|
| 20 |
+
"onnx_path": "/tmp/patchcore_export_cable_24bk8gk9/onnx/weights/onnx/model.onnx",
|
| 21 |
+
"openvino_path": "/tmp/patchcore_export_cable_24bk8gk9/openvino/weights/openvino/model.xml",
|
| 22 |
+
"comparison": {
|
| 23 |
+
"per_output": {
|
| 24 |
+
"pred_score": {
|
| 25 |
+
"max_abs_error": 3.2782554626464844e-06,
|
| 26 |
+
"mean_abs_error": 1.0311603546142579e-06,
|
| 27 |
+
"max_rel_error": 7.807902875356376e-06
|
| 28 |
+
},
|
| 29 |
+
"pred_label": {
|
| 30 |
+
"max_abs_error": 0.0,
|
| 31 |
+
"mean_abs_error": 0.0,
|
| 32 |
+
"max_rel_error": 0.0
|
| 33 |
+
},
|
| 34 |
+
"anomaly_map": {
|
| 35 |
+
"max_abs_error": 4.76837158203125e-06,
|
| 36 |
+
"mean_abs_error": 7.231675681396155e-07,
|
| 37 |
+
"max_rel_error": 1.850500120781362e-05
|
| 38 |
+
},
|
| 39 |
+
"pred_mask": {
|
| 40 |
+
"max_abs_error": 0.0,
|
| 41 |
+
"mean_abs_error": 0.0,
|
| 42 |
+
"max_rel_error": 0.0
|
| 43 |
+
}
|
| 44 |
+
},
|
| 45 |
+
"pred_label_flips": 0,
|
| 46 |
+
"pred_label_total": 20,
|
| 47 |
+
"pred_mask_pixel_flips": 0,
|
| 48 |
+
"pred_mask_pixel_total": 1310720,
|
| 49 |
+
"pred_mask_pixel_flip_fraction": 0.0,
|
| 50 |
+
"onnx_output_names": [
|
| 51 |
+
"pred_score",
|
| 52 |
+
"pred_label",
|
| 53 |
+
"anomaly_map",
|
| 54 |
+
"pred_mask"
|
| 55 |
+
]
|
| 56 |
+
},
|
| 57 |
+
"summary": {
|
| 58 |
+
"max_abs_error_any_output": 4.76837158203125e-06,
|
| 59 |
+
"pred_label_flips": 0,
|
| 60 |
+
"pred_label_total": 20,
|
| 61 |
+
"pred_mask_pixel_flips": 0,
|
| 62 |
+
"pred_mask_pixel_total": 1310720,
|
| 63 |
+
"pred_mask_pixel_flip_fraction": 0.0
|
| 64 |
+
},
|
| 65 |
+
"status": "parity_clean"
|
| 66 |
+
}
|
reports/eval_harness/openvino_parity_patchcore_capsule.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.openvino_parity_patchcore.v1",
|
| 3 |
+
"category": "capsule",
|
| 4 |
+
"checkpoint": "artifacts/patchcore_capsule/Patchcore/MVTecAD/capsule/v0/weights/lightning/model.ckpt",
|
| 5 |
+
"checkpoint_sha256": "25454995713926187e9816613d0e76e8e9531d6ca99becdf2565e8e8ebda8feb",
|
| 6 |
+
"image_count": 20,
|
| 7 |
+
"image_size": 256,
|
| 8 |
+
"inference_precision_hint": "f32",
|
| 9 |
+
"device": "CPU",
|
| 10 |
+
"library_versions": {
|
| 11 |
+
"python": "3.10.12",
|
| 12 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 13 |
+
"onnxruntime": "1.23.2",
|
| 14 |
+
"openvino": "2026.1.0-21367-63e31528c62-releases/2026/1",
|
| 15 |
+
"anomalib": "2.4.1",
|
| 16 |
+
"torch": "2.11.0+cu128"
|
| 17 |
+
},
|
| 18 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 19 |
+
"timestamp_utc": "2026-05-26T05:26:54.925870+00:00",
|
| 20 |
+
"onnx_path": "/tmp/patchcore_export_capsule_h7hqamy1/onnx/weights/onnx/model.onnx",
|
| 21 |
+
"openvino_path": "/tmp/patchcore_export_capsule_h7hqamy1/openvino/weights/openvino/model.xml",
|
| 22 |
+
"comparison": {
|
| 23 |
+
"per_output": {
|
| 24 |
+
"pred_score": {
|
| 25 |
+
"max_abs_error": 4.0531158447265625e-06,
|
| 26 |
+
"mean_abs_error": 1.761317253112793e-06,
|
| 27 |
+
"max_rel_error": 8.166761290340219e-06
|
| 28 |
+
},
|
| 29 |
+
"pred_label": {
|
| 30 |
+
"max_abs_error": 0.0,
|
| 31 |
+
"mean_abs_error": 0.0,
|
| 32 |
+
"max_rel_error": 0.0
|
| 33 |
+
},
|
| 34 |
+
"anomaly_map": {
|
| 35 |
+
"max_abs_error": 7.718801498413086e-06,
|
| 36 |
+
"mean_abs_error": 8.301735874738369e-07,
|
| 37 |
+
"max_rel_error": 3.931000173906796e-05
|
| 38 |
+
},
|
| 39 |
+
"pred_mask": {
|
| 40 |
+
"max_abs_error": 0.0,
|
| 41 |
+
"mean_abs_error": 0.0,
|
| 42 |
+
"max_rel_error": 0.0
|
| 43 |
+
}
|
| 44 |
+
},
|
| 45 |
+
"pred_label_flips": 0,
|
| 46 |
+
"pred_label_total": 20,
|
| 47 |
+
"pred_mask_pixel_flips": 0,
|
| 48 |
+
"pred_mask_pixel_total": 1310720,
|
| 49 |
+
"pred_mask_pixel_flip_fraction": 0.0,
|
| 50 |
+
"onnx_output_names": [
|
| 51 |
+
"pred_score",
|
| 52 |
+
"pred_label",
|
| 53 |
+
"anomaly_map",
|
| 54 |
+
"pred_mask"
|
| 55 |
+
]
|
| 56 |
+
},
|
| 57 |
+
"summary": {
|
| 58 |
+
"max_abs_error_any_output": 7.718801498413086e-06,
|
| 59 |
+
"pred_label_flips": 0,
|
| 60 |
+
"pred_label_total": 20,
|
| 61 |
+
"pred_mask_pixel_flips": 0,
|
| 62 |
+
"pred_mask_pixel_total": 1310720,
|
| 63 |
+
"pred_mask_pixel_flip_fraction": 0.0
|
| 64 |
+
},
|
| 65 |
+
"status": "parity_clean"
|
| 66 |
+
}
|
reports/eval_harness/openvino_parity_patchcore_leather.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.openvino_parity_patchcore.v1",
|
| 3 |
+
"category": "leather",
|
| 4 |
+
"checkpoint": "artifacts/patchcore_leather/Patchcore/MVTecAD/leather/v0/weights/lightning/model.ckpt",
|
| 5 |
+
"checkpoint_sha256": "5cf7c7a793ad441a9c6cd92ee27517c674df35720c1873e61ef7aab5ebc2bd29",
|
| 6 |
+
"image_count": 20,
|
| 7 |
+
"image_size": 256,
|
| 8 |
+
"inference_precision_hint": "f32",
|
| 9 |
+
"device": "CPU",
|
| 10 |
+
"library_versions": {
|
| 11 |
+
"python": "3.10.12",
|
| 12 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 13 |
+
"onnxruntime": "1.23.2",
|
| 14 |
+
"openvino": "2026.1.0-21367-63e31528c62-releases/2026/1",
|
| 15 |
+
"anomalib": "2.4.1",
|
| 16 |
+
"torch": "2.11.0+cu128"
|
| 17 |
+
},
|
| 18 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 19 |
+
"timestamp_utc": "2026-05-26T05:27:07.327557+00:00",
|
| 20 |
+
"onnx_path": "/tmp/patchcore_export_leather_ai2452vv/onnx/weights/onnx/model.onnx",
|
| 21 |
+
"openvino_path": "/tmp/patchcore_export_leather_ai2452vv/openvino/weights/openvino/model.xml",
|
| 22 |
+
"comparison": {
|
| 23 |
+
"per_output": {
|
| 24 |
+
"pred_score": {
|
| 25 |
+
"max_abs_error": 7.298588752746582e-05,
|
| 26 |
+
"mean_abs_error": 4.3779611587524416e-06,
|
| 27 |
+
"max_rel_error": 0.00023112464987207204
|
| 28 |
+
},
|
| 29 |
+
"pred_label": {
|
| 30 |
+
"max_abs_error": 0.0,
|
| 31 |
+
"mean_abs_error": 0.0,
|
| 32 |
+
"max_rel_error": 0.0
|
| 33 |
+
},
|
| 34 |
+
"anomaly_map": {
|
| 35 |
+
"max_abs_error": 4.32133674621582e-06,
|
| 36 |
+
"mean_abs_error": 6.938633305253461e-07,
|
| 37 |
+
"max_rel_error": 0.0014192002126947045
|
| 38 |
+
},
|
| 39 |
+
"pred_mask": {
|
| 40 |
+
"max_abs_error": 0.0,
|
| 41 |
+
"mean_abs_error": 0.0,
|
| 42 |
+
"max_rel_error": 0.0
|
| 43 |
+
}
|
| 44 |
+
},
|
| 45 |
+
"pred_label_flips": 0,
|
| 46 |
+
"pred_label_total": 20,
|
| 47 |
+
"pred_mask_pixel_flips": 0,
|
| 48 |
+
"pred_mask_pixel_total": 1310720,
|
| 49 |
+
"pred_mask_pixel_flip_fraction": 0.0,
|
| 50 |
+
"onnx_output_names": [
|
| 51 |
+
"pred_score",
|
| 52 |
+
"pred_label",
|
| 53 |
+
"anomaly_map",
|
| 54 |
+
"pred_mask"
|
| 55 |
+
]
|
| 56 |
+
},
|
| 57 |
+
"summary": {
|
| 58 |
+
"max_abs_error_any_output": 7.298588752746582e-05,
|
| 59 |
+
"pred_label_flips": 0,
|
| 60 |
+
"pred_label_total": 20,
|
| 61 |
+
"pred_mask_pixel_flips": 0,
|
| 62 |
+
"pred_mask_pixel_total": 1310720,
|
| 63 |
+
"pred_mask_pixel_flip_fraction": 0.0
|
| 64 |
+
},
|
| 65 |
+
"status": "parity_clean"
|
| 66 |
+
}
|
reports/eval_harness/padim_bottle_repro.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.eval_harness.v1",
|
| 3 |
+
"category": "bottle",
|
| 4 |
+
"method": "padim",
|
| 5 |
+
"dataset": "mvtec_ad",
|
| 6 |
+
"split": "mvtec_ad_default_train_test",
|
| 7 |
+
"split_hash": "b620c53f19ec3242c2e0146d53ee71001c035594fa31376b0e1c875c4053f8b7",
|
| 8 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/anomalib_scoring/Padim/MVTecAD/bottle/v2/weights/lightning/model.ckpt",
|
| 9 |
+
"checkpoint_hash": "de7ea7c54f23d9ca33aaa7bfafeb1f6bb80c515d99f6179b604e4ec6882eae83",
|
| 10 |
+
"image_auroc": 0.9976190476190476,
|
| 11 |
+
"pixel_auroc": 0.9816106949514174,
|
| 12 |
+
"aupro": 0.940564751625061,
|
| 13 |
+
"aupro_fpr_limit": 0.3,
|
| 14 |
+
"threshold": 0.3784149718284607,
|
| 15 |
+
"threshold_selection": {
|
| 16 |
+
"rule": "quantile",
|
| 17 |
+
"quantile": 0.995,
|
| 18 |
+
"split": "train",
|
| 19 |
+
"n_train_scores": 209
|
| 20 |
+
},
|
| 21 |
+
"n_test_images": 83,
|
| 22 |
+
"n_test_anomaly": 63,
|
| 23 |
+
"n_test_normal": 20,
|
| 24 |
+
"library_versions": {
|
| 25 |
+
"python": "3.10.12",
|
| 26 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 27 |
+
"numpy": "2.2.6",
|
| 28 |
+
"sklearn": "1.7.2",
|
| 29 |
+
"torch": "2.11.0+cu128",
|
| 30 |
+
"torchvision": "0.26.0+cu128",
|
| 31 |
+
"anomalib": "2.4.1"
|
| 32 |
+
},
|
| 33 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 34 |
+
"timestamp_utc": "2026-05-26T04:50:15.669819+00:00",
|
| 35 |
+
"device": "cpu"
|
| 36 |
+
}
|
reports/eval_harness/padim_cable_repro.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.eval_harness.v1",
|
| 3 |
+
"category": "cable",
|
| 4 |
+
"method": "padim",
|
| 5 |
+
"dataset": "mvtec_ad",
|
| 6 |
+
"split": "mvtec_ad_default_train_test",
|
| 7 |
+
"split_hash": "d7bbd5d916acd9c8660eaacc6d653c7bdc4ab9fc8765f48563cccc5717df8150",
|
| 8 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/anomalib_scoring_cable/Padim/MVTecAD/cable/v1/weights/lightning/model.ckpt",
|
| 9 |
+
"checkpoint_hash": "2db928d24905691b677fa90c132a36050030dd3dc0abcd0d514d3772ea972c0f",
|
| 10 |
+
"image_auroc": 0.8720014992503747,
|
| 11 |
+
"pixel_auroc": 0.955104514240921,
|
| 12 |
+
"aupro": 0.8519249558448792,
|
| 13 |
+
"aupro_fpr_limit": 0.3,
|
| 14 |
+
"threshold": 0.3756111641228199,
|
| 15 |
+
"threshold_selection": {
|
| 16 |
+
"rule": "quantile",
|
| 17 |
+
"quantile": 0.995,
|
| 18 |
+
"split": "train",
|
| 19 |
+
"n_train_scores": 224
|
| 20 |
+
},
|
| 21 |
+
"n_test_images": 150,
|
| 22 |
+
"n_test_anomaly": 92,
|
| 23 |
+
"n_test_normal": 58,
|
| 24 |
+
"library_versions": {
|
| 25 |
+
"python": "3.10.12",
|
| 26 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 27 |
+
"numpy": "2.2.6",
|
| 28 |
+
"sklearn": "1.7.2",
|
| 29 |
+
"torch": "2.11.0+cu128",
|
| 30 |
+
"torchvision": "0.26.0+cu128",
|
| 31 |
+
"anomalib": "2.4.1"
|
| 32 |
+
},
|
| 33 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 34 |
+
"timestamp_utc": "2026-05-26T04:51:02.394695+00:00",
|
| 35 |
+
"device": "cpu"
|
| 36 |
+
}
|
reports/eval_harness/padim_capsule_repro.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.eval_harness.v1",
|
| 3 |
+
"category": "capsule",
|
| 4 |
+
"method": "padim",
|
| 5 |
+
"dataset": "mvtec_ad",
|
| 6 |
+
"split": "mvtec_ad_default_train_test",
|
| 7 |
+
"split_hash": "a35a4767af802024bcbbdb6ef56b1c9074be26490b39d0345378c8b842d69ee6",
|
| 8 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/anomalib_scoring_capsule/Padim/MVTecAD/capsule/v0/weights/lightning/model.ckpt",
|
| 9 |
+
"checkpoint_hash": "0fcba06e0c2550a4e37e06727d5e376f64387901f1b13c504649060d2d798607",
|
| 10 |
+
"image_auroc": 0.8807339449541285,
|
| 11 |
+
"pixel_auroc": 0.9849188179370411,
|
| 12 |
+
"aupro": 0.914944589138031,
|
| 13 |
+
"aupro_fpr_limit": 0.3,
|
| 14 |
+
"threshold": 0.40798546075820924,
|
| 15 |
+
"threshold_selection": {
|
| 16 |
+
"rule": "quantile",
|
| 17 |
+
"quantile": 0.995,
|
| 18 |
+
"split": "train",
|
| 19 |
+
"n_train_scores": 219
|
| 20 |
+
},
|
| 21 |
+
"n_test_images": 132,
|
| 22 |
+
"n_test_anomaly": 109,
|
| 23 |
+
"n_test_normal": 23,
|
| 24 |
+
"library_versions": {
|
| 25 |
+
"python": "3.10.12",
|
| 26 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 27 |
+
"numpy": "2.2.6",
|
| 28 |
+
"sklearn": "1.7.2",
|
| 29 |
+
"torch": "2.11.0+cu128",
|
| 30 |
+
"torchvision": "0.26.0+cu128",
|
| 31 |
+
"anomalib": "2.4.1"
|
| 32 |
+
},
|
| 33 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 34 |
+
"timestamp_utc": "2026-05-26T04:51:44.276536+00:00",
|
| 35 |
+
"device": "cpu"
|
| 36 |
+
}
|
reports/eval_harness/padim_leather_repro.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.eval_harness.v1",
|
| 3 |
+
"category": "leather",
|
| 4 |
+
"method": "padim",
|
| 5 |
+
"dataset": "mvtec_ad",
|
| 6 |
+
"split": "mvtec_ad_default_train_test",
|
| 7 |
+
"split_hash": "4c730802f339675b402c86c8079e1b7b57b07c0b00e6f4de45db073ebb52ad5c",
|
| 8 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/anomalib_scoring_leather/Padim/MVTecAD/leather/v0/weights/lightning/model.ckpt",
|
| 9 |
+
"checkpoint_hash": "986cf8871aa86b666078435d83db585927adb056eb6153a2b30437167aafe718",
|
| 10 |
+
"image_auroc": 0.9925271739130433,
|
| 11 |
+
"pixel_auroc": 0.9882110318538196,
|
| 12 |
+
"aupro": 0.9681736826896667,
|
| 13 |
+
"aupro_fpr_limit": 0.3,
|
| 14 |
+
"threshold": 0.40272310554981233,
|
| 15 |
+
"threshold_selection": {
|
| 16 |
+
"rule": "quantile",
|
| 17 |
+
"quantile": 0.995,
|
| 18 |
+
"split": "train",
|
| 19 |
+
"n_train_scores": 245
|
| 20 |
+
},
|
| 21 |
+
"n_test_images": 124,
|
| 22 |
+
"n_test_anomaly": 92,
|
| 23 |
+
"n_test_normal": 32,
|
| 24 |
+
"library_versions": {
|
| 25 |
+
"python": "3.10.12",
|
| 26 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 27 |
+
"numpy": "2.2.6",
|
| 28 |
+
"sklearn": "1.7.2",
|
| 29 |
+
"torch": "2.11.0+cu128",
|
| 30 |
+
"torchvision": "0.26.0+cu128",
|
| 31 |
+
"anomalib": "2.4.1"
|
| 32 |
+
},
|
| 33 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 34 |
+
"timestamp_utc": "2026-05-26T04:52:21.865807+00:00",
|
| 35 |
+
"device": "cpu"
|
| 36 |
+
}
|
reports/eval_harness/patchcore_bottle.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.eval_harness.v1",
|
| 3 |
+
"category": "bottle",
|
| 4 |
+
"method": "patchcore",
|
| 5 |
+
"dataset": "mvtec_ad",
|
| 6 |
+
"split": "mvtec_ad_default_train_test",
|
| 7 |
+
"split_hash": "b620c53f19ec3242c2e0146d53ee71001c035594fa31376b0e1c875c4053f8b7",
|
| 8 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_bottle/Patchcore/MVTecAD/bottle/v0/weights/lightning/model.ckpt",
|
| 9 |
+
"checkpoint_hash": "b0eb8834ae8d2bece3270cd1ef003427f16e0a109cc6bbb3a85eea49e50461df",
|
| 10 |
+
"image_auroc": 1.0,
|
| 11 |
+
"pixel_auroc": 0.9850819072235026,
|
| 12 |
+
"aupro": 0.9413159489631653,
|
| 13 |
+
"aupro_fpr_limit": 0.3,
|
| 14 |
+
"threshold": 0.2681984579563141,
|
| 15 |
+
"threshold_selection": {
|
| 16 |
+
"rule": "quantile",
|
| 17 |
+
"quantile": 0.995,
|
| 18 |
+
"split": "train",
|
| 19 |
+
"n_train_scores": 209
|
| 20 |
+
},
|
| 21 |
+
"n_test_images": 83,
|
| 22 |
+
"n_test_anomaly": 63,
|
| 23 |
+
"n_test_normal": 20,
|
| 24 |
+
"library_versions": {
|
| 25 |
+
"python": "3.10.12",
|
| 26 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 27 |
+
"numpy": "2.2.6",
|
| 28 |
+
"sklearn": "1.7.2",
|
| 29 |
+
"torch": "2.11.0+cu128",
|
| 30 |
+
"torchvision": "0.26.0+cu128",
|
| 31 |
+
"anomalib": "2.4.1"
|
| 32 |
+
},
|
| 33 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 34 |
+
"timestamp_utc": "2026-05-26T05:01:39.161257+00:00",
|
| 35 |
+
"device": "cuda",
|
| 36 |
+
"coreset_sampling_ratio": 0.01,
|
| 37 |
+
"train_sidecar": {
|
| 38 |
+
"backbone": "wide_resnet50_2",
|
| 39 |
+
"layers": [
|
| 40 |
+
"layer2",
|
| 41 |
+
"layer3"
|
| 42 |
+
],
|
| 43 |
+
"coreset_sampling_ratio": 0.01,
|
| 44 |
+
"checkpoint_sha256": "b0eb8834ae8d2bece3270cd1ef003427f16e0a109cc6bbb3a85eea49e50461df",
|
| 45 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea"
|
| 46 |
+
}
|
| 47 |
+
}
|
reports/eval_harness/patchcore_bottle_latency.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.bench_latency.v1",
|
| 3 |
+
"category": "bottle",
|
| 4 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_bottle/Patchcore/MVTecAD/bottle/v0/weights/lightning/model.ckpt",
|
| 5 |
+
"dataset_root": "/home/yusuf/datasets/mvtec_ad",
|
| 6 |
+
"hardware": {
|
| 7 |
+
"cpu": "AMD Ryzen 9 9900X 12-Core Processor",
|
| 8 |
+
"gpu": "NVIDIA GeForce RTX 5070, 570.211.01, 12227 MiB",
|
| 9 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35"
|
| 10 |
+
},
|
| 11 |
+
"library_versions": {
|
| 12 |
+
"python": "3.10.12",
|
| 13 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 14 |
+
"numpy": "2.2.6",
|
| 15 |
+
"torch": "2.11.0+cu128",
|
| 16 |
+
"torchvision": "0.26.0+cu128",
|
| 17 |
+
"anomalib": "2.4.1"
|
| 18 |
+
},
|
| 19 |
+
"timestamp_utc": "2026-05-26T05:05:45.170181+00:00",
|
| 20 |
+
"per_device": {
|
| 21 |
+
"cpu": {
|
| 22 |
+
"device": "cpu",
|
| 23 |
+
"n_images": 50,
|
| 24 |
+
"n_warmup": 10,
|
| 25 |
+
"image_size": 256,
|
| 26 |
+
"batch_size": 1,
|
| 27 |
+
"min_ms": 28.318168000168953,
|
| 28 |
+
"median_ms": 30.15510099999119,
|
| 29 |
+
"p95_ms": 31.568882550072885,
|
| 30 |
+
"mean_ms": 30.1779899399844,
|
| 31 |
+
"std_ms": 1.0117806649427663
|
| 32 |
+
},
|
| 33 |
+
"cuda": {
|
| 34 |
+
"device": "cuda",
|
| 35 |
+
"n_images": 50,
|
| 36 |
+
"n_warmup": 10,
|
| 37 |
+
"image_size": 256,
|
| 38 |
+
"batch_size": 1,
|
| 39 |
+
"min_ms": 5.143589999988762,
|
| 40 |
+
"median_ms": 5.201645000170174,
|
| 41 |
+
"p95_ms": 6.4145484999698965,
|
| 42 |
+
"mean_ms": 5.50754846003656,
|
| 43 |
+
"std_ms": 0.4728880034145876
|
| 44 |
+
}
|
| 45 |
+
}
|
| 46 |
+
}
|
reports/eval_harness/patchcore_bottle_seed1.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.eval_harness.v1",
|
| 3 |
+
"category": "bottle",
|
| 4 |
+
"method": "patchcore",
|
| 5 |
+
"dataset": "mvtec_ad",
|
| 6 |
+
"split": "mvtec_ad_default_train_test",
|
| 7 |
+
"split_hash": "b620c53f19ec3242c2e0146d53ee71001c035594fa31376b0e1c875c4053f8b7",
|
| 8 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_bottle_seed1/Patchcore/MVTecAD/bottle/v0/weights/lightning/model.ckpt",
|
| 9 |
+
"checkpoint_hash": "d89e12adc18b806e3da552d261c33b113422bf3e49068c73b2e1223816cabd12",
|
| 10 |
+
"image_auroc": 1.0,
|
| 11 |
+
"pixel_auroc": 0.9851934235356974,
|
| 12 |
+
"aupro": 0.9402801990509033,
|
| 13 |
+
"aupro_fpr_limit": 0.3,
|
| 14 |
+
"threshold": 0.2910947442054749,
|
| 15 |
+
"threshold_selection": {
|
| 16 |
+
"rule": "quantile",
|
| 17 |
+
"quantile": 0.995,
|
| 18 |
+
"split": "train",
|
| 19 |
+
"n_train_scores": 209
|
| 20 |
+
},
|
| 21 |
+
"n_test_images": 83,
|
| 22 |
+
"n_test_anomaly": 63,
|
| 23 |
+
"n_test_normal": 20,
|
| 24 |
+
"library_versions": {
|
| 25 |
+
"python": "3.10.12",
|
| 26 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 27 |
+
"numpy": "2.2.6",
|
| 28 |
+
"sklearn": "1.7.2",
|
| 29 |
+
"torch": "2.11.0+cu128",
|
| 30 |
+
"torchvision": "0.26.0+cu128",
|
| 31 |
+
"anomalib": "2.4.1"
|
| 32 |
+
},
|
| 33 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 34 |
+
"timestamp_utc": "2026-05-26T05:19:02.959334+00:00",
|
| 35 |
+
"device": "cuda",
|
| 36 |
+
"coreset_sampling_ratio": 0.01,
|
| 37 |
+
"train_sidecar": {
|
| 38 |
+
"backbone": "wide_resnet50_2",
|
| 39 |
+
"layers": [
|
| 40 |
+
"layer2",
|
| 41 |
+
"layer3"
|
| 42 |
+
],
|
| 43 |
+
"coreset_sampling_ratio": 0.01,
|
| 44 |
+
"checkpoint_sha256": "d89e12adc18b806e3da552d261c33b113422bf3e49068c73b2e1223816cabd12",
|
| 45 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea"
|
| 46 |
+
}
|
| 47 |
+
}
|
reports/eval_harness/patchcore_bottle_seed2.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.eval_harness.v1",
|
| 3 |
+
"category": "bottle",
|
| 4 |
+
"method": "patchcore",
|
| 5 |
+
"dataset": "mvtec_ad",
|
| 6 |
+
"split": "mvtec_ad_default_train_test",
|
| 7 |
+
"split_hash": "b620c53f19ec3242c2e0146d53ee71001c035594fa31376b0e1c875c4053f8b7",
|
| 8 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_bottle_seed2/Patchcore/MVTecAD/bottle/v0/weights/lightning/model.ckpt",
|
| 9 |
+
"checkpoint_hash": "b4afc04f0af2dd70de8393754ed47f276cc2778a6ec9e2d87431e894dcedb725",
|
| 10 |
+
"image_auroc": 1.0,
|
| 11 |
+
"pixel_auroc": 0.9852875630288879,
|
| 12 |
+
"aupro": 0.9401062726974487,
|
| 13 |
+
"aupro_fpr_limit": 0.3,
|
| 14 |
+
"threshold": 0.29508321762084966,
|
| 15 |
+
"threshold_selection": {
|
| 16 |
+
"rule": "quantile",
|
| 17 |
+
"quantile": 0.995,
|
| 18 |
+
"split": "train",
|
| 19 |
+
"n_train_scores": 209
|
| 20 |
+
},
|
| 21 |
+
"n_test_images": 83,
|
| 22 |
+
"n_test_anomaly": 63,
|
| 23 |
+
"n_test_normal": 20,
|
| 24 |
+
"library_versions": {
|
| 25 |
+
"python": "3.10.12",
|
| 26 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 27 |
+
"numpy": "2.2.6",
|
| 28 |
+
"sklearn": "1.7.2",
|
| 29 |
+
"torch": "2.11.0+cu128",
|
| 30 |
+
"torchvision": "0.26.0+cu128",
|
| 31 |
+
"anomalib": "2.4.1"
|
| 32 |
+
},
|
| 33 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 34 |
+
"timestamp_utc": "2026-05-26T05:19:58.828103+00:00",
|
| 35 |
+
"device": "cuda",
|
| 36 |
+
"coreset_sampling_ratio": 0.01,
|
| 37 |
+
"train_sidecar": {
|
| 38 |
+
"backbone": "wide_resnet50_2",
|
| 39 |
+
"layers": [
|
| 40 |
+
"layer2",
|
| 41 |
+
"layer3"
|
| 42 |
+
],
|
| 43 |
+
"coreset_sampling_ratio": 0.01,
|
| 44 |
+
"checkpoint_sha256": "b4afc04f0af2dd70de8393754ed47f276cc2778a6ec9e2d87431e894dcedb725",
|
| 45 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea"
|
| 46 |
+
}
|
| 47 |
+
}
|
reports/eval_harness/patchcore_cable.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.eval_harness.v1",
|
| 3 |
+
"category": "cable",
|
| 4 |
+
"method": "patchcore",
|
| 5 |
+
"dataset": "mvtec_ad",
|
| 6 |
+
"split": "mvtec_ad_default_train_test",
|
| 7 |
+
"split_hash": "d7bbd5d916acd9c8660eaacc6d653c7bdc4ab9fc8765f48563cccc5717df8150",
|
| 8 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_cable/Patchcore/MVTecAD/cable/v0/weights/lightning/model.ckpt",
|
| 9 |
+
"checkpoint_hash": "29d451c6a03707c155adaf1e5bf33313531c9d8204d8722cbe8f9516aac930c2",
|
| 10 |
+
"image_auroc": 0.9910044977511244,
|
| 11 |
+
"pixel_auroc": 0.9833900287538287,
|
| 12 |
+
"aupro": 0.9280552268028259,
|
| 13 |
+
"aupro_fpr_limit": 0.3,
|
| 14 |
+
"threshold": 0.4500109788775444,
|
| 15 |
+
"threshold_selection": {
|
| 16 |
+
"rule": "quantile",
|
| 17 |
+
"quantile": 0.995,
|
| 18 |
+
"split": "train",
|
| 19 |
+
"n_train_scores": 224
|
| 20 |
+
},
|
| 21 |
+
"n_test_images": 150,
|
| 22 |
+
"n_test_anomaly": 92,
|
| 23 |
+
"n_test_normal": 58,
|
| 24 |
+
"library_versions": {
|
| 25 |
+
"python": "3.10.12",
|
| 26 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 27 |
+
"numpy": "2.2.6",
|
| 28 |
+
"sklearn": "1.7.2",
|
| 29 |
+
"torch": "2.11.0+cu128",
|
| 30 |
+
"torchvision": "0.26.0+cu128",
|
| 31 |
+
"anomalib": "2.4.1"
|
| 32 |
+
},
|
| 33 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 34 |
+
"timestamp_utc": "2026-05-26T05:02:17.305784+00:00",
|
| 35 |
+
"device": "cuda",
|
| 36 |
+
"coreset_sampling_ratio": 0.01,
|
| 37 |
+
"train_sidecar": {
|
| 38 |
+
"backbone": "wide_resnet50_2",
|
| 39 |
+
"layers": [
|
| 40 |
+
"layer2",
|
| 41 |
+
"layer3"
|
| 42 |
+
],
|
| 43 |
+
"coreset_sampling_ratio": 0.01,
|
| 44 |
+
"checkpoint_sha256": "29d451c6a03707c155adaf1e5bf33313531c9d8204d8722cbe8f9516aac930c2",
|
| 45 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea"
|
| 46 |
+
}
|
| 47 |
+
}
|
reports/eval_harness/patchcore_cable_coreset010.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.eval_harness.v1",
|
| 3 |
+
"category": "cable",
|
| 4 |
+
"method": "patchcore",
|
| 5 |
+
"dataset": "mvtec_ad",
|
| 6 |
+
"split": "mvtec_ad_default_train_test",
|
| 7 |
+
"split_hash": "d7bbd5d916acd9c8660eaacc6d653c7bdc4ab9fc8765f48563cccc5717df8150",
|
| 8 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_cable_coreset010/Patchcore/MVTecAD/cable/v0/weights/lightning/model.ckpt",
|
| 9 |
+
"checkpoint_hash": "5cac130be961ebfeee5c772c004938f13d833fa1b54c3e70f893b9cc4be1ad22",
|
| 10 |
+
"image_auroc": 0.9855697151424287,
|
| 11 |
+
"pixel_auroc": 0.9848007912668789,
|
| 12 |
+
"aupro": 0.9303989410400391,
|
| 13 |
+
"aupro_fpr_limit": 0.3,
|
| 14 |
+
"threshold": 0.26405930995941157,
|
| 15 |
+
"threshold_selection": {
|
| 16 |
+
"rule": "quantile",
|
| 17 |
+
"quantile": 0.995,
|
| 18 |
+
"split": "train",
|
| 19 |
+
"n_train_scores": 224
|
| 20 |
+
},
|
| 21 |
+
"n_test_images": 150,
|
| 22 |
+
"n_test_anomaly": 92,
|
| 23 |
+
"n_test_normal": 58,
|
| 24 |
+
"library_versions": {
|
| 25 |
+
"python": "3.10.12",
|
| 26 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 27 |
+
"numpy": "2.2.6",
|
| 28 |
+
"sklearn": "1.7.2",
|
| 29 |
+
"torch": "2.11.0+cu128",
|
| 30 |
+
"torchvision": "0.26.0+cu128",
|
| 31 |
+
"anomalib": "2.4.1"
|
| 32 |
+
},
|
| 33 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 34 |
+
"timestamp_utc": "2026-05-26T05:04:17.622258+00:00",
|
| 35 |
+
"device": "cuda",
|
| 36 |
+
"coreset_sampling_ratio": 0.1,
|
| 37 |
+
"train_sidecar": {
|
| 38 |
+
"backbone": "wide_resnet50_2",
|
| 39 |
+
"layers": [
|
| 40 |
+
"layer2",
|
| 41 |
+
"layer3"
|
| 42 |
+
],
|
| 43 |
+
"coreset_sampling_ratio": 0.1,
|
| 44 |
+
"checkpoint_sha256": "5cac130be961ebfeee5c772c004938f13d833fa1b54c3e70f893b9cc4be1ad22",
|
| 45 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea"
|
| 46 |
+
}
|
| 47 |
+
}
|
reports/eval_harness/patchcore_cable_coreset025.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.eval_harness.v1",
|
| 3 |
+
"category": "cable",
|
| 4 |
+
"method": "patchcore",
|
| 5 |
+
"dataset": "mvtec_ad",
|
| 6 |
+
"split": "mvtec_ad_default_train_test",
|
| 7 |
+
"split_hash": "d7bbd5d916acd9c8660eaacc6d653c7bdc4ab9fc8765f48563cccc5717df8150",
|
| 8 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_cable_coreset025/Patchcore/MVTecAD/cable/v0/weights/lightning/model.ckpt",
|
| 9 |
+
"checkpoint_hash": "5979528b21adef3c04bb04f716c6ddfa835d21ad3bdf9488b8b7eab1049416f8",
|
| 10 |
+
"image_auroc": 0.9893178410794603,
|
| 11 |
+
"pixel_auroc": 0.9843814612771362,
|
| 12 |
+
"aupro": 0.928039014339447,
|
| 13 |
+
"aupro_fpr_limit": 0.3,
|
| 14 |
+
"threshold": 0.1510734988749027,
|
| 15 |
+
"threshold_selection": {
|
| 16 |
+
"rule": "quantile",
|
| 17 |
+
"quantile": 0.995,
|
| 18 |
+
"split": "train",
|
| 19 |
+
"n_train_scores": 224
|
| 20 |
+
},
|
| 21 |
+
"n_test_images": 150,
|
| 22 |
+
"n_test_anomaly": 92,
|
| 23 |
+
"n_test_normal": 58,
|
| 24 |
+
"library_versions": {
|
| 25 |
+
"python": "3.10.12",
|
| 26 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 27 |
+
"numpy": "2.2.6",
|
| 28 |
+
"sklearn": "1.7.2",
|
| 29 |
+
"torch": "2.11.0+cu128",
|
| 30 |
+
"torchvision": "0.26.0+cu128",
|
| 31 |
+
"anomalib": "2.4.1"
|
| 32 |
+
},
|
| 33 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 34 |
+
"timestamp_utc": "2026-05-26T05:05:01.867710+00:00",
|
| 35 |
+
"device": "cuda",
|
| 36 |
+
"coreset_sampling_ratio": 0.25,
|
| 37 |
+
"train_sidecar": {
|
| 38 |
+
"backbone": "wide_resnet50_2",
|
| 39 |
+
"layers": [
|
| 40 |
+
"layer2",
|
| 41 |
+
"layer3"
|
| 42 |
+
],
|
| 43 |
+
"coreset_sampling_ratio": 0.25,
|
| 44 |
+
"checkpoint_sha256": "5979528b21adef3c04bb04f716c6ddfa835d21ad3bdf9488b8b7eab1049416f8",
|
| 45 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea"
|
| 46 |
+
}
|
| 47 |
+
}
|
reports/eval_harness/patchcore_cable_latency.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.bench_latency.v1",
|
| 3 |
+
"category": "cable",
|
| 4 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_cable/Patchcore/MVTecAD/cable/v0/weights/lightning/model.ckpt",
|
| 5 |
+
"dataset_root": "/home/yusuf/datasets/mvtec_ad",
|
| 6 |
+
"hardware": {
|
| 7 |
+
"cpu": "AMD Ryzen 9 9900X 12-Core Processor",
|
| 8 |
+
"gpu": "NVIDIA GeForce RTX 5070, 570.211.01, 12227 MiB",
|
| 9 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35"
|
| 10 |
+
},
|
| 11 |
+
"library_versions": {
|
| 12 |
+
"python": "3.10.12",
|
| 13 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 14 |
+
"numpy": "2.2.6",
|
| 15 |
+
"torch": "2.11.0+cu128",
|
| 16 |
+
"torchvision": "0.26.0+cu128",
|
| 17 |
+
"anomalib": "2.4.1"
|
| 18 |
+
},
|
| 19 |
+
"timestamp_utc": "2026-05-26T05:05:53.718666+00:00",
|
| 20 |
+
"per_device": {
|
| 21 |
+
"cpu": {
|
| 22 |
+
"device": "cpu",
|
| 23 |
+
"n_images": 50,
|
| 24 |
+
"n_warmup": 10,
|
| 25 |
+
"image_size": 256,
|
| 26 |
+
"batch_size": 1,
|
| 27 |
+
"min_ms": 30.415208999784227,
|
| 28 |
+
"median_ms": 31.296612500000265,
|
| 29 |
+
"p95_ms": 32.90803200002301,
|
| 30 |
+
"mean_ms": 31.463410440046573,
|
| 31 |
+
"std_ms": 0.8065842891002637
|
| 32 |
+
},
|
| 33 |
+
"cuda": {
|
| 34 |
+
"device": "cuda",
|
| 35 |
+
"n_images": 50,
|
| 36 |
+
"n_warmup": 10,
|
| 37 |
+
"image_size": 256,
|
| 38 |
+
"batch_size": 1,
|
| 39 |
+
"min_ms": 5.130470000040077,
|
| 40 |
+
"median_ms": 5.2899059999163,
|
| 41 |
+
"p95_ms": 6.557743550024497,
|
| 42 |
+
"mean_ms": 5.513052840015007,
|
| 43 |
+
"std_ms": 0.46512099244870114
|
| 44 |
+
}
|
| 45 |
+
}
|
| 46 |
+
}
|
reports/eval_harness/patchcore_capsule.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.eval_harness.v1",
|
| 3 |
+
"category": "capsule",
|
| 4 |
+
"method": "patchcore",
|
| 5 |
+
"dataset": "mvtec_ad",
|
| 6 |
+
"split": "mvtec_ad_default_train_test",
|
| 7 |
+
"split_hash": "a35a4767af802024bcbbdb6ef56b1c9074be26490b39d0345378c8b842d69ee6",
|
| 8 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_capsule/Patchcore/MVTecAD/capsule/v0/weights/lightning/model.ckpt",
|
| 9 |
+
"checkpoint_hash": "25454995713926187e9816613d0e76e8e9531d6ca99becdf2565e8e8ebda8feb",
|
| 10 |
+
"image_auroc": 0.994415636218588,
|
| 11 |
+
"pixel_auroc": 0.990176424065145,
|
| 12 |
+
"aupro": 0.9382407665252686,
|
| 13 |
+
"aupro_fpr_limit": 0.3,
|
| 14 |
+
"threshold": 0.4463476654887199,
|
| 15 |
+
"threshold_selection": {
|
| 16 |
+
"rule": "quantile",
|
| 17 |
+
"quantile": 0.995,
|
| 18 |
+
"split": "train",
|
| 19 |
+
"n_train_scores": 219
|
| 20 |
+
},
|
| 21 |
+
"n_test_images": 132,
|
| 22 |
+
"n_test_anomaly": 109,
|
| 23 |
+
"n_test_normal": 23,
|
| 24 |
+
"library_versions": {
|
| 25 |
+
"python": "3.10.12",
|
| 26 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 27 |
+
"numpy": "2.2.6",
|
| 28 |
+
"sklearn": "1.7.2",
|
| 29 |
+
"torch": "2.11.0+cu128",
|
| 30 |
+
"torchvision": "0.26.0+cu128",
|
| 31 |
+
"anomalib": "2.4.1"
|
| 32 |
+
},
|
| 33 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 34 |
+
"timestamp_utc": "2026-05-26T05:02:57.600572+00:00",
|
| 35 |
+
"device": "cuda",
|
| 36 |
+
"coreset_sampling_ratio": 0.01,
|
| 37 |
+
"train_sidecar": {
|
| 38 |
+
"backbone": "wide_resnet50_2",
|
| 39 |
+
"layers": [
|
| 40 |
+
"layer2",
|
| 41 |
+
"layer3"
|
| 42 |
+
],
|
| 43 |
+
"coreset_sampling_ratio": 0.01,
|
| 44 |
+
"checkpoint_sha256": "25454995713926187e9816613d0e76e8e9531d6ca99becdf2565e8e8ebda8feb",
|
| 45 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea"
|
| 46 |
+
}
|
| 47 |
+
}
|
reports/eval_harness/patchcore_capsule_latency.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.bench_latency.v1",
|
| 3 |
+
"category": "capsule",
|
| 4 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_capsule/Patchcore/MVTecAD/capsule/v0/weights/lightning/model.ckpt",
|
| 5 |
+
"dataset_root": "/home/yusuf/datasets/mvtec_ad",
|
| 6 |
+
"hardware": {
|
| 7 |
+
"cpu": "AMD Ryzen 9 9900X 12-Core Processor",
|
| 8 |
+
"gpu": "NVIDIA GeForce RTX 5070, 570.211.01, 12227 MiB",
|
| 9 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35"
|
| 10 |
+
},
|
| 11 |
+
"library_versions": {
|
| 12 |
+
"python": "3.10.12",
|
| 13 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 14 |
+
"numpy": "2.2.6",
|
| 15 |
+
"torch": "2.11.0+cu128",
|
| 16 |
+
"torchvision": "0.26.0+cu128",
|
| 17 |
+
"anomalib": "2.4.1"
|
| 18 |
+
},
|
| 19 |
+
"timestamp_utc": "2026-05-26T05:06:04.986280+00:00",
|
| 20 |
+
"per_device": {
|
| 21 |
+
"cpu": {
|
| 22 |
+
"device": "cpu",
|
| 23 |
+
"n_images": 50,
|
| 24 |
+
"n_warmup": 10,
|
| 25 |
+
"image_size": 256,
|
| 26 |
+
"batch_size": 1,
|
| 27 |
+
"min_ms": 30.708614000104717,
|
| 28 |
+
"median_ms": 31.777702999988833,
|
| 29 |
+
"p95_ms": 42.2283800000514,
|
| 30 |
+
"mean_ms": 38.632892740024545,
|
| 31 |
+
"std_ms": 38.97406824647649
|
| 32 |
+
},
|
| 33 |
+
"cuda": {
|
| 34 |
+
"device": "cuda",
|
| 35 |
+
"n_images": 50,
|
| 36 |
+
"n_warmup": 10,
|
| 37 |
+
"image_size": 256,
|
| 38 |
+
"batch_size": 1,
|
| 39 |
+
"min_ms": 5.108850999931747,
|
| 40 |
+
"median_ms": 5.353652000167131,
|
| 41 |
+
"p95_ms": 6.178862999854573,
|
| 42 |
+
"mean_ms": 5.473933599996599,
|
| 43 |
+
"std_ms": 0.3758229662202633
|
| 44 |
+
}
|
| 45 |
+
}
|
| 46 |
+
}
|
reports/eval_harness/patchcore_capsule_latency_rerun1.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.bench_latency.v1",
|
| 3 |
+
"category": "capsule",
|
| 4 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_capsule/Patchcore/MVTecAD/capsule/v0/weights/lightning/model.ckpt",
|
| 5 |
+
"dataset_root": "/home/yusuf/datasets/mvtec_ad",
|
| 6 |
+
"hardware": {
|
| 7 |
+
"cpu": "AMD Ryzen 9 9900X 12-Core Processor",
|
| 8 |
+
"gpu": "NVIDIA GeForce RTX 5070, 570.211.01, 12227 MiB",
|
| 9 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35"
|
| 10 |
+
},
|
| 11 |
+
"library_versions": {
|
| 12 |
+
"python": "3.10.12",
|
| 13 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 14 |
+
"numpy": "2.2.6",
|
| 15 |
+
"torch": "2.11.0+cu128",
|
| 16 |
+
"torchvision": "0.26.0+cu128",
|
| 17 |
+
"anomalib": "2.4.1"
|
| 18 |
+
},
|
| 19 |
+
"timestamp_utc": "2026-05-26T05:15:53.993082+00:00",
|
| 20 |
+
"per_device": {
|
| 21 |
+
"cpu": {
|
| 22 |
+
"device": "cpu",
|
| 23 |
+
"n_images": 50,
|
| 24 |
+
"n_warmup": 10,
|
| 25 |
+
"image_size": 256,
|
| 26 |
+
"batch_size": 1,
|
| 27 |
+
"min_ms": 31.486972000038804,
|
| 28 |
+
"median_ms": 41.77246400013246,
|
| 29 |
+
"p95_ms": 44.667347600170615,
|
| 30 |
+
"mean_ms": 40.962546960063264,
|
| 31 |
+
"std_ms": 3.56739511177009
|
| 32 |
+
}
|
| 33 |
+
}
|
| 34 |
+
}
|
reports/eval_harness/patchcore_capsule_latency_rerun2.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.bench_latency.v1",
|
| 3 |
+
"category": "capsule",
|
| 4 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_capsule/Patchcore/MVTecAD/capsule/v0/weights/lightning/model.ckpt",
|
| 5 |
+
"dataset_root": "/home/yusuf/datasets/mvtec_ad",
|
| 6 |
+
"hardware": {
|
| 7 |
+
"cpu": "AMD Ryzen 9 9900X 12-Core Processor",
|
| 8 |
+
"gpu": "NVIDIA GeForce RTX 5070, 570.211.01, 12227 MiB",
|
| 9 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35"
|
| 10 |
+
},
|
| 11 |
+
"library_versions": {
|
| 12 |
+
"python": "3.10.12",
|
| 13 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 14 |
+
"numpy": "2.2.6",
|
| 15 |
+
"torch": "2.11.0+cu128",
|
| 16 |
+
"torchvision": "0.26.0+cu128",
|
| 17 |
+
"anomalib": "2.4.1"
|
| 18 |
+
},
|
| 19 |
+
"timestamp_utc": "2026-05-26T05:16:12.213588+00:00",
|
| 20 |
+
"per_device": {
|
| 21 |
+
"cpu": {
|
| 22 |
+
"device": "cpu",
|
| 23 |
+
"n_images": 50,
|
| 24 |
+
"n_warmup": 30,
|
| 25 |
+
"image_size": 256,
|
| 26 |
+
"batch_size": 1,
|
| 27 |
+
"min_ms": 28.789403999780916,
|
| 28 |
+
"median_ms": 29.74879599992164,
|
| 29 |
+
"p95_ms": 32.50230500000271,
|
| 30 |
+
"mean_ms": 30.1732830000401,
|
| 31 |
+
"std_ms": 1.1620811502979578
|
| 32 |
+
}
|
| 33 |
+
}
|
| 34 |
+
}
|
reports/eval_harness/patchcore_leather.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.eval_harness.v1",
|
| 3 |
+
"category": "leather",
|
| 4 |
+
"method": "patchcore",
|
| 5 |
+
"dataset": "mvtec_ad",
|
| 6 |
+
"split": "mvtec_ad_default_train_test",
|
| 7 |
+
"split_hash": "4c730802f339675b402c86c8079e1b7b57b07c0b00e6f4de45db073ebb52ad5c",
|
| 8 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_leather/Patchcore/MVTecAD/leather/v0/weights/lightning/model.ckpt",
|
| 9 |
+
"checkpoint_hash": "5cf7c7a793ad441a9c6cd92ee27517c674df35720c1873e61ef7aab5ebc2bd29",
|
| 10 |
+
"image_auroc": 1.0,
|
| 11 |
+
"pixel_auroc": 0.9923970507295065,
|
| 12 |
+
"aupro": 0.9760316014289856,
|
| 13 |
+
"aupro_fpr_limit": 0.3,
|
| 14 |
+
"threshold": 0.2661692547798157,
|
| 15 |
+
"threshold_selection": {
|
| 16 |
+
"rule": "quantile",
|
| 17 |
+
"quantile": 0.995,
|
| 18 |
+
"split": "train",
|
| 19 |
+
"n_train_scores": 245
|
| 20 |
+
},
|
| 21 |
+
"n_test_images": 124,
|
| 22 |
+
"n_test_anomaly": 92,
|
| 23 |
+
"n_test_normal": 32,
|
| 24 |
+
"library_versions": {
|
| 25 |
+
"python": "3.10.12",
|
| 26 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 27 |
+
"numpy": "2.2.6",
|
| 28 |
+
"sklearn": "1.7.2",
|
| 29 |
+
"torch": "2.11.0+cu128",
|
| 30 |
+
"torchvision": "0.26.0+cu128",
|
| 31 |
+
"anomalib": "2.4.1"
|
| 32 |
+
},
|
| 33 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 34 |
+
"timestamp_utc": "2026-05-26T05:03:30.650515+00:00",
|
| 35 |
+
"device": "cuda",
|
| 36 |
+
"coreset_sampling_ratio": 0.01,
|
| 37 |
+
"train_sidecar": {
|
| 38 |
+
"backbone": "wide_resnet50_2",
|
| 39 |
+
"layers": [
|
| 40 |
+
"layer2",
|
| 41 |
+
"layer3"
|
| 42 |
+
],
|
| 43 |
+
"coreset_sampling_ratio": 0.01,
|
| 44 |
+
"checkpoint_sha256": "5cf7c7a793ad441a9c6cd92ee27517c674df35720c1873e61ef7aab5ebc2bd29",
|
| 45 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea"
|
| 46 |
+
}
|
| 47 |
+
}
|
reports/eval_harness/patchcore_leather_latency.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.bench_latency.v1",
|
| 3 |
+
"category": "leather",
|
| 4 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_leather/Patchcore/MVTecAD/leather/v0/weights/lightning/model.ckpt",
|
| 5 |
+
"dataset_root": "/home/yusuf/datasets/mvtec_ad",
|
| 6 |
+
"hardware": {
|
| 7 |
+
"cpu": "AMD Ryzen 9 9900X 12-Core Processor",
|
| 8 |
+
"gpu": "NVIDIA GeForce RTX 5070, 570.211.01, 12227 MiB",
|
| 9 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35"
|
| 10 |
+
},
|
| 11 |
+
"library_versions": {
|
| 12 |
+
"python": "3.10.12",
|
| 13 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 14 |
+
"numpy": "2.2.6",
|
| 15 |
+
"torch": "2.11.0+cu128",
|
| 16 |
+
"torchvision": "0.26.0+cu128",
|
| 17 |
+
"anomalib": "2.4.1"
|
| 18 |
+
},
|
| 19 |
+
"timestamp_utc": "2026-05-26T05:06:15.187105+00:00",
|
| 20 |
+
"per_device": {
|
| 21 |
+
"cpu": {
|
| 22 |
+
"device": "cpu",
|
| 23 |
+
"n_images": 50,
|
| 24 |
+
"n_warmup": 10,
|
| 25 |
+
"image_size": 256,
|
| 26 |
+
"batch_size": 1,
|
| 27 |
+
"min_ms": 30.973587000062253,
|
| 28 |
+
"median_ms": 32.81182499995339,
|
| 29 |
+
"p95_ms": 35.19110755000838,
|
| 30 |
+
"mean_ms": 32.837616140041064,
|
| 31 |
+
"std_ms": 1.1777132786393758
|
| 32 |
+
},
|
| 33 |
+
"cuda": {
|
| 34 |
+
"device": "cuda",
|
| 35 |
+
"n_images": 50,
|
| 36 |
+
"n_warmup": 10,
|
| 37 |
+
"image_size": 256,
|
| 38 |
+
"batch_size": 1,
|
| 39 |
+
"min_ms": 5.1714010000978305,
|
| 40 |
+
"median_ms": 5.349747500076774,
|
| 41 |
+
"p95_ms": 6.364728000062314,
|
| 42 |
+
"mean_ms": 5.613228779975543,
|
| 43 |
+
"std_ms": 0.46813156145994267
|
| 44 |
+
}
|
| 45 |
+
}
|
| 46 |
+
}
|
reports/eval_harness/patchcore_leather_seed1.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.eval_harness.v1",
|
| 3 |
+
"category": "leather",
|
| 4 |
+
"method": "patchcore",
|
| 5 |
+
"dataset": "mvtec_ad",
|
| 6 |
+
"split": "mvtec_ad_default_train_test",
|
| 7 |
+
"split_hash": "4c730802f339675b402c86c8079e1b7b57b07c0b00e6f4de45db073ebb52ad5c",
|
| 8 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_leather_seed1/Patchcore/MVTecAD/leather/v0/weights/lightning/model.ckpt",
|
| 9 |
+
"checkpoint_hash": "5af3f908dae9df60fe472718b588deeaaeb93ce7b7b8d286c9077df098375d65",
|
| 10 |
+
"image_auroc": 1.0,
|
| 11 |
+
"pixel_auroc": 0.992077722412704,
|
| 12 |
+
"aupro": 0.9747775793075562,
|
| 13 |
+
"aupro_fpr_limit": 0.3,
|
| 14 |
+
"threshold": 0.2635792183876038,
|
| 15 |
+
"threshold_selection": {
|
| 16 |
+
"rule": "quantile",
|
| 17 |
+
"quantile": 0.995,
|
| 18 |
+
"split": "train",
|
| 19 |
+
"n_train_scores": 245
|
| 20 |
+
},
|
| 21 |
+
"n_test_images": 124,
|
| 22 |
+
"n_test_anomaly": 92,
|
| 23 |
+
"n_test_normal": 32,
|
| 24 |
+
"library_versions": {
|
| 25 |
+
"python": "3.10.12",
|
| 26 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 27 |
+
"numpy": "2.2.6",
|
| 28 |
+
"sklearn": "1.7.2",
|
| 29 |
+
"torch": "2.11.0+cu128",
|
| 30 |
+
"torchvision": "0.26.0+cu128",
|
| 31 |
+
"anomalib": "2.4.1"
|
| 32 |
+
},
|
| 33 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 34 |
+
"timestamp_utc": "2026-05-26T05:19:36.165636+00:00",
|
| 35 |
+
"device": "cuda",
|
| 36 |
+
"coreset_sampling_ratio": 0.01,
|
| 37 |
+
"train_sidecar": {
|
| 38 |
+
"backbone": "wide_resnet50_2",
|
| 39 |
+
"layers": [
|
| 40 |
+
"layer2",
|
| 41 |
+
"layer3"
|
| 42 |
+
],
|
| 43 |
+
"coreset_sampling_ratio": 0.01,
|
| 44 |
+
"checkpoint_sha256": "5af3f908dae9df60fe472718b588deeaaeb93ce7b7b8d286c9077df098375d65",
|
| 45 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea"
|
| 46 |
+
}
|
| 47 |
+
}
|
reports/eval_harness/patchcore_leather_seed2.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "inspectnet_cx.eval_harness.v1",
|
| 3 |
+
"category": "leather",
|
| 4 |
+
"method": "patchcore",
|
| 5 |
+
"dataset": "mvtec_ad",
|
| 6 |
+
"split": "mvtec_ad_default_train_test",
|
| 7 |
+
"split_hash": "4c730802f339675b402c86c8079e1b7b57b07c0b00e6f4de45db073ebb52ad5c",
|
| 8 |
+
"checkpoint": "/home/yusuf/Projects/inspectnet-cx/artifacts/patchcore_leather_seed2/Patchcore/MVTecAD/leather/v0/weights/lightning/model.ckpt",
|
| 9 |
+
"checkpoint_hash": "268b1d0819ef50353a0ed874dc84ce2f38d5fe1686978ed284f881c5532fbc0e",
|
| 10 |
+
"image_auroc": 1.0,
|
| 11 |
+
"pixel_auroc": 0.9921353973945378,
|
| 12 |
+
"aupro": 0.9748720526695251,
|
| 13 |
+
"aupro_fpr_limit": 0.3,
|
| 14 |
+
"threshold": 0.26283863246440886,
|
| 15 |
+
"threshold_selection": {
|
| 16 |
+
"rule": "quantile",
|
| 17 |
+
"quantile": 0.995,
|
| 18 |
+
"split": "train",
|
| 19 |
+
"n_train_scores": 245
|
| 20 |
+
},
|
| 21 |
+
"n_test_images": 124,
|
| 22 |
+
"n_test_anomaly": 92,
|
| 23 |
+
"n_test_normal": 32,
|
| 24 |
+
"library_versions": {
|
| 25 |
+
"python": "3.10.12",
|
| 26 |
+
"platform": "Linux-6.8.0-117-generic-x86_64-with-glibc2.35",
|
| 27 |
+
"numpy": "2.2.6",
|
| 28 |
+
"sklearn": "1.7.2",
|
| 29 |
+
"torch": "2.11.0+cu128",
|
| 30 |
+
"torchvision": "0.26.0+cu128",
|
| 31 |
+
"anomalib": "2.4.1"
|
| 32 |
+
},
|
| 33 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea",
|
| 34 |
+
"timestamp_utc": "2026-05-26T05:20:32.067330+00:00",
|
| 35 |
+
"device": "cuda",
|
| 36 |
+
"coreset_sampling_ratio": 0.01,
|
| 37 |
+
"train_sidecar": {
|
| 38 |
+
"backbone": "wide_resnet50_2",
|
| 39 |
+
"layers": [
|
| 40 |
+
"layer2",
|
| 41 |
+
"layer3"
|
| 42 |
+
],
|
| 43 |
+
"coreset_sampling_ratio": 0.01,
|
| 44 |
+
"checkpoint_sha256": "268b1d0819ef50353a0ed874dc84ce2f38d5fe1686978ed284f881c5532fbc0e",
|
| 45 |
+
"git_commit": "e8b13f0163d67d14f3e3803fab58a834b002d5ea"
|
| 46 |
+
}
|
| 47 |
+
}
|