Skip to content

Anomaly Detection method, based on the Number of False Alarms (NFA)

License

Notifications You must be signed in to change notification settings

mtailanian/nfa_anomaly_detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A Contrario multi-scale anomaly detection method for industrial quality inspection

Link to code

Book chapter

Arxiv

Book chapter

Conference paper

Paper Arxiv

Description

This is the official code that implements the chapter A Contrario multi-scale anomaly detection method for industrial quality inspection, of the book Deep Learning Applications, Volume 4

The algorithm is completely unsupervised and intends to detect anomalies in textured images.

Result examples over MVTec-AD Dataset

text

For each textured dataset in MVTec AD (carpet, grid, leather, tile, and wood), we show one image with each type of defect and their corresponding anomaly maps with the ResNet+RegionNFA method. The ground truth in is shown green, and the detection with log-NFA=0 in blue, superimposed to the original image.

Result examples over MVTec-AD Dataset

text

How to run

Setup

First, download repo, create virtual environment and install dependencies

# clone project   
git clone https://github.com/mtailanian/nfa_anomaly_detection.git
cd nfa_anomaly_detection

# Create virtualenv and activate it
virtualenv -p python3 .env
source .env/bin/activate

# install dependencies
pip install -r requirements.txt

Run

Next, run it using main.py, and passing the image path.

A test image is provided in ./images/test_image_01.jpg

For example:

python main.py images/test_image_01.jpg

Other additional optional arguments:

Argument short name Argument long name Description Default value
image_path image_path Path of the image to process None (mandatory argument)
-thr --log_nfa_threshold Threshold over the computed NFA map, for final segmentation. 0
-dist_thr --distance_threshold Threshold over the squared Mahalanobis distances, for computing the candidate regions. 0.5
-s --size Input size for ResNet. Must be divisible by 32. 256
-pca --pca_std If float: the percentage of the variance to keep in PCA. If int: the number of components to keep. 35

Citation

Conference paper:

@inproceedings{tailanian2021multi,
  title={A Multi-Scale A Contrario method for Unsupervised Image Anomaly Detection},
  author={Tailani{\'a}n, Mat{\'\i}as and Mus{\'e}, Pablo and Pardo, {\'A}lvaro},
  booktitle={2021 20th IEEE International Conference on Machine Learning and Applications (ICMLA)},
  pages={179--184},
  year={2021},
  organization={IEEE}
}

Book chapter:

@incollection{tailanian2023contrario,
  title={A Contrario multi-scale anomaly detection method for industrial quality inspection},
  author={Tailanian, Mat{\'\i}as and Mus{\'e}, Pablo and Pardo, {\'A}lvaro},
  booktitle={Deep Learning Applications, Volume 4},
  pages={193--216},
  year={2023},
  publisher={Springer}
}

Copyright and License

Copyright (c) 2021-2022 Matias Tailanian [email protected]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.

About

Anomaly Detection method, based on the Number of False Alarms (NFA)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages