How to use from the
Use from the
Keras library
# !pip install -U keras tensorflow huggingface_hub
# Keras needs TensorFlow installed to read "hf://" paths, so the tensorflow backend is selected here;
# "jax" and "torch" also work for computation once TensorFlow is installed.
import os
os.environ["KERAS_BACKEND"] = "tensorflow"

import keras

model = keras.saving.load_model("hf://abulhawa/industrial-component-anomaly-detection-models")

Industrial Component Anomaly Detection β€” Model Artifacts

Archive of trained models, metrics, anomaly heatmaps, and four-panel visualizations from the industrial-component-anomaly-detection project. Read the anomaly detection documentation for the methods and the detailed experiment results for category-level comparisons.

Contents

  • keras_cae/: trained convolutional-autoencoder weights and evaluation artifacts
  • patchcore/: PatchCore evaluation artifacts
  • dinov2/: DINOv2-based evaluation artifacts
  • dinov3/: DINOv3-based evaluation artifacts

This archive does not include the raw MVTec AD dataset or pretrained DINOv2/DINOv3 encoder weights. The DINO directories contain evaluation outputs and metadata only.

Evaluation results

The table reports unweighted means over the 15 MVTec AD categories, computed from the metadata.json files in this archive under the fair-eval-v1 protocol. Image F1 uses thresholds chosen from normal validation data; image AUROC and pixel AUPIMO summarize ranking and low false positive localization. Values are rounded to three decimals.

Model configuration Categories Image F1 ↑ Image AUROC ↑ Pixel AUPIMO ↑
DINOv2, original single layer 1-NN 15 0.941 0.979 0.602
DINOv3, single layer 1-NN 15 0.932 0.978 0.680
PatchCore 15 0.929 0.971 0.603
Keras CAE 15 0.496 0.722 0.059

Results by MVTec category

The PatchCore and CAE table reproduces the primary baseline table in the technical report. It is the report snapshot, including image PR-AUC calculated from the curves available at the time. Some report values differ slightly from the current archived metadata and curves; use the per-model files for the exact uploaded artifact values.

Category PatchCore F1 PatchCore PR-AUC PatchCore AUPIMO CAE F1 CAE PR-AUC CAE AUPIMO
Bottle 0.962 1.000 0.982 0.992 1.000 0.507
Cable 0.933 0.985 0.511 0.154 0.624 0.000
Capsule 0.982 0.996 0.563 0.476 0.917 0.052
Carpet 0.926 0.994 0.796 0.635 0.835 0.003
Grid 0.916 0.986 0.506 0.602 0.901 0.077
Hazelnut 0.971 0.999 0.863 0.500 0.902 0.033
Leather 0.898 0.998 0.972 0.786 0.892 0.075
Metal Nut 0.963 0.998 0.760 0.243 0.825 0.002
Pill 0.891 0.982 0.293 0.395 0.923 0.030
Screw 0.796 0.983 0.380 0.421 0.887 0.005
Tile 0.951 0.993 0.685 0.132 0.727 0.001
Toothbrush 0.923 0.949 0.414 0.735 0.922 0.054
Transistor 0.916 0.976 0.427 0.657 0.758 0.005
Wood 0.952 0.995 0.642 0.182 0.955 0.008
Zipper 0.962 0.985 0.251 0.513 0.940 0.025
Mean (report) 0.929 0.988 0.603 0.495 0.867 0.058

The DINO table below is computed from the archived original DINOv2 baseline and the latest DINOv3 baseline run for each category. AUROC is the image-level score; AUPIMO is the pixel-level score.

Category DINOv2 F1 DINOv2 AUROC DINOv2 AUPIMO DINOv3 F1 DINOv3 AUROC DINOv3 AUPIMO
Bottle 0.992 1.000 0.900 0.992 1.000 0.889
Cable 0.906 0.960 0.496 0.957 0.992 0.719
Capsule 0.854 0.945 0.123 0.888 0.982 0.521
Carpet 0.989 0.998 0.960 0.937 0.996 0.969
Grid 0.958 1.000 0.981 0.926 0.989 0.839
Hazelnut 0.979 0.996 0.605 0.979 0.999 0.823
Leather 0.953 1.000 1.000 0.968 1.000 1.000
Metal Nut 0.995 1.000 0.539 0.984 1.000 0.891
Pill 0.936 0.974 0.561 0.964 0.981 0.449
Screw 0.849 0.876 0.266 0.732 0.860 0.012
Tile 0.988 1.000 0.964 0.982 1.000 0.941
Toothbrush 0.968 0.994 0.139 0.938 0.986 0.701
Transistor 0.811 0.958 0.113 0.854 0.929 0.270
Wood 0.960 0.989 0.687 0.916 0.982 0.580
Zipper 0.975 0.992 0.695 0.970 0.981 0.588
Mean (archive) 0.941 0.979 0.602 0.932 0.978 0.680

For DINOv2, this table uses the original baseline, excluding the enhanced experiments. For DINOv3, it uses the latest archived baseline result per category; bottle and cable each have an earlier run as well. Per category values, model hashes, configuration, and split evidence are in each model's metadata.json. The experiment analysis discusses the enhanced DINOv2 variant and comparison limits. These benchmark results do not establish performance on other production data. This repository stores downloadable artifacts; it does not provide a hosted inference endpoint.

License and permitted use

This is a mixed-provenance archive; no single permissive software license applies to every file. MVTec-derived images, overlays, evaluation artifacts, and models trained on MVTec AD are distributed conservatively under CC BY-NC-SA 4.0 where those terms apply. Treat this archive as non-commercial unless you have separately established broader rights.

See LICENSE.md for path-specific terms and licenses/ for upstream license copies.

Attribution

MVTec AD: Paul Bergmann, Kilian Batzner, Michael Fauser, David Sattlegger, and Carsten Steger, The MVTec Anomaly Detection Dataset: A Comprehensive Real-World Dataset for Unsupervised Anomaly Detection, IJCV 2021; and Bergmann et al., MVTec AD β€” A Comprehensive Real-World Dataset for Unsupervised Anomaly Detection, CVPR 2019.

DINOv2 and DINOv3 are by Meta AI Research. Review the bundled notices before redistribution.

Restore the model registry

First clone and set up the application repository:

git clone https://github.com/foersben/industrial-component-anomaly-detection.git
cd industrial-component-anomaly-detection
pixi install -e dev

Then download this model registry into the location expected by the application:

pixi run --frozen -e dev hf download \
  abulhawa/industrial-component-anomaly-detection-models \
  --repo-type model \
  --local-dir data/models

Alternatively, if just is available:

just download-models abulhawa/industrial-component-anomaly-detection-models

This model repository is public, so authentication is not required for downloading. For a clean restore, use an empty data/models/ directory because files with matching paths may be replaced.

The model archive does not include the MVTec AD dataset. Follow the dataset setup instructions in the application repository if raw dataset access is needed.

Downloads last month
279
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support