2021广东工业智造创新大赛-智能算法赛:瓷砖表面瑕疵质检

1. Dataset


# class DataPrefetcher(object):
#     def __init__(self, loader):
#         super(DataPrefetcher, self).__init__()
#         self.data = loader
#         self.loader = iter(self.data)
#         self.stream = torch.cuda.Stream()
#         self.preload()
#
#     def preload(self):
#         try:
#             self.next_imgs, self.next_masks, self.next_weights = next(self.loader)
#         except StopIteration:
#             self.loader = iter(self.data)
#             self.next_imgs, self.next_masks, self.next_weights = next(self.loader)
#         with torch.cuda.stream(self.stream):
#             self.next_imgs = self.next_imgs.cuda(non_blocking=True)
#             self.next_masks = self.next_masks.cuda(non_blocking=True)
#             self.next_weights = self.next_weights.cuda(non_blocking=True)
#             self.next_imgs = self.next_imgs.float() / 255.0
#             self.next_masks = self.next_masks.float() / 255.0
#             self.next_weights = self.next_weights.float() / 255.0
#
#     def __len__(self):
#         return len(self.loader)
#
#     def next(self):
#         torch.cuda.current_stream().wait_stream(self.stream)
#         imgs = self.next_imgs
#         masks = self.next_masks
#         weights = self.next_weights
#         self.preload()
#         return imgs, masks, weights


class DataPrefetcher(object):
    def __init__(self, loader):
        super(DataPrefetcher, self).__init__()
        self.data = loader
        self.loader = iter(self.data)
        self.stream = torch.cuda.Stream()
        self.preload()

    def preload(self):
        try:
            self.next_imgs = next(self.loader)
        except StopIteration:
            # self.loader = iter(self.data)
            # self.next_imgs = next(self.loader)
            self.next_imgs = None
            return
        with torch.cuda.stream(self.stream):
            self.next_imgs = self.next_imgs.cuda(non_blocking=True)

            self.next_imgs = self.next_imgs.float()

    def __len__(self):
        return len(self.loader)

    def next(self):
        torch.cuda.current_stream().wait_stream(self.stream)
        imgs = self.next_imgs
        self.preload()
        return imgs

class data_prefetcher():
    def __init__(self, loader):
        self.loader = iter(loader)
        self.stream = torch.cuda.Stream()
        self.preload()

    def preload(self):
        try:
            self.data = next(self.loader)
        except StopIteration:
            self.data = None
            return
        with torch.cuda.stream(self.stream):
            self.data = self.data.cuda(non_blocking=True)
            # self.next_target = self.next_target.cuda(non_blocking=True)
            # With Amp, it isn't necessary to manually convert data to half.
            # if args.fp16:
            #     self.next_input = self.next_input.half()
            # else:
            self.data = self.data.float()
            # self.data = self.da.sub_(self.mean).div_(self.std)
  • train_dataset+val_dataset:一共5388张图片
  • test_dataset:一共1762张图片
类别名			图像数量  边界框数量

边异常            419        519       
角异常            1779       1976      
白色点瑕疵        1259       1945      
浅色块瑕疵        643        981       
深色点块瑕疵      2913       7986      
光圈瑕疵          246        302    
train_id_2_category_dict = {0: "边异常", # 
                            1: "角异常", # 橙色
                            2: "白色点瑕疵", # 黄色
                            3: "浅色块瑕疵", # 橙红色
                            4: "深色点块瑕疵", # 绿色
                            5: "光圈瑕疵" # 绿色}

1.1 train_dataset

Get 4850 valid images in total
# 只有两种分辨率的输入图像,其中6000x8192的图像有3557张,3500x4096的图像有1293张
height_width =  [[6000, 8192], [3500, 4096]]

1.2 val_dataset:

Get 538 valid images in total 
# 只有两种分辨率的输入图像,其中6000x8192的图像有396张,3500x4096的图像有142张
height_width = [[6000, 8192], [3500, 4096]]
### 回答1: Wall数据集是由Stanford University提供的一个包含大量墙面图片的数据集。这些图片是从不同角度和距离拍摄的,包括了多种颜色、花纹和纹理的墙面。这个数据集的主要目的是为计算机视觉领域中图像识别和分类的研究提供支持。 该数据集可以用于图像分类、图像识别、图像分割等任务中。例如,我们可以使用该数据集训练一个分类器,以区分不同种类、颜色、花纹和纹理的墙面。这个分类器可以用来检测和识别各种墙面,从而提供更加准确的信息和应用。 由于该数据集包含大量的墙面图片,因此可以用来训练和测试各种计算机视觉算法。例如,我们可以使用该数据集测试算法的鲁棒性和可靠性,或者用它来提高算法对图像噪声、光线、干扰等因素的抵抗能力。 综上所述,Wall数据集是一个有用的工具,它可以被用来开发和改进计算机视觉领域中的图像识别和分类算法,以及应用于物体检测、环境识别、自动驾驶等各种应用场景。 ### 回答2: Wall数据集是一个用于图像识别与分类的数据集,主要针对的内容是墙面上的图像。这个数据集由一些预先定义的类别组成,比如说瓷砖、石头、砖墙等等。同时,每个类别都有一些不同的样本,每个样本都由一张图片和相应的标签组成。 这个数据集的目的是为计算机视觉的研究和发展提供一个使用真实场景图像实验的平台。对于需要训练图像分类算法的学者和研究人员,Wall数据集可以提供丰富的样本和选项,有助于更准确地进行算法设计和实现。 Wall数据集的应用范围广泛,可以用于墙面上的物品检测、墙面材质分类、建筑物表面的检测等等。此外,这个数据集的使用也有助于监控系统的发展,因为对于真实场景中的监控系统,墙壁上的物体是一项重要的监测内容。 总之,Wall数据集作为一个用于图像识别与分类的数据集,可以为计算机视觉领域的研究人员提供一个实验的平台,同时也为各个领域的应用提供了很多备选的选项。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值