怎么制作自己的数据集

我们在做深度学习时,一般都是跑别人公开的数据集,如果想要跑自己的数据集怎么办?今天就记录一下我自己用的一种方法。

1、假设待分类一共有n类

2、新建一个文件夹,在该文件夹下新建n子个文件夹和n个对应的txt文件。将对应分类的图片放入到新建的分类文件夹中。假设           训练图片子文件夹名称分别为train_1到train_n,相对应的txt文件命名为train_1.txt到train_2.txt

3、使用如下命令:将每个子文件夹的内容(图像的名字)和标签写到txt文件中。

import os
DIRECTORY= "C:\\Users\\FT\\jupyter\\train_1"#这里是自己子文件夹的图片的位置,train_1到train_n
f = open('C:\\Users\\FT\\jupyter\\train_1.txt','w') #txt文件位置train_1到train_n
files=os.listdir(DIRECTORY)
for file in files:
		f.writelines(file+“ “+’num_class’)#num_class 是该类图像对应的分类一般用0-9
		f.write('\n')
f.close()

      写入的过后的txt文件如下:

 4、将所有的train_n.txt文件复制到一个总的txt文件命名为train.txt。这个txt文件包括了所有训练图片的名字和对应的标签.。并将        train_1到train_n文件夹中所有的图片复制到一个文件夹train中

5、使用下面的命令将该train.txt文件中图片对应名字的图片和标签取出来。

  

DIRECTORY= "C:\\Users\\FTM\\jupyter\\train"#这里是自己的所有图片的位置
f = open('C:\\Users\\FTM\\jupyter\\train.txt','r')

#产生一个0-130的随机序列。130 是自己训练图片的总张数。用于将train.txt中的数据随机排序,训练时生成随机的batch
list=[]
for i in range(0,130):
    list.append(i)
random.shuffle(list)

##########分开train.txt中的数据###############
num=[] #labels数据集
imgs=[]#data数据
line=f.readline()
while line:
    a = line.split()#将txt分成两列   
    data = a[0]   # 这是选取图像的名称,一般是xxx.jpg或其他图片格式
    imgs.append(data)  #将其添加在列表之中
    label = a[1]  # 这是选取图像的标签,一般是0-9的数字
    num.append(label)
    line = f.readline()
f.close()


##############读取图片数据######################
  batch=[] #图像数据
  labels=[]  #标签
  for j in range(len(list)):  #随机取出train文件夹中的图像
        num_1=list[j]
        file_path=DIRECTORY+"\\"+imgs[num_1]  #图像的位置
        img=cv2.imread(file_path) #将图像的信息读出来
        img=cv2.resize(img,(32,32),interpolation=cv2.INTER_CUBIC) #将图像变为指定大小
        batch.append(img)#图像数据存入batch中
        labels.append(num[num_1])#标签数据存入到labels中

 6、使用时使用如下数据变换操作:

       1)、将batch中的图像数据分批。即设置batch_size大小

       2)、将batch数据转为Tensor : batch_train=torch.Tensor(batch).permute(0,3,2,1)/255

       3)、  将labels数据做如下变换:

                label1=[int(x)for x in label] #因为前面txt中加的标签是一个str

                label1=torch.Tensor(label1).type(torch.LongTensor)

      4)、到这一步,数据就完全处理好了,可以送入神经网络训练了。

7、如果有什么待改进和其他方法,欢迎在下面留言。上面这个步骤经过我试过是可以使用的。

 

<think>好的,用户想了解如何使用PatchCore创建自己的数据集。首先,我需要回忆一下PatchCore的相关知识。PatchCore是一种用于异常检测的模型,通常用于工业检测等场景。构建自定义数据集是关键的一步,因为模型的表现很大程度上依赖于数据的质量。 根据用户提供的引用[1],配置文件config.yaml中提到了数据集相关的设置,比如name和format。用户可能需要按照这个配置文件的结构来调整自己的数据集。例如,dataset部分的name选项有mvtec、btech、folder等,所以如果用户想用自定义数据集,可能需要选择“folder”格式,或者根据已有格式调整。 接下来,我需要确定用户的数据集结构。通常,异常检测数据集如MVTec包含训练集和测试集,训练集只有正常样本,测试集包含正常和异常样本。所以用户需要将自己的数据组织成类似的目录结构。比如,在train文件夹中放置正常图片,test文件夹中包含正常和异常的子文件夹,可能还有mask文件夹存放标注的异常区域。 然后,用户可能需要修改配置文件中的dataset部分,将name设为“folder”,并指定数据路径。同时,可能需要调整其他参数,比如图像的分辨率或预处理方式,确保与模型兼容。例如,在config.yaml中设置dataset的路径为自定义的路径,并检查是否需要调整图像的大小或归一化参数。 另外,用户可能需要编写或修改数据加载的代码。根据引用[1]中的示例,可能有一个torch_model.py文件需要处理数据加载。如果PatchCore的数据加载器默认支持folder格式,用户只需按照指定结构放置数据即可。否则,可能需要自定义Dataset类,继承已有的基类,并正确实现数据读取和预处理。 用户可能还会关心如何验证数据集是否正确加载。这时候可以建议他们使用visualization选项,比如设置show_images为True,在训练或测试过程中查看图像是否正确加载和处理。同时,检查日志或输出是否有错误信息,确保路径正确,权限无误。 可能遇到的问题包括路径错误、图像格式不支持、数据划分不正确等。需要提醒用户检查配置文件中的路径是否为绝对路径或正确的相对路径,图像格式是否为支持的格式(如PNG、JPEG),以及训练和测试集是否包含正确的样本。 最后,用户可能需要示例代码来具体操作。可以提供一个修改后的config.yaml片段,展示如何设置dataset部分,以及一个简单的数据集目录结构示例。此外,可能需要指导用户如何运行训练脚本,指定配置文件,从而使用自定义数据集进行训练和测试。 总结一下,步骤大致是:准备数据集结构→修改配置文件→调整数据加载(如有必要)→验证数据集→运行训练。需要确保每个步骤都清晰,并提供具体的示例和可能的问题解决方案。</think>以下是使用PatchCore构建自定义数据集的完整指南,基于官方配置文件的实现逻辑: ### 一、数据集准备规范 1. 创建遵循MVTec风格的数据结构: ``` 自定义数据集名称/ ├── train/ │ └── good/ # 仅包含正常样本 │ ├── 0001.png │ └── 0002.png ├── test/ │ ├── good/ # 测试正常样本 │ ├── defect_type1/ # 异常类别1 │ └── defect_type2/ # 异常类别2 └── ground_truth/ # 可选,异常标注 ├── defect_type1/ └── defect_type2/ ``` 文件组织结构需符合工业异常检测标准[^1] ### 二、配置文件修改 修改`config.yaml`中的关键参数: ```yaml dataset: name: folder # 使用自定义数据集模式 format: mvtec # 保持MVTec格式兼容 path: "/your/custom/path" # 数据集绝对路径 extension: ".png" # 根据实际格式调整 model: name: patchcore backbone: wide_resnet50_2 # 可选其他预训练主干网络 pretrained: true # 使用ImageNet预训练权重 ``` ### 三、数据加载器适配 创建`custom_loader.py`实现数据增强: ```python from torchvision.transforms import Compose, Resize, ToTensor def get_transform(image_size=256): return Compose([ Resize((image_size, image_size)), ToTensor(), lambda x: x * 2 - 1 # PatchCore标准归一化 ]) ``` ### 四、训练验证流程 1. 启动训练命令: ```bash python train.py --config config.yaml --dataset.name folder ``` 2. 验证数据加载: ```yaml # 在config.yaml中启用可视化 visualization: show_images: True # 显示前处理结果 save_images: False # 调试阶段建议关闭 ``` ### 五、常见问题排查 - 路径错误:确保使用绝对路径或正确相对路径 - 图像格式:统一为RGB格式,推荐PNG无损压缩 - 内存优化:调整`dataloader`的`num_workers`参数 - 归一化一致性:验证预处理与模型要求匹配
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值