anomalib.models.patchcore.torch_model

PyTorch model for the PatchCore model implementation.

Module Contents

Classes

PatchcoreModel

Patchcore Module.

class anomalib.models.patchcore.torch_model.PatchcoreModel(input_size: Tuple[int, int], layers: List[str], backbone: str = 'wide_resnet50_2', num_neighbors: int = 9)[source]

Bases: anomalib.models.components.DynamicBufferModule, torch.nn.Module

Patchcore Module.

forward(self, input_tensor: torch.Tensor) Union[torch.Tensor, Tuple[torch.Tensor, torch.Tensor]][source]

Return Embedding during training, or a tuple of anomaly map and anomaly score during testing.

Steps performed: 1. Get features from a CNN. 2. Generate embedding based on the features. 3. Compute anomaly map in test mode.

Parameters

input_tensor (Tensor) – Input tensor

Returns

Embedding for training,

anomaly map and anomaly score for testing.

Return type

Union[torch.Tensor, Tuple[torch.Tensor, torch.Tensor]]

generate_embedding(self, features: Dict[str, torch.Tensor]) torch.Tensor[source]

Generate embedding from hierarchical feature map.

Parameters
  • features – Hierarchical feature map from a CNN (ResNet18 or WideResnet)

  • features – Dict[str:Tensor]:

Returns

Embedding vector

static reshape_embedding(embedding: torch.Tensor) torch.Tensor[source]

Reshape Embedding.

Reshapes Embedding to the following format: [Batch, Embedding, Patch, Patch] to [Batch*Patch*Patch, Embedding]

Parameters

embedding (Tensor) – Embedding tensor extracted from CNN features.

Returns

Reshaped embedding tensor.

Return type

Tensor

subsample_embedding(self, embedding: torch.Tensor, sampling_ratio: float) None[source]

Subsample embedding based on coreset sampling and store to memory.

Parameters
  • embedding (np.ndarray) – Embedding tensor from the CNN

  • sampling_ratio (float) – Coreset sampling ratio

nearest_neighbors(self, embedding: torch.Tensor, n_neighbors: int = 9) torch.Tensor[source]

Nearest Neighbours using brute force method and euclidean norm.

Parameters
  • embedding (Tensor) – Features to compare the distance with the memory bank.

  • n_neighbors (int) – Number of neighbors to look at

Returns

Patch scores.

Return type

Tensor