六、Dataset类实战

用Dataset类读取图片:

数据集地址:链接:https://pan.baidu.com/s/1R5mBwBo-AGydrwZX0EDbCA     提取码:tkrp

 

from torch.utils.data import Dataset        #加载Dataset类,在torch工具箱内,常用的工具区utils,其中关于数据的data区中导入
import os                                   #打开文件夹。获取所有图片的地址,python中关于系统的一个库
from PIL import Image                       #读取图片。或者用opencv,写为import cv2
class Mydata(Dataset):                      #继承Dataset类
    def __init__(self,root_dir,lable_dir):  #类的实例化,主函数创建实例对象时,自动调用该函数,主要作为外部信息传入类中私有方法的接口
        self.root_dir=root_dir              #图片的目录地址。函数中的变量不能赋值给另一个函数,但self可以
        self.lable_dir=lable_dir            #图片的标签信息
        self.img_name=os.listdir(self.root_dir)#os打开目录,listdir函数返回目录下文件(夹)的名称列表
    def __getitem__(self, idx):             #实例化__getitem__方法,idx代表索引。实力对象通过:对象[idx],python会自动调用该函数
        img_name=self.img_name[idx]         #列表中索引为idx的值(文件名称,此处值图片名称)赋给img_name
        img_path=os.path.join(self.root_dir,img_name)#具体的图片路径,用os.path.join方法连接两个路径
        img=Image.open(img_path)            #打开图片,将图片信息赋值给img,具体图片包含的信息可以在python console中查看
        lable = self.lable_dir              #lable赋值
        return img,lable                    #返回图片信息和标签
    def __len__(self):                      #实例化__len__方法
        return len(self.img_name)           #返回一共多少张图片,即列表的长度
ants_root_dir="E:\\pytorch pycharm\\hymenoptera_data\\train\\ants" #图片文件目录信息。一般图片复制到project下可以复制相对路径
ants_lable_dir="ants"                            #索引信息
ants_dataset=Mydata(ants_root_dir,ants_lable_dir)     #创建蚂蚁的实例对象
img,lable=ants_dataset[0]                   #ants_dataset[idx]自动调用__getitem__方法
img.show()                                  #img.show()方法展示图片
bees_root_dir="E:\\pytorch pycharm\\hymenoptera_data\\train\\bees"
bees_lable_dir="bees"
bees_dataset=Mydata(bees_root_dir,bees_lable_dir)     #创建蜜蜂的实例对象
train_dataset=ants_dataset+bees_dataset   #+号可以把两个数据集合并,索引范围变为两类图片数量之和,通常用于训练时图片数量不足,补充仿造的数据集的情况
img,lable=train_dataset[124]              #索引号增加
img.show()

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值