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的更多相关文章

  1. caffe︱深度学习参数调优杂记+caffe训练时的问题+dropout/batch Normalization

    一.深度学习中常用的调节参数 本节为笔者上课笔记(CDA深度学习实战课程第一期) 1.学习率 步长的选择:你走的距离长短,越短当然不会错过,但是耗时间.步长的选择比较麻烦.步长越小,越容易得到局部最优 ...

  2. 使用caffe训练mnist数据集 - caffe教程实战(一)

    个人认为学习一个陌生的框架,最好从例子开始,所以我们也从一个例子开始. 学习本教程之前,你需要首先对卷积神经网络算法原理有些了解,而且安装好了caffe 卷积神经网络原理参考:http://cs231 ...

  3. 实践详细篇-Windows下使用Caffe训练自己的Caffemodel数据集并进行图像分类

    三:使用Caffe训练Caffemodel并进行图像分类 上一篇记录的是如何使用别人训练好的MNIST数据做训练测试.上手操作一边后大致了解了配置文件属性.这一篇记录如何使用自己准备的图片素材做图像分 ...

  4. Caffe训练AlexNet网络,精度不高或者为0的问题结果

    当我们使用Caffe训练AlexNet网络时,会遇到精度一值在低精度(30%左右)升不上去,或者精度总是为0,如下图所示: 出现这种情况,可以尝试使用以下几个方法解决: 1.数据样本量是否太少,最起码 ...

  5. caffe训练自己的图片进行分类预测--windows平台

    caffe训练自己的图片进行分类预测 标签: caffe预测 2017-03-08 21:17 273人阅读 评论(0) 收藏 举报  分类: caffe之旅(4)  版权声明:本文为博主原创文章,未 ...

  6. [caffe] caffe训练tricks

    Tags: Caffe Categories: Tools/Wheels --- 1. 将caffe训练时将屏幕输出定向到文本文件 caffe中自带可以画图的工具,在caffe路径下: ./tools ...

  7. Caffe训练AlexNet网络模型——问题三

    caffe 进行自己的imageNet训练分类:loss一直是87.3365,accuracy一直是0 解决方法: http://blog.csdn.net/jkfdqjjy/article/deta ...

  8. 使用caffe训练自己的图像数据(未完)

    参考博客:blog.csdn.net/drrlalala/article/details/47274549 1,首先在网上下载图片,猫和狗.直接保存下载该网页,会生成一个有图片的文件夹.caffe-m ...

  9. caffe训练自己的数据集

    默认caffe已经编译好了,并且编译好了pycaffe 1 数据准备 首先准备训练和测试数据集,这里准备两类数据,分别放在文件夹0和文件夹1中(之所以使用0和1命名数据类别,是因为方便标注数据类别,直 ...

随机推荐

  1. Java 线程池 Executor 框架

    在Java中,可以通过new Thread 的方法来创建一个新的线程执行任务,但是线程的创建是非常耗时的,而且创建出来的新的线程都各自运行.缺乏统一的管理,这样的后果是可能导致创建过多的线程从而过度消 ...

  2. java 银联接口开发

    http://blog.sina.com.cn/s/blog_6c868c470100ys59.html 在线接口文档:http://wenku.baidu.com/link?url=EUgAuOKz ...

  3. idea部署tomcat-404错误

    今天在部署数据质量web工程在tomcat后,访问时报404错误,在网上搜了很多相关配置,也都是一步一步来的 Application Context 也配置好了,Artifact也添加了,就是访问不了 ...

  4. go语言字符串练习

    package main import "fmt" import s"strings" var p = fmt.Println func main() { p( ...

  5. keepalived配虚拟ip(vip)的作用

    keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议. 虚拟路由冗余协议,可以认为是实现路由器高可用的 ...

  6. mysql cmd 无法登录

    第一次折腾mysql诉苦记 版本注明: mysql 5.7.21 本地部署mysql,配置完成后(配置没有问题) cmd命令连接mysql: mysql -uroot -p 提示: ERROR 104 ...

  7. mybatis缓存(一,二级别)

    数据查找过程: 二级缓存(默认关闭) -> 一级缓存(默认开启) -> 数据库 一级缓存: 一级缓存是SqlSession自带的.SqlSession对象被创建,一级缓存就存在了.//是针 ...

  8. canvas 实现圆环效果

    var race = document.getElementById('race'); var cxt = race.getContext('2d'); var ang = 0; var speed ...

  9. lambda表达式和表达式树(深入理解c#)

    1.Lambda形式 1). Lambda表达式最冗长的形式: (显式类型的参数列表)=>{语句} 2). 大多数时候,都可以用一个表达式来表示主体,该表达式的值是Lambda的结果,在这些情况 ...

  10. Linux 在文档中查找满足条件的行并输出到文件:

    Linux 在文档中查找满足条件的行并输出到文件: 文件名称: dlog.log    输出文件: out.log 1.满足一个条件(包含  “TJ”  )的语句: grep  “TJ”  dlog. ...