Caffe学习系列:训练和测试自己的图片

1.数据准备

在 caffe_master/data 中新建文件夹 myself,在myself/train/cat文件里存放训练猫的图片 40 张(名称为cat1~cat40),在myself/train/dog文件里存放训练狗的图片 40 张(名称为cat1~cat40),在myself/val文件里测试狗的图片 10 张和测试猫的图片10张。

根据训练和测试的图片生成train.txt文件和val.txt文件,此文件里包含文件名和分类标签(标签从0开始,0,1,2....)。

可在train文件夹路径下,使用

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

脚本命令来生成train.txt文件。val.txt的生成方法类似。

图片需要通过在后面添加不同的数字区分开来,因此还需命令:

sed -i '1,70s/.*/&  0/' train.txt和sed -i'71,141s/.*/&  1/' train.txt

2.转换为LMDB格式
在caffe/example目录下新建目录myself。并将caffe/examples/imagenet 目录下create_imagenet.sh文件拷贝到myself中。

#!/usr/bin/env sh
EXAMPLE=examples/mytest ##根据自己的路径修改
DATA=data/mydata //
TOOLS=bulid/tools


echo "Create train lmdb.."
rm -rf $EXAMPLE/mytest_train_lmdb
build/tools/convert_imageset \
--shuffle \
--resize_height=256 \
--resize_width=256 \
/home/wujx/caffe/data/mydata/ \ ##训练图片的路径
$DATA/train.txt \ ##输入train.txt的路径
$EXAMPLE/mytest_train_lmdb ##输出train_lmdb的路径


echo "Create test lmdb.."
rm -rf $EXAMPLE/mytest_test_lmdb
build/tools/convert_imageset \
--shuffle \
--resize_width=256 \
--resize_height=256 \
/home/wujx/caffe/data/mydata/ \ ##测试图片的路径
$DATA/test.txt \ ##输入test.txt的路径
$EXAMPLE/mytest_test_lmdb ##输出test_lmdb的路径

echo "All Done.."


返回caffe根目录 运行  sh ./examples/myself/create_imagenet.sh

接下来就会在examples/myself  下生成 两个文件夹 myself_train_lmdb和  myself_train_lmdb

3.训练数据

把caffe/models/bvlc_reference_caffenet中

train_val.prototxt 
网络结构文件

solver.prototxt

网络参数文件

文件复制到caffe/examples/mytest文件夹中

编辑train_val.prototxt文件,注意修改数据层的路径。


练参数文件的配置:


②修改solver.prototxt

test_iter: 1000是指测试的批次,我们就10张照片,设置10就可以了。 test_interval: 1000是指每1000次迭代测试一次,我改成了10。 base_lr: 0.01是基础学习率,因为数据量小,0.01就会下降太快了,因此改成0.001 lr_policy: “step”学习率变化 gamma: 0.1学习率变化的比率 stepsize: 100000每100000次迭代减少学习率 display: 20每20层显示一次 max_iter: 4000最大迭代次数, momentum: 0.9学习的参数,不用变 weight_decay: 0.0005学习的参数,不用变 snapshot: 10000每迭代10000次显示状态,这里改为1000次 solver_mode: GPU末尾加一行,代表用GPU进行

  运行

 拷贝examples/imagenet目录下的train_caffenet.sh文件到example/myself目录下。

注意修改路径。

在caffe的主目录下输了命令

./examples/myself/train_caffenet.sh

开始训练网络

猜你喜欢

转载自blog.csdn.net/hemancute/article/details/80391173