如何自定义数据集:
- 1.数据和标签的目录结构先搞定(得知道到哪读数据)
- 2.写好读取数据和标签路径的函数(根据自己数据集情况来写)
- 3.完成单个数据与标签读取函数(给dataloader举一个例子)
咱们以花朵数据集为例:
- 原来数据集都是以文件夹为类别ID,现在咱们换一个套路,用txt文件指定数据路径与标签(实际情况基本都这样)
- 这回咱们的任务就是在txt文件中获取图像路径与标签,然后把他们交给dataloader
- 核心代码非常简单,按照对应格式传递需要的数据和标签就可以
import os import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot as plt import numpy as np import torch from torch import nn import torch.optim as optim import torchvision #pip install torchvision from torchvision import transforms, models, datasets #https://pytorch.org/docs/stable/torchvision/index.html import imageio import time import warnings import random import sys import copy import json from PIL import Image # 先来分细节整明白咱一会要干啥! # 任务1:读取txt文件中的路径和标签 # 第一个小任务,从标注文件中读取数据和标签 # 至于你准备存成什么格式,都可以的,一会能取出来东西就行 def load_annotations(ann_file): data_infos = {} with open(ann_file) as f: samples = [x.strip().split(' ') for x in f.readlines()] for filename, gt_label in samples: data_infos[filename] = np.array(gt_label, dtype=np.int64) return data_infos # print(load_annotations('./flower_data/train.txt')) # 任务2:分别把数据和标签都存在list里 # 不是我非让你存list里,因为dataloader到时候会在这里取数据 # 按照人家要求来,不要耍个性,让整list咱就给人家整 img_label = load_annotations('./flower_data/train.txt') image_name = list(img_label.keys()) # print(image_name) label = list(img_label.values()) # print(label) # #### 任务3:图像数据路径得完整 # # - 因为一会咱得用这个路径去读数据,所以路径得加上前缀 # - 以后大家任务不同,数据不同,怎么加你看着来就行,反正得能读到图像 data_dir = './flower_data/' train_dir = data_dir + '/train_filelist' valid_dir = data_dir + '/val_filelist' image_path = [os.path.join(train_dir,img) for img in image_name] print(image_path) # 任务4:把上面那几个事得写在一起 # 1.注意要使用from torch.utils.data import Dataset, DataLoader # 2.类名定义class FlowerDataset(Dataset),其中FlowerDataset可以改成自己的名字 # 3.def init(self, root_dir, a

最低0.47元/天 解锁文章
430

被折叠的 条评论
为什么被折叠?



