windows下使用 caffe 做图像训练和测试
①数据准备 目录caffe-master/data/inc
train文件夹(五类图片各80张,并编号) val文件夹(五类图片各20张,编号)
数据源:
http://download.csdn.net/detail/hit2015spring/9704947 下载的图像是384*256的 如果用ACDsee5.0可以直接改变图片大小 256*256
②生成图片标签文件
批量生成图片标签:cmd命令 打开到图片目录下,输入dir/s/on/b>d:train.txt dir/s/on/b>d:val.txt 可在d盘下生成两个txt文件
把那两个txt文件移到data/inc下,修改txt文件内容里面的路径
\val\val_dinosar\402.jpg 1
\val\val_dinosar\402.jpg 0
\val\val_dinosar\402.jpg 2
EXAMPLE=D:\caffe-master\data\inc
DATA=D:\caffe-master\data\inc
TOOLS=D:\caffe-master\Build\x64\Release
TRAIN_DATA_ROOT=D:\caffe-master\data\inc\train
VAL_DATA_ROOT=D:\caffe-master\data\inc\test
GLOG_logtostderr=1 $TOOLS/convert_imageset \
--resize_height=$RESIZE_HEIGHT \
--resize_width=$RESIZE_WIDTH \
--shuffle \
$TRAIN_DATA_ROOT \
$DATA/train.txt \
inc_train_lmdb 1
echo "Creating val lmdb..."
GLOG_logtostderr=1 $TOOLS/convert_imageset \
--resize_height=$RESIZE_HEIGHT \
--resize_width=$RESIZE_WIDTH \
--shuffle \
$VAL_DATA_ROOT \
$DATA/test.txt \
inc_val_lmdb
d盘下双击运行.bat文件:convertinc2trainldb.bat
SET GLOG_logtostderr=1
.\Build\x64\Release\convert_imageset.exe D:\caffe-master\data\inc D:\caffe-master\data\inc\train.txt D:\caffe-master\data\inc\trainldb
pause
最后在data/inc下生成trainldb valldb文件夹
③生成均值文件,数据预处理
修改路径
EXAMPLE=D:\caffe-master\data\inc
DATA=D:\caffe-master\data\inc
TOOLS=D:\caffe-master\Build\x64\Release
$TOOLS/compute_image_mean $EXAMPLE/ilsvrc12_train_lmdb \
$DATA/imagenet_mean.binaryproto
echo "Done."
d盘下双击运行.bat文件:
SET GLOG_logtostderr=1
.\Build\x64\Release\compute_image_mean.exe --backend lmdb D:\caffe-master\data\inc\valldb D:\caffe-master\data\inc\val_mean.binaryproto
pause
运行后在data/inc目录下生产binary.proto 均值文件
---------------------------------------------------------------------此处是图像数据处理完成的分界线-----------------------------------------------------------------------------
利用imagenet的网络模型进行训练和测试
①网络模型的设置,这个imagent的深度网络模型大概有23层,
mean_file: "data/inc/train_mean.binaryproto"
data_param {
source: "data/inc/trainldb"
batch_size: 5
backend: LMDB
}
}
layer {
name: "data"
type: "Data"
top: "data"
top: "label"
include {
phase: TEST
}
transform_param {
mirror: false
crop_size: 227
mean_file: "data/inc/val_mean.binaryproto"
}
# mean pixel / channel-wise mean instead of mean image
# transform_param {
# crop_size: 227
# mean_value: 104
# mean_value: 117
# mean_value: 123
# mirror: false
# }
data_param {
source: "data/inc/valldb"
batch_size: 5
backend: LMDB
修改适合自己训练的solver.prototxt内文件的参数
net: "data/inc/train_val.prototxt" ----深度网络模型所在的路径
test_iter: 20 ----
test_interval: 500
base_lr: 0.0001
lr_policy: "step"
gamma: 0.1
stepsize: 100000
display: 20
max_iter: 20000
momentum: 0.9
weight_decay: 0.0005
snapshot: 2000
snapshot_prefix: "data/inc"
solver_mode: CPU
③训练 D盘下双击.bat文件
SET GLOG_logtostderr=1
.\Build\x64\Release\caffe.exe train --solver=data/inc/solver.prototxt
pause
参考文章: