Spaces:
Running
Running
File size: 2,604 Bytes
32faf2b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
import cv2
import os
import numpy as np
def specify_resolution(image_list, score_list, mask_list, resolution: tuple=(400,400)):
resize_image = []
resize_score = []
resize_mask = []
# print(resolution)
for image, score, mask in zip(image_list, score_list, mask_list):
image = cv2.resize(image, (resolution[0], resolution[1]), interpolation=cv2.INTER_CUBIC)
score = cv2.resize(score, (resolution[0], resolution[1]), interpolation=cv2.INTER_CUBIC)
mask = cv2.resize(mask, (resolution[0], resolution[1]), interpolation=cv2.INTER_NEAREST)
resize_image += [image]
resize_score += [score]
resize_mask += [mask]
return resize_image, resize_score, resize_mask
def normalize(scores):
max_value = np.max(scores)
min_value = np.min(scores)
norml_scores = (scores - min_value) / (max_value - min_value)
return norml_scores
def save_single_result(classification_score, segmentation_score, root_dir, shot_name, experiment_indx, subset_name, defect_type, name, use_defect_type):
if use_defect_type:
# mvtec2d mvtec3d
save_dir = os.path.join(root_dir, shot_name, experiment_indx, subset_name, defect_type)
else:
# visa
save_dir = os.path.join(root_dir, shot_name, experiment_indx, subset_name)
os.makedirs(save_dir, exist_ok=True)
classification_dir = os.path.join(save_dir, 'classification')
segmentation_dir = os.path.join(save_dir, 'segmentation')
os.makedirs(classification_dir, exist_ok=True)
os.makedirs(segmentation_dir, exist_ok=True)
classification_path = os.path.join(classification_dir, f'{name}.txt')
segmentation_path = os.path.join(segmentation_dir, f'{name}.npz')
with open(classification_path, "w") as f:
f.write(f'{classification_score:.5f}')
segmentation_score = np.round(segmentation_score * 255).astype(np.uint8)
np.savez_compressed(segmentation_path, img=segmentation_score)
def save_results(classification_score_list, segmentation_score_list, root_dir, shot_name, experiment_indx, name_list, use_defect_type):
for classification_score, segmentation_score, full_name in zip(classification_score_list,
segmentation_score_list,
name_list):
subset_name, defect_type, name = full_name.split('-')
save_single_result(classification_score, segmentation_score, root_dir, shot_name, experiment_indx, subset_name, defect_type, name, use_defect_type)
|