caffe 训练imagenet
1.整理得到自己的数据库,并生成自己数据库的列表文件.txt
2.将数据库转成lmbp格式
3.计算图像均值
4.修改网络参数
5.得到结果
1.整理得到自己的数据库
因为前面博文提到的原因,技术水平有限没办法实现主机和虚拟机之间的文件共享,就暂时先用比较麻烦的方法。现在主机上整理好需要的数据集
一共四个文件:两个图像库文件夹----测试、校正 ;两个图像库列表文件----测试、校
测试图像库文件夹中根据自己的分类类别在进行分类,比如我是用的两个类别,所以在测试图像库文件夹中还有两个文件夹:分别存放两个类别的图像
校正图像库文件夹中不用按照类别分类
列表文件为.txt文件,一共两个文件,其中存放的是文件名+对应的图像类别
特别注意:
1.train.txt和val.txt中是所有的训练图像库的数据,存放的信息为:文件名(空格)类别
2.对于train.txt一定要把上层目录也要添加到文档中,因为后面再脚本执行命令的时候,给的路径只是到/train,后面的子路径是木有,如果train.txt中不添加路径会报错找不到文件
在主机中整理好文件后,在caffe-master/data目录下新建mydata文件夹,并将文件夹的权限更改为可写(利用命令chmod go+w filename)
直接将主机中的文件复制粘贴到mydata目录下即可
2.将数据库转成lmbp格式
在caffe-master/examples目录下新建mytask文件并修改mytask文件的权限(sudo chomd go+w mytask),复制caffe-master/examples/imagenet目录下面的create_imagenet.sh脚本到mytask目录下(sudo cp create_imagenet.sh /caffe-master/examples/mytask ,先cd到create_imagenet.sh所在的目录下)
修改create_imagenet.sh脚本的权限 (sudo chmod go+w filename),修改脚本命令
修改前的脚本命令如下
修改后的脚本命令如下
绿框中为修改的部分,其实就是更改相应的目录,第一步的时候生成的.txt如果没有子目录就会报错,原因就在这里
修改后保存退出,然后执行脚本。可以看到会在mytask文件下生成两个文件,bingo
3.计算图像均值
直接利用/caffe-master/examples/imagenet中的计算均值的脚本make_imagenet_mean.sh,复制脚本到mytask目录下.进行如下修改,修改后运行。
运行后悲剧了,,,报错,,,查了原因竟然是内存溢出。。。。。醉了。。。。虚拟机果然是不给力呀。。。
后面的两步只能是理论指导了,,,个人也木有实践
4.修改网络的参数
将caffe-master/model/bvlc_reference_caffenet中的所有文件拷贝到mytask目录下,并对train_val.prototxt进行修改
如果你细心观察train_val.prototext,你会发现他们除了数据来源不同和最后一层不同,其他基本相同。在训练中,我们用一个softmax——loss层计算损失函数和初始化反向传播,而在验证,我们使用精度层检测我们的精度。
我们还有一个运行的协议solver.prototxt已经复制过来的文件,将第一行路径改为我们的路径 “examples/myself/train_val.prototxt”,从里面可以观察到,我们将运行256批次,迭代4500000次(90期),每1000次迭代,我们测试学习网络验证数据,我们设置初始的学习率为0.01,每100000(20期)次迭代减少学习率,显示一次信息,训练的weight_decay为0.0005,每10000次迭代,我们显示一下当前状态。
以上是教程的,实际上,以上需要耗费很长时间,因此,我们稍微改一下
test_iter: 1000是指测试的批次,我们就10张照片,设置10就可以了。
test_interval: 1000是指每1000次迭代测试一次,我们改成500次测试一次。
base_lr: 0.01是基础学习率,因为数据量小,0.01就会下降太快了,因此改成0.001
lr_policy: “step”学习率变化
gamma: 0.1学习率变化的比率
stepsize: 100000每100000次迭代减少学习率
display: 20每20层显示一次
max_iter: 450000最大迭代次数,
momentum: 0.9学习的参数,不用变
weight_decay: 0.0005学习的参数,不用变
snapshot: 10000每迭代10000次显示状态,这里改为2000次
solver_mode: GPU末尾加一行,代表用GPU进行(如果使用的CPU就改成CPU即可)
5.训练得到结果
将caffe-master/examples/imagenet中的train_caffnet.sh脚本拷贝到mytask目录下,修改脚本--修改目录 具体修改如下,修改完成后运行 静静等待结果即可
因为我的机器没办法跑,报内存溢出错误,就没办法给大家贴图了。
caffe 训练imagenet的更多相关文章
- caffe︱深度学习参数调优杂记+caffe训练时的问题+dropout/batch Normalization
一.深度学习中常用的调节参数 本节为笔者上课笔记(CDA深度学习实战课程第一期) 1.学习率 步长的选择:你走的距离长短,越短当然不会错过,但是耗时间.步长的选择比较麻烦.步长越小,越容易得到局部最优 ...
- 使用caffe训练mnist数据集 - caffe教程实战(一)
个人认为学习一个陌生的框架,最好从例子开始,所以我们也从一个例子开始. 学习本教程之前,你需要首先对卷积神经网络算法原理有些了解,而且安装好了caffe 卷积神经网络原理参考:http://cs231 ...
- 实践详细篇-Windows下使用Caffe训练自己的Caffemodel数据集并进行图像分类
三:使用Caffe训练Caffemodel并进行图像分类 上一篇记录的是如何使用别人训练好的MNIST数据做训练测试.上手操作一边后大致了解了配置文件属性.这一篇记录如何使用自己准备的图片素材做图像分 ...
- Caffe训练AlexNet网络,精度不高或者为0的问题结果
当我们使用Caffe训练AlexNet网络时,会遇到精度一值在低精度(30%左右)升不上去,或者精度总是为0,如下图所示: 出现这种情况,可以尝试使用以下几个方法解决: 1.数据样本量是否太少,最起码 ...
- caffe训练自己的图片进行分类预测--windows平台
caffe训练自己的图片进行分类预测 标签: caffe预测 2017-03-08 21:17 273人阅读 评论(0) 收藏 举报 分类: caffe之旅(4) 版权声明:本文为博主原创文章,未 ...
- [caffe] caffe训练tricks
Tags: Caffe Categories: Tools/Wheels --- 1. 将caffe训练时将屏幕输出定向到文本文件 caffe中自带可以画图的工具,在caffe路径下: ./tools ...
- Caffe训练AlexNet网络模型——问题三
caffe 进行自己的imageNet训练分类:loss一直是87.3365,accuracy一直是0 解决方法: http://blog.csdn.net/jkfdqjjy/article/deta ...
- 使用caffe训练自己的图像数据(未完)
参考博客:blog.csdn.net/drrlalala/article/details/47274549 1,首先在网上下载图片,猫和狗.直接保存下载该网页,会生成一个有图片的文件夹.caffe-m ...
- caffe训练自己的数据集
默认caffe已经编译好了,并且编译好了pycaffe 1 数据准备 首先准备训练和测试数据集,这里准备两类数据,分别放在文件夹0和文件夹1中(之所以使用0和1命名数据类别,是因为方便标注数据类别,直 ...
随机推荐
- linux 常用命令(三)ssh
linux 常用命令(三)SSH 一.SSH 安装及免密登陆 (1) SSH 安装并配置 CentOS 默认已安装了 SSH client.SSH server,打开终端执行如下命令进行检验 rpm ...
- [规则原则定理]规则原则定理章2ACID原则
ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability).一个支持事务(T ...
- 熟悉JSON
JSON是什么 JSON ( JavaScript Object Notation) ,是一种数据交互格式. 为什么有这个技术 Json之前,大家都用 XML 传递数据.XML 是一种纯文本格式,所以 ...
- 20155312 2006-2007-2 《Java程序设计》第六周学习总结
20155312 2006-2007-2 <Java程序设计>第六周学习总结 课堂笔记 学习进程 周一看视频-2h 周二以代码为中心看书-3h 课后选择题-5h 教材指导 应试 Linux ...
- 使用EventLog Analyzer进行VMware日志管理
- 使用kbmmw smart service 属性时的一个注意事项
kbmmw 5.0 以后支持smart service, 这个用起来非常方便,kbmmw 通过 定制属性来简化编程,可以参考我以前的文章.但是这个意味着使用单元引用一定要小心, 否则出了问题,都不知道 ...
- delphi 10 seattle 安卓服务开发(一)
从delphi 开始支持安卓的开发开始, 安卓service 开发一直都是delphier 绕不过去的坎, 以前也有开发service 的方法,但是都是手工处理启动文件,而且要修改很多东西,基本上成 ...
- FASTDFS 安装与开发
FASTDFS介绍 FastDFS开源地址:https://github.com/happyfish100 简介 FastDFS 是一个开源的高性能分布式文件系统(DFS). 它的主要功能包括:文件存 ...
- 百度图片http://img[0-9]\.imgtn.*?g此形式的链接图片下载方式
"""给出图片链接列表, 下载图片""" print(pic_urls) for pic_url in pic_urls: try: hos ...
- function类型(c++11)
1.c++五大可调用的对象 可调用的对象常常作为泛型算法的实参 1)函数 2)函数指针 函数名其实也是函数指针,只不过函数名是一个常量指针,它的值不能改变,只能指向该函数,不能改变它的值让它指向别的函 ...