import os
from PIL import Image
from torch.utils import data
import numpy as np
from torchvision import transforms as T class My_Data(data.Dataset): def __init__(self, root, transforms=None, train=True, test=False):
'''
目标:获取所有图片路径,并根据训练、验证、测试划分数据
'''
self.test = test
classs = os.listdir(root)
imgs = []
labels = []
for idx, folder in enumerate(classs):
cate = os.path.join(root, folder)
for img_num, im in enumerate(os.listdir(cate)):
img_path = os.path.join(cate, im)
#打包图片路径(转换为list)
imgs.append(img_path)
#打包标签路径(转换为list)
labels.append(idx)
if self.test:
imgs = sorted(imgs, key=lambda x: int(x.split('.')[-2].split('/')[-1]))
else: imgs = list(zip(imgs , labels))
#将图片路径与标签打包成一个list imgs_num = len(imgs) # shuffle imgs
np.random.seed(100)
imgs = np.random.permutation(imgs) # 划分训练、验证集,验证:训练 = 3:7
if self.test:
self.imgs = imgs
elif train:
self.imgs = imgs[:int(0.7 * imgs_num)]
else:
self.imgs = imgs[int(0.7 * imgs_num):] if transforms is None: # 数据转换操作,测试验证和训练的数据转换有所区别
normalize = T.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]) # 测试集和验证集不用数据增强
if self.test or not train:
self.transforms = T.Compose([
T.Resize(32),
T.CenterCrop(32),
T.ToTensor(),
normalize
])
# 训练集需要数据增强
else:
self.transforms = T.Compose([
T.Resize(32),
T.RandomResizedCrop(32),
T.RandomHorizontalFlip(),
T.ToTensor(),
normalize
]) def __getitem__(self,index):
'''
返回一张图片的数据
对于测试集,没有label,返回图片id,如1000.jpg返回1000
送入一个batch_size的数据
''' img_lables = self.imgs[index]
img_path = img_lables[0] if self.test:
label = int(self.imgs[index].split('.')[-2].split('/')[-1])
else:
label = int(img_lables[1]) data = Image.open(img_path)
data = self.transforms(data)
return data, label def __len__(self):
'''
返回数据集中所有图片的个数
'''
return len(self.imgs)

作为备份使用。

pytorch实现花朵数据集读取的更多相关文章

  1. Pytorch数据集读取

    Pytorch中数据集读取 在机器学习中,有很多形式的数据,我们就以最常用的几种来看: 在Pytorch中,他自带了很多数据集,比如MNIST.CIFAR10等,这些自带的数据集获得和读取十分简便: ...

  2. 基于深度学习和迁移学习的识花实践——利用 VGG16 的深度网络结构中的五轮卷积网络层和池化层,对每张图片得到一个 4096 维的特征向量,然后我们直接用这个特征向量替代原来的图片,再加若干层全连接的神经网络,对花朵数据集进行训练(属于模型迁移)

    基于深度学习和迁移学习的识花实践(转)   深度学习是人工智能领域近年来最火热的话题之一,但是对于个人来说,以往想要玩转深度学习除了要具备高超的编程技巧,还需要有海量的数据和强劲的硬件.不过 Tens ...

  3. [Pytorch]PyTorch Dataloader自定义数据读取

    整理一下看到的自定义数据读取的方法,较好的有一下三篇文章, 其实自定义的方法就是把现有数据集的train和test分别用 含有图像路径与label的list返回就好了,所以需要根据数据集随机应变. 所 ...

  4. pytorch 加载数据集

    pytorch初学者,想加载自己的数据,了解了一下数据类型.维度等信息,方便以后加载其他数据. 1 torchvision.transforms实现数据预处理 transforms.Totensor( ...

  5. 【小白学PyTorch】16 TF2读取图片的方法

    [新闻]:机器学习炼丹术的粉丝的人工智能交流群已经建立,目前有目标检测.医学图像.NLP等多个学术交流分群和水群唠嗑的总群,欢迎大家加炼丹兄为好友,加入炼丹协会.微信:cyx645016617. 参考 ...

  6. CIFAR-10数据集读取

    参考:https://jingyan.baidu.com/article/656db9183296c7e381249cf4.html 1.使用读取方式pickle def unpickle(file) ...

  7. 什么是pytorch(4.数据集加载和处理)(翻译)

    数据集加载和处理 这里主要涉及两个包:torchvision.datasets 和torch.utils.data.Dataset 和DataLoader torchvision.datasets是一 ...

  8. 深度学习(tensorflow) —— 自己数据集读取opencv

    先来看一下我们的目录: dataset1 和creat_dataset.py 属于同一目录 mergeImg1 和mergeImg2 为Dataset1的两子目录(两类为例子)目录中存储图像等文件 核 ...

  9. pytorch 计算图像数据集的均值和标准差

    在使用 torchvision.transforms进行数据处理时我们经常进行的操作是: transforms.Normalize((0.485,0.456,0.406), (0.229,0.224, ...

随机推荐

  1. java用poi读取Excel表格中的数据

    Java读写Excel的包是Apache POI(项目地址:http://poi.apache.org/),因此需要先获取POI的jar包,本实验使用的是POI 3.9稳定版.Apache POI 代 ...

  2. idea js改来改去无效问题的解决

    不是idea的问题,问题在Chrome上,设置:

  3. jQuery中json中关于带有html代码网页的处理

    昨天在使用jQuery的get方式请求返回json格式数据.然后使用jQuery自带的parseJSON 处理.总是出现这样的错误. 如果返回数据中content改成普通的数据可以通过.找了半天错误, ...

  4. AllSame.java

    /****************************************************************************** * Compilation: javac ...

  5. Harbor之Swagger REST API

    目录 Swagger介绍 Harbor Swagger预览 整合本地Harbor与Swagger Swagger介绍 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTFu ...

  6. Linux下网卡绑定模式

    Linux bonding驱动一共提供了7种模式,它们分别是:balance-rr .active-backup.balance-xor.broadcast.802.3ad.balance-tlb.b ...

  7. 在tomcat集群环境下redis实现分布式锁

    上篇介绍了redis在集群环境下如何解决session共享的问题.今天来讲一下如何解决分布式锁的问题 什么是分布式锁? 分布式锁就是在多个服务器中,都来争夺某一资源.这时候我们肯定需要一把锁是不是 , ...

  8. web4.0基本配置

    const path = require('path');//引入路径包 const HWP = require('html-webpack-plugin');//引入自动产出html包 const ...

  9. EasyUI动态修改easyui-textbox验证信息

    <tr> <td>编码:</td> <td><input type="text" id="code" na ...

  10. DPM 目标检测1

    1. Origin 原始目标检测: HOG梯度模型+目标匹配 为了提过对目标形变的鲁棒性(多视角->多组件): 目标形态多样性—>多个模型 目标的动态变化多视角—> 子模型 目标形变 ...