Caffe下自己的数据训练和测试

在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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-22 23:52:05

Caffe下自己的数据训练和测试的相关文章

caffe:用自己的数据训练网络mnist

画黑底白字的软件:KolourPaint. 假设所有"1"的图片放到名字为1的文件夹下.(0-9类似)..获取每个数字的名称文件后,手动表上标签.然后合成train.txt 1.获取文件夹内全部图像的名称: find ./1 -name '*.png'>1.txt //此时的1.txt文件中的图像名称包括路劲信息,要把前面的路径信息去掉. $ sudo sed -i "s/.\/1\///g" 1.txt          //(\表示转义,所以这里用双引号而

caffe学习记录(五) SSD训练+SSDpelee测试

SSD就不多介绍了,是今年非常流行的Object detection 模型:对各大数据集的测试结果如下表. 首先要git weiliu版本的caffe git clone https://github.com/weiliu89/caffe.git 然后在unbantu上对caffe进行配置,百度一下教程 # Modify Makefile.config according to your Caffe installation. cp Makefile.config.example Makefil

Caffe 训练和测试自己的图片

  Caffe学习系列(12):训练和测试自己的图片  在caffe上跑自己的数据    

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

    学习caffe第一天,用SSD上上手. 我的根目录$caffe_root为/home/gpu/ljy/caffe 一.运行SSD示例代码 1.到https://github.com/weiliu89/caffe.git下载caffe-ssd代码,是一个caffe文件夹 2.从已经配置好的caffe目录下拷贝一个Makefile.config放到$caffe_root下 3.在$caffe_root下打开命令行终端,输入以下命令 make -j8 make py make test -j8

Ubuntu14.04+caffe+cuda7.5 环境搭建以及MNIST数据集的训练与测试

Ubuntu14.04+caffe+cuda 环境搭建以及MNIST数据集的训练与测试 一.ubuntu14.04的安装: ubuntu的安装是一件十分简单的事情,这里给出一个参考教程: http://jingyan.baidu.com/article/76a7e409bea83efc3b6e1507.html 二.cuda的安装: 1.首先下载nvidia cuda的仓库安装包(我的是ubuntu 14.04 64位,所以下载的是ubuntu14.04的安装包,如果你是32位的可以参看具体的地

windows下的cafee训练和测试mnist数据集

一.mnist数据集 mnist是一个手写数字数据库,由Google实验室的Corinna Cortes和纽约大学柯朗研究院的Yann LeCun等人建立,它有60000个训练样本集和10000个测试样本集.mnist数据库官方网址为:http://yann.lecun.com/exdb/mnist/ .可直接下载四个解压文件,分别对应:训练集样本.训练集标签.测试集样本和测试集标签.解压缩之后发现,其是在一个文件中包含了所有图像. 二.caffe支持的数据格式:Lmdb和Leveldb 它们都

不要怂,就是GAN (生成式对抗网络) (四):训练和测试 GAN

在 /home/your_name/TensorFlow/DCGAN/ 下新建文件 train.py,同时新建文件夹 logs 和文件夹 samples,前者用来保存训练过程中的日志和模型,后者用来保存训练过程中采样器的采样图片,在 train.py 中输入如下代码: # -*- coding: utf-8 -*- import tensorflow as tf import os from read_data import * from utils import * from ops impo

使用CNN(convolutional neural nets)检测脸部关键点教程(二):浅层网络训练和测试

第三部分 第一个模型:一个隐层结构的传统神经网络 这一部分让我们从代码开始: # add to kfkd.py from lasagne import layers from lasagne.updates import nesterov_momentum from nolearn.lasagne import NeuralNet net1 = NeuralNet( layers=[ # three layers: one hidden layer ('input', layers.InputL

Windows Caffe(三) 图像数据转化为Caffe可以运行的数据

在运行Caffe自带的两个例子的时候,我们的数据都来自互联网,是直接下载的二进制文件. 但我们大多数情况下使用的是原始的图片数据(如.jpg .png等),接下来研究如何将原始的图片数据转化为caffe可以运行的数据. 1.准备图片数据 caffe安装完成之后,在example/images文件下会有四张.jpg图片,cat.jpg, cat gray,jpg, cat_gray.jpg, fish-back.jpg 2.生成图片清单 我们写需要一个sh脚本,调用Linux命令生成图片的清单.W