圖像分類常用數據集
- 1 CIFAR-10
- 2.MNIST
- 3.STL_10
- 4.Imagenet
- 5.L-Sun
- 6.caltech-101
在訓練神經網絡進行圖像識別分類時,常會用到一些通用的數據集合。利用這些數據集合可以對比不同模型的性能差異。下文整理常用的圖片數據集合(持續更新中)。
基本信息對比表格:
數據集合 | 類別數 | 圖像數/類 | 訓練集 | 測試集 | 圖像大小 | 格式 | 數據集大小 | 圖像內容 |
---|---|---|---|---|---|---|---|---|
CIFAR-10 | 10 | 6k | 5w | 1w | 32*32 | RGB | 163M | 交通工具,動物 |
MNIST | 10 | 7k | 6w | 1w | 28*28 | 灰度 | 54M | 手寫數字 |
STL_10 | 10 | 1300(label)+10W(unlabel) | 500 | 800 | 96*96 | RGB | 2.5G | 與cifar一樣 |
L-sun | 10 | – | – | – | 256*256 | RGB | >50G | 場景 |
1 CIFAR-10
CIFAR-10是RGB 彩色圖像數據集,是Hinton的學生Alex標注整理發布。
數據集發布網站:http://www.cs.toronto.edu/~kriz/cifar.html
一共包含10 個類別:飛機( airplane )、汽車( automobile )、鳥類( bird )、貓( cat )、鹿( deer )、狗( dog )、蛙類( frog )、馬( horse )、船( ship )和卡車( truck )。
每個圖片的尺寸為32 × 32 ,每個類別有6000個圖像,數據集中一共有50000 張訓練圖片和10000 張測試圖片。訓練數據背分別放在5個.bin文件中,測試數據放在1個文件中。
一個樣本由32323=3073 個字節組成,第一個字節為標簽label ,剩下3072 個字節為圖像數據。樣本和樣本之間沒高多余的字節分割, 每個二進制文件的大小是30730000 字節。
數據集合的文件目錄如下:
通過pytorch 讀入cifar-10數據文件:
transform=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)), ])
訓練集,將目錄./data下的cifar-10-batches-py文件夾中的全部訓練數據(50000張訓練圖片)加載到內存中,若download為True時,會自動從網上下載數據并解壓
trainset = torchvision.datasets.CIFAR10(root=’./data’, train=True, download=True, transform=transform)
將訓練集的50000張圖片劃分成12500份,每份4張圖,用于mini-batch輸入。shffule=True在不同epoch的數據遍歷時,打亂順序重新分組。num_workers=2:使用兩個子進程來加載數據
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4, shuffle=True, num_workers=2)
測試集,將目錄./data下的cifar-10-batches-py文件夾中的全部測試數據(10000張測試圖片)加載到內存中,若download為True時,會自動從網上下載數據并解壓
testset = torchvision.datasets.CIFAR10(root=’./data’, train=False, download=False, transform=transform)
將測試集的10000張圖片劃分成2500份,每份4張圖,用于mini-batch輸入。
testloader = torch.utils.data.DataLoader(testset, batch_size=4, shuffle=False, num_workers=2)
用for 循環enumerate在trainloader和testloader 中取批次數據即可。
for i, data in enumerate(trainloader, 0):
參考資料:https://blog.csdn.net/qq_41185868/article/details/82793025
2.MNIST
3.STL_10
官方網址:https://cs.stanford.edu/~acoates/stl10/
STL-10數據集是用于開發無監督特征學習、深度學習、自學習算法的圖像識別數據集。它的靈感來自CIFAR-10數據集,并進行了一些修改。與CIFAR-10相比,每一類別 標記訓練樣本數量較少.但是在監督訓練之前,提供了大量的未標記樣本來學習圖像模型。主要的困難是利用未標記的數據(來自與標記數據相似但不同的分布)來構建有用的先驗。我們還期望,該數據集以較高分辨率(96x96)將使其成為開發更具伸縮性的無監督學習方法的基準。
1.10個類:飛機、鳥、汽車、貓、鹿、狗、馬、猴、船、卡車。
2.圖像為96x96像素,彩色。
3.500張訓練圖像(10份)/每類,800張測試圖像/每類。
4.用于無監督學習的100000張無標簽圖像。這些樣本是從相似但分布更廣的圖像中提取出來的。例如,10類標簽中的動物外,它還包含其5.他類型的動物(熊、兔子等)和車輛(火車、公共汽車等)。
圖像是從ImageNet上標記的樣本中獲取的。
官網提供了matlab 版本(.mat)和python 版本(二進制文件)的數據文件,(我用的是python版本的文件)
二進制文件有數據文件和標簽文件:train_X.bin(數據文件)、train_y.bin(標簽文件)、test_X.bin和test_y.bin。在每個值中,數據存儲格式:uint8的數組。圖像以列主順序存儲,一次一個通道。也就是說,前9696值是紅色通道,后9696值是綠色,最后一個是藍色。標簽在1到10之間。未標記的數據集unlabeld.bin的格式相同,但不存在“y.bin”文件。
提供一個class_names.txt文件供參考,每行一個類名。
文件fold_index.txt包含用于訓練的每個fold的(0開始)索引。第一行包含第一個fold、第二行、第二個fols索引等等等。
感謝Martin Tutek為加載/查看STL-10提供代碼!鏈接:https://github.com/mttk/STL10
stl10在pytorch 中對應的數據載入接口:torchvision.datasets.STL10(root: str, split: str = ‘train’, folds: Optional[int] = None, transform: Optional[Callable] = None, target_transform: Optional[Callable] = None, download: bool = False)
4.Imagenet
網址:http://www.image-net.org/download.php
ImageNet是一個根據WordNet層次結構(目前只有名詞)組織的圖像數據庫,其中每個節點都由成百上千的圖像描述。目前平均每個節點有500多個圖像。
1500萬張,數據大小1TB,但是算力不夠的情況下只會用到其中的一些子集.
光imaget 2012 就是150G(下不動,下不動)
pytorch 提供的數據接口針對:ImageNet 2012 Classification Dataset.
要注冊,才能下載圖像,知乎操作:https://zhuanlan.zhihu.com/p/42696535
5.L-Sun
官網:https://www.yf.io/p/lsun-介紹l-sun 文章,比賽,數據集,有鏈接直轉到數據下載github倉庫
github:https://github.com/fyu/lsun
l-sun 是一個場景數據庫,包括10個場景.場景和對應的序號為:
bedroom 0 # --40G
bridge 1
church_outdoor 2
classroom 3
conference_room 4
dining_room 5
kitchen 6
living_room 7
restaurant 8
tower 9 #train+test --13.9G
tower-train-Minibatch_size為64,有11067個batch,約合70w張圖片)
6.caltech-101
官網:http://www.vision.caltech.edu/Image_Datasets/Caltech101/
加利福尼亞理工學院101類圖像數據庫,有101類物體的圖片。每個類別大約有40到800個圖像。大多數類別都有大約50張圖片。2003年9月由李飛飛、安德烈托和蘭扎托收藏。每個圖像的大小大約為300 x 200像素。(9144張,平均每個類別90張)
制作者們仔細點擊了這些圖片中每個對象的輪廓,輪廓信息包含在“Annotations.tar”下面,有一個matlab腳本可以查看注釋,
“show_annotations.m”。
caltech-256,30607張圖片,1.2G(平均每個類別119張.)
101 object, 256 object 都是folder 數據集合,使用pytorch dset.ImageFolder接口即可.