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

第2节 PyTorch加载数据

目录

2.1 PyTorch读取数据的两个类Dataset&Dataloader

2.2 数据集的几种组织形式

2.3 Dataset类实战

​​​​​​​2.3.1 使用PIL中的Image类读取图片

2.3.2 控制台读取与可视化图片

​​​​​​​​2.4 昆虫图像数据集构建工具

2.1 PyTorch读取数据的两个类Dataset&Dataloader

        Dataset:提供一种方式,获取其中需要的数据及其对应的真实的label值,并完成编号,主要实现两个功能:1、如何获取每一个数据及其标签。2、告诉我们一共有多少数据。

        Dataloader:打包(batch_size),为后面的神经网络提供不同的数据形式。

2.2 数据集的几种组织形式

        练手数据集中包含训练集和验证集。

  1. train里面有ants和bees数据集图片。
  2. train_images是一个装照片的文件夹,trains_labels是数据集标签的文件夹。
  3. label直接为图片的名称。

2.3 ​​​​​​​Dataset类实战

        Dataset是一个抽象类,所有的数据集都需要继承这个类,所有子类都需要重写

__getitem__的方法,这个方法是获取每一个数据集及其对应的label。还可以重写

__len__方法,来获取数据集的数量。

​​​​​​​2.3.1 使用PIL中的Image类读取图片

注:

        绝对路径:绝对路径是指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径。

        例子:D:\PyTorch\Pytorch\Learn_torch\dataset\train\ants

        相对路径:相对路径是指以当前文件资源所在的目录为参照基础,链接到目标文件资源(或文件夹)的路径。

        例子:dataset/train/ants

(注意,路径引号前加 r 可以防止转义,或使用双斜杠​​​​​​​

2.3.2 控制台读取与可视化图片

(1)、获取数据文件夹的所有图片地址

        想要获取图片地址(通过索引),需要os库。

        函数 os.listdir() :让文件夹下图片变成一个列表。要用idx获取图片时要先获取图片的列表。

右边属性栏显示:

2)、拼接路径:

​​​​​​​2.4 昆虫图像数据集构建工具

该代码用于构建一个自定义的昆虫图像数据集,主要功能如下:

  1. 定义了一个继承自 PyTorch 的Dataset类的MyData类,实现了从指定文件夹读取图像数据及对应标签的功能。
  2. 通过指定根目录和标签文件夹(分别对应蚂蚁和蜜蜂的图像),创建了蚂蚁数据集和蜜蜂数据集两个实例。
  3. 支持单独查看数据集中的图像(如示例中显示蚂蚁数据集的第一张图像)。
  4. 将蚂蚁数据集和蜜蜂数据集合并,形成完整的训练数据集,方便后续用于昆虫图像分类等深度学习任务。
# 从PyTorch的工具模块中导入Dataset类,用于创建自定义数据集
from torch.utils.data import Dataset
# 从PIL库中导入Image类,用于图像处理
from PIL import Image
# 导入os模块,用于文件路径操作
import os# 定义一个自定义数据集类MyData,继承自Dataset
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)# 重写__getitem__方法,用于根据索引获取数据集中的样本def __getitem__(self, index):# 根据索引获取图像文件的名称img_name = self.img_path[index]# 拼接得到该图像的完整路径img_item_path = os.path.join(self.root_dir, self.label_dir, img_name)# 使用PIL的Image.open方法打开图像img = Image.open(img_item_path)# 标签即为当前的标签文件夹名称label = self.label_dir# 返回图像和对应的标签return img, label# 重写__len__方法,返回数据集的样本数量def __len__(self):# 样本数量就是图像文件的数量return len(self.img_path)# 设置训练数据集的根目录
root_dir = "Datasets/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)# 获取蚂蚁数据集中的第一个样本(图像和标签)
img, label = ants_dataset[0]
# 显示该图像
img.show()# 将蚂蚁数据集和蜜蜂数据集合并,形成完整的训练数据集
train_dataset = ants_dataset + bees_dataset

http://www.xdnf.cn/news/1281619.html

相关文章:

  • 3.数据类型和类型装换
  • 爬虫和数据分析相结合案例
  • 安全合规4--下一代防火墙组网
  • 强化学习常用数据集
  • 【11-计算机视觉介绍】
  • RAG所存在的问题和解决方案
  • 贪心----3. 跳跃游戏 II
  • 2438. 二的幂数组中查询范围内的乘积
  • 零基础AI编程开发微信小程序赚流量主广告实战
  • MySQL高可用改造之数据库开发规范(大事务与数据一致性篇)
  • Kubernetes生产环境健康检查自动化指南
  • SQL复杂查询
  • Java AI生成长篇小说的实用
  • 基于大数据的个性化学习环境构建的研究与应用
  • Flutter Provider 状态管理全面解析与实战应用:从入门到精通
  • libwebsockets 服务端获取过代理的真实连接IP
  • 重学React(五):脱围机制一
  • 使用Windbg分析多线程死锁项目实战问题分享
  • 金蝶云星空 × SRM 深度集成实战(附完整接口清单)
  • 两个Maven工程,使用idea开发,工程A中依赖了工程B,改了工程B,工程A如何获取最新代码
  • Java学习 -- 可变参数与Collections工具类
  • 基于数据结构用java实现二叉树的排序器
  • Java项目基本流程(三)
  • 【SpringBoot】持久层 sql 注入问题
  • 第六十一章:AI 模型的“视频加速术”:Wan视频扩散模型优化
  • Spring Boot文件下载功能实现详解
  • 每日算法刷题Day61:8.11:leetcode 堆11道题,用时2h30min
  • 第十六届蓝桥杯大赛青少组 C++ 省赛真题解析(2025年8月10日)
  • (25.08)Ubuntu20.04复现KISS-ICP
  • 【k8s】k8s中的几个概念性问题