1. 数据集

MNIST手写体数据.bmp图片:训练集60K张28*28的,测试集10K张28*28的;

训练集:

测试集:

下载地址:

2. 读取图片名称与标签,保存到trainlist.txt与testlist.txt

matlab代码:

(1)读取train

改为自己的数据url

clc

%% 读取文件夹里的图片名称,且将图片名保存到txt
file_path = 'D:\deeptools\caffe-windows-master\data\mnist\train-images\';
img_path_list = dir(strcat(file_path,'*.bmp'));
img_num = length(img_path_list);
fp = fopen('train.txt','wt');
if img_num > %有满足条件的图像
for j = :img_num %逐一读取图像
image_name = img_path_list(j).name;% 图像名 fprintf(fp,'%s %d\n',image_name,str2num(image_name()));
% csvwrite('train.txt',image_name) % image = imread(strcat(file_path,image_name));
% fprintf('%d %d %s\n',i,j,strcat(file_path,image_name));% 显示正在处理的图像名
%图像处理过程 省略
end
end

结果(部分)是:

(2)val代码

改为自己的test数据URL;

clc

%% 读取文件夹里的图片名称,且将图片名保存到txt
file_path = 'D:\deeptools\caffe-windows-master\data\mnist\t10k-images\';
img_path_list = dir(strcat(file_path,'*.bmp'));
img_num = length(img_path_list);
fp = fopen('test.txt','wt');
if img_num > 0 %有满足条件的图像
for j = 1:img_num %逐一读取图像
image_name = img_path_list(j).name;% 图像名 fprintf(fp,'%s %d\n',image_name,str2num(image_name(1)));
% csvwrite('train.txt',image_name) % image = imread(strcat(file_path,image_name));
% fprintf('%d %d %s\n',i,j,strcat(file_path,image_name));% 显示正在处理的图像名
%图像处理过程 省略
end
end

  部分结果为:

(3) test代码

改为自己的test数据URL;

clc

%% 读取文件夹里的图片名称,且将图片名保存到txt
file_path = 'D:\deeptools\caffe-windows-master\data\mnist\t10k-images\';
img_path_list = dir(strcat(file_path,'*.bmp'));
img_num = length(img_path_list);
fp = fopen('test.txt','wt');
if img_num > %有满足条件的图像
for j = :img_num %逐一读取图像
image_name = img_path_list(j).name;% 图像名 fprintf(fp,'%s\n',image_name);
% csvwrite('train.txt',image_name) % image = imread(strcat(file_path,image_name));
% fprintf('%d %d %s\n',i,j,strcat(file_path,image_name));% 显示正在处理的图像名
%图像处理过程 省略
end
end

结果为:

3. 现在将数据转变为lmdb格式储存

(1)我们新建一个train_lmdb文件夹(反正是如果我不事先建立这个文件夹就会出错,如下图)

和一个convert.bat文件,里面写入

D:/deeptools/caffe-windows-master/bin/convert_imageset.exe --shuffle D:/deeptools/caffe-windows-master/data/mnist/train-images/ D:/deeptools/caffe-windows-master/examples/mymnist/train.txt D:/deeptools/caffe-windows-master/examples/mymnist/train_lmdb
pause

我们使用了--shuffle:意思是随机打乱图片顺序

结果是在新建的train_lmdb文件夹里新生成了这两个文件:

为了确定你成功了,最好看一下生成的log文件夹里以INF开头的看看里面的图片总数是不是你的图片数量。

(2)同上一样得到val_lmdb

4.求得均值——

图片减去均值后,再进行训练和测试,会提高速度和精度。因此,一般在各种模型中都会有这个操作。

那么这个均值怎么来的呢,实际上就是计算所有训练样本的平均值,计算出来后,保存为一个均值文件,在以后的测试中,就可以直接使用这个均值来相减,而不需要对测试图片重新计算。

新建ComputeImageMean.bat,里面输入

D:/deeptools/caffe-windows-master/bin/compute_image_mean.exe D:/deeptools/caffe-windows-master/examples/mymnist/train_lmdb D:/deeptools/caffe-windows-master/examples/mymnist/mean.binaryproto
pause

结果:

至于转换成leveldb格式和用这个格式求均值都可以从我的另一篇看到。。

5.现在我们仔细编写一下solve.prototxt与train_test.prototxt

因操作失误,现在链接不上远程 待续。。。。。

windows+caffe(五)——实例2MNIST图片的更多相关文章

  1. caffe训练自己的图片进行分类预测--windows平台

    caffe训练自己的图片进行分类预测 标签: caffe预测 2017-03-08 21:17 273人阅读 评论(0) 收藏 举报  分类: caffe之旅(4)  版权声明:本文为博主原创文章,未 ...

  2. [C13] 应用实例:图片文字识别(Application Example: Photo OCR)

    应用实例:图片文字识别(Application Example: Photo OCR) 问题描述和流程图(Problem Description and Pipeline) 图像文字识别应用所作的事是 ...

  3. Windows phone应用开发[21]-图片性能优化

    在windows phone 中常在列表中会常包含比较丰富文字和图片混排数据信息. 针对列表数据中除了谈到listbox等控件自身数据虚拟化问题外.虽然wp硬件设备随着SDK 8.0 发布得到应用可使 ...

  4. 转:Windows Socket五种I/O模型

    原文转自:  Windows Socket五种I/O模型 Winsock 的I/O操作: 1. 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序.套接字 默认为阻塞模 ...

  5. 每天一个JavaScript实例-推断图片是否载入完毕

    <!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  6. 重新想象 Windows 8 Store Apps (29) - 图片处理

    原文:重新想象 Windows 8 Store Apps (29) - 图片处理 [源码下载] 重新想象 Windows 8 Store Apps (29) - 图片处理 作者:webabcd介绍重新 ...

  7. 使用CSS3的clip-path(裁剪路径)实现剪贴区域的显示以及实例实现图片渐变

    clip-path介绍 clip-path 直译过来就是裁剪路径,使用SVG或形状定义一个HTML元素的可见区域的方法.想象一下你在Photoshop中勾勒路径的场景.MDN上是这样介绍 clip-p ...

  8. CSS实例:图片导航块

    1.认识CSS的 盒子模型. 2.CSS选择器的灵活使用. 3.实例: a.图片文字用div等元素布局形成HTML文件. b.新建相应CSS文件,并link到html文件中. c.CSS文件中定义样式 ...

  9. Windows进程单实例运行

    场景         Windows进程单实例运行,如果有进程没有退出,继续等待,直到进程完全退出,才会进入下一个实例 HANDLE pHandle = NULL; do  {  pHandle = ...

随机推荐

  1. PHP 获取当天 凌晨 时间戳常用代码

    echo strtotime(date('Y-m-d')); 获取明天凌晨的时间戳代码:echo strtotime(date('Y-m-d',strtotime('+1 day'))); 附上测试代 ...

  2. UIKit的外观属性及方法汇总

    本文授权转载,作者:楚天舒(简书) 开发中经常会碰到要设置UI的某个生僻的外观属性,虽然在头文件中都能查到,但一是每个控件的头文件比较分散繁杂,二是每个头文件里有太多不用到的方法和属性,所以这里将UI ...

  3. WP8.1 状态栏隐藏

    StatusBar statusbar = StatusBar.GetForCurrentView(); await statusbar.HideAsync();

  4. eclipse下的emacs风格快捷键

    Ieclipse emacs类快捷键 win + shift + b 切换设置断点 win + shift + f 格式化代码 win + shift + l 显示绑定的快捷键 win + shift ...

  5. python 类型大小

    返回单位:字节 sys.getsizeof() import sys>>> sys.getsizeof(') >>> sys.getsizeof(') >&g ...

  6. spark编写word count

    创建SparkContext对象的时候需要传递SparkConf对象,SparkConf至少需要包含spark.master和spark.app.name这两个参数,不然的话程序不能正常运行 obje ...

  7. delphi 弹出选择目录窗口

    if not SelectDirectory( '请选择输出文件路径','/',directory) then begin Exit; end; 使用SelectDirectory函数注意要在use下 ...

  8. NOI 1.5 42:画矩形

    描述 根据参数,画出矩形. 输入 输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽不少于5列不多于10列):第三个参数是一个字符,表示用来画图的矩形符号:第 ...

  9. Leetcode: Unique Substrings in Wraparound String

    Consider the string s to be the infinite wraparound string of "abcdefghijklmnopqrstuvwxyz" ...

  10. 【js跨域】js实现跨域访问的几种方式

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...