Pangoraw / PaDiM

:dolphin: Re-implementation of PaDiM and code for the article "Weakly Supervised Detection of Marine Animals in High Resolution Aerial Images"

Home Page:https://arxiv.org/abs/2011.08785

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PaDiM

A Patch Distribution Modeling Framework for Anomaly Detection and Localization

This is an unofficial re-implementation of the paper PaDiM: a Patch Distribution Modeling Framework for Anomaly Detection and Localization available on arxiv.

Features

The key features of this implementation are:

  • Constant memory footprint - training on more images does not result in more memory required
  • Resumable learning - the training step can be stopped and then resumed with inference in-between
  • Limited dependencies - apart from PyTorch, Torchvision and Numpy

Variants

This repository also contains variants on the original PaDiM model:

  • PaDiMSVDD uses a Deep-SVDD model instead of a multi-variate Gaussian distribution for the normal patch representation.
  • PaDiMShared shares the multi-variate Gaussian distribution between all patches instead of learning it only for specific coordinates.

Installation

git clone https://github.com/Pangoraw/PaDiM.git padim

Getting started

Training

from torch.utils.data import DataLoader
from padim import PaDiM

# i) Initialize
padim = PaDiM(num_embeddings=100, device="cpu", backbone="resnet18") 

# ii) Create a dataloader producing image tensors
dataloader = DataLoader(...)

# iii) Consume the data to learn the normal distribution
# Use PaDiM.train(...)
padim.train(dataloader)

# Or PaDiM.train_one_batch(...)
for imgs in dataloader:
	padim.train_one_batch(imgs)

Testing

With the same PaDiM instance as in the Training section:

for new_imgs in test_dataloader:
	distances = padim.predict(new_imgs) 
	# distances is a (n * c) matrix of the mahalanobis distances
	# Compute metrics...

Acknowledgements

This implementation was built on the work of:

About

:dolphin: Re-implementation of PaDiM and code for the article "Weakly Supervised Detection of Marine Animals in High Resolution Aerial Images"

https://arxiv.org/abs/2011.08785

License:MIT License


Languages

Language:Python 98.5%Language:Shell 1.5%