一: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