在caffe提供的例程当中,例如mnist与cifar10中,数据集的准备均是通过调用代码自己完成的,而对于ImageNet1000类的数据库,对于高校实验室而言,常常面临电脑内存不足的尴尬境地。而对于应用者而言,用适合于自己条件的的数据集在caffe下训练及测试才是更重要的。所以我们有必要自己做数据库以及在caffe上训练及测试。
1,数据准备
在data中新建文件夹myself,我们截取了ImageNet1000类中的两类—panda与sea_horse,训练panda的图片24张,测试panda的图片6张,训练sea_horse的图片38张,测试sea_horse的图片7张。如图所示:


培训和测试的输入是用train.txt和val.txt描述的,这些文档列出所有文件和他们的标签。注意,在imagenet1000类中,我们分类的名字是ASCII码的顺序,即0-999,对应的分类名和数字的映射在synset_words.txt(自己写)中。
运行以下指令:

find -name *.jpeg |cut -d '/' -f2-3> train.txt

注意路径
然后,因为自己的数据库样本数比较少,可以自行手动做分类标签。在train.txt的每个照片后用1-2分类。如图:

当样本过多,就自己编写指令批量处理。
同理,获得val.txt。matlab(windows下)批量处理代码如下:

% batch write in txt
clear all
clc
file=dir('F:\animal\sea_horse');
temp=length(file);
file=file(3:temp);
fp=fopen('F:\animal\animal.txt','at');
% 'at' open or create file for reading and writing; append data to end of file
% 'wt' discard existing contents
for n=1:length(file)fprintf('iter=%d\n',n)txt=[file(n).name ' 2' '\n'];fprintf(fp,txt);
end
fclose(fp);

Test.txt不能标签,全部设置成0。
我们还需要把图片的大小变成256X256,官网上提供了下面的命令:

for name in /path/to/imagenet/val/*.JPEG; do
convert -resize 256x256\! $name $name
done

但是我自己并没有成功,就只好用matlab(windows下)代码处理了一下:

for n=1:length(file)temp=imread(['F:\animal\panda\' file(n).name]);temp=imresize(temp,2);temp=imresize(temp,[256 256]);imwrite(temp,['F:\animal\panda\' file(n).name]);
end

然后在caffe-master/examples中新建myself文件夹,然后将caffe-maester/examples/imagenet的create_imagenet.sh复制到该文件夹下,将其名改为create_animal.sh,修改训练和测试路径的设置,运行该sh.如图:


最后得到myself_train_lmdb和myself_val_lmdb:

2 计算图像均值
模型需要我们从每张图片减去均值,所以我们必须获得训练的均值,用
tools/compute_image_mean.cpp实现,这个cpp是一个很好的例子去熟悉如何操作多个组建,例如协议的缓冲区,leveldbs,登录等。我们同样复制caffe-maester/examples/imagenet的
./make_imagenet_mean到examples/myself中,将其改名为make_animal_mean.sh,加以修改路径。

3 网络的定义
把caffe-master/models/bvlc_reference_caffenet中所有文件复制到caffe-master/examples/myself文件夹中,修改train_val.prototxt,注意修改数据层的路径。如图:


如果你细心观察train_val.prototext,你会发现他们除了数据来源不同和最后一层不同,其他基本相同。在训练中,我们用一个softmax——loss层计算损失函数和初始化反向传播,而在验证,我们使用精度层检测我们的精度。

我们还有一个运行的协议solver.prototxt,复制过来,将第一行路径改为我们的路径net: “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进行

4 训练
把caffe-master/examples/imagenet中的train_caffenet.sh复制过来并修改名为train_myself.sh运行,修改里面的路径,如图:

当然,只有两类,正确率还是相当的高,例如迭代到2000次的时候,正确率是0.924,即13张var样本只有1张预测错了。
如图:

5 恢复数据
把caffe-master/examples/imagenet中的resume_training.sh复制过来并运行。
我们用指令./即可。

参照材料:学习笔记3 用自己的数据训练和测试“CaffeNet” 2014.7.22 薛开宇
Caffe官网 ImageNet tutorial

Caffe下自己的数据训练和测试相关推荐

  1. 利用Caffe实现mnist的数据训练

    阿里云的参考文档:https://help.aliyun.com/document_detail/49571.html 在文档里提供了caffe的一个案例,利用Caffe实现mnist的数据训练.准备 ...

  2. Caffe学习系列(12):训练和测试自己的图片

    学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个流程. 一.准备数据 有条件的同学,可以去 ...

  3. 【caffe】mnist数据集lenet训练与测试

    在上一篇中,费了九牛二虎之力总算是把Caffe编译通过了,现在我们可以借助mnist数据集,测试下Caffe的训练和检测效果. 准备工作:在自己的工作目录下,新建一个文件夹,命名为mnist_test ...

  4. fgvc-aircraft-2013b飞机细粒度数据训练集和测试集划分python代码

    fgvc-aircraft-2013b是细粒度图像分类和识别研究中经典的benchmarks,它包含四种类型的标注: (1)按照manufacturer进行划分,可分为30个类别,例如ATR.Airb ...

  5. windows7下darknet配置yolov3训练及测试完整教程

    darknet yolov3下载链接如下:注意是yolov3分支不是master https://github.com/AlexeyAB/darknet/tree/Yolo_v3 在win7下配置环境 ...

  6. EAST: An Efficient and Accurate Scene Text Detector(自然场景下文本识别)训练,测试

    首先介绍一下我的环境配置,ubuntu16.04+cuda9.0,cudnn7.0,tensorflow-gpu=1.8 简介 其实对这个不是很有研究的,只是要参加一个阿里天池的比赛,然后用这个跑了一 ...

  7. matlab 批量划分数据训练集测试集

    背景 从UCI下载的数据集需要进行一定的数据预处理,我下载了12个数据集准备在上面验证我的方法,但是数据处理花了好久时间 文件结构 dataset_mat存放原始的没有划的.mat文件,preproc ...

  8. Caffe上用SSD训练和测试自己的数据

        学习caffe第一天,用SSD上上手. 我的根目录$caffe_root为/home/gpu/ljy/caffe    一.运行SSD示例代码    1.到https://github.com ...

  9. caffe安装,编译(包括CUDA和cuDNN的安装),并训练,测试自己的数据(caffe使用教程)

    caffe是一个非常清晰且高效的深度学习框架,目前有着不少的用户,也渐渐的形成了自己的社区,社区上可以讨论相关的问题. 我从开始看深度学习的相关内容到能够用caffe训练测试自己的数据,看了不少网站, ...

最新文章

  1. postman测试上传文件
  2. 海南大学植物保护学院刘铜教授课题组招聘简介
  3. 如何短时间提高python面向对象_初识Python面向对象阶段,你们都是怎么过来的?
  4. 顺序表链表 LeetCode专项练习 [19]\[24]
  5. 一个基于SAP Hybris Commerce和微信的社交电商原型介绍
  6. fort77编译器安装
  7. 斐波那契数列;递归函数;爬楼梯问题;
  8. 如何轻松记忆Linux文件系统层次结构
  9. wx僵尸粉检测,真实好友1.0(无障碍检测好友状态)
  10. 第三次个人作业——关于K米(Andorid)的案例分析
  11. 字节跳动的“飞阅会”开会模式:先笔谈 后PK 直接生成会议纪要
  12. 僵尸网络是什么;僵尸网络有什么特点
  13. MTK修改sysemUI下拉的宽度为全屏
  14. mysql的用户名迁移SCHEMA_数据库实时转移之Confluent环境搭建(二)
  15. 关于固定总价合同的建设工程项目审计的几点思考
  16. 用经典的模拟退火算法求解30城市小规模的TSP问题
  17. HCS12X微控制器的外部总线接口介绍
  18. Mysql 常用 时间函数
  19. 跌跌撞撞尝试Scrapy+Selenium+MySQL爬取与存储东方财富网股票数据
  20. 2. 测试分析与测试设计

热门文章

  1. 看看,这就是微软的“万物互联”系统 window10 IOT
  2. Device Tree(一):背景介绍
  3. php header 不起作用,php – symfony:setHttpHeader()不起作用,header()没有
  4. iframe嵌入页面白屏_Vue使用iframe嵌入第三方网页并修改标题
  5. Java网络爬虫实操(3)
  6. JDBC 4.2 Specifications 中文翻译 -- 第九章 连接
  7. unity3d鼠标拖拽模型,旋转模型
  8. AppCode iOS 应用开发 开发环境
  9. 使用bat文件快速解决adb找不到设备的问题
  10. Drupal8系列(五):主题制作之搭建框架-Ubuntu 14.04 LTS