如何将cifar-10数据集的图片转化为227*227像素以供Alexnet训练
2018-10-09 18:00
771 查看
下载cifar-10数据集
官网地址:http://www.cs.toronto.edu/~kriz/cifar.html
这是从官网下载好的python版cifar-10数据集
加载cifar-10数据集
def load_file(cifar): '''加载cifar数据集''' import pickle with open('D:\cifar-10-batches-py\\'+str(cifar), 'rb') as fo: data = pickle.load(fo, encoding='latin1') return data # 这里加载了第一个data_batch data = load_file('data_batch_1') print(data.keys()) X = data['data'] Y = data['labels'] print(X.shape) print(len(Y))
得到的结果是
dict_keys(['batch_label', 'labels', 'data', 'filenames']) (10000, 3072) 10000
data是一个字典,包含了四个键:‘batch_label’, ‘labels’, ‘data’, ‘filenames’
将data的data键对应的值赋给X。
X就是[10000,3072]的矩阵,10000代表着一个batch含有10000张图片,3072=32x32x3,代表着32x32像素的RGB图片。
Y是一个长度10000的列表,值为0-9,分别代表不同的类别。
修改cifar-10图片的分辨率
def convert_cifar10_227pix(X): ''' 将cifar-10数据集的原始矩阵[10000,3072]转化为[10000,227,227,3] 用于Alexnet训练 X - 原始矩阵 shape = [10000, 3072] m - 10000代表图片张数 n_H - 图片高度 n_W - 图片宽度 channel - RGB三色通道 ''' from PIL import Image import numpy as np X = np.reshape(X, (10000,3, 32, 32)) # 将图片转换成(m, channel,n_H,n_W) X = X.transpose(0, 2, 3, 1) # 转换成标准的矩阵(m, n_H,n_W, channel) X_resized = np.zeros((10000,227,227,3))# 创建一个存储修改过图片分辨率的矩阵 for i in range(0,10000): img = X[i] img = Image.fromarray(img) img = np.array(img.resize((227,227),Image.BICUBIC))# 修改分辨率,再转为array类 X_resized[i,:,:,:] = img X_resized /= 255 return X_resized
运行以下代码
import matplotlib.pyplot as plt X_resized = convert_cifar10_227pix(X) X = np.reshape(X, (10000,3, 32, 32)) X = X.transpose(0, 2, 3, 1) fig, axarr = plt.subplots(1, 2) axarr[0].imshow(X[4]) axarr[1].imshow(X_resized[4])
效果如图,左边为原始的32x32像素图片,右边为转换后227x227像素图片
总结
其实通过这种方法,可以把图片转换为想要的任意像素大小,不过这种方法对内存的占用很大,要注意一次转换的图片不要太多,不然可能内存就爆了。
阅读更多相关文章推荐
- 深度学习Caffe平台实例——CIFAR-10数据集在caffe平台上模型训练及实例使用模型进行预测
- CIFAR-10数据集比MNIST训练难度高许多
- tensirflow实战6:进阶的卷积神经网络训练CIFAR-10数据集
- caffe学习(二) CIFAR-10数据集上训练
- Tensorflow深度学习之二十二:AlexNet的实现(CIFAR-10数据集)
- 用Python3.x解析CIFAR-10数据集图片
- Cifar-10数据集的训练与测试
- Alexnet网络模型在cifar-10数据集上的实现(基于tensorflow-gpu)
- 如何根据CIFAR-10的格式制作自己的数据集(C/C++版)
- Alexnet训练Cifar10
- 【深度学习】笔记7: CNN训练Cifar-10技巧 ---如何进行实验,如何进行构建自己的网络模型,提高精度
- 用Python3.x解析CIFAR-10数据集图片
- Windows Caffe 学习笔记(一)训练和测试CIFAR-10数据集
- 移动WEB布局使用less语法之视网膜屏幕如何来解决图片像素问题
- caffe for windows 训练cifar10
- tensorflow官网Cifar-10改为自己的TFRecords数据集
- 【深度学习】针对CIFAR-10模型所写的进行图片size,图片名,后缀图片格式写的预处理程序
- caffe︱cifar-10数据集quick模型的官方案例
- tensorflow2caffe(1) : 如何将tensorflow框架下训练得到的权重转化为caffe框架下的权重参数
- 图片轮换的按钮如何通过像素定位