前期准备: 
文件夹train:此文件夹中按类别分好子文件夹,各子文件夹里存放相应图片 
文件夹test:同train,有多少类就有多少个子文件夹 
trainlabels.txt : 存的是训练集的标签 
testlables.txt: 存的是测试集的标签 
(特别注意:文件的路径以及文件名要对应)

第一步

生成train文件夹和test文件夹以及标签文件。本文用的是matlab对数据集进行读取,然后输出图片到相应文件夹中,并且生成标签文件。此处给出matlab的代码,请自行分析。

  1. %% 实现图片的输出,将图片输出到traintest两个文件夹下,并且对图片进行重命名
  2. % 同时给所有图片打标签,存于test_labels.txt trainlabels.txt
  3. %
  4. %
  5.  
  6. clear
  7. rand('seed',1);
  8. datadir = ('D:\matconvnet-beta23\data\chars74K\Fnt'); % 原数据集所在路径
  9. catedir=dir(datadir); % 获取数据集下信息
  10. trainratio = 0.8; % 百分之八十训练
  11. train_labels= fopen('train_labels.txt','wt'); % 创建标签文件
  12. test_labels = fopen('test_labels.txt','wt');
  13. class_num = 0 ; % 记录类别
  14. for i =3:length(catedir)
  15. sampdir=dir(fullfile(datadir,catedir(i).name,'\*.png')); % 获取类文件夹下 png图片,
  16. disp(['category ', num2str(i-2) , ' have ', num2str(length(sampdir)),'instance.']);
  17.  
  18. new_folder_train = ['./train/',catedir(i).name]; % 创建各类文件夹,按第i类创建
  19. new_folder_test = ['./test/',catedir(i).name];
  20. mkdir(new_folder_train);
  21. mkdir(new_folder_test);
  22. class_num =class_num + 1;
  23. for j = 1:length(sampdir)
  24. if j==1
  25. krand = randperm(length(sampdir)); % 随机选取图片,防止过拟合
  26. end
  27. kk = krand(j);
  28. img = imread(fullfile(datadir,catedir(i).name,sampdir(j).name)); % 读取
  29. name = [catedir(i).name,'\',sampdir(kk).name]; % 输出每张图片的名称
  30.  
  31. if j < length(sampdir) *trainratio % j是读取的第j个样本(子类中),j小于**时,设置为1,1是表示训练
  32. imwrite(img,[new_folder_train,'/',sampdir(kk).name]); % 注 :‘.png’
  33. fprintf(train_labels,'%s %s\n',name,num2str(class_num-1)); % 从0开始编号,写label的txt文件
  34. else
  35. imwrite(img,[new_folder_test,'/',sampdir(kk).name]);
  36. fprintf(test_labels,'%s %s\n',name,num2str(class_num-1)); % 从0开始编号
  37. end
  38. disp(['category ', num2str(i-2) , ' have ', num2str(length(sampdir)-2),' sample. ' ...
  39. 'sample ', ' ------ ', num2str(j) ]);
  40. end
  41. end
  42. fclose(train_labels);
  43. fclose(test_labels);

  

来看看生成的文件,此处将数据存于caffe-master\data\Chars74k下,因此train和test文件夹是在caffe-master\data\Chars74k下。 
 
如图所示,train文件夹里有62个子文件夹,分别代表62个类别,每个子文件夹里就是图片。Test文件夹同理。


如图所示,这训练集的标签文件,分两个部分。第一部分是路径,此处要注意, “Sample001\img001-00051.png ” 要与train文件夹里的图片的文件名一一对应,否则在用convert_imageset.exe进行转换格式时候会出现 找不到文件的提示。 
(PS:我直接就是在matlab中输出图片时,多加了’.png’,导致图片的文件名是 Sample001\img001-00051.png.png 最终导致找不到文件) 
第二部分就是标签了,这里的标签是从0开始表示第一个类别。特别注意,txt文件中,文件路径和标签中有一个空格。

  • 第二步

有了train和test以及对应标签文件,就可以利用 convert_imageset.exe将图片转换成LMDB或者LEVELDB的格式,这里采用批处理的方式。首先在caffe-master\data\Chars74k 文件夹下创建txt文件重命名为:convert_chars74k_LMDB.bat 
一定要把后缀改成 .bat ,然后将以下代码复制到文本中,保存。

  1. D:\caffe-master\Build\x64\Release\convert_imageset.exe --resize_width= --resize_height= ./train/ train_labels.txt train_lmdb -backend=lmdb
  2. D:\caffe-master\Build\x64\Release\convert_imageset.exe --resize_width= --resize_height= ./test/ test_labels.txt test_lmdb -backend=lmdb
  3. Pause

这里的每行包含七个部分,第一个部分:D:\caffe-master\Build\x64\Release\convert_imageset.exe 表示 convert_imageset.exe所在路径(PS,若是用Debug生成的,则在将Release改成Debug即可) 
第二、三部分,是对原始图片进行了resize,第四部分: 
./train/ 是训练图片文件所在路径,此处用了相对路径的形式(不了解相对路径的同学,请度娘 ./ ../的作用) 第五部分,train_labels.txt是训练集的标签 
第六部分:train_lmdb 是生成LMDB格式文件的文件名 
第七部分:-backend=lmdb 是所要转成的格式(要转成 leveldb的则改成 -backend=leveldb) 
然后双击运行convert_chars74k_LMDB.bat

运行正常的话,在文件夹caffe-master\data\Chars74k下会出现 
test_lmdb 和train_lmdb 两个文件夹。至此,已经将自己的数据集转换成为LMDB格式的数据了,即caffe可读的数据格式。

  • 第三步

训练 
此处和训练Mnist和Cifar-10一样可参考(http://blog.csdn.net/u011995719/article/details/53998331) 
训练需要写两个prototxt文件,一个是描述网络结构的,一个是超参数的设定。 
 

如图所示,一个是网络模型描述,一个是超参数设置,特别注意路径。

写好这两个文件之后,就可以利用caffe.exe进行训练啦。 
在文件夹caffe-master\data\Chars74k下,创建txt文件,重命名为caffe_train_Chars74k.bat(注意改后缀),然后复制以下代码:

  1. ..\..\Build\x64\Release\caffe.exe train --solver=./Chars74k_solver.prototxt
  2. Pause

同样的,注意路径就好。保存之后,双击运行即可。

【caffe-windows】 caffe-master 之 训练自己数据集(图片转换成lmdb or leveldb)的更多相关文章

  1. caffe 图片数据的转换成lmdb和数据集均值(转)

    转自网站: http://blog.csdn.net/muyiyushan/article/details/70578077 1.准备数据 使用dog/cat数据集,在训练项目根目录下分别建立trai ...

  2. Caffe:如何将图片数据转换成lmdb文件

    1 图片信息的转换 在caffe中经常使用的数据类型是lmdb或leveldb;不是常见的jpg,jpeg,png,tif等格式;因此,需要进行格式转换,通过输入你自己的图片目录(下有的大量图片)转换 ...

  3. 7.caffe:create_lmdb.sh(数据预处理转换成lmdb格式)

    个人实践代码如下: #!/usr/bin/env sh # Create the imagenet lmdb inputs # N.B. set the path to the imagenet tr ...

  4. 调用caffe脚本将图片转换为了lmdb格式

    #!/usr/bin/env sh # Create the imagenet lmdb inputs # N.B. set the path to the imagenet train + val ...

  5. ubuntu16.04+caffe训练mnist数据集

    1.   caffe-master文件夹权限修改 下载的caffe源码编译的caffe-master文件夹貌似没有写入权限,输入以下命令修改: sudo chmod -R 777 ~/caffe-ma ...

  6. windows+caffe(三)——求取图片的均值

    这个要在图片已经转化成lmdb格式下才能求均值... 1.查看caffe根目录下的bin是否存在compute_image_mean.exe(用的happey大神的) 如果没有存在,你需要打开Main ...

  7. caffe(9) caffe例子

    为了程序的简洁,在caffe中是不带练习数据的,因此需要自己去下载.但在caffe根目录下的data文件夹里,作者已经为我们编写好了下载数据的脚本文件,我们只需要联网,运行这些脚本文件就行了. 注意: ...

  8. 实践详细篇-Windows下使用VS2015编译的Caffe训练mnist数据集

    上一篇记录的是学习caffe前的环境准备以及如何创建好自己需要的caffe版本.这一篇记录的是如何使用编译好的caffe做训练mnist数据集,步骤编号延用上一篇 <实践详细篇-Windows下 ...

  9. Caffe初试(二)windows下的cafee训练和测试mnist数据集

    一.mnist数据集 mnist是一个手写数字数据库,由Google实验室的Corinna Cortes和纽约大学柯朗研究院的Yann LeCun等人建立,它有60000个训练样本集和10000个测试 ...

随机推荐

  1. wemall软件交易平台微信图文编辑器部分代码分享

    wemall软件交易平台微信图文编辑器部分代码,可下载: controller.php <?php date_default_timezone_set("Asia/chongqing& ...

  2. 4063: [Cerc2012]Darts

    4063: [Cerc2012]Darts Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 85  Solved: 53[Submit][Status] ...

  3. C++ IO学习

    关于IO,主要有这么三种类型:标准输入输出,文件输入输出,字符串流.后面两种都是继承自第一种标准输入输出的.他们分别对应的头文件是: 标准输入输出:#include <iostream> ...

  4. 'utf8' codec can't decode byte 0xd1 in position 931: invalid continuation byte解决方法

    有时候,我得到这样的字符œ导致的UnicodeDecodeError错误. 我需要能够使串的UTF-8有或没有这些字符. 在工作中,经常遇到,读取一个文件,或者是从网页获取一个问题,明明看着是gb23 ...

  5. 连接池 DBCP c3p0以及分页的案例

    1. 连接池 思考: 程序中连接如何管理? 连接资源宝贵:需要对连接管理 连接: a) 操作数据库,创建连接 b) 操作结束,  关闭! 分析: 涉及频繁的连接的打开.关闭,影响程序的运行效率! 连接 ...

  6. [LeetCode] 01 Matrix 题解

    题意 # 思路 我一开始的时候想的是嘴 # 实现 ```cpp // // include "../PreLoad.h" class Solution { public: /** ...

  7. 用js控制css属性

    在用js控制css属性时,行内css属性可以任意控制,但若是在<style></style>中写的css属性,均不能用alert读取,但是赋值却有几种现象, 第一种:无法读取, ...

  8. Flex表格中添加图片

      Flex4.5中datagrid加入图片显示image <s:DataGrid id="maingrid" x="0" y="36" ...

  9. NOI全国赛(2001)--食物链

    今天写了道并查集的题,看来并查集的题刷少了,,,,,用法好神奇啊!!!开三倍并查集 用i表示自己,i+n存天敌,i+2*n存可以克制de,再逻辑判断一下即可. 所以,要意识到并查集的分类处理可以开不同 ...

  10. git使用教程及github远程仓库管理

    git使用教程步骤 1.安装git 安装完后,在开始菜单里找到"git"->"Git Bash",蹦出一个类似命令行窗口,说明安装成功.2 注册git 在 ...