Anomaly-detection (AD): is a task where the goal is to find anomalous samples at inference time while during training, only positive (good) samples are given.
Denoising Diffusion Model (DDM): DDMs are models trained to recover images from noisy versions of the same image; they have recently been proven useful for many tasks (with a focus on generative models).
Goal: In this project we will attempt to develop a POC for detecting anomalies in images based on the ability or inability of a DDM to reconstruct them.
Example: Inspection of a product in a factory may take images of all products on the product line. The goal may be to find scratched or damaged products, while during training no such samples were given.
-
Add random gaussian noise to an image.
-
Denoise the noised image using a DDM and reconstruct the image.
-
Calculate the “difference” between the original image and the reconstructed image and use the result to determine an anomality score.
Download the 256x256 class unconditional model from here: 256x256_diffusion_uncond.pt
Place it in the path models/256x256x_diffusion_uncond.pt
(relative path from the root directory of the repository).
Run all the cells of main_experiment.ipynb
.
You can see the output in the following paths:
output/
- The root folder of the outputs. Everything will be in here.output/results.csv
- A csv table containing the columnscategory | category_type | img_auc | pixel_auc
with the final results per category. Will have the results of the last execution for each class. Can optimize and setoverwrite = False
inmain_experiment.ipynb
in the proper places and that will make sure that only categories that are not already present in the csv will be evaluated.output/<category_name>/lightning_logs/
- Can find many output files here. Will have a version per evaluation performed. Each version will have asample
sub-directory inside of it that will included visualizations.