1_1_cifar10_to_png.py 2.1 KB
Newer Older
TensorSense's avatar
TensorSense 已提交
1 2 3 4 5 6 7 8 9 10
# coding:utf-8
"""
    将cifar10的data_batch_12345 转换成 png格式的图片
    每个类别单独存放在一个文件夹,文件夹名称为0-9
"""
from scipy.misc import imsave
import numpy as np
import os
import pickle

11 12 13 14

data_dir = os.path.join("..", "..", "Data", "cifar-10-batches-py")
train_o_dir = os.path.join("..", "..", "Data", "cifar-10-png", "raw_train")
test_o_dir = os.path.join("..", "..", "Data", "cifar-10-png", "raw_test")
TensorSense's avatar
TensorSense 已提交
15 16 17 18 19

Train = False   # 不解压训练集,仅解压测试集

# 解压缩,返回解压后的字典
def unpickle(file):
20 21
    with open(file, 'rb') as fo:
        dict_ = pickle.load(fo, encoding='bytes')
TensorSense's avatar
TensorSense 已提交
22 23 24 25 26 27 28 29 30 31 32
    return dict_

def my_mkdir(my_dir):
    if not os.path.isdir(my_dir):
        os.makedirs(my_dir)


# 生成训练集图片,
if __name__ == '__main__':
    if Train:
        for j in range(1, 6):
33
            data_path = os.path.join(data_dir, "data_batch_" + str(j))  # data_batch_12345
TensorSense's avatar
TensorSense 已提交
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
            train_data = unpickle(data_path)
            print(data_path + " is loading...")

            for i in range(0, 10000):
                img = np.reshape(train_data[b'data'][i], (3, 32, 32))
                img = img.transpose(1, 2, 0)

                label_num = str(train_data[b'labels'][i])
                o_dir = os.path.join(train_o_dir, label_num)
                my_mkdir(o_dir)

                img_name = label_num + '_' + str(i + (j - 1)*10000) + '.png'
                img_path = os.path.join(o_dir, img_name)
                imsave(img_path, img)
            print(data_path + " loaded.")

    print("test_batch is loading...")

    # 生成测试集图片
53
    test_data_path = os.path.join(data_dir, "test_batch")
TensorSense's avatar
TensorSense 已提交
54 55 56 57 58 59 60 61 62 63 64 65 66 67
    test_data = unpickle(test_data_path)
    for i in range(0, 10000):
        img = np.reshape(test_data[b'data'][i], (3, 32, 32))
        img = img.transpose(1, 2, 0)

        label_num = str(test_data[b'labels'][i])
        o_dir = os.path.join(test_o_dir, label_num)
        my_mkdir(o_dir)

        img_name = label_num + '_' + str(i) + '.png'
        img_path = os.path.join(o_dir, img_name)
        imsave(img_path, img)

    print("test_batch loaded.")