圖片資料集+使用資料+資料預處理
1、The CIFAR-10 dataset
10類,一共含有60000張32*32的彩色圖片,每類大概6000張,測試集大概1000張,5000張訓練集
網址:http://www.cs.toronto.edu/~kriz/cifar.html
2、imageNet資料集
3、ImageFolder
4、LSUN Classification
網址:http://lsun.cs.princeton.edu/2016/
5、COCO (Captioning and Detection
網址:http://mscoco.org/ (可能需要翻牆)
二、利用pytorch框架使用資料
為了方便資料的載入和預處理,pytorch中提供了一個torchvision包,幫助我們使用。
程式碼實現及註釋如下:
#coding=utf-8 import torch import torchvision import torchvision.transforms as transforms #transform用於資料的預處理 #使用CIFAR10分類資料集,一共6萬張資料圖片,5萬訓練,1萬測試 #下面使用 資料預處理 #神經網路為什麼要歸一化:https://blog.csdn.net/liuheng0111/article/details/52841838 #深度學習,資料的預處理:https://blog.csdn.net/dcxhun3/article/details/47999281 #預處理會幫助我們加快神經網路的訓練 #pytorch中,資料的預處理使用到transform函式: transform=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))]) #其中compose函式會將多個transforms包在一起。 #其中,transforms有好幾種,例如transforms.ToTensor(),transforms.Scale()等 #1、transforms.ToTensor()是把PIL.Image(RGB)或者numpy.ndarray(H*W*C)從0到255的值對映到0~1之間,並且轉化為Tensor的格式 #2、Normalize(mean,std)是通過公式:channel=(channel-mean)/std 實現資料歸一化, #經過資料歸一化,所有的資料都變成了(-1)~1之間的數了 trainset=torchvision.datasets.CIFAR10(root='./data',train=True,download=False,transform=transform) #訓練時,使用的是mini-batch(一次輸入多張圖片),則使用DataLoader工具將圖片分為每一組4張圖,一共12500份 trainloader=torch.utils.data.DataLoader(trainset,batch_size=4,shuffle=False,num_workers=2) classes = ('plane','car','bird','cat','deer','dog','frog','horse','ship','truck') print len(trainset) print len(trainloader) #下面的程式碼只是要顯示一個圖片的例子 #function to show an image import matplotlib.pyplot as plt import numpy as np def imshow(img): img=img/2+0.5 npimg=img.numpy() plt.imshow(np.transpose(npimg,(1,2,0))) plt.show() # show some random training images dataiter = iter(trainloader) images, labels = dataiter.next() # print images imshow(torchvision.utils.make_grid(images)) # print labels print(' '.join('%5s'%classes[labels[j]] for j in range(4)))
三、資料預處理
3.1 資料歸一化方法
特徵歸一化常用的方法:
簡單縮放 逐樣本均值消減(移除直流分量) 特徵標準化(使得資料集中所有特徵都具有零均值和單位方差)
3.2 簡單縮放
對資料的每個維度進行調節,使得資料向量落在【0,1】或者【-1,1】之間,如在影象處理時,畫素值在【0,255】之間,則通用是除以255
3.3 逐樣本均值消減
如果資料是平穩的(即資料的每個唯獨的統計都服從於相同的分佈),那麼可以從每個樣本上減去資料統計的平均值(逐個樣本計算)
例如:對於影象,這種歸一化可以移除影象的平均亮度值 (intensity)。很多情況下我們對影象的照度並不感興趣,而更多地關注其內容,這時對每個資料點移除畫素的均值是有意義的。注意:雖然該方法廣泛地應用於影象,但在處理彩色影象時需要格外小心,具體來說,是因為不同色彩通道中的畫素並不都存在平穩特性。
3.4 特徵標準化
特徵標準化:獨立地使資料的每個維度都具有0均值和單位方差。常作於資料的預處理
具體做法:先計算每個維度上的資料的均值,之後在每個維度上都減去該均值,然後再在資料的維度上除以該維度資料的標準差
3.5 PCA/ZCA 白化
資料歸一化後,白化作為接下來的預處理步驟,可以使用白化來獲取更好的特徵:
在進行白化時,step 1:使得特徵零均值化(),然後再計算協方差矩陣。
接下來在 PCA/ZCA 白化中我們需要選擇合適的 epsilon(回憶一下,這是規則化項,對資料有低通濾波作用)。 選取合適的 epsilon 值對特徵學習起著很大作用,下面討論在兩種不同場合下如何選取 epsilon:
1、 基於重構的模型 2、基於正交化的ICA的模型
具體見部落格(https://blog.csdn.net/dcxhun3/article/details/47999281)