本地带标签图片数据集的读取
代码里面的注释写的都比较清楚,也有拓展的部分,这里就不详细列出。
from torch.utils.data import Dataset # 从torch.utils.data导入Dataset类,用于创建自定义的数据集类
from PIL import Image #引入PIL库中的Image模块,进行图片的读取、处理
import os # 引入os模块,用于文件和目录路径的操作class MyDataset(Dataset):def __init__(self,root_dir,label_dir):self.root_dir = root_dir # 图片路径的前一部分self.label_dir = label_dir # 图片的标签,同时也是路径中最后一层文件夹的名称self.path = os.path.join(self.root_dir,self.label_dir) # 合并上述两个部分,组成完整文件夹路径名self.img_name = os.listdir(self.path) # 将路径下的文件名全部读取出来,存放进一个列表中!def __getitem__(self, index): # 此函数用于获取单个样本及其标签img_name = self.img_name[index]img_path = os.path.join(self.path,img_name) # 图片的完整路径名img = Image.open(img_path) # 打开图片label = self.label_dir # 图片标签return img, labeldef __len__(self):return len(self.img_name)# 创建实例
# root_dir = "E:/1_pycharm_files/Project2/dataset/train"
root_dir = "E:\\4_Data_sets\\dataset2\\train" # 这里的斜杠可以写成 / 或者 \\,windows系统下,两种斜杠都支持
ants_label_dir = "ants"
bees_label_dir = "bees"
ants_dataset = MyDataset(root_dir,ants_label_dir)
bees_dataset = MyDataset(root_dir,bees_label_dir)# img,label = ants_dataset[0] 可以返回第一张蚂蚁图片及其标签
# img,label = bees_dataset[0] 可以返回第一张蜜蜂图片及其标签# train_dataset = ants_dataset + bees_dataset 可以通过加号来拼接数据集
pytorch 官网数据集的下载与读取
代码中的许多操作见后面的笔记,例如 tensorboard
网址:Datasets — Torchvision 0.20 documentation ,主要通过官网的 torchvison
包里的工具去访问和下载。
主要的数据集:MNIST(0~9手写数字),CIFAR10(10中物类)。
下面以 CIFAR10 数据集的读取为例:
import torchvision
from torchvision import transforms
from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter('logs')dataclass_transform = transforms.Compose([transforms.ToTensor(),
])# 如果已经下好了,那么再次运行之后就不会再下载了
train_dataset = torchvision.datasets.CIFAR10(root='E:\\4_Data_sets\\species recognition', train=True,transform=dataclass_transform, download=True)
test_dataset = torchvision.datasets.CIFAR10(root='E:\\4_Data_sets\\species recognition', train=False,transform=dataclass_transform, download=True)for i in range(10):img, label = test_dataset[i]writer.add_image("test-set", img, i)writer.close()
在官网中可以查看数据集的下载所需的参数,或者按住 ctrl
,鼠标停在CIFAR10(即数据集名)上,就可以查看所需的主要参数。
下载时在 RUN
窗口里会给出一个网址,可以按住 ctrl +c
停止代码下载,复制该网址至迅雷中下载,会快很多。
实现效果:
上一篇 | 下一篇 |
---|---|
神经网络入门实战(四) | 神经网络入门实战(六) |