| --- |
| title: Industrial Anomaly Detection — PatchCore Demo |
| emoji: 🔍 |
| colorFrom: blue |
| colorTo: indigo |
| sdk: gradio |
| sdk_version: "6.17.3" |
| app_file: app.py |
| pinned: false |
| --- |
| |
| ## Industrial Anomaly Detection with PatchCore |
|
|
| Detects surface defects in industrial images using **PatchCore** (Roth et al., CVPR 2022) — |
| a training-free method that builds a memory bank of normal patch features and flags anomalies |
| as regions far from that bank. |
|
|
| **Supported categories (15):** bottle, cable, capsule, carpet, grid, hazelnut, leather, |
| metal_nut, pill, screw, tile, toothbrush, transistor, wood, zipper |
| |
| **How it works:** Upload any product image → nearest-neighbour distance from patch features |
| to the memory bank → pixel-level anomaly heatmap + image-level score and pass/fail verdict. |
| |
| **Backbone:** WideResNet-101-2 (ImageNet pretrained, layers 2 + 3 concatenated → 1536-dim descriptors) |
| |
| **Note:** Thresholds are not stored in `metrics.json` (only AUROC/PRO metrics are saved). |
| The verdict currently uses a default threshold of 0.5 — calibrate per category from the |
| score distributions in `results/{category}/score_distribution.png`. |
|
|