CIFAR-10 數據集
CIFAR數據集由 Alex Krizhevsky,Vinod Nair 和 Geoffrey Hinton 收集整理自8000萬張微型圖像數據集,其中CIFAR數據集又根據所涉及的分類對象數量,可分為CIFAR-10和CIFAR-100。該數據集主要用於深度學習的圖像分類,目前已被廣泛應用。
CIFAR數據集官網:http://www.cs.toronto.edu/~kriz/cifar.html
基本介紹
如上圖所示,CIFAR-10數據集包含了飛機、汽車、鳥等10個類別物體的32×32大小的彩色圖片,每個類別有6000張圖,計算可知,整個數據集一共有 6000×10=60000 張圖。其中,automobiles (汽車)和 trucks(卡車)盡管都屬於車類,但二者在分類時屬於不同的類,不存在重疊。汽車主要包括轎車、越野車之類的車;而卡車則只包含大卡車,皮卡車這樣的車則不屬於上述任意類別。
數據集划分了訓練集和測試集。訓練集一共50000張圖,每10000張作為一個批次(batch),每個批次包含了來自10個類別的1000張圖片。訓練集的批次是隨機抽取的各個類中的圖像,因此存在某一個類的圖像數量多於另一個類的圖像數量。測試集一共10000張圖,也包含了隨機從每個類中抽取的1000張圖。
下載
CIFAR-10 數據集提供了供 python、matlab、c 讀取的數據文件,具體如下:
版本 | 文件大小 | MD5檢驗碼 |
---|---|---|
CIFAR-10 python version | 163 MB | c58f30108f718f92721af3b95e74349a |
CIFAR-10 Matlab version | 175 MB | 70270af85842c9e89bb428ec9976c926 |
CIFAR-10 binary version (suitable for C programs) | 162 MB | c32a1d4ab5d03f1284b67883e8d87530 |
數據解讀
python和matlab版本
對於python和matlab版本,下載得到文件解壓后,會得到如下結構的文件:
即已經分好了的五個batch數據以及一個測試batch數據。
這些文件中的每一個都是用 cPickle 生成的 Python“ pickle”對象。 下面是一個 python 2例程,它將打開這樣一個文件並返回一個字典:
def unpickle(file):
import cPickle
with open(file, 'rb') as fo:
dict = cPickle.load(fo)
return dict
對於python 3 而言:
def unpickle(file):
import pickle
with open(file, 'rb') as fo:
dict = pickle.load(fo, encoding='bytes')
return dict
利用上面這種方式讀取批數據后,將返回以下元素的字典:
-
data
這是一個10000×3072的numpy數組,數據格式為unit8。其中每一行存儲了一張32×32的彩色圖像。即對於3072個值,每1024個值(32×32=1024)為圖片的一個通道數據,一共按順序包含了紅綠藍三個通道。
-
labels
這是一個長度為10000的數字列表,數字的取值范圍為0到9之間的整數,表示圖片所對應的標簽值。
此外,對於 batches.meta
文件,讀取后將返回字典:
-
label_names
這是一個10元素的列表,用於根據標簽值獲取對應的標簽名字,例如:
label_names[0] == "airplane", label_names[1] == "automobile
二進制版本
二進制版本的文件解壓后,將得到 data_batch_1.bin, data_batch_2.bin, ..., data_batch_5.bin,以及 test_batch.bin. 每個文件按照下面的格式生成:
<1 x label><3072 x pixel>
...
<1 x label><3072 x pixel>
換句話說,第一個字節是第一個圖像的標簽,它是一個范圍為0-9的數字。 接下來的3072字節是圖像的像素值。 前1024個字節是紅色通道值,接下來的1024是綠色的,最后的1024是藍色的。 這些值按照行大小順序存儲,因此前32個字節是圖像第一行的紅色通道值。
每個文件包含10000個這樣的3073字節的“行”圖像,盡管沒有划分行。 因此,每個文件應該正好是30730000字節長。
還有一個名為 batches.meta.txt 的文件。 這是一個 ASCII 文件,它將0-9范圍內的數字標簽映射到有意義的類名。 它僅僅是10個類名的列表,每行一個。 行 i 上的類名對應於數字標簽 i。
CIFAR-100 數據集
這個數據集就像 CIFAR-10,只不過它有100個類,每個類包含600張圖像。 每個班級有500個訓練圖像和100個測試圖像。 Cifar-100中的100個類被分成20個超類。 每個圖像都帶有一個“罰”標簽(它所屬的類)和一個“粗”標簽(它所屬的超類)。
與CIFAR-10類似,CIFAR-100包含了100個類別的物體,其中每個類別有600張圖片。每個類取500張作為訓練圖像,100張作為測試圖像。
在CIFAR-100 中,100各類別可以分類父類(Superclass)和子類(Classes)。一共有20個父類,其下又分子類。具體如下:
Superclass | Classes |
---|---|
aquatic mammals | beaver, dolphin, otter, seal, whale |
fish | aquarium fish, flatfish, ray, shark, trout |
flowers | orchids, poppies, roses, sunflowers, tulips |
food containers | bottles, bowls, cans, cups, plates |
fruit and vegetables | apples, mushrooms, oranges, pears, sweet peppers |
household electrical devices | clock, computer keyboard, lamp, telephone, television |
household furniture | bed, chair, couch, table, wardrobe |
insects | bee, beetle, butterfly, caterpillar, cockroach |
large carnivores | bear, leopard, lion, tiger, wolf |
large man-made outdoor things | bridge, castle, house, road, skyscraper |
large natural outdoor scenes | cloud, forest, mountain, plain, sea |
large omnivores and herbivores | camel, cattle, chimpanzee, elephant, kangaroo |
medium-sized mammals | fox, porcupine, possum, raccoon, skunk |
non-insect invertebrates | crab, lobster, snail, spider, worm |
people | baby, boy, girl, man, woman |
reptiles | crocodile, dinosaur, lizard, snake, turtle |
small mammals | hamster, mouse, rabbit, shrew, squirrel |
trees | maple, oak, palm, pine, willow |
vehicles 1 | bicycle, bus, motorcycle, pickup truck, train |
vehicles 2 | lawn-mower, rocket, streetcar, tank, tractor |
下載
版本 | 文件大小 | MD5校驗碼 |
---|---|---|
CIFAR-100 python version | 161 MB | eb9058c3a382ffc7106e4002c42a8d85 |
CIFAR-100 Matlab version | 175 MB | 6a4bfa1dcd5c9453dda6bb54194911f4 |
CIFAR-100 binary version (suitable for C programs) | 161 MB | 03b5dce01913d631647c71ecec9e9cb8 |
數據解讀
python和matlab版本
這里和CIFAR-10的類似,不多做解釋。
二進制版本
CIFAR-100的二進制版本與 CIFAR-10的二進制版本相似,只是每個圖像有兩個標簽字節(粗和細)和3072個像素字節,因此二進制文件看起來像這樣:
<1 x coarse label><1 x fine label><3072 x pixel>
...
<1 x coarse label><1 x fine label><3072 x pixel>