小土堆pytorch学习笔记 之数据加载

部署运行你感兴趣的模型镜像

Pytorch 之数据加载

Dataset 是一个抽象类,用于定义数据集的加载和预处理方式。当你需要自定义数据集时,可以通过继承 Dataset 类并实现特定的方法来创建自己的数据集。

  1. Dataset 类位于 torch.utils.data 模块中。

  2. 要使用 Dataset 类,你需要继承它并实现以下两个方法:

    1. len(self):返回数据集中样本的数量。
    2. getitem(self, idx):根据给定的索引 idx 返回一个样本。
  3. 为了方便上面两个函数的书写,还需要再加一个初始化函数来存文件名相关的参量

[!TIP]
下面先来学习几个函数!(源于 kimi)

1 文件操作相关函数

os.pathos 模块中的一个子模块,专门用于处理文件路径。它提供了一组用于路径操作的函数,这些函数可以跨平台工作,即在 Windows、Linux 和 macOS 等操作系统上都能正常使用。

os.path.join 会根据操作系统使用正确的斜杠。

  • os.path.join(path, *paths):将多个路径组件合并成一个路径。
  • os.path.split(path):将路径分解为头和尾两部分。
  • os.path.basename(path):返回路径的基础文件名。
  • os.path.dirname(path):返回路径的目录名。
  • os.path.abspath(path):返回路径的绝对路径。
  • os.path.normpath(path):规范化路径。
  • os.path.exists(path):检查路径是否存在。
  • os.path.isfile(path):检查路径是否为文件。
  • os.path.isdir(path):检查路径是否为目录。
  • os.path.splitext(path):将路径分解为文件名和扩展名。

2 图片导入相关函数

2.1 通过 pillow 库

  1. 安装 Pillow 库

首先,确保你已经安装了 Pillow 库。如果没有安装,可以通过 pip 安装:

pip install Pillow
  1. 导入图片

使用 Pillow 的 Image 模块,你可以轻松地打开和处理图片。

from PIL import Image
_打开图片文件_
image = Image.open('path/to/your/image.jpg')
_显示图片(需要安装Pillow的额外依赖)_
image.show()
  1. 处理图片(可选)

在存储之前,你可以对图片进行各种处理,比如裁剪、旋转、调整大小等。

_旋转图片_
rotated_image = image.rotate(90)
_调整图片大小_
resized_image = image.resize((300, 300))
_裁剪图片_
cropped_image = image.crop((50, 50, 200, 200))
  1. 存储图片

处理完图片后,你可以将其保存到文件系统中。

_保存图片_
image.save('path/to/save/image.jpg')
_保存为不同的格式_
image.save('path/to/save/image.png', 'PNG')

2.2 使用 OpenCV

如果你需要更复杂的图像处理功能,可以使用 OpenCV 库。首先安装 OpenCV:

pip install opencv-python

然后,你可以使用 OpenCV 来读取和保存图片:

import cv2
_读取图片_
image = cv2.imread('path/to/your/image.jpg')
_显示图片(使用OpenCV的窗口)_
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
_保存图片_
cv2.imwrite('path/to/save/image.jpg', image)

2.3 注意事项

  • 当处理图像文件时,确保你有权限读取和写入指定的文件路径。
  • 保存图像时,可以通过指定不同的格式来改变图像的保存格式,例如 JPEG、PNG 等。
  • 在使用图像处理库时,了解库的文档是非常重要的,因为不同的库可能提供不同的功能和方法。

[!TIP]
正式开始编代码!
回忆一些最最基础的 python 知识,函数/类的定义后要加:,缩进表示范围

3 如何使用 Dataset

导入相关模块,定义 MyData 类,并重写 len(self)和getitem(self, idx)

  1. init 函数初始化一些文件名的操作,方便从电脑文件中导入
def init(self,root_dir,image_dir,label_dir):
    _#文件路径相关_
_    _self.root_dir = root_dir
    self.image_dir = image_dir
    self.label_dir = label_dir
    self.image_path = os.path.join(root_dir,image_dir)
    self.label_dir = os.path.join(root_dir,label_dir)
  1. 通过编号 idx 来取出某张图片“类名[idx]”
def getitem(self,idx):
    _#os.listdir(path)返回一个列表,其中包含了目录中的所有条目,包括文件和子目录_
_    _self.imgs_path = os.listdir(self.image_path)
    img_item_path = os.path.join(self.image_path,self.imgs_path[idx])
    img = Image.open(img_item_path)
    label = self.label_dir
    return img,label
  1. 重写 len 函数
def len(self):
    return len(self.imgs_path)
    #img文件夹中图片的数量
  1. 如何调用/调试?

通过 pycharm 下面的 consle 来调试,可以非常方便的展示所有变量

#通过目录等信息创建实例
root_dir = "dataset\train"
label_dir = "ants_label"
image_dir = "ants_image"
ants_label_dir = "ants"
ants_dataset = MyData(root_dir,image_dir,label_dir) 

#取出第一张图片并显示
img,label = ants_dataset[0]    
img.show()

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值