转自网站:

http://blog.csdn.net/muyiyushan/article/details/70578077

1.准备数据

使用dog/cat数据集,在训练项目根目录下分别建立train和val文件夹,作为训练数据和验证数据的保存位置。train和val文件夹下各有两个文件夹:dogs和cats,分别保存dog和cat的图片。dog和cat分别有1000张训练图像和400张测试图像。

写一个python脚本文件,遍历train和val两个文件夹,分别生成train.txt和val.txt,其中保存图片的相对路径和标签。类似下面格式,但是最好要将cat和dog的路径顺序打乱,不要一开始全cat,之后全是dog。

/cats/cat.0.jpg 0
/cats/cat.1.jpg 0
/cats/cat.10.jpg 0
/cats/cat.100.jpg 0
/cats/cat.101.jpg 0
/cats/cat.102.jpg 0
/cats/cat.103.jpg 0
/cats/cat.104.jpg 0

  

 

2.数据预处理

2.1转换数据格式

使用convert_imageset.exe将原始图像转换成caffe直接读取的格式:lmdb或leveldb。默认是lmdb,如果要生成leveldb,要添加–backend=leveldb参数。建立convert_image.bat文件,里面命令如下。

SET GLOG_logtostderr=1
E:\Code\Caffe\caffe-master\caffe-master\Build\x64\Release\convert_imageset.exe --resize_width=256 --resize_height=256 E:\Code\Caffe\caffe-master\caffe-master\data\dogCat\train E:\Code\Caffe\caffe-master\caffe-master\data\dogCat\train.txt E:\Code\Caffe\caffe-master\caffe-master\data\dogCat\trainldb
E:\Code\Caffe\caffe-master\caffe-master\Build\x64\Release\convert_imageset.exe  --resize_width=256 --resize_height=256 E:\Code\Caffe\caffe-master\caffe-master\data\dogCat\val\ E:\Code\Caffe\caffe-master\caffe-master\data\dogCat\val.txt E:\Code\Caffe\caffe-master\caffe-master\data\dogCat\valldb
pause

参数说明: 
1. E:\Code\Caffe\caffe-master\caffe-master\Build\x64\Release\convert_imageset.exe是执行程序路径。 
2. –resize_width=256 –resize_height=256重新指定生成图像大小。 
3. E:\Code\Caffe\caffe-master\caffe-master\data\dogCat\train是训练图像存储位置。 
4. E:\Code\Caffe\caffe-master\caffe-master\data\dogCat\train.txt训练图像的索引文件。 
5. E:\Code\Caffe\caffe-master\caffe-master\data\dogCat\trainldb生成的lmdb格式文件路径。

测试图像同上。

注意:3的路径和4中train.txt里指定路径连接在一块是图像的绝对路径,否则找不到图片) 
执行convert_image.bat文件,即可生成lmdb文件,分别保存在指定路径中。

2.3计算图像均值

建立compute_mean.bat并执行,内容如下

E:\Code\Caffe\caffe-master\caffe-master\Build\x64\Release\compute_image_mean.exe E:\Code\Caffe\caffe-master\caffe-master\data\dogCat\trainldb E:\Code\Caffe\caffe-master\caffe-master\data\dogCat\train_mean.binaryproto

参数说明 
1. E:\Code\Caffe\caffe-master\caffe-master\Build\x64\Release\compute_image_mean.exe是计算均值的执行文件。 
2. E:\Code\Caffe\caffe-master\caffe-master\data\dogCat\trainldb上一步生成的了 lmdb文件路径。 
3. E:\Code\Caffe\caffe-master\caffe-master\data\dogCat\train_mean.binaryproto生成的均值文件,后缀是.binaryproto。

3.修改配置文件

在项目根目录新建train_val文件夹,将.\caffe-master\models\bvlc_reference_caffenet中的配置文件复制到train_val中。包括train_val.prototxt和solver.prototxt。

train_val.prototxt中修改mean_file路径(训练和测试时用同样的mean file)和data_source的路径,设置相应的batch_size。将最后一层fc8的num_output设置为相应的输出类别数目,也就是2。

solver.prototxt中设置如下。

net: "E:/Code/Caffe/caffe-master/caffe-master/data/dogCat/train_val/train_val.prototxt"
test_iter: 16
test_interval: 50
base_lr: 0.01
lr_policy: "step"
gamma: 0.1
stepsize: 2000
display: 20
max_iter: 10000
momentum: 0.9
weight_decay: 0.0005
snapshot: 500
snapshot_prefix: "E:/Code/Caffe/caffe-master/caffe-master/data/dogCat/caffenet_finetune"
solver_mode: CPU

  

net参数为刚才设置好的train_val.prototxt。 
test_iter为测试时使用的batch个数,test_iter*testbatch_size=test images number。 
test_interval: 测试的迭代间隔次数。 
max_iter:迭代次数。 

4.开始训练

建立caffe.bat训练模型。并保存log文件。

5.可视化训练过程

使用log文件可视化accuracy和loss等参数。

6.微调

1-5完成了从头训练一个模型,我们也可以从头训练一个模型。但是这样花费时间很多,而且如果训练数据不够多,训练精度也不高。基于迁移学习的思想,可以用自己的数据finetune用imagenet预训练过的模型,这样减少训练时间,效果也更好。实际上就是参数初始化方法不同。

下载预训练模型。

相应修改train_val.prototxt和solver.prototxt。train_val.prototxt中配置好数据文件路径,将最后一层的名称改掉,设置相应num_output,增大weights和bias的lr_mult(从头训练,要加快速度)。

solver.prototxt中减少初始学习率。

开始训练。

转载于:https://www.cnblogs.com/byteHuang/p/8017131.html

caffe 图片数据的转换成lmdb和数据集均值(转)相关推荐

  1. 获取minist数据并转换成lmdb

    caffe本身是没有数据集的,但在data目录下有获取数据的一些脚本.MNIST,一个经典的手写数字库,包含60000个训练样本和10000个测试样本,每个样本为28*28大小的黑白图片,手写数字为0 ...

  2. 【caffe-windows】 caffe-master 之图片转换成lmdb or leveldb

    前期准备: 文件夹train:此文件夹中按类别分好子文件夹,各子文件夹里存放相应图片 文件夹test:同train,有多少类就有多少个子文件夹 trainlabels.txt : 存的是训练集的标签 ...

  3. matlab将图片转成eps,【MATLAB】论文图片处理(各种数据图转换成eps格式)

    最近跟eps图片杠上了..转载一个人人网上matlab到eps图片输出格式较好的方法 随着Latex在论文编辑和排版的日益普及,越来越多的人写文章都用Latex,数据图表作为论文不可缺少的一部分,如何 ...

  4. matlab eps格式,【MATLAB】论文图片处理(各种数据图转换成eps格式)

    最近跟eps图片杠上了..转载一个人人网上matlab到eps图片输出格式较好的方法 随着Latex在论文编辑和排版的日益普及,越来越多的人写文章都用Latex,数据图表作为论文不可缺少的一部分,如何 ...

  5. SSD学习系列(二)LMDB概念以及将VOC数据集转换成LMDB格式

    LMDB概念 接上一篇,将SSDa caffen框架代码编译通过后y,接下来就可以利用其脚本将标注好的VOC格式数据集转换成LMDB格式,以便开始SSD模型训练. LMDB是Lightning Mem ...

  6. 数据集转换成LMDB格式

    文章来源https://www.cnblogs.com/dengshunge/p/10841108.html略加修改和补充. 介绍两种LMDB格式数据集的生成,一种是自己的数据集,一种是下载wider ...

  7. base64格式的图片数据如何转成图片

    base64格式的图片数据如何转成图片 一.总结 一句话总结:不仅要去掉前面的格式串,还需要base64_decode()解码才行. 1 // $base_img是获取到前端传递的值 2 $base_ ...

  8. 如何把TXT数据批量转换成EAN-8商品条码

    EAN-8码和EAN-13一样都是商品条码,不同的是EAN-13码是标准商品条码,而EAN-8码商品条码的缩短码,如果产品的外包装面积小于120平方公分时才可以向国家物品编码中心申请EAN-8商品条码 ...

  9. 电脑jpg图片怎么批量转换成png

    电脑jpg图片怎么批量转换成png?电商行业的职场工作中,时常会有这样的需求存在.如果是用一般的图片处理软件进行操作,效率往往过慢且容易出现遗漏等问题.这个时候职场人需要用到更加切合我们需求的办公软件 ...

最新文章

  1. Win10系统如何在防火墙里开放端口
  2. UVA - 10603 Fill(BFS求最小值问题)
  3. [Android]Android端ORM框架——RapidORM(v2.1)
  4. 寒冰王座(DGA最长路/完全背包)
  5. 实用知识点梳理:BGP协议、调制解调技术、路由特点、VOIP、FTP、Cookie、滑动窗口协议与自动重传请求
  6. 如何多人共同编辑_如何实现可多人协作的“在线excel”系统?
  7. 8-1:C++继承之对继承的理解和继承的基本使用,继承的格式
  8. 真机调试时部分日志丢失(魅族)
  9. Python风格总结:面向对象
  10. 【转】三星8552 手机提示升级系统 完成后重启 开机画面一直停留在三星的LOGO 一闪一闪 怎么办...
  11. 深入灵魂的共鸣 (《梦断代码》读后感)
  12. java修改ajax响应头401_当jquery ajax遇上401请求的解决方法
  13. blender_(uv应用)................http://digitalman.blog.163.com/blog/static/23874605620174172058299/...
  14. html5吻胸小游戏,html5气球大战小游戏代码
  15. Ubuntu下将中文目录修改为英文目录
  16. 计算某年母亲节是哪一天
  17. 2017 携程 笔试编程题 1
  18. pythoneducoder苹果梨子煮水的功效_【苹果梨子煮水喝的功效】_苹果好处_作用-大众养生网...
  19. 从王自如和老罗的论战中我貌似懂得了点神马...
  20. 图解LeetCode——592. 分数加减运算(难度:中等)

热门文章

  1. 西门子plm_西门子PLM副总裁:NX,智能的CAD平台
  2. c++builder中dbgrid控件排序_如何实现APP中各种布局效果?学会这几个控件就够了...
  3. python赋予x新值_快速为 Python 字典设置新的值
  4. 查找文件夹下所有文件名字_我的电脑如何快速查找文件,分分钟钟找到你想要的文件!...
  5. 日志查看技巧_10种Git技巧,让你省时省力又省心!
  6. 微信小程序 mpvue 获取元素的高度
  7. dynamodb 基本操作
  8. ansible动态inventory里的针对AWS中国的设置
  9. SPOJ-COT-Count on a tree(树上路径第K小,可持久化线段树)
  10. 《分析服务从入门到精通读书笔记》第四章、创建父子维度(7)