新手日记01-数据可视化

学习目标:

入门pytorch

笔记来自 小土堆P7


学习内容:

掌握数据操作基本流程:

1.创建类继承dataset并初始化

class Mydata(Dataset):#创建类继承dataset
    def __init__(self,root_dir,label_dir):#初始化:为整个类提供一个全局变量
        self.root_dir = root_dir#将传入的 root_dir 参数存储为类的实例变量。
        self.label_dir = label_dir#将传入的 label_dir 参数存储为类的实例变量。
        self.path = os.path.join(self.root_dir,self.label_dir)#将 root_dir 和 label_dir 连接起来,形成完整的数据集路径,然后存储在 self.path 中。
        self.img_path = os.listdir(self.path)#列出 self.path 目录下的所有文件和子目录,将结果存储在 self.img_path 中。 这个列表包含了数据集中所有图像文件的文件名。

注:变量不能相互传递,self相当于指定类中的全局变量
root_dir可以轻松地切换到不同的数据集或文件集合;label_dir用来找标签

2.创建数据列表(先创建列表才能读取数据,注意列表需要获取路径,此处创建了一个包含图像和对应标签的列表)

    def __getitem__(self,idx):#用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)#读取数据,将图像加载到 img 变量中
        label = self.label_dir#将 label 变量设置为数据集的标签目录(在这个例子中是 ants 或 bees)。
        return img,label#返回了图像和标签,允许你通过索引来访问数据集中的图像和标签。

3.创建实例

root_dir = r"D:\data\hymenoptera_data\train"
ants_label_dir = r"ants"
bees_label_dir = r"bees"
ants_dataset = Mydata(root_dir,ants_label_dir)#创建实例
bees_dataset = Mydata(root_dir,bees_label_dir)

4.读取图片

上接3,使用idx读取

img,label = bees_dataset[1]
img.show()

其他方法,添加图片地址读取

from PIL import Image
img_path = r"D:\data\hymenoptera_data\train\ants\0013035.jpg"   #"前面加一个r
img = Image.open(img_path)
img.size
img.show()

``

扩展:

1.os库拼接两个属性相同的数据集

import os
dir_path = r"D:\data\hymenoptera_data\train\ants"
img_path_list = os.listdir(dir_path)  #将这个文件夹下的东西变成一个列表
 root_dir = r"D:\data\hymenoptera_data\train"
 label_dir = r"ants"
path = os.path.join(root_dir,label_dir)  #将两个路径粘合

2.将数据集分类
请添加图片描述

import os
root_dir =  r"D:\z_pycharm\小土堆\data\hymenoptera_data\train"
target_dir = 'ants_image'
img_path = os.listdir(os.path.join(root_dir, target_dir))
label = target_dir.split('_')[idx]#从 target_dir 变量中提取标签信息。
# 将 target_dir 字符串按照下划线 _ 分割成多个部分,并根据索引 idx 选择其中一个部分作为标签。请注意,代码中没有明确定义 idx 的值,
# 所以它必须在之前的代码中被定义。
out_dir = 'ants_label'#定义了一个名为 out_dir 的字符串变量,表示存储标签文件的目标目录。
for i in img_path:#开始一个循环,遍历 img_path 列表中的每个图像文件名。
    file_name = i.split('.jpg')[idx]#对每个图像文件名进行处理,使用 split('.jpg') 方法按照字符串 ".jpg" 进行分割,
# 并根据索引 idx 选择其中一个部分作为文件名。这可能是为了去掉文件扩展名,以便用文件名作为标签文件的名称。
    with open(os.path.join(root_dir, out_dir,"{}.txt".format(file_name)),'w') as f:#使用 open 函数创建一个文件对象,
# 将文件路径构建为 root_dir、out_dir 和文件名的组合,文件名以 ".txt" 结尾。以写入模式 'w' 打开文件,并将文件对象赋给名为 f 的变量
# 这行代码准备创建一个标签文件。
        f.write(label)

数据集下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值