CIFAR10数据集转化为图片

CIFAR10数据集转化为图片CIFAR10是一个小型的分类数据集,很多论文在该数据集上做实验。本文会简要的介绍CIFAR10,该数据集下载,并将该数据集转化为图片,供以后训练模型使用。

大家好,又见面了,我是你们的朋友全栈君。

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

1. 数据集介绍

      该数据集共有60000张彩色图像,这些图像是32*32,分为10个类,每类6000张图。这里面有50000张用于训练,构成了5个训练批,每一批10000张图;另外10000用于测试,单独构成一批。测试批的数据里,取自10类中的每一类,每一类随机取1000张。抽剩下的就随机排列组成了训练批。注意一个训练批中的各类图像并不一定数量相同,总的来看训练批,每一类都有5000张图。

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

CIFAR10数据集转化为图片
Caption

 

2. 将下载的数据转化为图片

      以Python的数据为例说明,解压后会得到如下数据:

CIFAR10数据集转化为图片
Caption

      该数据集文件包含data_batch1……data_batch5,和test_batch。batches.meta是一个python字典对象,如:abel_names[0] == “airplane”, label_names[1] == “automobile”。

      如何将该数据转化为图片格式:

import cv2
import numpy as np
import os

def unpickle(file):
    import cPickle
    with open(file, 'rb') as f:
        dict = cPickle.load(f)
    return dict


def main(cifar10_data_dir):
    for i in range(1, 6):
        train_data_file = os.path.join(cifar10_data_dir, 'data_batch_' + str(i))
        print(train_data_file)
        data = unpickle(train_data_file)
        print('unpickle done')
        for j in range(10000):
            img = np.reshape(data['data'][j], (3, 32, 32))
            img = img.transpose(1, 2, 0)
            img_name = 'train/' + str(data['labels'][j]) + '_' + str(j + (i - 1)*10000) + '.jpg'
            cv2.imwrite(os.path.join(cifar10_data_dir, img_name), img)

    test_data_file = os.path.join(cifar10_data_dir, 'test_batch')
    data = unpickle(test_data_file)
    for i in range(10000):
        img = np.reshape(data['data'][i], (3, 32, 32))
        img = img.transpose(1, 2, 0)
        img_name = 'test/' + str(data['labels'][i]) + '_' + str(i) + '.jpg'
        cv2.imwrite(os.path.join(cifar10_data_dir, img_name), img)


if __name__ == "__main__":
    main('cifar-10-batches-py')

         转化后的图片存放在train和test两个文件夹中,如图:

CIFAR10数据集转化为图片
Caption

end!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152118.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • docker命令详解「建议收藏」

    docker命令详解「建议收藏」镜像下载搜索镜像dockersearch+镜像名字#dockersearchcentos从DockerHub中搜索符合条件的镜像下载镜像#dockerpull+镜像名字#dockerpullcentos查看镜像#dockerimages开启网络转发功能(默认为开启状态)若无开启,可以使用以下命令开启#vim/etc/sysctl…

    2022年5月13日
    36
  • jdk1.8的环境配置「建议收藏」

    jdk1.8的环境配置「建议收藏」jdk1.8的环境配置原文地址:传送门每日必答:在开始之前呢,小Du来来带大家了解几个问题,希望能够在面试中,小Du的解答给你帮助。1.什么是JDK?答:javadevelopmentkit的缩写,意思是JAVA开发工具,我们写文档做PPT需要office办公软件,开发当然需要开发工具了,说到开发工具大家肯定会想到Eclipse,但是如果直接安装Eclipse你会发现它是运行不起来是会报错的,只有安装了JDK,配置好了环境变量和path才可以运行成功。2.JRE是什么?答:jav

    2022年6月11日
    34
  • python检查文件更新失败_恢复自动更新/更新失败解决方法个人汇总[通俗易懂]

    python检查文件更新失败_恢复自动更新/更新失败解决方法个人汇总[通俗易懂]步骤一:服务开启首先,打开任务管理器(快捷键Ctrl+shift+esc)(或者右键开始图标任务管理器(此方法只适应Win8Win10))(或者Ctrl+Alt+Del,点击任务管理器)打开服务选项卡+打开服务找到windowsupdate,右键,属性启动类型改为手动如果要关闭更新请改为禁用步骤二:组策略开启windows微标键+R键呼出【运行】2输入【gpedit.msc】组策略编辑器计算机配…

    2022年5月16日
    30
  • height:100%失败

    height:100%失败

    2022年1月1日
    37
  • 分页式虚拟存储管理_c语言申请内存空间

    分页式虚拟存储管理_c语言申请内存空间C语言模拟实现虚拟存储管理(请求分页存储管理)使用FIFO算法一、实验目的存储管理的主要功能之一是合理的分配空间。请求分页存储管理是一种常用的虚拟存储管理技术。本实验的目的是:通过编程模拟实现请求分页存储管理中硬件地址转换过程、缺页中断处理过程,以及先进先出页面置换算法,加深对页式虚拟存储管理的理解,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换方法;通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。二、实验内容阅读教材《计算机操作系统》第四章,掌握存储器管理相关概念和原理。

    2022年9月26日
    0
  • linux vim怎么退出编辑模式_shell退出vi编辑器

    linux vim怎么退出编辑模式_shell退出vi编辑器用的命令是:ctrl+Rvi编辑器中有三种状态模式1.命令模式2.输入模式3.末行模式三种模式间的相互转换vi编辑器的启动与退出直接进入编辑环境$vi进入编辑环境并打开(新建)文件$vimyfile退出vi编辑环境输入末行命令放弃对文件的修改,并退出编辑器:q!文件保存与另存为保存文件保存对vi编辑器中已打开文件的修改:w另存为文件将vi编辑器中的内容另存为指定文件名:wmyfile退…

    2022年9月30日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号