CIFAR-10數據集說明


小白一枚~

  由於正在學習cs231n,第一節課就涉及到用這個數據集進行圖像分類。該數據集的頁面:http://www.cs.toronto.edu/~kriz/cifar.html

這篇隨筆可以看作個人對於cifar數據集的介紹的中文版,Orz大佬勿嘲笑~~

   

/*************************************************************************************************************************************************************/

CIFAR-10CIFAR-100是帶有標簽的數據集,都出自於規模更大的一個數據集,他有八千萬張小圖片(http://groups.csail.mit.edu/vision/TinyImages/。這個是一個大項目,你可以點擊那個big map提交自己的標簽,可以幫助他們訓練讓計算機識別物體的模型)

   

  • CIFAR-10

   

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

   

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

   

   

屏幕剪輯的捕獲時間: 2017/12/24 19:31

   

需要說明的是,這10類都是各自獨立的,不會出現重疊。

   

數據的下載:

(共有三個版本:python,matlab,binary version 適用於C語言)

http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz

http://www.cs.toronto.edu/~kriz/cifar-10-matlab.tar.gz

http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz

   

Baseline results (基線結果?還不是很懂)

  你可以在cuda-convert的項目頁面上找到此數據集上的一些基線可復制的結果。這個結果是由CNN卷積神經網絡得到的。簡要的說,在沒有數據擴充的情況下,測試誤差為18%,反之為11%。

emmm這段感覺關系不大。。。)

   

數據集布局

   

Python/Matlab 版本

  這兩個數據形式是一樣的,就以python為例。

  該數據集文件包含data_batch1……data_batch5,和test_batch。他們都是由cPickle庫產生的序列化后的對象(關於pickle,移步https://docs.python.org/3/library/pickle.html)。這里給出python2python3的例程,他可以打開這樣的pkl文件,返回一個字典結構的數據:

Python2:

1 def unpickle(file):
2 import cPickle
3 with open(file, 'rb') as fo:
4 dict = cPickle.load(fo)
5 return dict      

Python3:

 

1 def unpickle(file):
2 import pickle
3 with open(file, 'rb') as fo:
4 dict = pickle.load(fo, encoding='bytes')
5 return dict 

 

這樣的話,每個batch文件包含一個字典,每個字典包含有:

    • Data

        一個10000*3072numpy數組(numpy:https://docs.scipy.org/doc/numpy-dev/user/quickstart.html),數據類型是無符號整形uint8。這個數組的每一行存儲了32*32大小的彩色圖像(32*32*3通道=3072)。前1024個數是red通道,然后分別是green,blue。另外,圖像是以行的順序存儲的,也就是說前32個數就是這幅圖的像素矩陣的第一行。

         

   

    • labels

        一個范圍在0-9的含有10000個數的列表(一維的數組)。第i個數就是第i個圖像的類標。

         

  數據集除了6batch之外,還有一個文件batches.meta。它包含一個python字典對象,內容有:

一個包含10個元素的列表,每一個描述了labels array中每個數字對應類標的名字。比如:label_names[0] == "airplane", label_names[1] == "automobile"

   

   

 /******************************* 

二進制版本

  該版本包含5個訓練批data_batch_1.bin, data_batch_2.bin, ..., data_batch_5.bin,1個測試批test_batch.bin。他們的格式都是:

  

<1 x label><3072 x pixel>
...
<1 x label><3072 x pixel> 

 

來自 <http://www.cs.toronto.edu/~kriz/cifar.html>

   

  也就是說,第一個字節是指類標,在0-9之間。接下來就是3072個字節,內容與上面python版本的的一樣。每個文件都有10000這樣的3073個字節,沒有任何分隔行,所以每個文件都是30730000字節的長度。

    python版本類似,還有一個文件batches.meta.txt。這是一個ASCII文件,同樣是把0-9數字類標和每一類的名字對照起來。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM