[Pytorch系列-36]:数据集 - torchvision与ImageNet数据集

Posted 文火冰糖的硅基工坊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Pytorch系列-36]:数据集 - torchvision与ImageNet数据集相关的知识,希望对你有一定的参考价值。

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

 

  本文网址:https://blog.csdn.net/HiWangWenBing/article/details/121132486


目录

第1章 TorchVision概述

1.1 TorchVision

1.2 TorchVision的安装

1.3 TorchVision官网的数据集

1.4 TorchVision常见的数据集概述

第2章 ImageNet数据集

2.1 ImageNet概述

2.2 李飞飞其人

2.3 ImageNet挑战赛

2.4 ImangeNet数据集的组成与大小

2.5 imageNet的下载地址

2.6 imageNet的加载




第1章 TorchVision概述

1.1 TorchVision

https://pypi.org/project/torchvision

Pytorch非常有用的工具集:

  • torchtext:处理自然语言
  • torchaudio:处理音频的
  • torchvision:处理图像视频的。

torchvision是独立于pytorch的关于图像操作的一些方便工具库。其包含一些常用的数据集、模型、转换函数等等。

  • vision.datasets : 几个常用视觉数据集,可以在线下载和离线加载。
  • vision.models : 流行的模型,例如 AlexNet, VGG, ResNet 和 Densenet 以及 与训练好的参数。
  • vision.transforms : 常用的图像操作,例如:随机切割,旋转,数据类型转换,图像到tensor ,numpy 数组到tensor , tensor 到 图像等。
  • vision.utils : 提供了一组与视频处理相关的函数。

本文重点放在torchvision的datasets数据集上。

1.2 TorchVision的安装

pip install torchvision 

第2章 ImageNet数据集

2.1 ImageNet概述

ImageNethttps://image-net.org/

 Large Scale Visual Recognition Challenge (ILSVRC),大尺度视觉识别挑战是用于评估用于大尺度目标检测与目标分类的算法的一个大型图像竞赛。

其数据集就是我们常说的ImageNet数据集,包括1000个类别共1281167张带注释(标签)的训练集图片,50000张验证集图片,以及100000张没有标签的测试集图片。

ImageNet项目是一个用于视觉对象识别软件研究的大型可视化数据库。

超过1400万的图像URL被ImageNet手动注释,以指示图片中的对象;

在至少一百万个图像中,还提供了边界框。

ImageNet包含2万多个类别; 一个典型的类别,如“气球”或“草莓”,包含数百个图像

ImageNet图像数据集始于2009年,当时李飞飞教授等在CVPR2009上发表了一篇名为《ImageNet: A Large-Scale Hierarchical Image Database》的论文。

之后就是基于ImageNet数据集的7届ImageNet挑战赛(2010年开始)。

ImageNet数据集算是至今为止检验一个神经网络分类性能的基准了。

这篇文章将介绍如何处理ImageNet数据集,以及如何使用torchvision.datasets.ImageFolder来加载该数据集。

需要注意的是:ImageNet数据集现在不开源了,所以自动download功能能是不可用的。
 

2.2 李飞飞其人

 李飞飞,女,1976年出生于中国北京,美国国家工程院院士美国国家医学院院士、美国艺术与科学院院士美国斯坦福大学首位红杉讲席教授 [9]

 ,以人为本人工智能研究院(HAI)院长,AI4ALL联合创始人及主席,Twitter公司董事会独立董事。

李飞飞于1999年从普林斯顿大学本科毕业后赴西藏研究一年藏药;

2000年进入加州理工学院;

2005年获得加州理工学院博士学位;

2005年至2006年担任伊利诺伊大学厄巴纳-香槟分校电机系助理教授;

2007年至2009年担任普林斯顿大学计算机科学系助理教授;

2009年加入斯坦福大学;

2012年晋升为斯坦福大学终身职的副教授;

2012年至2016年担任斯坦福大学W.M.凯克学院学者;

2013年至2018年担任斯坦福人工智能实验室主任;

2017年至2018年在学术休假期间担任Google副总裁,并担任Google Cloud AI/ML首席科学家 。

2019年担任斯坦福大学以人为本人工智能研究院(HAI)联合主任 [14]

 ;

2020年当选为美国国家工程院院士 [16]

 ,同年当选为美国国家医学院院士 [10]

 。

2021年当选为美国艺术与科学院院士

2.3 ImageNet挑战赛

2010年以来,每年度ImageNet大规模视觉识别挑战赛(ILSVRC),不同的研究团队在给定的数据集上评估其算法,并在几项视觉识别任务中争夺更高的准确性。

ILSVRC使用仅包含1000个图像类别或“类别”的“修剪”列表,其中120个品种中有90个由完整的ImageNet架构分类。

2010年在图像处理方面取得了显着进展。

2011年左右,ILSVRC分类错误率为25%。

2012年,深卷积神经网络 AlexNet达到了16%;

在接下来的几年中,错误率下降到几个百分点

虽然2012年 AlexNet的突破是“前所未有的组合”,但大幅量化的改进标志着全行业人工智能繁荣的开始。

2015年,研究人员报告说,软件(ResNet)在狭窄的ILSVRC任务中超出人类能力

然而,作为挑战组织者之一的Olga Russakovsky在2015年指出,这些计划只需将图像识别为属于千分之一的图像;人类可以识别更多的类别,并且(不像程序)可以判断图像的上下文。

2017年,38个竞争团队中有29个错误率低于5%

2017年,ImageNet宣布将在2018年推出一项新的,更加困难的挑战,其中涉及使用自然语言对3D对象进行分类。由于创建3D数据比注释预先存在的2D图像更昂贵,数据集预计会更小。这方面的进展应用范围从机器人导航到增强现实。

2017年11月前后,谷歌的AutoML项目发展出新的神经网络拓扑结构,创建了NASNet,这是一个针对ImageNet和COCO优化的系统。 据Google称,NASNet的性能超过了以前发布的所有ImageNet性能

2.4 ImangeNet数据集的组成与大小

ImangeNet常用的是ISLVRC 2012(ImageNet Large Scale Visual Recognition Challenge)比赛用的子数据集,其中:

训练集:1,281,167张图片+标签
验证集:50,000张图片+标签
测试集:100,000张图片

总的文件大小在1T左右,这么庞大的数据,不建议作为个人通过个人电脑前期学习之用。

2.5 imageNet的下载地址

(1)手工官方地址

ImageNethttps://image-net.org/download-images

(2)手工其他镜像下载:TBD

(3)TorchVision自动下载:不支持

有些数据集,如CFAR10, 支持自动下载与自动加载一体化。

对于ImageNet,数据集的下载与加载是分离的。

2.6 imageNet的加载

(1)加载函数

imageNet的加载的加载,使用一个通用的数据加载器:ImageFolder,而不像CFAR10或MNIST数据集,有专门的下载+下载器。

train_data = ImageFolder(root, transform=None, target_transform=None, loader=default_loader)

  • root:说明图片文件存放的位置
  • transform:加载到内存是,对每个图片做什么的预处理。对PIL Image进行的转换操作,transform的输入是使用loader读取图片的返回对象。
  • target_transform:对label进行转换的函数。
  • loader:指定加载器,即如何读取图片。

(2)基本原理图下图所示:

train_data的成员有:

  • self.classes - 类别名列表
  • self.class_to_idx - 类别名到标签,例如 “狗”-->[1,0,0]
  • self.imgs - 一个包括 (image path, class-index) 元组的列表。

(3)下载后的图像应该按照以下方式放置:

root/dog/xxx.png
root/dog/xxy.png
root/dog/xxz.png

root/cat/123.png
root/cat/nsdf3.png
root/cat/asd932_.png

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

 本文网址:https://blog.csdn.net/HiWangWenBing/article/details/121132486

以上是关于[Pytorch系列-36]:数据集 - torchvision与ImageNet数据集的主要内容,如果未能解决你的问题,请参考以下文章

[Pytorch系列-36]:数据集 - torchvision与ImageNet数据集

PyTorch: 张量的拼接切分索引

[Pytorch系列-37]: 工具集 - torchvision库详解(数据集数据预处理模型)

[Pytorch系列-45]:卷积神经网络 - 用GPU训练AlexNet+CIFAR10数据集

[Pytorch系列-46]:卷积神经网络 - 用GPU训练ResNet+CIFAR100数据集

[Pytorch系列-35]:卷积神经网络 - 搭建LeNet-5网络与CFAR10分类数据集