CIFAR彩色图像分类数据集

一、CIFAR数据集介绍
1.1 CIFAR-10
数据集图像个数:60000张彩色图像;其中Train sets:50000;Test sets:10000,(测试批的数据里,取自10类中的每一类,每一类随机取1000张,抽剩下的就随机排列组成了训练批)
Class: 共10类,分别是:
飞机airplane、小汽车automobile、卡车truck、轮船ship、马horse、
猫cat、狗dog、鸟bird、鹿deer、青蛙frog。
图像属性: 大小为32*32(RGB),uint8型
数据集的数据结构:(python版本数据集被保存为numpy数组)图像以行优先顺序存储,以便数组的前32个条目是图像第一行的红色通道值。
训练集:50000*3072 的二维数组,其中3072=32*32*3=1024(R)+1024(G)+1024(B),
测试集:10000*3072,其结构如下:
CIFAR彩色图像分类数据集_第1张图片
部分样例图片如下:
这里写图片描述

1.2 CIFAR-100
该数据集有100个类,每个类包含600个图像。每类各有500个训练图像和100个测试图像。CIFAR-100中的100个类被分成20个超类。
图片张数60000 = 100类*600个 = 100*500(train) + 100*100(test)
该数据集的属性和数据结构与CIFAR-10相同。

每个图像都带有一个“精细”标签(它所属的类)和一个“粗糙”标签(它所属的超类),以下是CIFAR-100中的类别列表:

超类 类别
水生哺乳动物 海狸,海豚,水獭,海豹,鲸鱼
水族馆的鱼,比目鱼,射线,鲨鱼,鳟鱼
花卉 兰花,罂粟花,玫瑰,向日葵,郁金香
食品容器 瓶子,碗,罐子,杯子,盘子
水果和蔬菜 苹果,蘑菇,橘子,梨,甜椒
家用电器 时钟,电脑键盘,台灯,电话机,电视机
家用家具 床,椅子,沙发,桌子,衣柜
昆虫 蜜蜂,甲虫,蝴蝶,毛虫,蟑螂
大型食肉动物 熊,豹,狮子,老虎,狼
大型人造户外用品 桥,城堡,房子,路,摩天大楼
大自然的户外场景 云,森林,山,平原,海
大杂食动物和食草动物 骆驼,牛,黑猩猩,大象,袋鼠
中型哺乳动物 狐狸,豪猪,负鼠,浣熊,臭鼬
非昆虫无脊椎动物 螃蟹,龙虾,蜗牛,蜘蛛,蠕虫
宝贝,男孩,女孩,男人,女人
爬行动物 鳄鱼,恐龙,蜥蜴,蛇,乌龟
小型哺乳动物 仓鼠,老鼠,兔子,母老虎,松鼠
树木 枫树,橡树,棕榈,松树,柳树
车辆1 自行车,公共汽车,摩托车,皮卡车,火车
车辆2 割草机,火箭,有轨电车,坦克,拖拉机

CIFAR彩色图像分类数据集_第2张图片

数据集下载地址:http://www.cs.toronto.edu/~kriz/cifar.html

二、读取数据集代码

加载CIFAR-10彩色图像数据集数据
"""
import numpy as np
import pickle

path = "D:\\ProgramFiles64\\Anaconda36\\Conda_Work\\CIFAR_data\\cifar-10-python\\"
file_test = 'test_batch'
file_meta = 'batches.meta'
fb = 'data_batch_'

train_data = np.empty((50000,3072))
train_label = []
for i in range(5):
    filename = path+fb+str(i+1)
    print(filename)
    with open(filename,'rb') as f:
        D=pickle.load(f,encoding='bytes')  #D是一个dict
        #D的成员有:b'batch_label';b'data';b'labels';b'filenames'
        xs = D[b'data']              #图像数据:10000*3072,是一个numpy数组
        ys = D[b'labels']            #是图像对应的标签,是一个list,大小为10000
        explain  = D[b'batch_label']   #说明:此数据集为5batch中的第1个batch
        image_name = D[b'filenames']   #图片的名称,eg:b'rana_clamitans_s_000435.png'
        train_data[i*10000:(i+1)*10000] = xs
        train_label.extend(ys)
        print(D,type(D))
        print('\n',type(xs),type(ys),xs.shape,len(ys))
        print(explain)
        #print(image_name)

print(train_data.shape,len(train_label),train_label)

with open(path+file_test ,'rb') as f:
    D1 = pickle.load(f,encoding='bytes')
    test_ys = D1[b'labels']   #是图像对应的标签,是一个list,大小为10000
    test_xs = D1[b'data']     #图像数据:10000*3072,是一个numpy数组

with open(path+file_meta,'rb') as f:
    """
    'batches.meta'是一些说明数据,包括每batch有10000个样本,
    类标签名称,b'label_names'
    每个图像向量化的长度:b'num_vis':3072
    """
    D1 = pickle.load(f,encoding='bytes')  
    #print(D1,type(D1))

你可能感兴趣的:(深度学习)