将cifar10数据集文件复原成图片格式

官方网站下载的文件 cifar-10-python 解压得到的数据如下:

将cifar10数据集文件复原成图片格式_第1张图片

可见并不是原始的图片数据;由于训练需要,这里需要转成图片格式。参考代码:https://www.cnblogs.com/dzzy/p/10824072.html

唯一问题是修改了该文章使用的  import scipy.misc,存在一点问题因此做了修改:引入imageio包

# import scipy.misc 
import numpy as np
import imageio # 引入imageio包

# 解压 返回解压后的字典
def unpickle(file):
    import pickle as pk
    fo = open(file, 'rb')
    dict = pk.load(fo, encoding='iso-8859-1')
    fo.close()
    return dict


# 生成训练集图片
for j in range(1, 6):
    dataName = "./data/imagenet/train/train/data_batch_" + str(j)  # 读取当前目录下的data_batch1~5文件。
    Xtr = unpickle(dataName)
    print(dataName + " is loading...")

    for i in range(0, 10000):
        img = np.reshape(Xtr['data'][i], (3, 32, 32))  # Xtr['data']为图片二进制数据
        img = img.transpose(1, 2, 0)  # 读取image
        picName = './data/imagenet/train/train/' + str(Xtr['labels'][i]) + '_' + str(i + (j - 1)*10000) + '.jpg'
        imageio.imsave(picName, img) # 使用的imageio的imsave类
    print(dataName + " loaded.")

print("test_batch is loading...")

# 生成测试集图片
testXtr = unpickle("data/imagenet/test/test/test_batch")
for i in range(0, 10000):
    img = np.reshape(testXtr['data'][i], (3, 32, 32))
    img = img.transpose(1, 2, 0)
    picName = 'data/imagenet/test/test/' + str(testXtr['labels'][i]) + '_' + str(i) + '.jpg'
    imageio.imsave(picName, img)
print("test_batch loaded.")

转换成功!

你可能感兴趣的:(将cifar10数据集文件复原成图片格式)