训练和测试自己的图片

1.准备数据

下载图片,共有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: CPU
100个测试数据,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


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值