关于CIFAR-10数据集的处理

关于CIFAR-10数据集的处理

 

CIFAR-10和CIFAR-100是带有标签的数据集,出自于规模更大的一个数据集,他有八千万张小图片(http://groups.csail.mit.edu/vision/TinyImages/这个是一个大项目,你可以点击那个big map提交自己的标签,可以帮助他们训练让计算机识别物体的模型)。

 

在学习cs231n中接触到CIFAR-10数据集,对于图像类数据首次接触,特将处理过程记录如下

 

CIFAR-10

该数据集共有60000张彩色图像,这些图像是32*32的彩色照片,每个像素点包括RGB三个数值,数值范围0~255,分为10个类,分别是'airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck',每类6000张图。这里面有50000张用于训练,构成了5个训练批,每一批10000张图;另外10000用于测试,单独构成一批。测试批的数据里,取自10类中的每一类,每一类随机取1000张。抽剩下的就随机排列组成了训练批。注意一个训练批中的各类图像并不一定数量相同,总的来看训练批,每一类都有5000张图。

 

下面这幅图就是列举了10各类,每一类展示了随机的10张图片:

 

数据的下载

(共有3个版本:python、matlab、binary version适用于C语言)

http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz

http://www.cs.toronto.edu/~kriz/cifar-10-matlab.tar.gz

http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz

数据的处理

这里以python为例。该数据集文件包含data_batch1……data_batch5和test_batch。他们都是由cPickle库产生的序列化后的对象(关于pickle,移步https://docs.python.org/3/library/pickle.html)这里给出python2和python3的代码,可以打开这样的pkl文件,返回一个字典结构的数据:

import numpy as np
import random
import pickle
import platform
import os

#加载序列文件
def load_pickle(f):
    version=platform.python_version_tuple()#判断python的版本
    if version[0]== '2':
        return pickle.load(f)
    elif version[0]== '3':
        return pickle.load(f,encoding='latin1')
    raise ValueError("invalid python version:{}".format(version))

经上述代码,传入的每个batch文件,返回的是一个字典,该字典包含有:

  • labels

  对应的值是一个长度为10000的列表,每个数字取值范围 0~9,代表当前图片所属类别

  • data

  10000 * 3072 的二维数组,每一行代表一张图片的像素值。(32*32*3=3072) 

 

数据集除了6个batch之外,还有一个文件batches.meta。它包含一个python字典对象,内容有:一个包含10个元素的列表,每一个描述了labels array中每个数字对应类标的名字。比如:label_names[0] == "airplane", label_names[1] == "automobile"

#处理原数据
def load_CIFAR_batch(filename):
    with open(filename,'rb') as f:
        datadict=load_pickle(f)
        X=datadict['data']
        Y=datadict['labels']
        X=X.reshape(10000,3,32,32).transpose(0,2,3,1).astype("float")
        #reshape()是在不改变矩阵的数值的前提下修改矩阵的形状,transpose()对矩阵进行转置
        Y=np.array(Y)
        return X,Y
        
        
#返回可以直接使用的数据集
def load_CIFAR10(ROOT):
    xs=[]
    ys=[]
    for b in range(1,6):
        f=os.path.join(ROOT,'data_batch_%d'%(b,))#os.path.join()将多个路径组合后返回
        X,Y=load_CIFAR_batch(f)
        xs.append(X)
        ys.append(Y)
    Xtr=np.concatenate(xs)#这个函数用于将多个数组进行连接
    Ytr=np.concatenate(ys)
    del X,Y
    Xte,Yte=load_CIFAR_batch(os.path.join(ROOT,'test_batch'))
    return Xtr,Ytr,Xte,Yte

测试代码

datasets='cifar-10-batches-py'
X_train,Y_train,X_test,Y_test=load_CIFAR10(datasets)
print('Training data shape: ', X_train.shape)
print('Training labels shape: ', Y_train.shape)
print('Test data shape: ', X_test.shape)
print('Test labels shape: ', Y_test.shape)

 经上述处理后,对原始CIFAR-10数据集的处理,返回结果如下:

Training data shape:  (50000, 32, 32, 3)
Training labels shape:  (50000,)
Test data shape:  (10000, 32, 32, 3)
Test labels shape:  (10000,)

 

### 回答1: 要下载CIFAR-10数据集到MATLAB中,可以按照以下步骤操作: 1. 首先,打开MATLAB,并确保已连接到互联网。 2. 在MATLAB命令窗口中输入以下命令: ```matlab websave('cifar-10-data.mat','https://www.cs.toronto.edu/~kriz/cifar-10-matlab.tar.gz') ``` 这个命令将使用MATLAB的`websave`函数从CIFAR-10数据集的官方网站下载压缩文件,并将其保存为`cifar-10-data.mat`文件。 3. 下载完成后,解压缩刚刚下载的文件。可以使用以下命令: ```matlab untar('cifar-10-data.mat') ``` 这个命令将解压缩刚刚下载的文件。 4. 解压缩后,可以在MATLAB中使用加载函数`load`加载CIFAR-10数据集。使用以下命令: ```matlab load('cifar-10-batches-mat/data_batch_1.mat') ``` 这个命令将加载CIFAR-10数据集的第一个批次,可以根据需要加载其他批次的数据。 5. 加载后的数据将被存储在一个MATLAB结构体变量中,可以根据需要访问不同的字段来获取图像和标签数据。 以上就是在MATLAB中下载CIFAR-10数据集的步骤。下载完成后,你就可以使用这些数据来进行图像分类、目标识别等机器学习任务。 ### 回答2: 要下载CIFAR-10数据集,您可以按照以下步骤使用MATLAB进行操作。 首先,您需要访问CIFAR-10数据集的官方网站(https://www.cs.toronto.edu/~kriz/cifar.html)以获取数据集的下载链接。 接下来,在MATLAB的命令行窗口中使用"web"函数打开CIFAR-10数据集的网页。例如,输入以下命令并按Enter键: web('https://www.cs.toronto.edu/~kriz/cifar.html','-browser') 然后,您将看到网页加载在MATLAB的浏览器中。 在网页中,您可以找到"CIFAR-10 binary version (suitable for C programs)"这个选项,该选项包含了CIFAR-10数据集的下载链接。点击链接以下载数据集。 下载完成后,您可以将数据集解压缩到您选择的文件夹中。建议您将数据集保存在一个清晰和易于访问的位置。 在MATLAB中,您可以使用"load"函数加载下载的数据集文件。例如,假设您将数据集保存为"CIFAR-10"文件夹,您可以使用以下命令读取数据集: load(fullfile('CIFAR-10', 'data_batch_1.mat')) 这将加载数据集中的第一个数据批次到MATLAB的工作空间中,您可以使用MATLAB的各种功能和工具来进一步处理和分析数据。 总结起来,要在MATLAB中下载CIFAR-10数据集,请访问官方网站获取下载链接,使用MATLAB的"web"函数打开网页并下载数据集,然后使用"load"函数加载数据集文件到MATLAB。 ### 回答3: 要在MATLAB中下载CIFAR-10数据集,可以按照以下步骤进行: 1. 首先需要在MATLAB中创建一个文件夹用于保存CIFAR-10数据集。可以使用以下代码创建一个名为"CIFAR-10"的文件夹: ```matlab mkdir('CIFAR-10'); ``` 2. 使用wget命令下载CIFAR-10数据集的压缩文件。可以使用以下代码在MATLAB命令窗口中运行wget命令: ```matlab !wget https://www.cs.toronto.edu/~kriz/cifar-10-matlab.tar.gz ``` 下载完成后,会在当前文件夹中生成一个名为"cifar-10-matlab.tar.gz"的压缩文件。 3. 使用untar命令解压缩下载的压缩文件。可以使用以下代码在MATLAB命令窗口中运行untar命令: ```matlab untar('cifar-10-matlab.tar.gz', 'CIFAR-10'); ``` 解压缩完成后,CIFAR-10数据集的.mat文件将会存储在"CIFAR-10"文件夹中。 4. 现在可以在MATLAB中加载CIFAR-10数据集并进行数据分析、处理和训练模型等操作。可以使用以下代码加载CIFAR-10数据集: ```matlab load('CIFAR-10/cifar-10-batches-mat/data_batch_1.mat'); ``` 加载数据集后,数据集的相关变量将会在MATLAB的工作空间中生成,可以使用这些变量进行进一步的数据处理和分析。 以上是在MATLAB中下载CIFAR-10数据集的简单步骤。确保在下载和解压缩过程中的网络连接正常,并提前安装好wget和untar命令。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值