Skip to content

Indad

Overviews

INDAD is an Industrial KNN-based Anomaly Detection.

Original git: https://github.com/rvorias/ind_knn_ad.git

INDAD PatchCore

Example Detect Anomaly using PatchCore

The packages contain 3 different algorithms:

  1. SPADE (2021)
  2. PaDiM (2020)
  3. PatchCore (2021): Recommended

In this document, we will show you how to use HACHIX version of these algorithms.

APIs

Model

Bases: BaseModel

This is the base model for INDAD

Parameters:

Name Type Description Default
BaseModel Class

Common class for all ecos_core models

required

Returns: None

__init__(opt)

This function is called when creating a new instance of INDAD Model

Parameters:

Name Type Description Default
opt NameSpace

The default options neccessary for initializing the model. opt should includes these attributes: class_names, weight, device.

required

build_model(custom_weight=None)

Build model in ensemble model. Type of model is defined in opt.json

Parameters:

Name Type Description Default
custom_weight(str)

weight to load that not defined in opt. Default: None.

required

Returns:

Type Description
Model

Model after built

Examples:

>>> from argparse import ArgumentParser
>>> from ecos_core.indad.indad import Model
>>> parser = ArgumentParser()
>>> opts = parser.parse_args()
>>> with open(opt_path, 'r') as f:
>>>     opts.__dict__ = json.load(f)
>>> model = Model(opts)
>>> #Build model with default options
>>> model.build_model()
>>> #Build model with custom weight
>>> model.build_model(custom_weight=<PATH_TO_WEIGHT>)

calculate_threshold_score(weight_path, valid_path)

calculate the threshold score from the validation dataset

Parameters:

Name Type Description Default
weight_path str

weight path

required
valid_path str

validation images folder path

required

Returns:

Name Type Description
List

highest threshold score and pixel score

List

score per image

create_augment_images(good_folder_path, image_files, number_of_copy) staticmethod

Augment the images in a directory randomly, then generate training dataset

Parameters:

Name Type Description Default
good_folder_path str

The path to the directory containing the images

required
image_files list

list of image files

required
number_of_copy int

maximum number of copies per image to be augmented

required

create_validation_folder(valid_folder_path) staticmethod

create validation folder if it doesn't exist or not qualified

Args: valid_folder_path (str): description

Returns:

Name Type Description
Bool

True: Exist and qualified False: Not exist or not qualified

generate_instance_model(method) staticmethod

generate instance model

Parameters:

Name Type Description Default
method str

spade or padim or patchcore or amazon_patchcore method

required

Returns:

Name Type Description
object

instance of method

generate_training_data(train_path, number_of_copy)

Augment the images in a directory randomly, then generate training dataset

Parameters:

Name Type Description Default
train_path str

The path to the directory containing the images to be augmented

required
number_of_copy int

maximum number of copies per image to be augmented

required

generate_validation_dataset(base_path, valid_folder_path, split_percentage) staticmethod

Create a validation dataset based on training dataset

Parameters:

Name Type Description Default
base_path str

path to data directory

required
valid_folder_path str

validation folder path

required
split_percentage float

ratio of validation dataset / training dataset

required

get_transform()

Transform input by ImageNet normalization.

Returns:

Name Type Description
Function

A function for transform a single image from path

load_dataset(good_folder_path) staticmethod

load data from specified folder, return list of image files name and number of images

Parameters:

Name Type Description Default
good_folder_path str

The path to the directory containing the images

required

Returns:

Name Type Description
number

number of images

list

list of image files

load_opt(opt_path) staticmethod

load opt file and return data

Parameters:

Name Type Description Default
opt_path str

opt.json path

required

Raises:

Type Description
FileNotFoundError

description

Returns:

Name Type Description
dict

opt configuration

load_threshold_score(weight_path, valid_path)

read threshold_score file and return threshold score calculated from validation dataset if opt.json is exist
if not exist it will calculate threshold score from validation dataset

Parameters:

Name Type Description Default
weight_path str

weight path

required
valid_path str

validation images folder path

required

Returns:

Name Type Description
List

threshold score and pixel score

process_predictions(pred, raw_image_path, raw_image, image_transform, save_image_path)

After processing for prediction

Parameters:

Name Type Description Default
pred _type_

description

required
image_transform Array

Original image after transformation

required
raw_image Image

PIL image

required
save_image_path str

Path to save image

required

Returns:

Type Description
str

Path to the saved image

save_threshold_score(threshold, threshold_pixel_score=0.0)

save to opt.json

Parameters:

Name Type Description Default
threshold int

threshold score

required
threshold_pixel_score(float)

threshold for pixel level score. Default 0.0

required