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所在的位置。
#文件下载地址下班之后贴在这里
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗