CIFAR-10 dataset 的下载及恢复原图片

基本信息

CIFAR-10是一个包含60000张图片的数据集。其中每张照片为32*32的彩色照片,每个像素点包括RGB三个数值,数值范围为0~255。

这60000张图片分为十个类别"airplane", "automobile", "bird", "cat","deer", "dog", "horse", "ship", "truck"。其中前50000张为训练集,后10000张为测试集。

数据集下载

打开下面的链接进入官网下载

http://www.cs.toronto.edu/~kriz/cifar.html

选择python版本下载

 然后解压,得到文件如下:

 data_batch_1~data_batch_5是训练集数据,每个文件里有10000张图片,test_batch是测试集数据,也含有10000张图片。

转成图片

import numpy as np
import pickle
import imageio
import os


# 解压缩,返回解压后的字典
def unpickle(file):
    fo = open(file, 'rb')
    dict = pickle.load(fo, encoding='latin1')
    fo.close()
    return dict

list = ["airplane", "automobile", "bird", "cat", "deer", "dog", "frog", "horse", "ship", "truck"]
for z in range(10):
    if os.path.exists('train/' + list[z]) == False:
        os.makedirs('train/' + list[z])
    if os.path.exists('val/' + list[z]) == False:
        os.makedirs('val/' + list[z])

# 生成训练集图片,如果需要png格式,只需要改图片后缀名即可。
for j in range(1, 6):
    dataName = "data_batch_" + str(j)
    # 读取当前目录下的data_batch12345文件,dataName其实也是data_batch文件的路径,本文和脚本文件在同一目录下。
    Xtr = unpickle(dataName)
    print(dataName + " is loading...")

    for i in range(0, 10000):
        img = np.reshape(Xtr['data'][i], (3, 32, 32))  # Xtr['data']为图片二进制数据
        img = img.transpose(1, 2, 0)  # 读取image
        picName = 'train/' + list[Xtr['labels'][i]] + '/' + str(i + (j - 1)*10000) + '.png'
        # Xtr['labels']为图片的标签,值范围0-9,本文中,train文件夹需要存在,并与脚本文件在同一目录下。
        imageio.imwrite(picName, img)
    print(dataName + " loaded.")
print("test_batch is loading...")

# 生成测试集图片
testXtr = unpickle("test_batch")
for i in range(0, 10000):
    img = np.reshape(testXtr['data'][i], (3, 32, 32))
    img = img.transpose(1, 2, 0)
    picName = 'val/' + list[testXtr['labels'][i]] + '/' + str(i) + '.png'
    imageio.imwrite(picName, img)
print("test_batch loaded.")

这些代码需要自己修改一下文件的路径,有8处

其实这些代码只是在前辈的基础上加了点东西,为了更好适应我自己学习的代码写的,运行完后得到的数据集是这样的。下图为train文件夹中的样子,每个文件中有5000张图片。val文件中的样子和这个一样,只是里边子文件的图片只有1000张而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值