python实现cifar10数据集的可视化

在学习tensorflow的mnist和cifar实例的时候,官方文档给出的讲解都是一张张图片,直观清晰,当我们看到程序下载下来的数据的时候,宝宝都惊呆了,都是二进制文件,这些二进制文件还不小,用文本编辑器打开看也看不懂,要是将数据再现为图像,多好!

(1)CIFAR-10数据集介绍

① CIFAR-10数据集包含60000个32*32的彩色图像,共有10类。有50000个训练图像和10000个测试图像。 
数据集分为5个训练块和1个测试块,每个块有10000个图像。测试块包含从每类随机选择的1000个图像。训练块以随机的顺序包含这些图像,但一些训练块可能比其它类包含更多的图像。训练块每类包含5000个图像。 
②data——1个10000*3072大小的uint8s数组。数组的每行存储1张32*32的图像。第1个1024包含红色通道值,下1个包含绿色,最后的1024包含蓝色。图像存储以行顺序为主,所以数组的前32列为图像第1行的红色通道值。 
labels——1个10000数的范围为0~9的列表。索引i的数值表示数组data中第i个图像的标签。 
③数据集中包含另外1个叫batches.meta的文件。它也包含1个Python字典对象。有如下列元素: 
label_names——1个10元素的列表,给labels中的数值标签以有意义的名称。例如,label_names[0] == “airplane”, label_names[1] == “automobile”等。

(2)下载python版本的cifar数据

先给个cifar数据下载链接:http://www.cs.toronto.edu/~kriz/cifar.html 
链接上提到三个数据版本,分别是python,matlab,binary版本,分别适合python,matlab,C程序 
我们用python实现cifar数据转化为图像,当然要用Python版本的啦 
下载好了,我们就可以用下面的代码啦

(3)代码

# -*- coding:utf-8 -*-
import pickle as p
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as plimg
from PIL import Image
def load_CIFAR_batch(filename):
    """ load single batch of cifar """
    with open(filename, ‘rb‘)as f:
        datadict = p.load(f)
        X = datadict[‘data‘]
        Y = datadict[‘labels‘]
        X = X.reshape(10000, 3, 32, 32)
        Y = np.array(Y)
        return X, Y

def load_CIFAR_Labels(filename):
    with open(filename, ‘rb‘) as f:
        lines = [x for x in f.readlines()]
        print(lines)

if __name__ == "__main__":
    load_CIFAR_Labels("/data/cifar-10-batches-py/batches.meta")
    imgX, imgY = load_CIFAR_batch("/data/cifar-10-batches-py/data_batch_1")
    print imgX.shape
    print "正在保存图片:"
    for i in xrange(imgX.shape[0]):
        imgs = imgX[i - 1]
        if i < 100:#只循环100张图片,这句注释掉可以便利出所有的图片,图片较多,可能要一定的时间
            img0 = imgs[0]
            img1 = imgs[1]
            img2 = imgs[2]
            i0 = Image.fromarray(img0)
            i1 = Image.fromarray(img1)
            i2 = Image.fromarray(img2)
            img = Image.merge("RGB",(i0,i1,i2))
            name = "img" + str(i)
            img.save("/data/images/"+name,"png")#文件夹下是RGB融合后的图像
            for j in xrange(imgs.shape[0]):
                img = imgs[j - 1]
                name = "img" + str(i) + str(j) + ".png"
                print "正在保存图片" + name
                plimg.imsave("/data/image/" + name, img)#文件夹下是RGB分离的图像

    print "保存完毕."
时间: 2024-08-24 18:44:45

python实现cifar10数据集的可视化的相关文章

Caffe2——cifar10数据集创建lmdb或leveldb类型的数据

Caffe2——cifar10数据集创建lmdb或leveldb类型的数据 cifar10数据集和mnist数据集存储方式不同,cifar10数据集把标签和图像数据以bin文件的方式存放在同一个文件内,这种存放方式使得每个子cifar数据bin文件的结构相同,所以cifar转换数据代码比mnist的代码更加的模块化,分为源数据读取模块(image_read函数),把lmdb(leveldb)数据转换的变量声明,句柄(函数)调用都放到定义的caffe::db子空间中,这样简化了代码,而且使得代码更

Python进阶(四十)-数据可视化の使用matplotlib进行绘图

Python进阶(四十)-数据可视化の使用matplotlib进行绘图 前言 ??matplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包.我将在这篇文章中介绍matplotlib API的核心对象,并介绍如何使用这些对象来实现绘图.实际上,matplotlib的对象体系严谨而有趣,为使用者提供了巨大的发挥空间.用户在熟悉了核心对象之后,可以轻易的定制图像.matplotlib的对象体系也是计算机图形学的一个优秀范例.即使你不是Python程序员,你也可以从文中

将cifar10数据集保存为可见图片

下载cifar10数据集:http://www.cs.toronto.edu/~kriz/cifar.html 选择cifar-10-python.tar.gz进行下载. 1 建立 main.py import tensorflow as tf import os import scipy.misc import cifar10_input def inputs_origin(data_dir): filenames = [os.path.join(data_dir, 'data_batch_%

Python制作本地数据集

1 ##################################################### 2 # 功能:Python制作本地数据集 3 ##################################################### 4 5 # 导入相应包 6 import os 7 from PIL import Image 8 import numpy as np 9 from keras.utils import to_categorical 10 11 d

CIFAR-10数据集图像分类【PCA+基于最小错误率的贝叶斯决策】

CIFAR-10和CIFAR-100均是带有标签的数据集,都出自于规模更大的一个数据集,他有八千万张小图片.而本次实验采用CIFAR-10数据集,该数据集共有60000张彩色图像,这些图像是32*32,分为10个类,每类6000张图.这里面有50000张用于训练,构成了5个训练批,每一批10000张图:另外10000用于测试,单独构成一批.测试批的数据里,取自10类中的每一类,每一类随机取1000张.抽剩下的就随机排列组成了训练批.注意一个训练批中的各类图像并不一定数量相同,总的来看训练批,每一

Python读取MNIST数据集

MNIST数据集获取 MNIST数据集是入门机器学习/模式识别的最经典数据集之一.最早于1998年Yan Lecun在论文: Gradient-based learning applied to document recognition. 中提出.经典的LeNet-5 CNN网络也是在该论文中提出的. 数据集包含了0-9共10类手写数字图片,每张图片都做了尺寸归一化,都是28x28大小的灰度图.每张图片中像素值大小在0-255之间,其中0是黑色背景,255是白色前景.如下图所示: MNIST共包

神经网络入门-用python实现一个两层神经网络并在CIFAR10数据集上调参

下面是我从cs231n上整理的神经网络的入门实现,麻雀虽小,五脏俱全,基本上神经网络涉及到的知识点都有在代码中体现. 理论看上千万遍,不如看一遍源码跑一跑. 源码上我已经加了很多注释,结合代码看一遍很容易理解. 最后可视化权重的图: 主文件,用来训练调参 two_layer_net.py 1 # coding: utf-8 2 3 # 实现一个简单的神经网络并在CIFAR10上测试性能 4 5 import numpy as np 6 import matplotlib.pyplot as pl

神经网络进阶-用python实现一个完整的神经网络框架并在CIFAR10数据集上调参

上一个博客中讲解了用python实现一个简单的两层神经网络,我们是把所有的网络层都直接写在了类中.但是作为一个神经网络框架,网络的结构应该是可以由使用者自定义的,这样一来也就不用为每个网络结构都重写所有代码,我们把每一层模块化,在神经网络的类中定义结构时使用这些模块化的层堆叠形成一个完整的神经网络.每一种层,分别实现forward和password两个函数,用来正向计算和反向传播. 这里我们实现的网络层和功能有:全连层.激活层.计算loss.自动训练 1.全连层 全连层的正向计算很简单,f(W,

python实现HOG+SVM对CIFAR-10数据集分类(上)

本博客只用于学习,如果有错误的地方,恳请指正,如需转载请注明出处. 看机器学习也是有一段时间了,这两天终于勇敢地踏出了第一步,实现了HOG+SVM对图片分类,具体代码可以在github上下载,https://github.com/subicWang/HOG-SVM-classifer.大家都说HOG+SVM是在行人检测中很合拍的一对.至于为啥,我也讲不清楚.我猜想这么合拍的一对应用在图片分类上效果应该也不错吧,事实证明确实还行,速度挺快,分类正确率还行.我用的数据集是http://www.cs.