1.CIFAR-10数据介绍
Cifar-10 是由 Hinton 的学生 Alex Krizhevsky、Ilya Sutskever 收集的一个用于普适物体识别的计算机视觉数据集,它包含 60000 张 32 X 32 的 RGB 彩色图片,总共 10 个分类。其中,包括 50000 张用于训练集,10000 张用于测试集。
一共包含10 个类别的RGB 彩色图片:飞机( airplane )、汽车( automobile )、鸟类( bird )、猫( cat )、鹿( deer )、狗( dog )、蛙类( frog )、马( horse )、船( ship )和卡车( truck )
2.官网下载地址
CIFAR-10 and CIFAR-100 datasets
有python版本 Matlab版本 二进制版本(我以python版本为例)
下载这个文件,该数据集文件包含data_batch1……data_batch5,和test_batch。batches.meta是一个python字典对象,如:abel_names[0] == “airplane”, label_names[1] == “automobile”
3.将data_batch1-5转换为jpg图片
代码和数据集文件夹上下级关系如下红框
11.py就是转换代码,如下:
import pickle
import numpy as np
import os
import cv2
def unpickle(file):
with open(file, 'rb') as f:
return pickle.load(f, encoding='bytes')
def main(cifar10_data_dir):
# 创建 train 和 test 文件夹
os.makedirs(os.path.join(cifar10_data_dir, 'train'), exist_ok=True)
os.makedirs(os.path.join(cifar10_data_dir, 'test'), exist_ok=True)
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(len(data[b'data'])):
img = np.reshape(data[b'data'][j], (3, 32, 32))
img = img.transpose(1, 2, 0)
img_name = 'train/' + str(data[b'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(len(data[b'data'])):
img = np.reshape(data[b'data'][i], (3, 32, 32))
img = img.transpose(1, 2, 0)
img_name = 'test/' + str(data[b'labels'][i]) + '_' + str(i) + '.jpg'
cv2.imwrite(os.path.join(cifar10_data_dir, img_name), img)
if __name__ == "__main__":
main('cifar-10-batches-py')
运行此代码后,应该会在 cifar-10-batches-py/train
和 cifar-10-batches-py/test
文件夹中生成JPEG图像