训练和测试自己的图片
2017-03-14 09:40
447 查看
1.准备数据
下载图片,共有500张图片,分为大巴车、恐龙、大象、鲜花和马五个类,每个类100张。地址:http://pan.baidu.com/s/1nuqlTnN
2.转换lmdb格式
新建一个文件夹,用来存放配置文件和脚本文件,然后编写一个脚本create_filelist.sh,用来生成train.txt和test.txt清单文件
编写脚本
//////////////////////////////////////////////////////////////////////////////////////////////////
python语言编写,在newfile文件夹下新建一个create_filelist.py文件,输出如下代码
//////////////////////////////////////////////////////////////////////////////////////////////////
接着再编写一个脚本文件,调用convert_imageset命令来转换数据格式
脚本内容
注:如果报错一般都是路径写错。
运行成功后,会在 examples/myfile下面生成两个文件夹img_train_lmdb和img_test_lmdb
3.计算均值
图片减去均值再训练,会提高训练速度和精度。caffe程序提供了一个计算均值的文件compute_image_mean.cpp。
4.创建模型并编写配置文件
模型就用程序自带的caffenet模型,位置在 models/bvlc_reference_caffenet/文件夹下, 将需要的两个配置文件,复制到newfile文件夹内
修改配置文件solver.prototxt
修改train_val.protxt,只需要修改两个阶段的data层文件地址就可以了,其它可以不用管
和
5.训练和测试
正确率为93%。
本文主要参考http://www.cnblogs.com/denny402/p/5083300.html
下载图片,共有500张图片,分为大巴车、恐龙、大象、鲜花和马五个类,每个类100张。地址:http://pan.baidu.com/s/1nuqlTnN
2.转换lmdb格式
新建一个文件夹,用来存放配置文件和脚本文件,然后编写一个脚本create_filelist.sh,用来生成train.txt和test.txt清单文件
sudo mkdir examples/newfile sudo vi examples/newfile/create_filelist.sh
编写脚本
1 #!/usr/bin/env sh 2 DATA=data/re/ 3 MY=examples/newfile 4 5 echo "Create train.txt..." 6 rm -rf $MY/train.txt 7 for i in 3 4 5 6 7 8 do 9 find $DATA/train -name $i*.jpg | cut -d '/' -f4-6 | sed "s/$/ $i/">>$MY/train.txt 10 done 11 echo "Create test.txt..." 12 rm -rf $MY/test.txt 13 for i in 3 4 5 6 7 14 do 15 find $DATA/test -name $i*.jpg | cut -d '/' -f4-6 | sed "s/$/ $i/">>$MY/test.txt 16 done 17 echo "All done"运行
sudo sh examples/myfile/create_filelist.sh在examples/newfile/ 文件夹下生成train.txt和test.txt两个文本文件
//////////////////////////////////////////////////////////////////////////////////////////////////
python语言编写,在newfile文件夹下新建一个create_filelist.py文件,输出如下代码
# -*- coding: utf-8 -*- import os data_path='data/re/' my='examples/newfile/' classes=[3,4,5,6,7] def gen_txt(phase): f=open(my+phase+'.txt','w') for c in classes: folder=str(c) images=os.listdir(data_path+phase+'/'+folder) for img in images: f.write(phase+'/'+folder+'/'+img+' '+folder+'\n') gen_txt('train') gen_txt('test')运行 sudo python examples/newfile/create_filelist.py
//////////////////////////////////////////////////////////////////////////////////////////////////
接着再编写一个脚本文件,调用convert_imageset命令来转换数据格式
sudo vi examples/newfile/create_lmdb.sh
脚本内容
1 #!usr/bin/env sh 2 MY=examples/newfile 3 4 echo "Create train lmdb.." 5 rm -rf $MY/img_train_lmdb 6 build/tools/convert_imageset \ 7 --shuffle \ 8 --resize_height=256 \ 9 --resize_width=256 \ 10 /home/caffe/data/re/ \ 11 $MY/train.txt \ 12 $MY/img_train_lmdb 13 14 echo "Create test lmdb.." 15 rm -rf $MY/img_test_lmdb 16 build/tools/convert_imageset \ 17 --shuffle \ 18 --resize_width=256 \ 19 --resize_height=256 \ 20 /home/caffe/data/re/ \ 21 $MY/test.txt \ 22 $MY/img_test_lmdb 23 24 echo "All Done.."
注:如果报错一般都是路径写错。
运行成功后,会在 examples/myfile下面生成两个文件夹img_train_lmdb和img_test_lmdb
3.计算均值
图片减去均值再训练,会提高训练速度和精度。caffe程序提供了一个计算均值的文件compute_image_mean.cpp。
sudo build/tools/compute_image_mean examples/newfile/img_train_lmdb examples/newfile/mean.binaryproto
compute_image_mean带两个参数,第一个参数是lmdb训练数据位置,第二个参数设定均值文件的名字及保存路径。 运行成功后,会在 examples/myfile/ 下面生成一个mean.binaryproto的均值文件。
4.创建模型并编写配置文件
模型就用程序自带的caffenet模型,位置在 models/bvlc_reference_caffenet/文件夹下, 将需要的两个配置文件,复制到newfile文件夹内
sudo cp models/bvlc_reference_caffenet/solver.prototxt examples/newfile/ sudo cp models/bvlc_reference_caffenet/train_val.prototxt examples/newfile/
修改配置文件solver.prototxt
sudo vi examples/newfile/solver.prototxt
1 net: "examples/newfile/train_val.prototxt" 2 test_iter: 2 3 test_interval: 50 4 base_lr: 0.001 5 lr_policy: "step" 6 gamma: 0.1 7 stepsize: 100 8 display: 20 9 max_iter: 500 10 momentum: 0.9 11 weight_decay: 0.005 12 snapshot: 100 13 snapshot_prefix: "examples/newfile/caffenet_train" 14 solver_mode: CPU100个测试数据,batch_size为50,因此test_iter设置为2,就能全cover了。在训练过程中,调整学习率,逐步变小。
修改train_val.protxt,只需要修改两个阶段的data层文件地址就可以了,其它可以不用管
和
5.训练和测试
sudo build/tools/caffe train -solver examples/newfile/solver.prototxt
正确率为93%。
本文主要参考http://www.cnblogs.com/denny402/p/5083300.html
相关文章推荐
- caffe之训练和测试自己的图片
- 训练与测试自己的图片
- Caffe学习系列(12):训练和测试自己的图片
- caffe 训练测试自己的图片
- Caffe学习系列(12):训练和测试自己的图片
- caffe学习系列(2):训练和测试自己的图片
- 自己训练的caffemodel用于测试图片时,出现的问题
- Caffe学习系列(12):训练和测试自己的图片
- Linux下训练和测试自己的图片
- CAFFE学习笔记(二):训练和测试自己的图片
- Caffe学习系列(12):训练和测试自己的图片
- Caffe傻瓜系列(9):训练和测试自己的图片
- Caffe学习系列(12):训练和测试自己的图片
- Caffe学习系列(12):训练和测试自己的图片
- Caffe学习系列(12):训练和测试自己的图片
- Caffe学习系列(12):训练和测试自己的图片
- Caffe学习系列(12):训练和测试自己的图片
- Caffe学习系列:训练和测试自己的图片
- Caffe系列(9):训练和测试自己的图片
- Caffe windows下入门级别的从编译到训练然后到分类(用python接口)测试自己的图片数据(四)