CIFAR-10/CIFAR-100數據集解析
覺得有用的話,歡迎一起討論相互學習~
CIFAR-10和CIFAR-100被標記為8000萬個微小圖像數據集的子集。他們由Alex Krizhevsky,Vinod Nair和Geoffrey Hinton收集。
CIFAR-10數據集
CIFAR-10數據集由10個類的60000個32x32彩色圖像組成,每個類有6000個圖像。有50000個訓練圖像和10000個測試圖像。
數據集分為五個訓練批次和一個測試批次,每個批次有10000個圖像。測試批次包含來自每個類別的恰好1000個隨機選擇的圖像。訓練批次以隨機順序包含剩余圖像,但一些訓練批次可能包含來自一個類別的圖像比另一個更多。總體來說,五個訓練集之和包含來自每個類的正好5000張圖像。
以下是數據集中的類,以及來自每個類的10個隨機圖像:

這些類完全相互排斥。汽車和卡車之間沒有重疊。“汽車”包括轎車,SUV,這類東西。“卡車”只包括大卡車。都不包括皮卡車。
airplane/automobile/bird/cat/deer/dog/frog/horse/ship/truck
CIFAR-10下載
數據集布局
Python / Matlab版本
我將描述數據集的Python版本的布局。Matlab版本的布局是相同的。
該存檔包含文件data_batch_1,data_batch_2,...,data_batch_5以及test_batch。這些文件中的每一個都是用cPickle生成的Python“pickled”對象。這里是一個python2例程,它將打開這樣的文件並返回一個字典:
def unpickle(file):
import cPickle
with open(file, 'rb') as fo:
dict = cPickle.load(fo)
return dict
下面是一個python3實例
def unpickle(file):
import pickle
with open(file, 'rb') as fo:
dict = pickle.load(fo, encoding='bytes')
return dict

以這種方式加載的每個批處理文件都包含一個包含以下元素的字典:
數據 - 一個10000x3072 uint8的numpy數組。陣列的每一行存儲32x32彩色圖像即每一行存儲32323=3072個數字信息。前1024個條目包含紅色通道值,下一個1024個綠色,最后1024個藍色。圖像以行優先順序存儲,以便數組的前32個條目是圖像第一行的紅色通道值。
標簽 - 范圍為0-9的10000個數字的列表。索引i處的數字表示陣列數據中第i個圖像的標簽。
該數據集包含另一個名為batches.meta的文件。它也包含一個Python字典對象。它有以下條目:
label_names - 一個10個元素的列表,它為上述標簽數組中的數字標簽賦予了有意義的名稱。例如,label_names [0] ==“飛機”,label_names [1] ==“汽車”等
二進制版本
二進制版本包含文件data_batch_1.bin,data_batch_2.bin,...,data_batch_5.bin以及test_batch.bin。這些文件中的每一個格式如下:
<1×標簽> <3072×像素>
...
<1×標簽> <3072×像素>
換句話說,第一個字節是第一個圖像的標簽,它是一個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-100中的類別列表:
| 超類 | 類別 |
|---|---|
| 水生哺乳動物 | 海狸,海豚,水獺,海豹,鯨魚 |
| 魚 | 水族館的魚,比目魚,射線,鯊魚,鱒魚 |
| 花卉 | 蘭花,罌粟花,玫瑰,向日葵,郁金香 |
| 食品容器 | 瓶子,碗,罐子,杯子,盤子 |
| 水果和蔬菜 | 蘋果,蘑菇,橘子,梨,甜椒 |
| 家用電器 | 時鍾,電腦鍵盤,台燈,電話機,電視機 |
| 家用家具 | 床,椅子,沙發,桌子,衣櫃 |
| 昆蟲 | 蜜蜂,甲蟲,蝴蝶,毛蟲,蟑螂 |
| 大型食肉動物 | 熊,豹,獅子,老虎,狼 |
| 大型人造戶外用品 | 橋,城堡,房子,路,摩天大樓 |
| 大自然的戶外場景 | 雲,森林,山,平原,海 |
| 大雜食動物和食草動物 | 駱駝,牛,黑猩猩,大象,袋鼠 |
| 中型哺乳動物 | 狐狸,豪豬,負鼠,浣熊,臭鼬 |
| 非昆蟲無脊椎動物 | 螃蟹,龍蝦,蝸牛,蜘蛛,蠕蟲 |
| 人 | 寶貝,男孩,女孩,男人,女人 |
| 爬行動物 | 鱷魚,恐龍,蜥蜴,蛇,烏龜 |
| 小型哺乳動物 | 倉鼠,老鼠,兔子,母老虎,松鼠 |
| 樹木 | 楓樹,橡樹,棕櫚,松樹,柳樹 |
| 車輛1 | 自行車,公共汽車,摩托車,皮卡車,火車 |
| 車輛2 | 割草機,火箭,有軌電車,坦克,拖拉機 |
| 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 |
CIFAR-100下載
CIFAR-100 python版本
CIFAR-100 Matlab版本
CIFAR-100二進制版本(適用於C程序)
數據集布局
Python/matlab版本
python和Matlab版本的布局與CIFAR-10相同.
二進制版本
CIFAR-100的二進制版本與CIFAR-10的二進制版本相似,只是每個圖像都有兩個標簽字節(粗略和細小)和3072像素字節,所以二進制文件如下所示:
<1 x粗標簽> <1 x精標簽> <3072 x像素>
...
<1 x粗標簽> <1 x精標簽> <3072 x像素>




