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集合

    list接口,可重复,有序的.list有arrayList,因为是数组结构,适合用在数据的查询,linkedList,因为是链表结构,适合用在增删操作.数组如果增删的话,需要后面的元素都往前或者往后移 ...

  2. idea15 生成mybatis代码

    pom.xml <build> <finalName>mybatis_generator</finalName> <plugins> <plugi ...

  3. java14

    1.方法:定义一个小功能,储存某段代码,方便在需要时调出来反复使用 !!!!重复使用 格式: static void 名称(){ } 注意点: ①在static main方法中要调用其他方法,调用的其 ...

  4. git安装项目步骤

    1.git clone git@gitee(github).com:项目地址.git 2.cd 项目根目录 3.composer install 4.如果需要数据迁移,cmd中到项目根目录 php a ...

  5. DevExpress 只允许修改指定列

    gridView1.OptionsBehavior.Editable = true; gridView1.OptionsBehavior.ReadOnly = false; foreach (Grid ...

  6. 修改oracle用户密码为永不过期

    错误提示:ORA-28001: the password has expired (DBD ERROR: OCISessionBegin) 解决方法:修改密码为永不过期 (1)查看用户的proifle ...

  7. java启动jar包中的指定类

    运行jar文件的方法是:java -jar xxx.jar 希望运行里面的具体某个类,这时可以通过:java -cp xxx.jar xxx.com.xxxx 其中-cp命令是将xxx.jar加入到c ...

  8. svn 提交代码 自动过滤技巧

    操作 在用svn管理版本时,有时希望在提交到服务器时,能过滤掉指定后缀名的所有文件,或指定名称的文件夹.文件名. 常见的文件夹名称和文件名如下: bin obj debug temppe *.suo ...

  9. UVaLive 4628 Jack's socks (贪心)

    题意:给定一个无向图,让你把所有点的和它的任意一个相邻点匹配起来,问你是方案是不是唯一,如果是,则输出方案. 析:贪心,很容易知道,如果一个点的度数是 1,那么它只有一个相邻点,这样的话,我们就可以把 ...

  10. ubuntu下非交互式安装MySQL

    $ sudo su -# MYSQL_PASS=nova 设定mysql的密码和nova数据库的密码# cat <<MYSQL_PRESEED | debconf-set-selectio ...