首页 > 其他分享 >把CIFAR-10数据集分类保存成图片

把CIFAR-10数据集分类保存成图片

时间:2024-04-23 22:47:25浏览次数:31  
标签:10 name img 分类 CIFAR label path os

一:cifar10数据集简介

CIFAR-10数据集是一个广泛用于计算机视觉领域的数据集,主要用于图像分类任务。该数据集由Hinton的学生Alex Krizhevsky和Ilya Sutskever整理得到。它包含10个不同类别的RGB彩色图片,每个图片的尺寸为32 × 32像素。这10个类别分别是飞机(airplane)、汽车(automobile)、鸟类(bird)、猫(cat)、鹿(deer)、狗(dog)、蛙类(frog)、马(horse)、船(ship)和卡车(truck)。每个类别有6000张图像,数据集中总共有60000张图片,其中50000张图片作为训练集,另外10000张图片作为测试集。

CIFAR-10数据集中的图像涵盖了广泛的对象类别,每个图像都有一个标签,表示它所属的类别。这个数据集通常用于计算机视觉领域的算法开发、模型训练和性能评估。由于图像尺寸较小且类别数较少,CIFAR-10数据集通常用于快速验证和原型开发,以及用于学习和理解各种计算机视觉算法的基本原理。它也被用作深度学习模型的基准数据集,用于评估模型在图像分类任务上的性能和泛化能力。

在代码示例中,CIFAR-10数据集常被用作各种深度学习模型(如ResNet50)的训练和测试数据,以展示模型的训练和评估过程。通过训练模型来识别CIFAR-10数据集中的图像,我们可以得到模型在测试数据上的识别结果,从而评估模型的性能。

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

二:分类保存成图片

import os
from imageio import imsave

def unpickle(file):
    import pickle
    with open(file, 'rb') as fo:
        dict = pickle.load(fo, encoding='bytes')
    return dict


# 训练集
filename = './cifar10/cifar-10-batches-py'  # 图片的路径
meta = unpickle(filename + '/batches.meta')
label_name = meta[b'label_names']
print(label_name) #打印标签

for i in range(len(label_name)):  #建立文件夹train
    file = label_name[i].decode()
    path = './cifar10/train/' + file
    isExist = os.path.exists(path)
    if not isExist:
        os.makedirs(path)

for i in range(1, 6):
    content = unpickle(filename + '/data_batch_' + str(i))  # 解压后的每个data_batch_
    for j in range(10000):
        img = content[b'data'][j]
        img = img.reshape(3, 32, 32)
        img = img.transpose(1, 2, 0)
        img_name = './cifar10/train/' + label_name[content[b'labels'][j]].decode() + '/batch_' + str(i) + '_num_' + str(j) + '.jpeg'
        imsave(img_name, img)


# 训练集改名
path = './cifar10/train/'
filelist = os.listdir(path)
for item in filelist:
    pathnew=os.path.join(path,item)
    imagelist = os.listdir(pathnew)
    j = 1
    for i in imagelist:
        src = os.path.join(os.path.abspath(pathnew), i)
        dst = os.path.join(os.path.abspath(pathnew), '' + item + '.' + str(j) + '.jpeg')
        j = j+1
        os.rename(src, dst)


# 测试集
meta1 = unpickle(filename + '/test_batch')  # 解压test_batch
label_name1 = meta[b'label_names']

for i in range(len(label_name1)):
    file = label_name1[i].decode()
    path = './cifar10/test/' + file
    isExist = os.path.exists(path)
    if not isExist:
        os.makedirs(path)

for j in range(10000):
    img = meta1[b'data'][j]
    img = img.reshape(3, 32, 32)
    img = img.transpose(1, 2, 0)
    img_name = './cifar10/test/' + label_name[
        meta1[b'labels'][j]].decode() + '/batch_' + str(j) + '_num_' + str(j) + '.jpeg'
    imsave(img_name, img)


# 测试集改名
path = './cifar10/test/'
filelist = os.listdir(path)
for item in filelist:
    pathnew=os.path.join(path,item)
    imagelist = os.listdir(pathnew)
    j = 1
    for i in imagelist:
        src = os.path.join(os.path.abspath(pathnew), i)
        dst = os.path.join(os.path.abspath(pathnew), '' + item + '.' + str(j) + '.jpeg')
        j = j+1
        os.rename(src, dst)

标签:10,name,img,分类,CIFAR,label,path,os
From: https://www.cnblogs.com/xiaohui201/p/18153957

相关文章

  • 初中中考阅读理解难题一网打尽!句子结构深度解析+答案揭秘,助你轻松冲刺高分!-010
    PDF格式公众号回复关键字:ZKYDT010原文1Grandmotherlookedforwardtoherbirthdayparty,didn'tshe?解析1Grandmother祖母,lookedforwardto期待盼望,herbirthdayparty她的生日聚会,didn'tshe?不是吗?祖母盼望她的生日聚会,不是吗?2Grandfatherhadalw......
  • 9-项目整合管理(1/10 十大管理)
    8.1管理基础8.1.1执行整合项目整合管理由项目经理负责,项目经理负责整合所有其他知识领域的成果,并掌握项目总体情况。项目整合管理的责任不能被授权或转移,项目经理必须对整个项目承担最终责任。整合是项目经理的一项关键技能。执行项目整合时项目经理承担双重角色。组织层面......
  • ITMS-91053 Missing API declaration
    热烈欢迎,请直接点击!!!进入博主AppStore主页,下载使用各个作品!!!注:博主将坚持每月上线一个新app!!今天上传应用发现谈了一大堆警告,对于警告洁癖的我表示非常的震惊。基本上就是因为缺少隐私描述,但是我根本就没用第三方SDK啊,仔细一看发现是这两种:NSPrivacyAccessedAPICategoryUserDe......
  • AP5103 是一款效率高,稳定可靠的 LED 灯恒流驱动控制芯片
    产品描述AP5103是一款效率高,稳定可靠的LED灯恒流驱动控制芯片,内置高精度比较器,固定关断时间控制电路,恒流驱动电路等,特别适合大功率LED恒流驱动。AP5103采用ESOP8封装,散热片内置接SW脚,通过调节外置电流检测的电阻值来设置流过LED灯的电流,支持外加电压线性调光,最大电......
  • 分类算法(Classification Algorithm)需求记录
    [toc]比如说,在WEB扫描器场景中。一个扫描器在扫描过程中,它可以自动识别接口类型并采用相应分类规则进行漏洞检测的算法,这种通常属于一种称为"智能扫描"(IntelligentScanning)或"漏洞扫描引擎"的技术。这些算法利用机器学习、深度学习和模式识别等技术,通过分析网络流量、响应内容......
  • window10安装insightface、onnxruntime-gpu、视频换脸
    1.https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#requirements2.下载cuda_12.2.0_536.25_windows3.下载cudnncudnn-windows-x86_64-8.5.0.96_cuda11-archive4.condacreate-nonnx_testpython=3.105.根据官方文档说明cuda12.x的版本安装o......
  • p1092
    #include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>#defineN20intmain(){intn,i,j,k,p,q;while(scanf("%d",&n)!=EOF){inta[N][N]={0};intb[N][N]={0};intc......
  • 10分钟本地运行llama3及初体验
    Meta最新推出的开源大模型llama-3,被誉为目前最强的开源大模型,能力接近于GPT4.5.因此在本地搭建一下抢鲜体验系统环境CPU:AMDRyzen53600X6-CoreProcessor4.10GHzRAM:32GGPU:Navida2060S8GDISK:SSD100GFree基于上述自身条件,装llama-38b版本比较实际。整......
  • 洛谷题单指南-动态规划2-P1020 [NOIP1999 提高组] 导弹拦截
    原题链接:https://www.luogu.com.cn/problem/P1020题意解读:拦截系统发射导弹的高度依次不增,计算能拦截的最大导弹数以及需要几套拦截系统。解题思路:问题1:最多能拦截多少导弹?由于发射导弹高度不增,所以求一个最长不增子序列即可得到最大拦截数。方法一、O(n^2)做法:动态规划。采......
  • RT-Thread 4.x STM32F107
    官方文档很坑,新旧不分开,文档缺失/分类很乱有些文档在IDERT-STUDIO文档里,有些在RTThread标准版文档里,逆天坑:不支持STM32CUBEMX的Advanced工程,记得重新保存生成basic工程才能用。不能使用.c/.h分离。坑:适配CUBEMX工程的脚本要自己写driver/stm32f1xx_hal_conf_bak.h不一定会生......