caffe例程——LeNet训练Mnist图片数据

本文详细介绍了如何使用Caffe训练LeNet模型来识别MNIST手写数字。从数据预处理,包括将MNIST数据转化为图片,制作LMDB数据,到编写网络配置文件,生成solver,训练模型,并通过可视化工具分析训练结果。最后,使用训练好的模型进行手写数字识别。
摘要由CSDN通过智能技术生成

参考博文


http://www.cnblogs.com/denny402/p/5684431.html

感谢博主徐其华随笔分类 - caffe系列教程,收获颇丰。在这里记录下自己学习训练和测试模型的过程,可以说相关知识是完全来自参考博文,只是记录一下自己实践中的问题和感悟。

 

一、数据准备

官网提供的mnist数据并不是图片,但我们以后做的实际项目多数可能是图片。因此有些人并不知道该怎么办。在此我将mnist数据进行了转化,变成了一张张的图片,我们练习就从图片开始。

linu下直接用wget下载  wget http://deeplearing.net/data/mnist/mnist.pkl.gz

mnist.pkl.gz其实是数据的训练集、验证集和测试集用pickle导出的文件被压缩为gzip格式,所以用python的gzip模块当成文件就可以读取。其中每个数据集是一个元组,第一个元素存储的是手写数字图片,表示每张图片是长度为28*28=784的一维浮点型numpy数组,这个数组就是单通道灰度图片按行展开得到,最大值为1(白),最小值为0(黑)。元组中的第二个元素是图片对应的标签,是一个一维的整型numpy数组,按照下标位置对应图片中的数字。然后运行 convert_mnist.py 将pickle格式的数据转换为图片。

 
 
  import os
  import pickle, gzip
  from matplotlib import pyplot
   
  # Load the dataset
  print('Loading data from mnist.pkl.gz ...')
  with gzip.open('mnist.pkl.gz', 'rb') as f:
  train_set, valid_set, test_set = pickle.load(f)
   
  imgs_dir = 'mnist'
  os.system('mkdir -p {}'.format(imgs_dir))
  datasets = { 'train': train_set, 'val': valid_set, 'test': test_set}
  for dataname, dataset in datasets.items():
  print('Converting {} dataset ...'.format(dataname))
  data_dir = os.sep.join([imgs_dir, dataname])
  os.system('mkdir -p {}'.format(data_dir))
  for i, (img, label) in enumerate(zip(*dataset)):
  filename = '{ :0>6d}_{}.jpg'.format(i, label)
  filepath = os.sep.join([data_dir, filename])
  img = img.reshape((28, 28))
  pyplot.imsave(filepath, img, cmap='gray')
  if (i+1) % 10000 == 0:
  print('{} images converted!'.format(i+1))

该脚本首先创建一个叫mnist的文件夹,然后在mnist下创建3个子文件夹train、val和test,分别用来保存对应3个数据集转换后产生的图片。每个文件的命名规则为第一个字段是序号,第二个字段是数字的值。

二、制作LMDB数据

LMDB差不多是CAFFE用来训练图片最常用的数据格式。caffe提供了专门为图像分类任务将图片转换为LMDB的官方工具,路径为caffe/build/tools/convert_imageset。要使用这个工具,第一步是生成一个图片文件路径的列表,每一行是文件路径和对应标签我,用space键或者制表符(tab)分开。运行gen_caffe_imglist.py,代码如下:

  import os
  import sys
   
  input_path = sys.argv[1].rstrip(os.sep)
  output_path = sys.argv[2]
   
  filenames = os.listdir(input_path)
   
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值