||
在caffe下训练模型,第一步需要准备数据集即图片数据,图片分类在不同文件夹中,图片名需要按一定规则命名。第二步对图片进行处理,例如运行shell文件,在txt文件中存储图片的相对路径以及对应种类标签;再、运行caffe-master中的imagenet.sh文件,将图片转化为256*256的Imdb格式;运行make_Imagenet_mean.sh文件对图像取均值。第三步运行caffe-master model文件中的建立模型的文件,对处理好的图像建模,输出对应参数。
1、准备数据集
1)、在caffe-master/data下新建一个属于自己的数据库命名为myself,并在该文件夹下创建 train 和 val 文件夹用于存放训练集和验证集的图片。数据集的格式要求如下链接:http://blog.csdn.net/zziymt/article/details/49447397
注意:图片的格式必须为.jpeg格式。
2)、链接中的filepath2traintxt.sh、filepath2valtxt2.sh两个shell文件是分别把train 和 val文件夹下所有 .jpeg 的文件 并且按照 ‘/’ 去将他们分为一段一段的,3-4的意思是取 第三段和第四段并存储到train.txt中(3-4的数字的选取根据个人存储文档的不同而改变),最终保证在 train.txt、val.txt 中存储的是分别是 train 文件夹和 val 文件夹中的图片的相对路径,并且在每张图片相对路径后打上对应种类的标签。
在终端输入 sh ./data/myself/filepath2traintxt.sh运行后生成train.txt文件
sh ./data/myself/filepath2valtxt2.sh运行后生成val.txt 文件
执行filepath2txt脚本同时意味着先执行filepath2traintxt.sh,再执行filepath2valtxt2.sh,若filepath2txt无法执行,按步骤运行filepath2traintxt.sh、filepath2valtxt2.sh两个shell文件即可。
2、以上数据的准备工作完成了,接下来进行样本实验,在caffe-master/examples下新建myself文件夹用于存放处理数据所需的文件,处理后的数据,与数据建模所需的文件,(上次是在 caffe-master/data 下创建的)。
2.1将图片转化为256*256的lmdb格式
1)将caffe-master/examples/imagenet 下的 create_imagenet.sh 拷贝到刚刚创建的 caffe-master/examples/myself文件下
2)对create_imagenet.sh内容修改。参考链接http://blog.csdn.net/qq_28410587/article/details/53412691
EXAMPLE=examples/myself #EXAMPLE指定生成的数据库文件存放路径;
DATA=data/myself #DATA指定生成数据库所需文件来源路径;
TOOLS=build/tools #TOOLS指定调用convert_imagest文件(caffe中编译后的可执行文件)的路径;
TRAIN_DATA_ROOT=/home/zbp/Linux/caffe-master/data/myself/train/
VAL_DATA_ROOT=/home/zbp/Linux/caffe-master/data/myself
#TRAIN_DATA_ROOT指明存放训练数据的绝对路径;
#VAL_DATA_ROOT指明存放测试数据的绝对路径;
RESIZE=true
#将resize设置为true用于将图片调节成统一大小,256X256。
$EXAMPLE/myself_train_lmdb #EXAMPLE指定生成的数据库文件夹的名称
$EXAMPLE/myself_val_lmdb #EXAMPLE指定生成的数据库文件夹的名称
如链接:http://blog.csdn.net/AlexQiweek/article/details/51281240
3)、终端在caffe-master的目录下输入./examples/myself/create_imagenet.sh命令
注意:在caffe-master的目录下输入命令,因为create_imagenet.sh需要调用caffe-master目录下的其它文件,所以不能在caffe-master/examples/myself目录下输入命令。
执行后就会在create_imagenet.sh中的EXAMPLE所指定的目录下即example/myself目录下生成两个数据库文件,imagenet_train_leveldb 与 imagenet_val_leveldb,这就是所生成的leveldb 的文件。注意:在caffe-master的目录下输入命令,因为create_imagenet.sh需要调用caffe-master目录下的其它文件,所以不能在caffe-master/examples/myself目录下输入命令。
2.2 计算图像均值
1)将caffe-master/examples/imagenet 文件夹下的make_imagenet_mean.sh文件拷贝到caffe-master/examples/myself文件下,用于计算图像均值,使用的源文件其实是/tools/compute_image_mean(caffe中编译后的可执行文件)。
2)修改make_imagenet_mean.sh文件
EXAMPLE=examples/myself #指明存放生成的myself_train_lmdb文件的路径
DATA=data/myself #指明存放生成的imagenet_mean.binaryproto文件的路径
$TOOLS/compute_image_mean $EXAMPLE/myself_train_lmdb \
$DATA/imagenet_mean.binaryproto
3)终端在caffe-master的目录下输入./examples/myself/make_imagenet_mean.sh
指定目录下会生成imagenet_mean.binaryproto和myself_train_lmdb两个文件
3、定义网络修改部分参数,训练网络.
1)从caffe-master/models/bvlc_reference_caffenet文件夹下拷贝 train_val.prototxt 和solver.prototxt到caffe-master/example/myself文件夹下
从caffe-master/examples/imagenet 文件夹下拷贝 train_caffenet.sh 到caffe-master/example/myself文件夹下
2)修改train_caffenet.sh文件
./build/tools/caffe train
--solver=examples/myself/solver.prototxt
3)修改solver.prototxt文件,该文件为训练网络时的所需的一些配置和设置
net: "examples/myself/train_val.prototxt" #指定定义网络结构的文件的相对路径
snapshot: 10000 #代表每10000次迭代生成一次.caffemodel和.solverstate 文件
snapshot_prefix: "examples/myself/caffenet_train" #定义训练网络时生成的.caffemodel和.solverstate文件前缀
solver_mode: GPU #代表用 GPU 进行
4)修改train_val.prototxt文件,该文件的定义的为待训练网络的结构。
(1)修改两个layer:
mean_file: "data/myself/imagenet_mean.binaryproto"
source: "examples/myself/myself_train_lmdb"
(2)修改num_output:20 #最后一层的输出种类
(3)两个batch_size
batch_size: 256
batch_size: 50
4、在caffe的主目录下输入命令:./ examples/myself/train_caffenet.sh开始训练网络
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-23 08:08
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社