图片数据集+使用数据+数据预处理

1、The CIFAR-10 dataset

10类,一共含有60000张32*32的彩色图片,每类大概6000张,测试集大概1000张,5000张训练集

网址:http://www.cs.toronto.edu/~kriz/cifar.html

2、imageNet数据集

网址:http://image-net.org/

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

 

 

 

 

 

  • 7
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Python中常用的数据集预处理工具包是NumPy和Pandas。 对于图片数据集的预处理,可以使用Pillow或OpenCV等图像处理库进行操作。以下是一个基本的图片预处理流程: 1. 读取图片文件,可以使用Pillow库中的Image.open()函数或OpenCV库中的cv2.imread()函数。 2. 调整图片大小,可以使用Pillow库中的Image.resize()函数或OpenCV库中的cv2.resize()函数。 3. 将图片转换为数组形式,可以使用Pillow库中的Image.asarray()函数或OpenCV库中的cv2.cvtColor()函数。 4. 对图片进行标准化处理,例如将像素值归一化到[0,1]之间或标准化到均值为0,方差为1的分布。可以使用NumPy库中的ndarray.min()和ndarray.max()函数或scikit-learn库中的StandardScaler类。 以下是一个示例代码,将读取图片、调整大小、转换为数组形式和标准化处理结合起来: ```python from PIL import Image import numpy as np from sklearn.preprocessing import StandardScaler # 读取图片文件 img = Image.open('example.jpg') # 调整图片大小 img_resize = img.resize((224,224)) # 将图片转换为数组形式并进行标准化处理 img_arr = np.asarray(img_resize).astype('float32') img_arr /= 255.0 scaler = StandardScaler() img_arr = scaler.fit_transform(img_arr) # 查看图片数组形状和数值范围 print(img_arr.shape) print(img_arr.min(), img_arr.max()) ``` 这段代码将读取名为“example.jpg”的图片文件,将其调整为224x224像素大小,然后将其转换为浮点数类型的数组,并在[0,1]范围内进行归一化处理。最后,使用StandardScaler类对数组进行标准化处理,得到均值为0,方差为1的分布形式。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值