1.数据集加载方式
pytorch中提供了Dataset基本的数据类,并在torchvision中提供了较多数据变换函数,可以利用类和函数来处理加载数据集。
pytorch标准化数据处理过程可描述为:
1)继承Dataset类(读入一部分数据并对它们做一些变换)
2)增加数据变换
3)继承Dataloader(把数据中的一部分读取出来)
2.数据集加载过程
数据加载的具体过程主要分为3步:
1.1继承Dataset类
1.2数据变换与数据增强
1.3继承dataloader
详解如下:
1.1继承Dataset类
pytorch提供了torch.utils.data.Dataset这个抽象类用来处理数据集,在使用时只需要继承该类,并重写_len_()和_getitem_()函数。
比如:
所以,在继承Dataset类时,只需按照上面的模板,修改_init_()和_len_()以及_getitem_()即可。
1.2数据变换与数据增强
这一步虽然将数据集加载到了实例中,但在实际应用时,数据集中的图片有可能存在大小不一的情况,并且原始图片像素RGB值比较大(0-255),这些都不利于神经网络的训练和收敛,因此还需要进行一些图像变换工作。PyTorch为此提供了torchvision.transforms工具包,可以方便的进行图像缩放、裁剪、随机翻转、填充及张量归一化等操作,操作对象是PIL的Image或者Tensor。
如果需要进行多个变换功能,可以利用transform.Compose将多个变换组合起来,并且在实际使用时,通常会将变换操作集成到Dataset的继承类中。
比如:
1.3继承dataloader
经过前两步可以获取每一个变换后的样本,但是仍然无法进行批量处理、随机选取等操作,还需要使用torch.utils.data.Dataloader类进一步封装,该类有四个参数,第一个参数是之前继承Dataset的实例,第二个参数是批量的大小,第三个参数是是否打乱数据,第四个参数是使用几个线程来加载数据。
最后是用一个iter()函数来进行一个迭代,以及使用next()函数去进行读取。
2.SSD模型加载VOC数据集实例
2.1前置知识文件 XML文件
xml文件是一种用于标记电子文件使其具有结构性的标记语言,用来传输和存储数据。
如:
下图是一个xml文件,其中包含标签说明和候选框的位置以及图像大小和通道。比如下图中所示图片大小为500333,通道数为3.里面包含火车(train)这个目标,姿态未知,候选框位置对角线坐标(46.11)(500.333)。
学习笔记||基础知识-Dataloader和PascalVOC数据集讲解
最新推荐文章于 2023-08-16 17:38:53 发布