MCPcopy Create free account
hub / github.com/amazon-science/patchcore-inspection / patch_core

Function patch_core

bin/run_patchcore.py:259–315  ·  view source on GitHub ↗
(
    backbone_names,
    layers_to_extract_from,
    pretrain_embed_dimension,
    target_embed_dimension,
    preprocessing,
    aggregation,
    patchsize,
    patchscore,
    patchoverlap,
    anomaly_scorer_num_nn,
    patchsize_aggregate,
    faiss_on_gpu,
    faiss_num_workers,
)

Source from the content-addressed store, hash-verified

257@click.option("--faiss_on_gpu", is_flag=True)
258@click.option("--faiss_num_workers", type=int, default=8)
259def patch_core(
260 backbone_names,
261 layers_to_extract_from,
262 pretrain_embed_dimension,
263 target_embed_dimension,
264 preprocessing,
265 aggregation,
266 patchsize,
267 patchscore,
268 patchoverlap,
269 anomaly_scorer_num_nn,
270 patchsize_aggregate,
271 faiss_on_gpu,
272 faiss_num_workers,
273):
274 backbone_names = list(backbone_names)
275 if len(backbone_names) > 1:
276 layers_to_extract_from_coll = [[] for _ in range(len(backbone_names))]
277 for layer in layers_to_extract_from:
278 idx = int(layer.split(".")[0])
279 layer = ".".join(layer.split(".")[1:])
280 layers_to_extract_from_coll[idx].append(layer)
281 else:
282 layers_to_extract_from_coll = [layers_to_extract_from]
283
284 def get_patchcore(input_shape, sampler, device):
285 loaded_patchcores = []
286 for backbone_name, layers_to_extract_from in zip(
287 backbone_names, layers_to_extract_from_coll
288 ):
289 backbone_seed = None
290 if ".seed-" in backbone_name:
291 backbone_name, backbone_seed = backbone_name.split(".seed-")[0], int(
292 backbone_name.split("-")[-1]
293 )
294 backbone = patchcore.backbones.load(backbone_name)
295 backbone.name, backbone.seed = backbone_name, backbone_seed
296
297 nn_method = patchcore.common.FaissNN(faiss_on_gpu, faiss_num_workers)
298
299 patchcore_instance = patchcore.patchcore.PatchCore(device)
300 patchcore_instance.load(
301 backbone=backbone,
302 layers_to_extract_from=layers_to_extract_from,
303 device=device,
304 input_shape=input_shape,
305 pretrain_embed_dimension=pretrain_embed_dimension,
306 target_embed_dimension=target_embed_dimension,
307 patchsize=patchsize,
308 featuresampler=sampler,
309 anomaly_scorer_num_nn=anomaly_scorer_num_nn,
310 nn_method=nn_method,
311 )
312 loaded_patchcores.append(patchcore_instance)
313 return loaded_patchcores
314
315 return ("get_patchcore", get_patchcore)
316

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected