如果拥有了自己的数据集,首先需要考虑的就是将你的数据集输入到PyTorch当中去。如果你的数据是来自于网络(比如说,从Kaggle下载,从论文作者处获得,从某个数据集官方的网站进行下载), 那你遇见的原始数据格式可能是各种情况,最常见的是各类压缩文件pt文件数据库格式文件或者png/jpg/webp等原始图像。如果你的数据是来自于实验室、公司数据库、甚至是领导/导师给的数据, 那你的数据大概率都是csv/txt/mat等结构的二维数据表。无论我们的原始数据集是呈现什么样的格式,我们必须将其转换为四维的张量,数据才可以被卷积神经网络处理。对于任意压缩文件,先解压查看内部是什么内容。

这里详细说明从图像png/jpg到四维tensor

当你拥有的数据是一系列图像,并且每个标签对应的图像是存放在单独的文件夹中时,这种情况比较简单。在torchvision中存在直接将文件夹中的图片打包成tensor类的类ImageFolder,它的参数和torchvision.datasets中其他数据导入类的参数非常相似,其中root是你的原始图像所在的根目录,transform是你希望对图像执行的具体操作。

这个类可以接受.jpg、.jpeg、.png、.ppm、.bmp、.pgm、.tif、.tiff、.webp这9种不同的图片格式作为输入,并且还能够通过文件夹的分类自动识别标签。在你的根目录下,每个类别需要有一个单独的文件夹,而类别文件夹中可以存在多个子文件夹,或直接存放图片。图片的格式不需要统一,只要在ImageFolder可接受的9中格式中即可。

train_dataset有几种可以调用的属性,例如:

train_dataset..classes       #查看类别

train_dataset.targets         #查看标签

train_dataset.imgs            #查看具体的图像地址,返回所有图像的具体地址以及对应的标签

例如下面的例子:

ImageFolder只能够读取根目录的子文件夹中的图片,并且一定会将子文件夹的名称作为类别。当根目录中只有一个子文件夹时,则对所有的图片标签都标注为0。当根目录中没有文件夹,而是直接存放图片时,则会直接报错。

      使用ImageFolder读取后的数据是无法轻易更改标签的,这是因为ImageFolder继承自pytorch中的visiondataset类,标签在这个父类中生成,并与特征图一起被固定为一个元组(用来表示从特征到标签的映射)。我们可以通过ImageFolder的各种属性、或索引等方式调用出这个元组的一份复制来进行展示,却无法直接触及到元组中的数据本身,因此我们无法通过ImageFolder读取出的标签进行改变。因此,当数据不能按照类别进行下载时,一般不会用ImageFolder对数据进行读取,而会选择更加灵活的方式:自己写一个读取数据用的类

CLASS  torch.utils.data.Dataset

在PyTorch中存在一个专门帮助我们构筑数据集的类Dataset,这个类在torch.utils.data模块下,属于PyTorch中数据处理的经典父类之一(另一个我们总是使用的经典父类是nn.Module)。在PyTorch中,许多torchvision.datasets中读数据的类,以及TensotDataset这些合并张量来生成数据的类,都继承自Dataset。如果一个读取数据的类继承自Dataset,那它读取出的数据一定是可以通过索引的方式进行调用和查看的,而继承自其他父类的、读取数据集的功能却不一定能使用索引进行查看,这种性质让Dataset子类的构成也与其他类不同

Dataset的使用还可以参考Dataset与DataLoder基本使用方法与数据集切分函数

Dataset中规定,如果一个子类要继承Dataset,则必须在子类中定义__getitem__()方法。从这个方法的名字可以看出,它是帮助我们“获取对象”的方法。这个方法中的代码必须满足三个功能:

1)读取单个图片并转化为张量

2)读取该图片对应的标签

3)将该图片的张量与对应标签打包成一个样本并输出

该样本的形式是一个元组,元组中的第一个对象是图像张量,第二个对象是该图像对应的标签。

Dataset类中包含自动循环__getitem__()并拼接其输出结果的功能。对于任意继承自Dataset的子类,只要我们恰当地定义了__getitem__(),该子类的输出就一定是打包好的整个数据集。我们可以根据数据的实际情况定义__getitem__(),可以说实现了最大程度上的灵活性。

如何使用继承自Dataset的类读取不同的图片和标签类别?

在写具体的类之前,我们可以先定义__getitem__()方法中要求的内容,试着读取一张图片并生成样本的元组。事实上,有大量的库中都包含能够将图像转化为像素值的函数,原则上我们可以使用任何说自己熟悉的函数,比如使用opencv中的cv.imread函数进行图像的读取或使用pytorch官方推荐的scikit-learn图像处理库scikit-image来进行处理。

1)若标签为identity时

2)若标签为属性时

将png/jpg图像数据集转四维tensor输入PyTorch相关推荐

  1. 如何做一个“实用”的图像数据集

    目录 引言 一.探究数据的"用途" 二.梳理专业的"知识" 三.数据与知识"迭代" 四.确定性能的"指标" 五.总结 鸣 ...

  2. 如何让机器向“时尚达人”学习?阿里做了个“实用”的图像数据集

    阿里妹导读:阿里资深算法专家雷音带领的团队,有个非常特别的名字,叫做"图像与美".雷音希望,未来AI产品对衣服的理解不只限于照片和文字,还可以理解衣服本身,进而理解时尚穿搭之道.理 ...

  3. torch.cat()函数 ,关于四维tensor维度合并。

    引言:看了关于torch.cat函数的文章,有点乱,自己总结一篇,关于四维tensor合并. 一张图像在计算机中的表示通常为三维tensor(张量),即[channels,height,width] ...

  4. kmeans对自己的图像数据集聚类(及肘部法求最佳K值)

    pytorch实现kmeans(自己的图像数据集) 上篇笔记已经介绍了,如何加载自己的图像数据集.(加载数据集: https://blog.csdn.net/hnu_zzt/article/detai ...

  5. ImageNet图像数据集介绍

    ImageNet图像数据集始于2009年,当时李飞飞教授等在CVPR2009上发表了一篇名为<ImageNet: A Large-Scale Hierarchical Image Databas ...

  6. 机器学习和计算机视觉的前20个图像数据集

    作者 | Meiryum Ali 翻译 | 火火酱,责编 | 晋兆雨 出品 | AI科技大本营 头图 | 付费下载于视觉中国 计算机视觉使计算机能够理解图像和视频的内容.计算机视觉的目标是使人类视觉系 ...

  7. MIT 更新最大自然灾害图像数据集,囊括 19 种灾害事件

    作者 | 神经小兮 来源 | HyperAI超神经(ID:HyperAI) 内容提要:麻省理工学院在最近 ECCV 2020 上提交的一篇论文中,发布了一套自然灾害图像数据集.这是迄今为止规模最大.质 ...

  8. 腾讯AI Lab开源业内最大规模多标签图像数据集(附下载地址)

    今日(10 月 18 日),腾讯AI Lab宣布正式开源"Tencent ML-Images"项目.该项目由多标签图像数据集 ML-Images,以及业内目前同类深度学习模型中精度 ...

  9. AI一分钟 | 特斯拉再融46亿;腾讯AI Lab宣布开源多标签图像数据集

    ▌特斯拉再融 46 亿 近日,<证券日报>记者登录上海市工商行政管理局官网发现,特斯拉(上海)有限公司的注册资本已由 1 亿元增至 46.7 亿元,这意味着马斯克凭借特斯拉这匾金字招牌在上 ...

  10. 腾讯 AI Lab 开源业内最大规模多标签图像数据集

    2018年9月10日,腾讯AI Lab宣布将于9月底开源"Tencent ML-Images"项目,该项目由多标签图像数据集ML-Images,以及业内目前同类深度学习模型中精度最 ...

最新文章

  1. MYSQL主从数据库搭建
  2. auto make System.map to C header file
  3. 不用第三方库,也能用 Python 作图,效果还不错
  4. [ccf 4] 网络延时
  5. 三年之久的 etcd3 数据不一致 bug 分析
  6. LINQ to SQL 实现 GROUP BY、聚合、ORDER BY
  7. PHP自动判断用户会员过期,php,_定时扣除用户过期积分,但平台用户量比较大,有没有好的解决方法?,php - phpStudy...
  8. javascript 200列(3)
  9. Julia: 关于SubString
  10. 单片机拟真电路图软件_电路仿真软件有哪些?6款常用的电路仿真软件推荐
  11. 人智导(二):启发式搜索
  12. python二元一次方程组用鸡兔同笼的思路来写编程_二元一次方程组的应用一鸡兔同笼问题...
  13. 使用HoloLens 2调用深度相机和前置摄像头
  14. JAVA外卖订餐系统毕业设计 开题报告
  15. 视频号怎么运营?视频号怎么赚钱?零基础玩视频号?创作运营变现,你要的干货都在这了!
  16. 字符串类型的算法面试
  17. 百度VidPress Sports团队获SoccerNet-v2足球视频理解竞赛双料冠军
  18. 2-linux详细安装Redis及shutdown命令失效解决
  19. 王老吉药业“关爱烈日下最可爱的人”公益活动在杭启动
  20. 各种抠图动态图片_10种ps抠图办法(动态图演示全过程)

热门文章

  1. 获取常用3500字的书法图片
  2. Xshell6、Xftp6【官方免费版】下载
  3. 园林景观cad_1000个CAD平面设计素材模板图,绘图任意用,全部打包带走
  4. 分享一个TEXT文档加密/解密编辑器
  5. 勒索病毒解密工具的汇总
  6. select和epoll
  7. 信号峰峰值Vpp与功率和dbm的换算
  8. 信号与噪声经过匹配滤波器后能量
  9. CI框架全局登录控制
  10. Chrome 插件PPAPI 开发(一)环境搭建