Caffe上训练使用自己的数据
2016-03-09 12:13
399 查看
Caffe上训练使用自己的数据
from: http://www.wjxfpf.com/2015/10/824918.html 接着上篇,上篇讲解了怎么在ubuntu下安装Caffe,如果一切没问题的话应该是可以用了,下面自己测试一下。
测试mnist
首先切换到caffe-master的主目录,mnist是作为一个演示存在于caffe-master/examples/mnist下的,需要三步来运行:<1>获得mnist手写数据库数据
$ sh data/mnist/get_mnist.sh
<2>根据获得的原始数据建立数据集(Lmdb形式)
$ sh examples/mnist/create_mnist.sh
<3>训练并获得验证集合的成功率
$ sh examples/mnist/train_lenet.sh
这些脚本Caffe都是写好了的,直接运行就可以了,如果没错的话,你应该看到类似于下面的输出
输出的内容就是创建相应的网络和进行迭代训练,这里我只截图了刚开始训练的部分,它会产生相应的model,以后我们就可以拿这些model去进行识别了
Caffe上训练使用自己的数据集
我就以这个来演示下如何使用caffe来使用自己的数据进行训练和识别(分类);这是自己做的中文汉字识别的一个实验,大概有3K多个汉字,我将每个汉字归为一个类,所以总共有3K多个类,然后就可以在上面训练识别。由于汉字什么的长得和手写数字还是很像的(明显不同与猫、狗之类的),所以我就偷懒用了mnist的网络结构来训练,最后效果也还不错。ps:数据多点结果应该更好点(1)对自己的数据进行分类
在我这个来说,就是把每个汉字归为一类,首先新建个train文件夹用来做训练,类的编号从0开始,1,2,3,4,5…….这样写,大概是这样的:
再建个val文件夹,用来做验证,val文件夹下所有的图片不用分类,直接放一起就可以了,大概是这样:
(2)写训练的数据集和验证的数据集TXT
train.txt就是将train文件夹下的图片归类,val.txt直接写图片的类编号,大概是这样:
(3)做数据集
从imagenet拷贝create_imagenet.sh,进行修改,主要写上自己的train和val的路径
修改完之后就可以运行了,会创建两个数据集:
(4)定义网络结构
上面说了,对于汉字我就采用了mnist的网络结构,直接拷贝(3)中获得的两个数据集到examples/mnist下,最后就是这样的:
红色圈出的是不需要的,当然如果你需要加均值的话,可以使用make_imagenet_mean.sh,改下路径就可以用了,但不是必须的
主要是修改lenet_train_test.prototxt文件的内容:
修改下路径就可以了,红色标明的地方
还有就是连接的个数,写上自己实际的类的个数,很重要不然会报错
(5)训练
直接运行lenet_train.sh就可以了,它调用lenet_train_test.prototxt的网络结构,学习率,decay之类的参数在lenet_solvet.prototxt里面,大家看着需要自己设置,会产生model文件和验证结果,类似于上面用mnist自带的数据集训练的结果
最后结果截图我就不放了,跟第一张差不多,说的就是迭代到多少次,成功率(accuracy)是多少,损失(loss)是多少
总结一下做自己的训练集的步骤:
<1>分类;将自己的训练数据分成类并写train.txt文件,val直接全放一起,写val.txt文档
<2>做数据集文件(lmdb)
<3>定义网络结构
<4>训练并验证
上面说的不太清楚的地方,欢迎咨询!
相关文章推荐
- 第三章:JavaScript中的三大流程控制
- JSON.NET对象序列化示例教程
- 用原生JS模仿jquery,需要HTML5的支持
- JQuery Mobile实现导航栏和页脚
- js兼容性错误导致没有办法留言
- [LeeCode]116. Populating Next Right Pointers in Each Node
- SkyLine JS API介绍及二次开发环境
- sts中新建项目时出现Original error: Could not transfer artifact org.hamcrest:hamcrest-core:jar:
- jsp:param
- leetcode刷题(19. Remove Nth Node From End of List)
- CSS3新属性box-flexd弹性盒模型
- CSS+Div (一)
- jquery实现图片缩小放大的切换
- CSS文档流与块级元素和内联元素
- js实现倒计时功能
- jQuery UI插件之datepicker的自定义设置
- JQuery随心笔记----JQuery对象和DOM对象的相互转换
- JavaScript装逼指南
- ZOJ Monthly, February 2016 - E:Ellipse
- js刷新页面方法大全