MVTec AD is fifteen categories of manufactured parts. The training set contains **only
| mean image AUROC | |
|---|---|
| **frozen ResNet-50 features** | **0.9379** |
| raw 32×32 pixels, identical pipeline | 0.6700 |
| published PatchCore (trains a coreset) | ~0.991 |
The raw-pixel control runs the same bank, the same distance and the same scoring rule — only the representation differs. Splitting the fifteen categories into MVTec's own texture and object groups:
The representation is worth 2.3× more on objects than on textures. On a texture, a defect is a local statistical break and raw pixels already catch most of it — leather scores 0.9808 on pixels alone against 1.0000 with features. On an object, the defect is a part being wrong in a specific place, and raw pixels are near chance: metal_nut scores 0.4040 on pixels — *below* 0.5, so worse than guessing — against 0.9878 with features.
Without the control, 0.9379 would have read as a fact about the method. It is mostly a fact about where the representation is doing the work.
Code and full results on GitHub
Every number is read from the file the run produced. github.com/hammasbuilds · kaggle.com/muhammadhammas13