当前位置: 首页 > 工具软件 > dataset > 使用案例 >

Dataset的使用

司空祯
2023-12-01

1. PyTorch加载数据:Dataset和Dataloader

dataset:取数据以及其对应的label,并未其添加索引
提供一种方式去获取数据及其label
实现:
(1)如何获取每一个数据及其label
(2)告诉我们总共有多少的数据

dataloader:为后面的网络提供不同的数据形式

2. 数据的组织形式:

(1)把图片放在以label命名的文件夹
(2)图片与label分开两个文件夹,label存储在txt文件,包含坐标以及坐标信息,是一个ocr的数据集
(3)以label命名的图片放在文件夹中

3. Dataset代码实例:

from torch.utils.data import Dataset
import cv2
from PIL import Image
import os
class MyData(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_path = os.listdir(self.path)


    def __getitem__(self, idx):
        img_name = self.img_path[idx]
        img_item_path = os.path.join(self.root_dir, self.label_dir, img_name)
        img = Image.open(img_item_path)
        label = self.label_dir
        return img, label

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

root_dir = "dataset/train"
ants_label_dir = "ants_image"
bees_label_dir = "bees_image"
ants_dataset = MyData(root_dir, ants_label_dir)
bees_dataset = MyData(root_dir, bees_label_dir)
train_dataset = ants_dataset + bees_dataset
img, label = train_dataset[0]
img.show()

4. 补充

(1)读取路径时,注意: img_path = “C:\Users\ThinkPad\PycharmProjects\pythonProject\dataset\train\ants\0013035.jpg "
改成:img_path = “C:\Users\ThinkPad\PycharmProjects\pythonProject\dataset\train\ants\0013035.jpg”
像这种路径,在window下要注意将”"变成“\”。

(2)class类中的self学问:self相当于指定了一个类中的全局变量
由于class中可以又很多个函数,但函数与函数中的变量不能相互传递的,self的使用实现了,self指定的变量给后面的函数使用

(3) import cv2 出错,使用 pip install opencv-python在terminal里安装

 类似资料: