hyao1 / GLAD

The official code of "GLAD: Towards Better Reconstruction with Global and Local Adaptive Diffusion Models for Unsupervised Anomaly Detection"
46 stars 2 forks source link

作者您好,关于测试集数据的问题,是否包含正常图像 #10

Open ZHE-SAPI opened 2 hours ago

ZHE-SAPI commented 2 hours ago

def get_data_single_class(self, instance_data_root): image_list = [] mask_list = [] object_fold = self.class_name mask_fold = '' if self.type == 'train' else 'ground_truth'

    foldnames = os.listdir(os.path.join(instance_data_root, self.class_name, self.type))
    for image_fold in foldnames:
        filenames = os.listdir(os.path.join(instance_data_root, self.class_name, self.type, image_fold))
        for img in filenames:
            image_list.append(os.path.join(instance_data_root, self.class_name, self.type, image_fold, img))
            if image_fold == 'good':
                mask_list.append(None)
            else:
                if 'VisA' in instance_data_root or 'PCBBank' in instance_data_root:
                    mask_name = img.split('.')[0] + ".png"
                else:
                    mask_name = img.split('.')[0] + "_mask." + img.split('.')[1]
                mask_list.append(os.path.join(instance_data_root, object_fold, mask_fold, image_fold, mask_name))
    return image_list, mask_list

def get_data_mutil_class(self, instance_data_root): image_list = [] mask_list = [] class_name = [] for object_fold in os.listdir(instance_data_root): mask_fold = '' if self.type == 'train' else 'ground_truth' for image_fold in os.listdir(os.path.join(instance_data_root, object_fold, self.type)): for img in os.listdir(os.path.join(instance_data_root, object_fold, self.type, image_fold)): image_list.append(os.path.join(instance_data_root, object_fold, self.type, image_fold, img)) if image_fold == 'good': mask_list.append(None) else: mask_name = img.split('.')[0] + "_mask." + img.split('.')[1] mask_list.append( os.path.join(instance_data_root, object_fold, mask_fold, image_fold, mask_name)) class_name.append(object_fold) return image_list, mask_list, class_name

请问 if image_fold == 'good': mask_list.append(None),这会导致测试的时候仅有异常图像参与了测试,不过 DiffAD DiAD 也对正常测试图像进行了测试,我想知道 我理解的对吗?谢谢!

hyao1 commented 2 hours ago

由于正常图象是没有保存为文件的mask的,所以这里正常图像的mask的路径设置为None,在读取图像的时候,对于为None的路径,我们使用instance_mask = Image.fromarray(np.zeros([*instance_image.size]))直接生成全0的mask,所以我们的方法中测试了正常图像