1. 程式人生 > >python3 cifar10圖片生成

python3 cifar10圖片生成

該資料集共有60000張彩色影象,這些影象是32*32,分為10個類,每類6000張圖。這裡面有50000張用於訓練,構成了5個訓練批,每一批10000張圖;另外10000用於測試,單獨構成一批。測試批的資料裡,取自10類中的每一類,每一類隨機取1000張。抽剩下的就隨機排列組成了訓練批。注意一個訓練批中的各類影象並不一定數量相同,總的來看訓練批,每一類都有5000張圖。

python3程式碼如下:

#encoding:utf-8
from scipy.misc import imsave
import numpy as np

# 解壓縮,返回解壓後的字典
def unpickle(file):
    import pickle
    fo = open(file, 'rb')
    dict = pickle.load(fo,encoding='bytes')
    fo.close()
    return dict

# 生成訓練集圖片,如果需要png格式,只需要改圖片字尾名即可。
for j in range(2, 6):
    dataName = "data_batch_" + str(j)  # 讀取當前目錄下的data_batch12345檔案,dataName其實也是data_batch檔案的路徑,本文和指令碼檔案在同一目錄下。
    Xtr = unpickle(dataName)
    print(dataName + " is loading...")

    for i in range(0, 10000):
        img = np.reshape(Xtr[b'data'][i], (3, 32, 32))  # Xtr['data']為圖片二進位制資料
        img = img.transpose(1, 2, 0)  # 讀取image
        picName = 'train/' + str(Xtr[b'labels'][i]) + '_' + str(i + (j - 1)*10000) + '.jpg'  # Xtr['labels']為圖片的標籤,值範圍0-9,本文中,train資料夾需要存在,並與指令碼檔案在同一目錄下。
        imsave(picName, img)
    print(dataName + " loaded.")

print( "test_batch is loading...")

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