CIFAR10下載:http://www.cs.toronto.edu/~kriz/cifar.html
1. 數據集介紹
該數據集共有60000張彩色圖像,這些圖像是32*32,分爲10個類,每類6000張圖。這裏面有50000張用於訓練,構成了5個訓練批,每一批10000張圖;另外10000用於測試,單獨構成一批。測試批的數據裏,取自10類中的每一類,每一類隨機取1000張。抽剩下的就隨機排列組成了訓練批。注意一個訓練批中的各類圖像並不一定數量相同,總的來看訓練批,每一類都有5000張圖。
下面這幅圖就是列舉了10各類,每一類展示了隨機的10張圖片:
2. 將下載的數據轉化爲圖片
以Python的數據爲例說明,解壓後會得到如下數據:
該數據集文件包含data_batch1……data_batch5,和test_batch。batches.meta是一個python字典對象,如:abel_names[0] == "airplane", label_names[1] == "automobile"。
如何將該數據轉化爲圖片格式:
import cv2
import numpy as np
import os
def unpickle(file):
import cPickle
with open(file, 'rb') as f:
dict = cPickle.load(f)
return dict
def main(cifar10_data_dir):
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(10000):
img = np.reshape(data['data'][j], (3, 32, 32))
img = img.transpose(1, 2, 0)
img_name = 'train/' + str(data['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(10000):
img = np.reshape(data['data'][i], (3, 32, 32))
img = img.transpose(1, 2, 0)
img_name = 'test/' + str(data['labels'][i]) + '_' + str(i) + '.jpg'
cv2.imwrite(os.path.join(cifar10_data_dir, img_name), img)
if __name__ == "__main__":
main('cifar-10-batches-py')
轉化後的圖片存放在train和test兩個文件夾中,如圖:
end!!!