当前位置: 首页 > article >正文

pytorch导入数据集

1、概念:

Dataset:一种数据结构,存储数据及其标签

Dataloader:一种工具,可以将Dataset里的数据分批、打乱、批量加载并进行迭代等

(方便模型训练和验证)

Dataset就像一个大书架,存放着带有标签的数据书籍,并且这些书有编号(0,1,2...);

而Dataloader就像一个图书管理员,负责从书架上按需取出书籍并分批提供给读者。

2、Dataset的组织形式

train:训练集  val:验证集

一种方式是label作为数据文件夹的名字,

另一种方式是label和数据本身分开成两个文件夹(label文件夹里装的是和每个数据对应的.txt)

3、处理图像:PIL(Python Imaging Library).Image

pip install Pillow安装PIL
from PIL import Image

引入Image类(代表图像对象,

可以通过创建Image实例来操作图像)

img=Image.open('图像路径') 打开图像img.show() 显示图像
print(img.size) 输出(宽度,高度)

print(img.format)

输出图像格式(JPEG、PNG等)

resized_img=img.resize((宽度,高度)) 调整大小
resized_img=img.save('新路径') 保存为新文件

4、处理目录和文件:os

import os
cur_dir=os.getcwd()获取当前工作目录
files=os.listdir(cur_dir)列举当前目录下的所有子目录(文件和文件夹)
os.makedirs('new_folder')创建新文件夹(如果不存在)
os.remove('file.txt')删除文件(os.rmdir('empty_folder')删除空文件夹)
os.path.exists('some_path')检查路径是否存在
file_path=os.path.join('folder','file.txt')拼接路径
abs_path=os.path.abspath('file.txt)获取文件的绝对路径

5、代码

from torch.utils.data import Dataset #从torch的常用工具箱utils中拿data工具,然后引入Dataset类
from PIL import Image #处理图片要用到
import os #访问目录、获取图片的地址要用到

class MyData(Dataset): #让MyData类继承Dataset类
    def __init__(self,root_dir,label_dir): #数据集的初始化:要用到根目录和标签目录(这里把label作为数据文件夹的名字了)
        self.root_dir=root_dir
        self.label_dir=label_dir
        self.path=os.path.join(self.root_dir,self.label_dir) #根目录+标签目录=数据集的路径
        self.img_dir_list=os.listdir(self.path) #列举数据集目录下的每个数据(文件)

    def __getitem__(self,idx): #获取索引对应的数据
        img_dir=self.img_dir_list[idx] #得到索引对应的数据文件
        img_path=os.path.join(self.root_dir,self.label_dir,img_dir) #数据集路径+数据文件=数据文件路径
        img=Image.open(img_path)
        label=self.label_dir
        return img,label

    def __len__(self):
        return len(self.img_dir_list) #数据长度=数据集目录下的子文件数量

root_dir=r"dataset/hymenoptera_data/train"
ants_label_dir="ants"
ants_dataset=MyData(root_dir,ants_label_dir)
bees_label_dir="bees"
bees_dataset=MyData(root_dir,bees_label_dir)

train_dataset=ants_dataset+bees_dataset


http://www.kler.cn/news/342521.html

相关文章:

  • Python快速编程小案例——打印蚂蚁森林植树证书
  • YOLOv11训练自己数据集_笔记1
  • ReactRouter快速梳理
  • 【linux 多进程并发】0201 Linux进程fork内存空间,父子进程变量内存地址居然是一样的
  • 潜水打捞系统助力,破解汽车打捞难题
  • 2-118 基于matlab的六面体建模和掉落仿真
  • 继承--C++
  • Spring Boot洗衣店订单系统:智能库存管理
  • QT调用最新的libusb库
  • RelationGraph实现工单进度图——js技能提升
  • 使用 C# 构建强大的网络爬虫:从基础到高级功能实现
  • 【教学类-36-10】20241010职业抽卡(midjounery-niji)(涂色、裁剪、游戏)
  • 【VUE】Vue的diff算法和React的diff算法
  • Biomamba求职| 国奖+4篇一作SCI
  • 高并发系统如何保证数据一致性
  • Python自然语言处理之snownlp模块介绍、安装与常见操作案例
  • window.location.href和open的区别
  • 【计算机网络 - 基础问题】每日 3 题(三十四)
  • 面试题:半年前的sql当时能正常跑,现在跑不了,有哪些原因?
  • 大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图