caffe 图片数据的转换成lmdb和数据集均值(转)
转自网站:
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和数据集均值(转)相关推荐
- 获取minist数据并转换成lmdb
caffe本身是没有数据集的,但在data目录下有获取数据的一些脚本.MNIST,一个经典的手写数字库,包含60000个训练样本和10000个测试样本,每个样本为28*28大小的黑白图片,手写数字为0 ...
- 【caffe-windows】 caffe-master 之图片转换成lmdb or leveldb
前期准备: 文件夹train:此文件夹中按类别分好子文件夹,各子文件夹里存放相应图片 文件夹test:同train,有多少类就有多少个子文件夹 trainlabels.txt : 存的是训练集的标签 ...
- matlab将图片转成eps,【MATLAB】论文图片处理(各种数据图转换成eps格式)
最近跟eps图片杠上了..转载一个人人网上matlab到eps图片输出格式较好的方法 随着Latex在论文编辑和排版的日益普及,越来越多的人写文章都用Latex,数据图表作为论文不可缺少的一部分,如何 ...
- matlab eps格式,【MATLAB】论文图片处理(各种数据图转换成eps格式)
最近跟eps图片杠上了..转载一个人人网上matlab到eps图片输出格式较好的方法 随着Latex在论文编辑和排版的日益普及,越来越多的人写文章都用Latex,数据图表作为论文不可缺少的一部分,如何 ...
- SSD学习系列(二)LMDB概念以及将VOC数据集转换成LMDB格式
LMDB概念 接上一篇,将SSDa caffen框架代码编译通过后y,接下来就可以利用其脚本将标注好的VOC格式数据集转换成LMDB格式,以便开始SSD模型训练. LMDB是Lightning Mem ...
- 数据集转换成LMDB格式
文章来源https://www.cnblogs.com/dengshunge/p/10841108.html略加修改和补充. 介绍两种LMDB格式数据集的生成,一种是自己的数据集,一种是下载wider ...
- base64格式的图片数据如何转成图片
base64格式的图片数据如何转成图片 一.总结 一句话总结:不仅要去掉前面的格式串,还需要base64_decode()解码才行. 1 // $base_img是获取到前端传递的值 2 $base_ ...
- 如何把TXT数据批量转换成EAN-8商品条码
EAN-8码和EAN-13一样都是商品条码,不同的是EAN-13码是标准商品条码,而EAN-8码商品条码的缩短码,如果产品的外包装面积小于120平方公分时才可以向国家物品编码中心申请EAN-8商品条码 ...
- 电脑jpg图片怎么批量转换成png
电脑jpg图片怎么批量转换成png?电商行业的职场工作中,时常会有这样的需求存在.如果是用一般的图片处理软件进行操作,效率往往过慢且容易出现遗漏等问题.这个时候职场人需要用到更加切合我们需求的办公软件 ...
最新文章
- Win10系统如何在防火墙里开放端口
- UVA - 10603 Fill(BFS求最小值问题)
- [Android]Android端ORM框架——RapidORM(v2.1)
- 寒冰王座(DGA最长路/完全背包)
- 实用知识点梳理:BGP协议、调制解调技术、路由特点、VOIP、FTP、Cookie、滑动窗口协议与自动重传请求
- 如何多人共同编辑_如何实现可多人协作的“在线excel”系统?
- 8-1:C++继承之对继承的理解和继承的基本使用,继承的格式
- 真机调试时部分日志丢失(魅族)
- Python风格总结:面向对象
- 【转】三星8552 手机提示升级系统 完成后重启 开机画面一直停留在三星的LOGO 一闪一闪 怎么办...
- 深入灵魂的共鸣 (《梦断代码》读后感)
- java修改ajax响应头401_当jquery ajax遇上401请求的解决方法
- blender_(uv应用)................http://digitalman.blog.163.com/blog/static/23874605620174172058299/...
- html5吻胸小游戏,html5气球大战小游戏代码
- Ubuntu下将中文目录修改为英文目录
- 计算某年母亲节是哪一天
- 2017 携程 笔试编程题 1
- pythoneducoder苹果梨子煮水的功效_【苹果梨子煮水喝的功效】_苹果好处_作用-大众养生网...
- 从王自如和老罗的论战中我貌似懂得了点神马...
- 图解LeetCode——592. 分数加减运算(难度:中等)
热门文章
- 西门子plm_西门子PLM副总裁:NX,智能的CAD平台
- c++builder中dbgrid控件排序_如何实现APP中各种布局效果?学会这几个控件就够了...
- python赋予x新值_快速为 Python 字典设置新的值
- 查找文件夹下所有文件名字_我的电脑如何快速查找文件,分分钟钟找到你想要的文件!...
- 日志查看技巧_10种Git技巧,让你省时省力又省心!
- 微信小程序 mpvue 获取元素的高度
- dynamodb 基本操作
- ansible动态inventory里的针对AWS中国的设置
- SPOJ-COT-Count on a tree(树上路径第K小,可持久化线段树)
- 《分析服务从入门到精通读书笔记》第四章、创建父子维度(7)