您的位置:首页 > Web前端

caffe Resnet-50模型训练及测试

2017-08-02 22:23 363 查看
caffe
Resnet-50模型训练及测试

1. 注意事项

Resnet-50计算精度比较高,而且运算量较小,因此是一种理想的残差网络的训练模型。采用Resnet-50模型进行训练,需要注意以下方面:

(1) BatchNorm层的参数

在finetuneResnet时,网络结构文件中BatchNorm层的参数要注意:

1.在训练时所有BN层要设置use_global_stats: false(也可以不写,caffe默认是false)

2.在测试时所有BN层要设置use_global_stats: true

影响:

1.训练如果不设为false,会导致模型不收敛

2.测试如果不设置为true,会导致准确率极低

(亲测,测试时为false时acc=0.05,为true时acc=0.91)

区别:

use_global_stats: false是使用了每个Batch里的数据的均值和方差;

use_global_stats: true是使用了所有数据的均值和方差。

(2) Prototxt模型参数

当训练和测试直接采用图片而不是lmdb文件进行训练时,训练和测试数据中的类型需要设置为:type:"ImageData";另外,需要采用image_data_param项来代替data_param项,image_data_param项中的source和root_folder的路径必须是完整的绝对路径,而不能是相对路径。

2. 深度网络结构可视化网址

Resnet-50模型比较复杂,因此可以通过以下网址来实现模型的可视化分析。
http://ethereon.github.io/netscope/#/editor

3. 训练测试脚本

另外一个是我在linux下bash脚本文件里遇到的一个坑:

.sh 文件里caffetrain 命令中间不能有注释, 否则会各种报错

下面是正确的训练脚本:

其中包括了将日志输出到log文件夹下,并以时间命名的功能。

训练脚本

#########################################################################

# File Name: train_res50.sh

# Author: plustang

# mail:

# Created Time: Mon 20 Feb 2017 10:59:03 PM EDT

#########################################################################

#!/bin/bash

#!/usr/bin/env sh

PRETRAINED_MODEL=../models/pre-trained-models/residual_network/ResNet-50-model.caffemodel

t=$(date +%Y-%m-%d_%H:%M:%S)

LOG=./log/tuan_res50_$t.log

GLOG_logtostderr=1 ../build/tools/caffe train \

--solver=../models/residual_network/solver.prototxt \

--weights=$PRETRAINED_MODEL \

--gpu=2,3 2>&1 |tee $LOG

测试脚本

#!/bin/bash

#!/usr/bin/env sh

GLOG_logtostderr=1 ../build/tools/caffe test \

--model=../models/residual_network/ResNet-50-val.prototxt \

--weights=../models/residual_network/res_50_iter_40000.caffemodel \

--gpu=0 \

--iterations=2000

中途恢复训练

#!/bin/bash

#!/usr/bin/env sh

t=$(date +%Y-%m-%d_%H:%M:%S)

LOG=./log/tuan_res50_$t.log

GLOG_logtostderr=1 ../build/tools/caffe train \

--solver=../models/residual_network/solver.prototxt \

--snapshot=../models/residual_network/res_50_iter_40000.solverstate \

--gpu=2,3 2>&1 |tee $LOG

finetune 时修改网络结构文件,只修改数据输入层和类别数即可。

下面是我修改后的prototxt,其中数据层是将图片直接输入网络,并且做了一些镜像、颜色、亮度、缩放的变换增加数据量,文件里测试部分没有用,可以删掉。不删也不影响训练,后面有一个用来测试的prototxt文件。

类别数在最后的全连接层fc204层,将类别数量改为所需的即可。

(ps: #后面都是注释,可以删掉)

4. Solver1.prototxt

# The train/test net protocol buffer definition

net: "res32_cifar_train_test.prototxt"

# test_iter specifies how many forward passes the test should carry out.

# In the case of CIFAR10, we have test batch size 100 and 100 test iterations,

# covering the full 10,000 testing images.

test_iter: 100

# Carry out testing every 1000 training iterations.

test_interval: 500

# The base learning rate, momentum and the weight decay of the network.

base_lr: 0.1

momentum: 0.9

weight_decay: 0.0001

# The learning rate policy

lr_policy: "multistep"

gamma:0.1

stepvalue:32000

stepvalue:48000

# Display every 200 iterations

display: 100

# The maximum number of iterations

max_iter: 64000

# snapshot intermediate results

snapshot: 10000

snapshot_prefix: "cifar10_res32"

# solver mode: CPU or GPU

solver_mode: GPU

test_initialization: false

Solver文件2:

net: "ResNet_50_train_val.prototxt"

iter_size: 2

test_iter: 1000

test_interval: 600

test_initialization: false

display: 30

base_lr: 0.05

lr_policy: "multistep"

stepvalue: 150000

stepvalue: 300000

gamma: 0.1

max_iter: 600000

momentum: 0.9

weight_decay: 0.0001

snapshot: 6000

snapshot_prefix: "resnet"

solver_mode: GPU

Solver文件3:

net: "models/ResNet-18/train.prototxt"

test_iter: 5000

test_interval: 5000

base_lr: 0.05

display: 20

lr_policy: "poly"

max_iter: 650000

power: 1

momentum: 0.9

weight_decay: 0.0005

snapshot: 5000

snapshot_prefix: "models/ResNet-18/resnet-18"

random_seed: 0

test_initialization: false

device_id: 0,1

5. 训练用的网络:ResNet-50-train-val.prototxt

name: "ResNet-50"

layer {

name: "data"

type:"ImageData"

top: "data"

top: "label"

include {

phase: TRAIN

}

transform_param {

#scale: 0.00390625

crop_size: 224

mean_value: 104

mean_value: 117

mean_value: 123

mirror: true

gamma_color_transform: true

gamma_left: 0.8 #0.5

gamma_right: 2.0 #1.5

gamma_step_num: 8 #4

brightness:true

brightness_alpha_left: 0.7

brightness_alpha_right: 1.2

brightness_beta_left:-5.0

brightness_beta_right: 5.0

brightness_alpha_num:4

brightness_beta_num:4

resize:true

resize_ratio:14

rotate:false

}

image_data_param {

new_width:256

new_height:256

shuffle: true

source: "/home/export/plustang/data/tuan_style_data/tuan_train.txt"

root_folder :"/home/export/plustang/data/tuan_style_data/imgs/"

batch_size: 28

}

#data_param {

#source:"/root/plustang/data/facenet_train_rand_sample15_lmdb"

#need_data_augment:true

#batch_size: 1000

#backend: LMDB

#}

}

layer {

name: "data"

type:"ImageData"

top: "data"

top: "label"

include {

phase: TEST

}

transform_param {

#scale: 0.00390625

crop_size: 224

mean_value: 104

mean_value: 117

mean_value: 123

mirror: false

}

image_data_param {

new_width:256

new_height:256

shuffle: false

source: "/home/export/plustang/data/tuan_style_data/tuan_val.txt"

root_folder : "/home/export/plustang/data/tuan_style_data/imgs/"

batch_size: 1

}

}

#layer {

# name: "data"

# type: "Data"

# top: "data"

# top: "label"

# include {

# phase: TRAIN

# }

# transform_param {

# crop_size: 224

# mean_value: 104

# mean_value: 117

# mean_value: 123

# mirror: true

# gamma_color_transform:true

# gamma_left: 0.8 #0.5

# gamma_right: 2.0 #1.5

# gamma_step_num: 8 #4

# brightness:true

# brightness_alpha_left:0.7

# brightness_alpha_right:1.2

# brightness_beta_left:-5.0

# brightness_beta_right:5.0

# brightness_alpha_num: 4

# brightness_beta_num: 4

# resize:true

# resize_ratio:14

# rotate:true

# }

# data_param {

# source:"/export/plustang/data/tuan_style_data/train_lmdb"

# need_data_augment:true

# batch_size: 28

# backend: LMDB

# }

#}

#layer {

# name: "data"

# type: "Data"

# top: "data"

# top: "label"

# include {

# phase: TEST

# }

# transform_param {

# crop_size: 224

# mean_value: 104

# mean_value: 117

# mean_value: 123

# mirror: false

# }

# data_param {

# source:"/export/plustang/data/tuan_style_data/val_lmdb"

# need_data_augment:false

# batch_size: 1

# backend: LMDB

# }

#}

layer {

bottom: "data"

top: "conv1"

name: "conv1"

type:"Convolution"

convolution_param {

num_output: 64

kernel_size: 7

pad: 3

stride: 2

}

}

layer {

bottom: "conv1"

top: "conv1"

name:"bn_conv1"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom: "conv1"

top: "conv1"

name:"scale_conv1"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "conv1"

top: "conv1"

name:"conv1_relu"

type: "ReLU"

}

layer {

bottom: "conv1"

top: "pool1"

name: "pool1"

type: "Pooling"

pooling_param {

kernel_size: 3

stride: 2

pool: MAX

}

}

layer {

bottom: "pool1"

top:"res2a_branch1"

name:"res2a_branch1"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res2a_branch1"

top:"res2a_branch1"

name:"bn2a_branch1"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res2a_branch1"

top:"res2a_branch1"

name:"scale2a_branch1"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "pool1"

top:"res2a_branch2a"

name:"res2a_branch2a"

type:"Convolution"

convolution_param {

num_output: 64

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res2a_branch2a"

top:"res2a_branch2a"

name:"bn2a_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res2a_branch2a"

top:"res2a_branch2a"

name:"scale2a_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res2a_branch2a"

top: "res2a_branch2a"

name:"res2a_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res2a_branch2a"

top:"res2a_branch2b"

name:"res2a_branch2b"

type:"Convolution"

convolution_param {

num_output: 64

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res2a_branch2b"

top:"res2a_branch2b"

name:"bn2a_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res2a_branch2b"

top:"res2a_branch2b"

name:"scale2a_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res2a_branch2b"

top:"res2a_branch2b"

name:"res2a_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res2a_branch2b"

top:"res2a_branch2c"

name:"res2a_branch2c"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res2a_branch2c"

top:"res2a_branch2c"

name:"bn2a_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res2a_branch2c"

top:"res2a_branch2c"

name:"scale2a_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res2a_branch1"

bottom:"res2a_branch2c"

top: "res2a"

name: "res2a"

type: "Eltwise"

}

layer {

bottom: "res2a"

top: "res2a"

name:"res2a_relu"

type: "ReLU"

}

layer {

bottom: "res2a"

top:"res2b_branch2a"

name:"res2b_branch2a"

type:"Convolution"

convolution_param {

num_output: 64

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res2b_branch2a"

top:"res2b_branch2a"

name:"bn2b_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom: "res2b_branch2a"

top:"res2b_branch2a"

name:"scale2b_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res2b_branch2a"

top:"res2b_branch2a"

name:"res2b_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res2b_branch2a"

top:"res2b_branch2b"

name:"res2b_branch2b"

type:"Convolution"

convolution_param {

num_output: 64

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res2b_branch2b"

top:"res2b_branch2b"

name:"bn2b_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res2b_branch2b"

top:"res2b_branch2b"

name:"scale2b_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res2b_branch2b"

top:"res2b_branch2b"

name:"res2b_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res2b_branch2b"

top:"res2b_branch2c"

name:"res2b_branch2c"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res2b_branch2c"

top:"res2b_branch2c"

name:"bn2b_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res2b_branch2c"

top:"res2b_branch2c"

name:"scale2b_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res2a"

bottom:"res2b_branch2c"

top: "res2b"

name: "res2b"

type: "Eltwise"

}

layer {

bottom: "res2b"

top: "res2b"

name:"res2b_relu"

type: "ReLU"

}

layer {

bottom: "res2b"

top:"res2c_branch2a"

name:"res2c_branch2a"

type:"Convolution"

convolution_param {

num_output: 64

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res2c_branch2a"

top:"res2c_branch2a"

name:"bn2c_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res2c_branch2a"

top:"res2c_branch2a"

name:"scale2c_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res2c_branch2a"

top:"res2c_branch2a"

name:"res2c_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res2c_branch2a"

top:"res2c_branch2b"

name:"res2c_branch2b"

type:"Convolution"

convolution_param {

num_output: 64

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res2c_branch2b"

top:"res2c_branch2b"

name:"bn2c_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res2c_branch2b"

top:"res2c_branch2b"

name:"scale2c_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res2c_branch2b"

top:"res2c_branch2b"

name:"res2c_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res2c_branch2b"

top:"res2c_branch2c"

name:"res2c_branch2c"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res2c_branch2c"

top:"res2c_branch2c"

name:"bn2c_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res2c_branch2c"

top:"res2c_branch2c"

name:"scale2c_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res2b"

bottom:"res2c_branch2c"

top: "res2c"

name: "res2c"

type: "Eltwise"

}

layer {

bottom: "res2c"

top: "res2c"

name:"res2c_relu"

type: "ReLU"

}

layer {

bottom: "res2c"

top:"res3a_branch1"

name:"res3a_branch1"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 2

bias_term: false

}

}

layer {

bottom:"res3a_branch1"

top:"res3a_branch1"

name:"bn3a_branch1"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res3a_branch1"

top:"res3a_branch1"

name:"scale3a_branch1"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res2c"

top:"res3a_branch2a"

name:"res3a_branch2a"

type:"Convolution"

convolution_param {

num_output: 128

kernel_size: 1

pad: 0

stride: 2

bias_term: false

}

}

layer {

bottom:"res3a_branch2a"

top:"res3a_branch2a"

name:"bn3a_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res3a_branch2a"

top:"res3a_branch2a"

name:"scale3a_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3a_branch2a"

top:"res3a_branch2a"

name:"res3a_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res3a_branch2a"

top:"res3a_branch2b"

name:"res3a_branch2b"

type: "Convolution"

convolution_param {

num_output: 128

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res3a_branch2b"

top:"res3a_branch2b"

name:"bn3a_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res3a_branch2b"

top:"res3a_branch2b"

name:"scale3a_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res3a_branch2b"

top:"res3a_branch2b"

name:"res3a_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res3a_branch2b"

top:"res3a_branch2c"

name:"res3a_branch2c"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res3a_branch2c"

top:"res3a_branch2c"

name:"bn3a_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res3a_branch2c"

top:"res3a_branch2c"

name:"scale3a_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3a_branch1"

bottom:"res3a_branch2c"

top: "res3a"

name: "res3a"

type: "Eltwise"

}

layer {

bottom: "res3a"

top: "res3a"

name:"res3a_relu"

type: "ReLU"

}

layer {

bottom: "res3a"

top:"res3b_branch2a"

name:"res3b_branch2a"

type:"Convolution"

convolution_param {

num_output: 128

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res3b_branch2a"

top:"res3b_branch2a"

name:"bn3b_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res3b_branch2a"

top:"res3b_branch2a"

name:"scale3b_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3b_branch2a"

top: "res3b_branch2a"

name:"res3b_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res3b_branch2a"

top:"res3b_branch2b"

name:"res3b_branch2b"

type:"Convolution"

convolution_param {

num_output: 128

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res3b_branch2b"

top:"res3b_branch2b"

name:"bn3b_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res3b_branch2b"

top:"res3b_branch2b"

name:"scale3b_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3b_branch2b"

top:"res3b_branch2b"

name:"res3b_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res3b_branch2b"

top:"res3b_branch2c"

name:"res3b_branch2c"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res3b_branch2c"

top:"res3b_branch2c"

name:"bn3b_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res3b_branch2c"

top:"res3b_branch2c"

name:"scale3b_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res3a"

bottom:"res3b_branch2c"

top: "res3b"

name: "res3b"

type: "Eltwise"

}

layer {

bottom: "res3b"

top: "res3b"

name:"res3b_relu"

type: "ReLU"

}

layer {

bottom: "res3b"

top:"res3c_branch2a"

name:"res3c_branch2a"

type:"Convolution"

convolution_param {

num_output: 128

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res3c_branch2a"

top:"res3c_branch2a"

name:"bn3c_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res3c_branch2a"

top:"res3c_branch2a"

name:"scale3c_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3c_branch2a"

top:"res3c_branch2a"

name:"res3c_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res3c_branch2a"

top:"res3c_branch2b"

name:"res3c_branch2b"

type:"Convolution"

convolution_param {

num_output: 128

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res3c_branch2b"

top:"res3c_branch2b"

name:"bn3c_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res3c_branch2b"

top:"res3c_branch2b"

name:"scale3c_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3c_branch2b"

top:"res3c_branch2b"

name:"res3c_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res3c_branch2b"

top:"res3c_branch2c"

name:"res3c_branch2c"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res3c_branch2c"

top:"res3c_branch2c"

name:"bn3c_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res3c_branch2c"

top:"res3c_branch2c"

name:"scale3c_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res3b"

bottom:"res3c_branch2c"

top: "res3c"

name: "res3c"

type: "Eltwise"

}

layer {

bottom: "res3c"

top: "res3c"

name:"res3c_relu"

type: "ReLU"

}

layer {

bottom: "res3c"

top:"res3d_branch2a"

name:"res3d_branch2a"

type:"Convolution"

convolution_param {

num_output: 128

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res3d_branch2a"

top:"res3d_branch2a"

name:"bn3d_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res3d_branch2a"

top:"res3d_branch2a"

name:"scale3d_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3d_branch2a"

top:"res3d_branch2a"

name:"res3d_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res3d_branch2a"

top:"res3d_branch2b"

name:"res3d_branch2b"

type:"Convolution"

convolution_param {

num_output: 128

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res3d_branch2b"

top:"res3d_branch2b"

name:"bn3d_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res3d_branch2b"

top:"res3d_branch2b"

name:"scale3d_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3d_branch2b"

top:"res3d_branch2b"

name:"res3d_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res3d_branch2b"

top:"res3d_branch2c"

name:"res3d_branch2c"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res3d_branch2c"

top:"res3d_branch2c"

name:"bn3d_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res3d_branch2c"

top:"res3d_branch2c"

name:"scale3d_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res3c"

bottom:"res3d_branch2c"

top: "res3d"

name: "res3d"

type: "Eltwise"

}

layer {

bottom: "res3d"

top: "res3d"

name:"res3d_relu"

type: "ReLU"

}

layer {

bottom: "res3d"

top:"res4a_branch1"

name:"res4a_branch1"

type:"Convolution"

convolution_param {

num_output: 1024

kernel_size: 1

pad: 0

stride: 2

bias_term: false

}

}

layer {

bottom:"res4a_branch1"

top:"res4a_branch1"

name:"bn4a_branch1"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4a_branch1"

top:"res4a_branch1"

name:"scale4a_branch1"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res3d"

top:"res4a_branch2a"

name:"res4a_branch2a"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 2

bias_term: false

}

}

layer {

bottom:"res4a_branch2a"

top:"res4a_branch2a"

name:"bn4a_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4a_branch2a"

top:"res4a_branch2a"

name:"scale4a_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4a_branch2a"

top:"res4a_branch2a"

name:"res4a_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res4a_branch2a"

top:"res4a_branch2b"

name:"res4a_branch2b"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res4a_branch2b"

top:"res4a_branch2b"

name:"bn4a_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4a_branch2b"

top:"res4a_branch2b"

name:"scale4a_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res4a_branch2b"

top:"res4a_branch2b"

name:"res4a_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res4a_branch2b"

top:"res4a_branch2c"

name:"res4a_branch2c"

type:"Convolution"

convolution_param {

num_output: 1024

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4a_branch2c"

top:"res4a_branch2c"

name:"bn4a_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats: false

}

}

layer {

bottom:"res4a_branch2c"

top:"res4a_branch2c"

name:"scale4a_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4a_branch1"

bottom:"res4a_branch2c"

top: "res4a"

name: "res4a"

type: "Eltwise"

}

layer {

bottom: "res4a"

top: "res4a"

name:"res4a_relu"

type: "ReLU"

}

layer {

bottom: "res4a"

top:"res4b_branch2a"

name:"res4b_branch2a"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4b_branch2a"

top:"res4b_branch2a"

name:"bn4b_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4b_branch2a"

top:"res4b_branch2a"

name:"scale4b_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4b_branch2a"

top:"res4b_branch2a"

name:"res4b_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res4b_branch2a"

top:"res4b_branch2b"

name:"res4b_branch2b"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res4b_branch2b"

top:"res4b_branch2b"

name:"bn4b_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4b_branch2b"

top:"res4b_branch2b"

name:"scale4b_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4b_branch2b"

top:"res4b_branch2b"

name:"res4b_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res4b_branch2b"

top:"res4b_branch2c"

name:"res4b_branch2c"

type:"Convolution"

convolution_param {

num_output: 1024

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4b_branch2c"

top:"res4b_branch2c"

name:"bn4b_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4b_branch2c"

top:"res4b_branch2c"

name:"scale4b_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res4a"

bottom:"res4b_branch2c"

top: "res4b"

name: "res4b"

type: "Eltwise"

}

layer {

bottom: "res4b"

top: "res4b"

name:"res4b_relu"

type: "ReLU"

}

layer {

bottom: "res4b"

top:"res4c_branch2a"

name:"res4c_branch2a"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4c_branch2a"

top:"res4c_branch2a"

name:"bn4c_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4c_branch2a"

top:"res4c_branch2a"

name:"scale4c_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4c_branch2a"

top: "res4c_branch2a"

name:"res4c_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res4c_branch2a"

top:"res4c_branch2b"

name:"res4c_branch2b"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res4c_branch2b"

top:"res4c_branch2b"

name:"bn4c_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4c_branch2b"

top:"res4c_branch2b"

name:"scale4c_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4c_branch2b"

top:"res4c_branch2b"

name:"res4c_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res4c_branch2b"

top:"res4c_branch2c"

name:"res4c_branch2c"

type:"Convolution"

convolution_param {

num_output: 1024

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4c_branch2c"

top:"res4c_branch2c"

name:"bn4c_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4c_branch2c"

top:"res4c_branch2c"

name:"scale4c_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res4b"

bottom:"res4c_branch2c"

top: "res4c"

name: "res4c"

type: "Eltwise"

}

layer {

bottom: "res4c"

top: "res4c"

name:"res4c_relu"

type: "ReLU"

}

layer {

bottom: "res4c"

top:"res4d_branch2a"

name:"res4d_branch2a"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4d_branch2a"

top:"res4d_branch2a"

name:"bn4d_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4d_branch2a"

top: "res4d_branch2a"

name:"scale4d_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4d_branch2a"

top:"res4d_branch2a"

name:"res4d_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res4d_branch2a"

top:"res4d_branch2b"

name:"res4d_branch2b"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res4d_branch2b"

top:"res4d_branch2b"

name:"bn4d_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4d_branch2b"

top:"res4d_branch2b"

name:"scale4d_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4d_branch2b"

top:"res4d_branch2b"

name:"res4d_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res4d_branch2b"

top:"res4d_branch2c"

name:"res4d_branch2c"

type:"Convolution"

convolution_param {

num_output: 1024

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4d_branch2c"

top:"res4d_branch2c"

name:"bn4d_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4d_branch2c"

top:"res4d_branch2c"

name:"scale4d_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res4c"

bottom:"res4d_branch2c"

top: "res4d"

name: "res4d"

type: "Eltwise"

}

layer {

bottom: "res4d"

top: "res4d"

name:"res4d_relu"

type: "ReLU"

}

layer {

bottom: "res4d"

top:"res4e_branch2a"

name:"res4e_branch2a"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4e_branch2a"

top:"res4e_branch2a"

name:"bn4e_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4e_branch2a"

top:"res4e_branch2a"

name:"scale4e_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4e_branch2a"

top:"res4e_branch2a"

name:"res4e_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res4e_branch2a"

top:"res4e_branch2b"

name:"res4e_branch2b"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res4e_branch2b"

top:"res4e_branch2b"

name:"bn4e_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4e_branch2b"

top:"res4e_branch2b"

name:"scale4e_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4e_branch2b"

top:"res4e_branch2b"

name:"res4e_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res4e_branch2b"

top:"res4e_branch2c"

name:"res4e_branch2c"

type:"Convolution"

convolution_param {

num_output: 1024

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4e_branch2c"

top:"res4e_branch2c"

name:"bn4e_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4e_branch2c"

top:"res4e_branch2c"

name:"scale4e_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res4d"

bottom:"res4e_branch2c"

top: "res4e"

name: "res4e"

type: "Eltwise"

}

layer {

bottom: "res4e"

top: "res4e"

name:"res4e_relu"

type: "ReLU"

}

layer {

bottom: "res4e"

top:"res4f_branch2a"

name:"res4f_branch2a"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4f_branch2a"

top:"res4f_branch2a"

name:"bn4f_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4f_branch2a"

top:"res4f_branch2a"

name:"scale4f_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4f_branch2a"

top:"res4f_branch2a"

name:"res4f_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res4f_branch2a"

top:"res4f_branch2b"

name:"res4f_branch2b"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res4f_branch2b"

top:"res4f_branch2b"

name:"bn4f_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4f_branch2b"

top:"res4f_branch2b"

name:"scale4f_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4f_branch2b"

top:"res4f_branch2b"

name:"res4f_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res4f_branch2b"

top:"res4f_branch2c"

name:"res4f_branch2c"

type:"Convolution"

convolution_param {

num_output: 1024

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4f_branch2c"

top:"res4f_branch2c"

name:"bn4f_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res4f_branch2c"

top:"res4f_branch2c"

name:"scale4f_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res4e"

bottom:"res4f_branch2c"

top: "res4f"

name: "res4f"

type: "Eltwise"

}

layer {

bottom: "res4f"

top: "res4f"

name:"res4f_relu"

type: "ReLU"

}

layer {

bottom: "res4f"

top:"res5a_branch1"

name:"res5a_branch1"

type:"Convolution"

convolution_param {

num_output: 2048

kernel_size: 1

pad: 0

stride: 2

bias_term: false

}

}

layer {

bottom:"res5a_branch1"

top:"res5a_branch1"

name:"bn5a_branch1"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res5a_branch1"

top:"res5a_branch1"

name:"scale5a_branch1"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res4f"

top:"res5a_branch2a"

name:"res5a_branch2a"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 2

bias_term: false

}

}

layer {

bottom:"res5a_branch2a"

top:"res5a_branch2a"

name:"bn5a_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res5a_branch2a"

top:"res5a_branch2a"

name:"scale5a_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res5a_branch2a"

top: "res5a_branch2a"

name:"res5a_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res5a_branch2a"

top:"res5a_branch2b"

name:"res5a_branch2b"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res5a_branch2b"

top:"res5a_branch2b"

name:"bn5a_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res5a_branch2b"

top:"res5a_branch2b"

name:"scale5a_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res5a_branch2b"

top:"res5a_branch2b"

name:"res5a_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res5a_branch2b"

top:"res5a_branch2c"

name:"res5a_branch2c"

type:"Convolution"

convolution_param {

num_output: 2048

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res5a_branch2c"

top:"res5a_branch2c"

name:"bn5a_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res5a_branch2c"

top:"res5a_branch2c"

name:"scale5a_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res5a_branch1"

bottom:"res5a_branch2c"

top: "res5a"

name: "res5a"

type: "Eltwise"

}

layer {

bottom: "res5a"

top: "res5a"

name:"res5a_relu"

type: "ReLU"

}

layer {

bottom: "res5a"

top:"res5b_branch2a"

name:"res5b_branch2a"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res5b_branch2a"

top:"res5b_branch2a"

name:"bn5b_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom: "res5b_branch2a"

top:"res5b_branch2a"

name:"scale5b_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res5b_branch2a"

top:"res5b_branch2a"

name:"res5b_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res5b_branch2a"

top:"res5b_branch2b"

name:"res5b_branch2b"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res5b_branch2b"

top:"res5b_branch2b"

name:"bn5b_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res5b_branch2b"

top:"res5b_branch2b"

name:"scale5b_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res5b_branch2b"

top:"res5b_branch2b"

name:"res5b_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res5b_branch2b"

top:"res5b_branch2c"

name:"res5b_branch2c"

type:"Convolution"

convolution_param {

num_output: 2048

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res5b_branch2c"

top:"res5b_branch2c"

name: "bn5b_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res5b_branch2c"

top:"res5b_branch2c"

name:"scale5b_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res5a"

bottom:"res5b_branch2c"

top: "res5b"

name: "res5b"

type: "Eltwise"

}

layer {

bottom: "res5b"

top: "res5b"

name:"res5b_relu"

type: "ReLU"

}

layer {

bottom: "res5b"

top:"res5c_branch2a"

name:"res5c_branch2a"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res5c_branch2a"

top:"res5c_branch2a"

name:"bn5c_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res5c_branch2a"

top:"res5c_branch2a"

name:"scale5c_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res5c_branch2a"

top:"res5c_branch2a"

name:"res5c_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res5c_branch2a"

top:"res5c_branch2b"

name:"res5c_branch2b"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res5c_branch2b"

top:"res5c_branch2b"

name:"bn5c_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res5c_branch2b"

top:"res5c_branch2b"

name:"scale5c_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res5c_branch2b"

top:"res5c_branch2b"

name:"res5c_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res5c_branch2b"

top:"res5c_branch2c"

name:"res5c_branch2c"

type:"Convolution"

convolution_param {

num_output: 2048

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res5c_branch2c"

top:"res5c_branch2c"

name:"bn5c_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:false

}

}

layer {

bottom:"res5c_branch2c"

top:"res5c_branch2c"

name:"scale5c_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res5b"

bottom:"res5c_branch2c"

top: "res5c"

name: "res5c"

type: "Eltwise"

}

layer {

bottom: "res5c"

top: "res5c"

name:"res5c_relu"

type: "ReLU"

}

layer {

bottom: "res5c"

top: "pool5"

name: "pool5"

type: "Pooling"

pooling_param {

kernel_size: 7

stride: 1

pool: AVE

}

}

layer {

bottom: "pool5"

top: "fc204"

name: "fc204"

type:"InnerProduct"

param {

lr_mult: 1

decay_mult: 2

}

inner_product_param {

num_output: 204

}

}

layer {

name:"accuracy-1"

type: "Accuracy"

bottom: "fc204"

bottom: "label"

top: "accuracy-1"

include {

phase: TEST

}

}

layer {

name:"accuracy-5"

type: "Accuracy"

bottom: "fc204"

bottom: "label"

top: "accuracy-5"

include {

phase: TEST

}

accuracy_param {

top_k:5

}

}

layer {

name: "loss"

type:"SoftmaxWithLoss"

bottom: "fc204"

bottom: "label"

top: "loss"

}

#layer {

# bottom: "fc204"

# top: "prob"

# name: "prob"

# type: "Softmax"

#}

6. 测试用的网络文件:ResNet-50-val.prototxt

name: "ResNet-50"

layer {

name: "data"

type:"ImageData"

top: "data"

top: "label"

include {

phase: TEST

}

transform_param {

#scale: 0.00390625

crop_size: 224

mean_value: 104

mean_value: 117

mean_value: 123

mirror: false

}

image_data_param {

new_width:256

new_height:256

shuffle: false

source:"/export/plustang/data/tuan_style_data/tuan_val.txt"

root_folder :"/export/plustang/data/tuan_style_data/imgs/"

batch_size: 32

}

}

#layer {

# name: "data"

# type: "Data"

# top: "data"

# top: "label"

# include {

# phase: TRAIN

# }

# transform_param {

# crop_size: 224

# mean_value: 104

# mean_value: 117

# mean_value: 123

# mirror: true

# gamma_color_transform:true

# gamma_left: 0.8 #0.5

# gamma_right: 2.0 #1.5

# gamma_step_num: 8 #4

# brightness:true

# brightness_alpha_left:0.7

# brightness_alpha_right:1.2

# brightness_beta_left:-5.0

# brightness_beta_right:5.0

# brightness_alpha_num: 4

# brightness_beta_num: 4

# resize:true

# resize_ratio:14

# rotate:true

# }

# data_param {

# source:"/export/plustang/data/tuan_style_data/train_lmdb"

# need_data_augment:true

# batch_size: 28

# backend: LMDB

# }

#}

#layer {

# name: "data"

# type: "Data"

# top: "data"

# top: "label"

# include {

# phase: TEST

# }

# transform_param {

# crop_size: 224

# mean_value: 104

# mean_value: 117

# mean_value: 123

# mirror: false

# }

# data_param {

# source:"/export/plustang/data/tuan_style_data/val_lmdb"

# need_data_augment:false

# batch_size: 1

# backend: LMDB

# }

#}

layer {

bottom: "data"

top: "conv1"

name: "conv1"

type:"Convolution"

convolution_param {

num_output: 64

kernel_size: 7

pad: 3

stride: 2

}

}

layer {

bottom: "conv1"

top: "conv1"

name:"bn_conv1"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom: "conv1"

top: "conv1"

name:"scale_conv1"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "conv1"

top: "conv1"

name:"conv1_relu"

type: "ReLU"

}

layer {

bottom: "conv1"

top: "pool1"

name: "pool1"

type: "Pooling"

pooling_param {

kernel_size: 3

stride: 2

pool: MAX

}

}

layer {

bottom: "pool1"

top:"res2a_branch1"

name:"res2a_branch1"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res2a_branch1"

top:"res2a_branch1"

name:"bn2a_branch1"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res2a_branch1"

top: "res2a_branch1"

name:"scale2a_branch1"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "pool1"

top:"res2a_branch2a"

name:"res2a_branch2a"

type:"Convolution"

convolution_param {

num_output: 64

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res2a_branch2a"

top:"res2a_branch2a"

name:"bn2a_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res2a_branch2a"

top:"res2a_branch2a"

name:"scale2a_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res2a_branch2a"

top:"res2a_branch2a"

name:"res2a_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res2a_branch2a"

top:"res2a_branch2b"

name:"res2a_branch2b"

type:"Convolution"

convolution_param {

num_output: 64

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res2a_branch2b"

top:"res2a_branch2b"

name:"bn2a_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res2a_branch2b"

top:"res2a_branch2b"

name:"scale2a_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res2a_branch2b"

top:"res2a_branch2b"

name:"res2a_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res2a_branch2b"

top:"res2a_branch2c"

name:"res2a_branch2c"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res2a_branch2c"

top:"res2a_branch2c"

name:"bn2a_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res2a_branch2c"

top:"res2a_branch2c"

name: "scale2a_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res2a_branch1"

bottom:"res2a_branch2c"

top: "res2a"

name: "res2a"

type: "Eltwise"

}

layer {

bottom: "res2a"

top: "res2a"

name:"res2a_relu"

type: "ReLU"

}

layer {

bottom: "res2a"

top:"res2b_branch2a"

name:"res2b_branch2a"

type:"Convolution"

convolution_param {

num_output: 64

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res2b_branch2a"

top:"res2b_branch2a"

name:"bn2b_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res2b_branch2a"

top: "res2b_branch2a"

name:"scale2b_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res2b_branch2a"

top:"res2b_branch2a"

name:"res2b_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res2b_branch2a"

top:"res2b_branch2b"

name:"res2b_branch2b"

type:"Convolution"

convolution_param {

num_output: 64

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res2b_branch2b"

top:"res2b_branch2b"

name:"bn2b_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res2b_branch2b"

top:"res2b_branch2b"

name:"scale2b_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res2b_branch2b"

top:"res2b_branch2b"

name:"res2b_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res2b_branch2b"

top:"res2b_branch2c"

name:"res2b_branch2c"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res2b_branch2c"

top:"res2b_branch2c"

name:"bn2b_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res2b_branch2c"

top:"res2b_branch2c"

name:"scale2b_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res2a"

bottom:"res2b_branch2c"

top: "res2b"

name: "res2b"

type: "Eltwise"

}

layer {

bottom: "res2b"

top: "res2b"

name:"res2b_relu"

type: "ReLU"

}

layer {

bottom: "res2b"

top:"res2c_branch2a"

name:"res2c_branch2a"

type:"Convolution"

convolution_param {

num_output: 64

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res2c_branch2a"

top:"res2c_branch2a"

name:"bn2c_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res2c_branch2a"

top:"res2c_branch2a"

name:"scale2c_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res2c_branch2a"

top:"res2c_branch2a"

name:"res2c_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res2c_branch2a"

top:"res2c_branch2b"

name:"res2c_branch2b"

type:"Convolution"

convolution_param {

num_output: 64

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res2c_branch2b"

top:"res2c_branch2b"

name:"bn2c_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res2c_branch2b"

top:"res2c_branch2b"

name:"scale2c_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res2c_branch2b"

top:"res2c_branch2b"

name:"res2c_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res2c_branch2b"

top:"res2c_branch2c"

name:"res2c_branch2c"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res2c_branch2c"

top:"res2c_branch2c"

name:"bn2c_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res2c_branch2c"

top:"res2c_branch2c"

name:"scale2c_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res2b"

bottom:"res2c_branch2c"

top: "res2c"

name: "res2c"

type: "Eltwise"

}

layer {

bottom: "res2c"

top: "res2c"

name:"res2c_relu"

type: "ReLU"

}

layer {

bottom: "res2c"

top:"res3a_branch1"

name:"res3a_branch1"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 2

bias_term: false

}

}

layer {

bottom:"res3a_branch1"

top:"res3a_branch1"

name:"bn3a_branch1"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res3a_branch1"

top:"res3a_branch1"

name:"scale3a_branch1"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res2c"

top:"res3a_branch2a"

name:"res3a_branch2a"

type:"Convolution"

convolution_param {

num_output: 128

kernel_size: 1

pad: 0

stride: 2

bias_term: false

}

}

layer {

bottom:"res3a_branch2a"

top:"res3a_branch2a"

name:"bn3a_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res3a_branch2a"

top:"res3a_branch2a"

name:"scale3a_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3a_branch2a"

top:"res3a_branch2a"

name:"res3a_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res3a_branch2a"

top:"res3a_branch2b"

name:"res3a_branch2b"

type:"Convolution"

convolution_param {

num_output: 128

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res3a_branch2b"

top:"res3a_branch2b"

name:"bn3a_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res3a_branch2b"

top:"res3a_branch2b"

name:"scale3a_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3a_branch2b"

top:"res3a_branch2b"

name:"res3a_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res3a_branch2b"

top:"res3a_branch2c"

name:"res3a_branch2c"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res3a_branch2c"

top:"res3a_branch2c"

name:"bn3a_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res3a_branch2c"

top:"res3a_branch2c"

name:"scale3a_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3a_branch1"

bottom:"res3a_branch2c"

top: "res3a"

name: "res3a"

type: "Eltwise"

}

layer {

bottom: "res3a"

top: "res3a"

name:"res3a_relu"

type: "ReLU"

}

layer {

bottom: "res3a"

top:"res3b_branch2a"

name:"res3b_branch2a"

type:"Convolution"

convolution_param {

num_output: 128

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res3b_branch2a"

top:"res3b_branch2a"

name:"bn3b_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res3b_branch2a"

top:"res3b_branch2a"

name:"scale3b_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res3b_branch2a"

top:"res3b_branch2a"

name:"res3b_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res3b_branch2a"

top:"res3b_branch2b"

name:"res3b_branch2b"

type:"Convolution"

convolution_param {

num_output: 128

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res3b_branch2b"

top:"res3b_branch2b"

name:"bn3b_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res3b_branch2b"

top:"res3b_branch2b"

name:"scale3b_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3b_branch2b"

top:"res3b_branch2b"

name:"res3b_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res3b_branch2b"

top:"res3b_branch2c"

name:"res3b_branch2c"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res3b_branch2c"

top:"res3b_branch2c"

name:"bn3b_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res3b_branch2c"

top:"res3b_branch2c"

name:"scale3b_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res3a"

bottom:"res3b_branch2c"

top: "res3b"

name: "res3b"

type: "Eltwise"

}

layer {

bottom: "res3b"

top: "res3b"

name:"res3b_relu"

type: "ReLU"

}

layer {

bottom: "res3b"

top:"res3c_branch2a"

name:"res3c_branch2a"

type:"Convolution"

convolution_param {

num_output: 128

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res3c_branch2a"

top:"res3c_branch2a"

name:"bn3c_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res3c_branch2a"

top:"res3c_branch2a"

name:"scale3c_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3c_branch2a"

top:"res3c_branch2a"

name:"res3c_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res3c_branch2a"

top:"res3c_branch2b"

name:"res3c_branch2b"

type:"Convolution"

convolution_param {

num_output: 128

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res3c_branch2b"

top:"res3c_branch2b"

name:"bn3c_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res3c_branch2b"

top:"res3c_branch2b"

name:"scale3c_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3c_branch2b"

top:"res3c_branch2b"

name:"res3c_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res3c_branch2b"

top:"res3c_branch2c"

name:"res3c_branch2c"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res3c_branch2c"

top:"res3c_branch2c"

name:"bn3c_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res3c_branch2c"

top:"res3c_branch2c"

name: "scale3c_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res3b"

bottom:"res3c_branch2c"

top: "res3c"

name: "res3c"

type: "Eltwise"

}

layer {

bottom: "res3c"

top: "res3c"

name:"res3c_relu"

type: "ReLU"

}

layer {

bottom: "res3c"

top:"res3d_branch2a"

name:"res3d_branch2a"

type:"Convolution"

convolution_param {

num_output: 128

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res3d_branch2a"

top:"res3d_branch2a"

name:"bn3d_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res3d_branch2a"

top:"res3d_branch2a"

name:"scale3d_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3d_branch2a"

top:"res3d_branch2a"

name:"res3d_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res3d_branch2a"

top:"res3d_branch2b"

name:"res3d_branch2b"

type:"Convolution"

convolution_param {

num_output: 128

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res3d_branch2b"

top:"res3d_branch2b"

name:"bn3d_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res3d_branch2b"

top:"res3d_branch2b"

name:"scale3d_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res3d_branch2b"

top:"res3d_branch2b"

name:"res3d_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res3d_branch2b"

top:"res3d_branch2c"

name:"res3d_branch2c"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res3d_branch2c"

top:"res3d_branch2c"

name:"bn3d_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res3d_branch2c"

top:"res3d_branch2c"

name:"scale3d_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res3c"

bottom:"res3d_branch2c"

top: "res3d"

name: "res3d"

type: "Eltwise"

}

layer {

bottom: "res3d"

top: "res3d"

name:"res3d_relu"

type: "ReLU"

}

layer {

bottom: "res3d"

top:"res4a_branch1"

name:"res4a_branch1"

type:"Convolution"

convolution_param {

num_output: 1024

kernel_size: 1

pad: 0

stride: 2

bias_term: false

}

}

layer {

bottom: "res4a_branch1"

top:"res4a_branch1"

name:"bn4a_branch1"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4a_branch1"

top:"res4a_branch1"

name:"scale4a_branch1"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res3d"

top:"res4a_branch2a"

name:"res4a_branch2a"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 2

bias_term: false

}

}

layer {

bottom:"res4a_branch2a"

top:"res4a_branch2a"

name:"bn4a_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4a_branch2a"

top:"res4a_branch2a"

name:"scale4a_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4a_branch2a"

top:"res4a_branch2a"

name:"res4a_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res4a_branch2a"

top:"res4a_branch2b"

name:"res4a_branch2b"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res4a_branch2b"

top:"res4a_branch2b"

name:"bn4a_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4a_branch2b"

top:"res4a_branch2b"

name:"scale4a_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4a_branch2b"

top:"res4a_branch2b"

name:"res4a_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res4a_branch2b"

top:"res4a_branch2c"

name:"res4a_branch2c"

type:"Convolution"

convolution_param {

num_output: 1024

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4a_branch2c"

top:"res4a_branch2c"

name: "bn4a_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4a_branch2c"

top:"res4a_branch2c"

name:"scale4a_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4a_branch1"

bottom:"res4a_branch2c"

top: "res4a"

name: "res4a"

type: "Eltwise"

}

layer {

bottom: "res4a"

top: "res4a"

name:"res4a_relu"

type: "ReLU"

}

layer {

bottom: "res4a"

top:"res4b_branch2a"

name:"res4b_branch2a"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4b_branch2a"

top:"res4b_branch2a"

name:"bn4b_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4b_branch2a"

top:"res4b_branch2a"

name:"scale4b_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4b_branch2a"

top:"res4b_branch2a"

name:"res4b_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res4b_branch2a"

top:"res4b_branch2b"

name:"res4b_branch2b"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res4b_branch2b"

top:"res4b_branch2b"

name:"bn4b_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4b_branch2b"

top:"res4b_branch2b"

name:"scale4b_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4b_branch2b"

top:"res4b_branch2b"

name:"res4b_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res4b_branch2b"

top:"res4b_branch2c"

name:"res4b_branch2c"

type: "Convolution"

convolution_param {

num_output: 1024

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4b_branch2c"

top:"res4b_branch2c"

name:"bn4b_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4b_branch2c"

top:"res4b_branch2c"

name:"scale4b_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res4a"

bottom:"res4b_branch2c"

top: "res4b"

name: "res4b"

type: "Eltwise"

}

layer {

bottom: "res4b"

top: "res4b"

name:"res4b_relu"

type: "ReLU"

}

layer {

bottom: "res4b"

top:"res4c_branch2a"

name:"res4c_branch2a"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4c_branch2a"

top:"res4c_branch2a"

name:"bn4c_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4c_branch2a"

top:"res4c_branch2a"

name:"scale4c_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4c_branch2a"

top:"res4c_branch2a"

name:"res4c_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res4c_branch2a"

top:"res4c_branch2b"

name:"res4c_branch2b"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res4c_branch2b"

top:"res4c_branch2b"

name:"bn4c_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4c_branch2b"

top:"res4c_branch2b"

name:"scale4c_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4c_branch2b"

top: "res4c_branch2b"

name:"res4c_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res4c_branch2b"

top:"res4c_branch2c"

name:"res4c_branch2c"

type:"Convolution"

convolution_param {

num_output: 1024

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4c_branch2c"

top:"res4c_branch2c"

name:"bn4c_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4c_branch2c"

top:"res4c_branch2c"

name:"scale4c_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res4b"

bottom:"res4c_branch2c"

top: "res4c"

name: "res4c"

type: "Eltwise"

}

layer {

bottom: "res4c"

top: "res4c"

name:"res4c_relu"

type: "ReLU"

}

layer {

bottom: "res4c"

top:"res4d_branch2a"

name:"res4d_branch2a"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4d_branch2a"

top:"res4d_branch2a"

name:"bn4d_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4d_branch2a"

top:"res4d_branch2a"

name:"scale4d_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4d_branch2a"

top: "res4d_branch2a"

name:"res4d_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res4d_branch2a"

top:"res4d_branch2b"

name:"res4d_branch2b"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res4d_branch2b"

top:"res4d_branch2b"

name:"bn4d_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4d_branch2b"

top:"res4d_branch2b"

name:"scale4d_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4d_branch2b"

top:"res4d_branch2b"

name:"res4d_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res4d_branch2b"

top:"res4d_branch2c"

name:"res4d_branch2c"

type:"Convolution"

convolution_param {

num_output: 1024

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4d_branch2c"

top:"res4d_branch2c"

name:"bn4d_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4d_branch2c"

top:"res4d_branch2c"

name:"scale4d_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res4c"

bottom:"res4d_branch2c"

top: "res4d"

name: "res4d"

type: "Eltwise"

}

layer {

bottom: "res4d"

top: "res4d"

name:"res4d_relu"

type: "ReLU"

}

layer {

bottom: "res4d"

top:"res4e_branch2a"

name:"res4e_branch2a"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4e_branch2a"

top:"res4e_branch2a"

name:"bn4e_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4e_branch2a"

top:"res4e_branch2a"

name:"scale4e_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4e_branch2a"

top:"res4e_branch2a"

name:"res4e_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res4e_branch2a"

top:"res4e_branch2b"

name:"res4e_branch2b"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res4e_branch2b"

top:"res4e_branch2b"

name:"bn4e_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4e_branch2b"

top:"res4e_branch2b"

name: "scale4e_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4e_branch2b"

top:"res4e_branch2b"

name:"res4e_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res4e_branch2b"

top:"res4e_branch2c"

name:"res4e_branch2c"

type:"Convolution"

convolution_param {

num_output: 1024

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4e_branch2c"

top: "res4e_branch2c"

name:"bn4e_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4e_branch2c"

top:"res4e_branch2c"

name:"scale4e_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res4d"

bottom:"res4e_branch2c"

top: "res4e"

name: "res4e"

type: "Eltwise"

}

layer {

bottom: "res4e"

top: "res4e"

name:"res4e_relu"

type: "ReLU"

}

layer {

bottom: "res4e"

top:"res4f_branch2a"

name:"res4f_branch2a"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4f_branch2a"

top:"res4f_branch2a"

name:"bn4f_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4f_branch2a"

top:"res4f_branch2a"

name:"scale4f_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4f_branch2a"

top:"res4f_branch2a"

name:"res4f_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res4f_branch2a"

top:"res4f_branch2b"

name:"res4f_branch2b"

type:"Convolution"

convolution_param {

num_output: 256

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res4f_branch2b"

top:"res4f_branch2b"

name:"bn4f_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4f_branch2b"

top:"res4f_branch2b"

name:"scale4f_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res4f_branch2b"

top:"res4f_branch2b"

name:"res4f_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res4f_branch2b"

top:"res4f_branch2c"

name:"res4f_branch2c"

type: "Convolution"

convolution_param {

num_output: 1024

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res4f_branch2c"

top:"res4f_branch2c"

name:"bn4f_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res4f_branch2c"

top:"res4f_branch2c"

name:"scale4f_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res4e"

bottom:"res4f_branch2c"

top: "res4f"

name: "res4f"

type: "Eltwise"

}

layer {

bottom: "res4f"

top: "res4f"

name:"res4f_relu"

type: "ReLU"

}

layer {

bottom: "res4f"

top:"res5a_branch1"

name:"res5a_branch1"

type:"Convolution"

convolution_param {

num_output: 2048

kernel_size: 1

pad: 0

stride: 2

bias_term: false

}

}

layer {

bottom:"res5a_branch1"

top:"res5a_branch1"

name:"bn5a_branch1"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res5a_branch1"

top:"res5a_branch1"

name:"scale5a_branch1"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res4f"

top:"res5a_branch2a"

name:"res5a_branch2a"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 2

bias_term: false

}

}

layer {

bottom: "res5a_branch2a"

top:"res5a_branch2a"

name:"bn5a_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res5a_branch2a"

top:"res5a_branch2a"

name:"scale5a_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res5a_branch2a"

top:"res5a_branch2a"

name:"res5a_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res5a_branch2a"

top:"res5a_branch2b"

name:"res5a_branch2b"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res5a_branch2b"

top:"res5a_branch2b"

name:"bn5a_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res5a_branch2b"

top:"res5a_branch2b"

name:"scale5a_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res5a_branch2b"

top:"res5a_branch2b"

name:"res5a_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res5a_branch2b"

top:"res5a_branch2c"

name:"res5a_branch2c"

type:"Convolution"

convolution_param {

num_output: 2048

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res5a_branch2c"

top:"res5a_branch2c"

name:"bn5a_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res5a_branch2c"

top:"res5a_branch2c"

name:"scale5a_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res5a_branch1"

bottom:"res5a_branch2c"

top: "res5a"

name: "res5a"

type: "Eltwise"

}

layer {

bottom: "res5a"

top: "res5a"

name:"res5a_relu"

type: "ReLU"

}

layer {

bottom: "res5a"

top:"res5b_branch2a"

name:"res5b_branch2a"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res5b_branch2a"

top:"res5b_branch2a"

name:"bn5b_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res5b_branch2a"

top:"res5b_branch2a"

name:"scale5b_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res5b_branch2a"

top:"res5b_branch2a"

name:"res5b_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res5b_branch2a"

top:"res5b_branch2b"

name:"res5b_branch2b"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res5b_branch2b"

top:"res5b_branch2b"

name:"bn5b_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res5b_branch2b"

top:"res5b_branch2b"

name:"scale5b_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res5b_branch2b"

top: "res5b_branch2b"

name:"res5b_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res5b_branch2b"

top:"res5b_branch2c"

name:"res5b_branch2c"

type:"Convolution"

convolution_param {

num_output: 2048

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res5b_branch2c"

top:"res5b_branch2c"

name:"bn5b_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res5b_branch2c"

top:"res5b_branch2c"

name:"scale5b_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res5a"

bottom:"res5b_branch2c"

top: "res5b"

name: "res5b"

type: "Eltwise"

}

layer {

bottom: "res5b"

top: "res5b"

name:"res5b_relu"

type: "ReLU"

}

layer {

bottom: "res5b"

top:"res5c_branch2a"

name:"res5c_branch2a"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res5c_branch2a"

top:"res5c_branch2a"

name:"bn5c_branch2a"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res5c_branch2a"

top:"res5c_branch2a"

name:"scale5c_branch2a"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res5c_branch2a"

top: "res5c_branch2a"

name:"res5c_branch2a_relu"

type: "ReLU"

}

layer {

bottom:"res5c_branch2a"

top:"res5c_branch2b"

name:"res5c_branch2b"

type:"Convolution"

convolution_param {

num_output: 512

kernel_size: 3

pad: 1

stride: 1

bias_term: false

}

}

layer {

bottom:"res5c_branch2b"

top:"res5c_branch2b"

name:"bn5c_branch2b"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res5c_branch2b"

top:"res5c_branch2b"

name:"scale5c_branch2b"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom:"res5c_branch2b"

top:"res5c_branch2b"

name:"res5c_branch2b_relu"

type: "ReLU"

}

layer {

bottom:"res5c_branch2b"

top:"res5c_branch2c"

name:"res5c_branch2c"

type:"Convolution"

convolution_param {

num_output: 2048

kernel_size: 1

pad: 0

stride: 1

bias_term: false

}

}

layer {

bottom:"res5c_branch2c"

top:"res5c_branch2c"

name:"bn5c_branch2c"

type:"BatchNorm"

batch_norm_param {

use_global_stats:true

}

}

layer {

bottom:"res5c_branch2c"

top:"res5c_branch2c"

name:"scale5c_branch2c"

type: "Scale"

scale_param {

bias_term: true

}

}

layer {

bottom: "res5b"

bottom:"res5c_branch2c"

top: "res5c"

name: "res5c"

type: "Eltwise"

}

layer {

bottom: "res5c"

top: "res5c"

name:"res5c_relu"

type: "ReLU"

}

layer {

bottom: "res5c"

top: "pool5"

name: "pool5"

type: "Pooling"

pooling_param {

kernel_size: 7

stride: 1

pool: AVE

}

}

layer {

bottom: "pool5"

top: "fc204"

name: "fc204"

type:"InnerProduct"

inner_product_param {

num_output: 204

}

}

layer {

name:"accuracy-1"

type: "Accuracy"

bottom: "fc204"

bottom: "label"

top: "accuracy-1"

include {

phase: TEST

}

}

layer {

name:"accuracy-5"

type: "Accuracy"

bottom: "fc204"

bottom: "label"

top: "accuracy-5"

include {

phase: TEST

}

accuracy_param {

top_k:5

}

}

#layer {

# name: "loss"

# type:"SoftmaxWithLoss"

# bottom: "fc204"

# bottom: "label"

# top: "loss"

#}

#layer {

# bottom: "fc204"

# top: "prob"

# name: "prob"

# type: "Softmax"

#}

7. Reference

[1]. 18层的resnet网络:https://github.com/HolmesShuan/ResNet-18-Caffemodel-on-ImageNet

[2]. 多种层数的resnet网络:https://github.com/antingshen/resnet-protofiles

[3]. 网络结构可视化网址:http://ethereon.github.io/netscope/#/editor
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: