CIFAR10數據集轉化爲圖片

CIFAR10下載:http://www.cs.toronto.edu/~kriz/cifar.html

1. 數據集介紹

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

      下面這幅圖就是列舉了10各類,每一類展示了隨機的10張圖片:       

Caption

 

2. 將下載的數據轉化爲圖片

      以Python的數據爲例說明,解壓後會得到如下數據:

Caption

      該數據集文件包含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兩個文件夾中,如圖:

Caption

end!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章