您的位置:首页 > 理论基础 > 计算机网络

用caffe训练一个spp_net网络

2016-03-30 15:03 393 查看
virtualinlineconstchar*type()const
{ return"SPP";
}

virtual
LayerParameter GetPoolingParam(constint
pyramid_level,constint
bottom_h, constint
bottom_w, const
SPPParameter spp_param);

int
pyramid_height_;

int
bottom_h_, bottom_w_;

int
num_;

int
channels_;

int
kernel_h_, kernel_w_;

int
pad_h_, pad_w_;

bool
reshaped_first_time_;

构建时需要考虑的参数值

1.准备数据,在examples路径下新建一个目录 spp_net,将n03791053摩托车、n03895866客车、n04285008跑车、n04467665大货车、n04487081无轨电车这5类的图片放入到该目录下,每种车型一个目录。

>>ll
/root/deep/gjj/caffe-master/examples/spp_net

drwxr-xr-x
2 root root 73728 Mar 30 15:24 n03791053

drwxr-xr-x 2 root root 77824 Mar 30 15:25 n03895866

drwxr-xr-x 2 root root 73728 Mar 30 15:25 n04285008

drwxr-xr-x 2 root root 73728 Mar 30 15:25 n04467665

drwxr-xr-x 2 root root 73728 Mar 30 15:25 n04487081

2.准备标签文件,训练和测试的输入是用
train.txt
val.txt来描述的。里面的格式都是路径加文件名
空格 类别号。如下:


train.txt中 n03791053/n03791053_10013.JPEG
670

val.txt中
val/ILSVRC2012_val_00027580.JPEG 705

3.将examples/imagenet/create_imagenet.sh复制到spp_net目录下,并修改里面的内容,在spp_net下生成lmdb格式的图像信息。

EXAMPLE=examples/spp_net

DATA=examples/spp_net/

TOOLS=build/tools

TRAIN_DATA_ROOT=examples/spp_net/

VAL_DATA_ROOT=examples/spp_net/

此外,我把图片的大小改成了224*224

RESIZE=true

if $RESIZE; then

RESIZE_HEIGHT=224

RESIZE_WIDTH=224

4.没有去做均值,直接构建spp_solver.prototxt和Zeiler_spp_scale224.prototxt

spp_solver.prototxt中设置
solver_mode: CPU

Zeiler_spp_scale224.prototxt将卷积第五层之后的池化改为spp池化,根据caffe.proto中的定义来改

layer {

name: "pool5_spp"

type: "SPP"

bottom: "conv5"

top: "pool5_spp"

spp_param{

pyramid_height:3

pool: MAX

}

}

5.把下面的命令写到spp_train_caffenet.sh中或直接运行:

/root/deep/gjj/caffe-master/build/tools/caffe train --solver=spp_solver.prototxt
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: