Torchvision datasets中的经典数据集梳理(以及与OCR相关的常用数据集整理)
这篇文章是在上班摸鱼的时候随手整理的一些常用CV数据集(文末附带我处理好的数据的下载资源)
众所周知,通过使用Torchvision,可以方便快捷地加载一些较为常用的数据集。但是(敲黑板!)如果本地没有已下载好的数据集,就需要看着torchvision用堪比乌龟的速度从网上下载,甚至还有可能经常下载失败;即使本地有已经下载好的数据集,还需要进函数源代码修改地址,才能顺利地加载数据。所以我想试试能不能把所有已处理的数据集直接下载并整合好,到时候如果要用的话能够直接调用。
废话不多说,直接开始!
1.Torchvision.datasets的“正确”打开方式
以 “梦开始的地方” :MNIST数据集为例
使用torchvision加载MNIST数据集的方法如下所示:
import torchvision Train_datasets_MNIST = torchvision.datasets.MNIST(
root = './data', #这里是要下载的数据集的位置
train = True, #Train=True即下载训练集,否则下载的就是测试集
transform = torchvision.transforms.ToTensor(), #将图片转化为取值[0,1]的Tensor
download = True #download为true,意思就是需要下载数据集
)
如果本地没有MNIST数据集,我们就需要将download设置为"True",以此让MNIST函数从官方地址下载数据,但是由于诸多的不可抗力影响,下载的过程可能不会太过顺利。像MNIST这样比较小的数据集可能不会出问题,但是遇到大一点的可能就会下载失败。
然而,就算是事先将.gz压缩包下好,放在要求的目录下,也会出现datasets函数无法识别数据集的情况。具体报错可以参考这位小伙伴的知乎帖子:
使用torchvision下载MINIST及配置踩坑笔记 - 知乎 (zhihu.com)
当然,这篇帖子中提供了一个很棒的解决方法,前排感谢大佬!!!
但我还是觉得每次都进函数改源代码很麻烦。
于是我自己在Colab上尝试将数据集全都下载好,放到一个名叫"data"的文件夹中,接下来每次使用的时候都只需要将root设置为“data”的路径,这样就可以直接加载。
2.我的数据集处理步骤
首先,我在Colab中按照正确的食用方式,将一些比较常用的数据集下好,放到一个统一的文件夹内(还是以MNIST数据集为例):
首先我们还是执行下面的代码:
import torchvision Train_datasets_MNIST = torchvision.datasets.MNIST(
root = './data', #这里是要下载的数据集的位置
train = True, #Train=True即下载训练集,否则下载的就是测试集
transform = torchvision.transforms.ToTensor(), #将图片转化为取值[0,1]的Tensor
download = True #download为true,意思就是需要下载数据集
)
然后会显示:
Downloading http://codh.rois.ac.jp/kmnist/dataset/kmnist/train-images-idx3-ubyte.gz
Downloading http://codh.rois.ac.jp/kmnist/dataset/kmnist/train-images-idx3-ubyte.gz to ./data/KMNIST/raw/train-images-idx3-ubyte.gz
18165760/? [00:08<00:00, 2444994.38it/s]
Extracting ./data/KMNIST/raw/train-images-idx3-ubyte.gz to ./data/KMNIST/raw Downloading http://codh.rois.ac.jp/kmnist/dataset/kmnist/train-labels-idx1-ubyte.gz
Downloading http://codh.rois.ac.jp/kmnist/dataset/kmnist/train-labels-idx1-ubyte.gz to ./data/KMNIST/raw/train-labels-idx1-ubyte.gz
29696/? [00:00<00:00, 332857.78it/s]
Extracting ./data/KMNIST/raw/train-labels-idx1-ubyte.gz to ./data/KMNIST/raw Downloading http://codh.rois.ac.jp/kmnist/dataset/kmnist/t10k-images-idx3-ubyte.gz
Downloading http://codh.rois.ac.jp/kmnist/dataset/kmnist/t10k-images-idx3-ubyte.gz to ./data/KMNIST/raw/t10k-images-idx3-ubyte.gz
3041280/? [00:01<00:00, 2025372.47it/s]
Extracting ./data/KMNIST/raw/t10k-images-idx3-ubyte.gz to ./data/KMNIST/raw Downloading http://codh.rois.ac.jp/kmnist/dataset/kmnist/t10k-labels-idx1-ubyte.gz
Downloading http://codh.rois.ac.jp/kmnist/dataset/kmnist/t10k-labels-idx1-ubyte.gz to ./data/KMNIST/raw/t10k-labels-idx1-ubyte.gz
100%
5120/5120 [00:00<00:00, 139460.57it/s]
Extracting ./data/KMNIST/raw/t10k-labels-idx1-ubyte.gz to ./data/KMNIST/raw
这里我们就下载成功了。然后我把data文件夹换了个位置,并且在新的位置下运行:
Train_datasets_MNIST = torchvision.datasets.MNIST(
root = './data', #这里是要下载的数据集的位置
train = True, #Train=True即下载训练集,否则下载的就是测试集
transform = torchvision.transforms.ToTensor(), #将图片转化为取值[0,1]的Tensor
download = False #这里download为False,意思就是加载本地数据集
)
运行成功,没有报错(亲测有效)。
最后我把包含MNIST,KMNIST,CIFAR10,CIFAR100等较为常用的数据集的data文件夹打包为一个压缩包,并命名为Demo.zip:
!zip -r Demo.zip data
3.整合包食用方法
下载完整合包之后,选择一个地址解压,就能看到其中的“data”文件夹。
然后我们每次加载数据的时候,只需要将datasets函数中的参数 "root" ,设置为data文件夹即可,就可以直接加载数据,不需要额外下载或者修改函数代码。
例如,我将data文件夹放在了桌面,并且我想加载data文件夹下的MNIST数据集,就只需要直接调用datasets下的MNIST函数,然后将root这一参数设置为data所在的位置。
#文件下载地址下班之后贴在这里
Torchvision datasets中的经典数据集梳理(以及与OCR相关的常用数据集整理)的更多相关文章
- Java中的经典算法之冒泡排序(Bubble Sort)
Java中的经典算法之冒泡排序(Bubble Sort) 神话丿小王子的博客主页 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一 ...
- Java中的经典算法之选择排序(SelectionSort)
Java中的经典算法之选择排序(SelectionSort) 神话丿小王子的博客主页 a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕.也就是:每一趟 ...
- C语言中的经典例题用javascript怎么解?(一)
C语言中的经典例题用javascript怎么解?(一) 一.1+2+3+……+100=? <script type="text/javascript"> ...
- MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)
振动论坛原版主eight的经典贴http://www.chinavib.com/thread-45622-1-1.html MATLAB对于文本文件(txt)进行数据读取的技巧总结(经典中的经典)由于 ...
- 如何在ubuntu 12.04 中安装经典的 GNOME桌面
这次介绍的是如何在ubuntu 12.04 中安装经典的 GNOME桌面,默认的 Ubuntu 12.04 默认unity桌面,一些用户不喜欢 Unity 桌面,所以想找回昔日的经典Gnome桌面. ...
- CNN中的经典结构之AlexNet
AlexNet的基本结构 Alexnet是由5个卷积层和三个全连接层组成,一共8个权重层(池化层不是权重层因为其没有参数),其中ReLU激活函数作用在每个卷积层和全连接层上,在第一个卷积层和第二个卷积 ...
- Linux 运维工作中的经典应用ansible(批量管理)Docker容器技术(环境的快速搭建)
一 Ansible自动化运维工具 Python 在运维工作中的经典应用 ansible(批量管理操作) .安装ansible(需要bese epel 2种源) wget -O /etc/yum.rep ...
- 从图像中检测和识别表格,北航&微软提出新型数据集 TableBank
纯学术 的识别表格的文章: http://hrb-br.com/5007404/20190321A0B99Y00.html https://github.com/doc-analysis/TableB ...
- 如何在 Azure 中的经典 Windows 虚拟机上设置终结点
在 Azure 中使用经典部署模型创建的所有 Windows 虚拟机都可以通过专用网络通道与同一云服务或虚拟网络中的其他虚拟机自动通信. 但是,Internet 或其他虚拟网络中的计算机需要终结点将入 ...
- A+B Problem——经典中的经典
A+B Problem,这道题,吸收了天地的精华,是当之无愧的经典中的经典中的经典.自古以来OIer都会经过它的历练(这不是白说吗?),下面就有我herobrine来讲讲这道题的各种做法. 好吧,同志 ...
随机推荐
- 点击事件触发count自增
1.vue3合成API :(即为什么要用setup() :为了数据更加关联) vue3 引入setup()合成API语法,它可以将某数据关联的内容整合到一个部分,即使setup里的内容越来越多也会围绕 ...
- 代码还是那个代码,但我已经知道了hashmap背后的东西
代码还是那个代码,但我已经知道了hashmap背后的东西 数据结构是链表的数组(注:后面的版本为了提升性能,已经是改成链表或者树(节点较多)了) 思想上是空间换时间的算法 构造函数上有容量和负载因子2 ...
- java: javacTask: 源发行版 8 需要目标发行版 1.8
idea同一工作空间中不同工程使用不同的jkd版本.在本地idea同时使用jdk1.7和jdk1.8,不同的java工程使用不同的jdk版本,但是在java代码编译时报错,其报错信息为:[java: ...
- 《Unix/Linux系统编程》第十一周学习笔记
<Unix/Linux系统编程>第十一周学习笔记 TCP/IP协议 TCP/IP 是互联网的基础.TCP代表传输控制协议.IP代表互联网协议.目前有两个版本的IP,即IPv4和IPv6.I ...
- zip文件自动打包
简单的文件打包 首先是问题 我们有一个文件的文件过大,我需要删除或者压缩,当然我们就是选择压缩 如果是单个我们可以直接使用压缩功能 但是多个呢? 首先获取当前目录下的文件,使用 a=`ls` | te ...
- luffy项目settings
一: 二:. 设置调整 1.修改manage.py配置路径 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyApi.settings.de ...
- Axios的相关应用
Axios 的案例应用 要求利用axios实现之前利用AJAX实现的验证用户是否登录的案例 鉴于这两种语法的相似性,只需要在AJAX里面的注册界面里面的script标签里面包含的代码修改为如下代码即可 ...
- LoadRunner——创建场景及运行场景(三)
1. 创建场景 场景:用户并发访问的策略,包含用户数.加载用户的时间等 启动第二个组件 : 控制台 (controller) 方式1: 开始->所有程序->HPLoadRunner-> ...
- maui BlazorWebView+本地html (vue、uniapp等都可以) 接入微信sdk 开发 Android app
首先添加微信sdk的绑定库 nuget 包:Chi.MauiBinding.Android.WeChat 项目地址:https://github.com/realZhangChi/MauiBindin ...
- RTE NG-Lab:一起探索下一代实时互动新世界
互联网已经彻底改变了我们的工作和生活.从纸书信笺,到智能手机中的 App,再到 VR 头显,实时互动体验逐代升级,已经成为了我们生活的一部分.随着元宇宙的爆火,新增的实时互动场景日益颠覆着我们的想象力 ...