|
|
name: "ResNet-18-deploy" |
|
|
input: "data" |
|
|
input_dim: 1 |
|
|
input_dim: 3 |
|
|
input_dim: 224 |
|
|
input_dim: 224 |
|
|
|
|
|
|
|
|
|
|
|
layer { |
|
|
bottom: "data" |
|
|
top: "conv1" |
|
|
name: "conv1" |
|
|
type: "Convolution" |
|
|
param { |
|
|
name: "conv1_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 64 |
|
|
kernel_size: 7 |
|
|
pad: 3 |
|
|
stride: 2 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "conv1" |
|
|
top: "conv1" |
|
|
name: "bn_conv1" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
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" |
|
|
param { |
|
|
name: "res2a_branch1_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 64 |
|
|
kernel_size: 1 |
|
|
pad: 0 |
|
|
stride: 1 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res2a_branch1" |
|
|
top: "res2a_branch1" |
|
|
name: "bn2a_branch1" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
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" |
|
|
param { |
|
|
name: "res2a_branch2a_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 64 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 1 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res2a_branch2a" |
|
|
top: "res2a_branch2a" |
|
|
name: "bn2a_branch2a" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
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" |
|
|
param { |
|
|
name: "res2a_branch2b_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 64 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 1 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res2a_branch2b" |
|
|
top: "res2a_branch2b" |
|
|
name: "bn2a_branch2b" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
use_global_stats: true |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res2a_branch2b" |
|
|
top: "res2a_branch2b" |
|
|
name: "scale2a_branch2b" |
|
|
type: "Scale" |
|
|
scale_param { |
|
|
bias_term: true |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res2a_branch1" |
|
|
bottom: "res2a_branch2b" |
|
|
top: "res2a" |
|
|
name: "res2a" |
|
|
type: "Eltwise" |
|
|
eltwise_param { |
|
|
operation: SUM |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res2a" |
|
|
top: "res2a" |
|
|
name: "res2a_relu" |
|
|
type: "ReLU" |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res2a" |
|
|
top: "res2b_branch2a" |
|
|
name: "res2b_branch2a" |
|
|
type: "Convolution" |
|
|
param { |
|
|
name: "res2b_branch2a_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 64 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 1 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res2b_branch2a" |
|
|
top: "res2b_branch2a" |
|
|
name: "bn2b_branch2a" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
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" |
|
|
param { |
|
|
name: "res2b_branch2b_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 64 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 1 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res2b_branch2b" |
|
|
top: "res2b_branch2b" |
|
|
name: "bn2b_branch2b" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
use_global_stats: true |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res2b_branch2b" |
|
|
top: "res2b_branch2b" |
|
|
name: "scale2b_branch2b" |
|
|
type: "Scale" |
|
|
scale_param { |
|
|
bias_term: true |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res2a" |
|
|
bottom: "res2b_branch2b" |
|
|
top: "res2b" |
|
|
name: "res2b" |
|
|
type: "Eltwise" |
|
|
eltwise_param { |
|
|
operation: SUM |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res2b" |
|
|
top: "res2b" |
|
|
name: "res2b_relu" |
|
|
type: "ReLU" |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res2b" |
|
|
top: "res3a_branch1" |
|
|
name: "res3a_branch1" |
|
|
type: "Convolution" |
|
|
param { |
|
|
name: "res3a_branch1_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 128 |
|
|
kernel_size: 1 |
|
|
pad: 0 |
|
|
stride: 2 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res3a_branch1" |
|
|
top: "res3a_branch1" |
|
|
name: "bn3a_branch1" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
use_global_stats: true |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res3a_branch1" |
|
|
top: "res3a_branch1" |
|
|
name: "scale3a_branch1" |
|
|
type: "Scale" |
|
|
scale_param { |
|
|
bias_term: true |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res2b" |
|
|
top: "res3a_branch2a" |
|
|
name: "res3a_branch2a" |
|
|
type: "Convolution" |
|
|
param { |
|
|
name: "res3a_branch2a_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 128 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 2 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res3a_branch2a" |
|
|
top: "res3a_branch2a" |
|
|
name: "bn3a_branch2a" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
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" |
|
|
param { |
|
|
name: "res3a_branch2b_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 128 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 1 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res3a_branch2b" |
|
|
top: "res3a_branch2b" |
|
|
name: "bn3a_branch2b" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
use_global_stats: true |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res3a_branch2b" |
|
|
top: "res3a_branch2b" |
|
|
name: "scale3a_branch2b" |
|
|
type: "Scale" |
|
|
scale_param { |
|
|
bias_term: true |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res3a_branch1" |
|
|
bottom: "res3a_branch2b" |
|
|
top: "res3a" |
|
|
name: "res3a" |
|
|
type: "Eltwise" |
|
|
eltwise_param { |
|
|
operation: SUM |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res3a" |
|
|
top: "res3a" |
|
|
name: "res3a_relu" |
|
|
type: "ReLU" |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res3a" |
|
|
top: "res3b_branch2a" |
|
|
name: "res3b_branch2a" |
|
|
type: "Convolution" |
|
|
param { |
|
|
name: "res3b_branch2a_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 128 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 1 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res3b_branch2a" |
|
|
top: "res3b_branch2a" |
|
|
name: "bn3b_branch2a" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
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" |
|
|
param { |
|
|
name: "res3b_branch2b_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 128 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 1 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res3b_branch2b" |
|
|
top: "res3b_branch2b" |
|
|
name: "bn3b_branch2b" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
use_global_stats: true |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res3b_branch2b" |
|
|
top: "res3b_branch2b" |
|
|
name: "scale3b_branch2b" |
|
|
type: "Scale" |
|
|
scale_param { |
|
|
bias_term: true |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res3a" |
|
|
bottom: "res3b_branch2b" |
|
|
top: "res3b" |
|
|
name: "res3b" |
|
|
type: "Eltwise" |
|
|
eltwise_param { |
|
|
operation: SUM |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res3b" |
|
|
top: "res3b" |
|
|
name: "res3b_relu" |
|
|
type: "ReLU" |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res3b" |
|
|
top: "res4a_branch1" |
|
|
name: "res4a_branch1" |
|
|
type: "Convolution" |
|
|
param { |
|
|
name: "res4a_branch1_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 256 |
|
|
kernel_size: 1 |
|
|
pad: 0 |
|
|
stride: 2 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res4a_branch1" |
|
|
top: "res4a_branch1" |
|
|
name: "bn4a_branch1" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
use_global_stats: true |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res4a_branch1" |
|
|
top: "res4a_branch1" |
|
|
name: "scale4a_branch1" |
|
|
type: "Scale" |
|
|
scale_param { |
|
|
bias_term: true |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res3b" |
|
|
top: "res4a_branch2a" |
|
|
name: "res4a_branch2a" |
|
|
type: "Convolution" |
|
|
param { |
|
|
name: "res4a_branch2a_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 256 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 2 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res4a_branch2a" |
|
|
top: "res4a_branch2a" |
|
|
name: "bn4a_branch2a" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
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" |
|
|
param { |
|
|
name: "res4a_branch2b_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 256 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 1 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res4a_branch2b" |
|
|
top: "res4a_branch2b" |
|
|
name: "bn4a_branch2b" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
use_global_stats: true |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res4a_branch2b" |
|
|
top: "res4a_branch2b" |
|
|
name: "scale4a_branch2b" |
|
|
type: "Scale" |
|
|
scale_param { |
|
|
bias_term: true |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res4a_branch1" |
|
|
bottom: "res4a_branch2b" |
|
|
top: "res4a" |
|
|
name: "res4a" |
|
|
type: "Eltwise" |
|
|
eltwise_param { |
|
|
operation: SUM |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res4a" |
|
|
top: "res4a" |
|
|
name: "res4a_relu" |
|
|
type: "ReLU" |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res4a" |
|
|
top: "res4b_branch2a" |
|
|
name: "res4b_branch2a" |
|
|
type: "Convolution" |
|
|
param { |
|
|
name: "res4b_branch2a_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 256 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 1 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res4b_branch2a" |
|
|
top: "res4b_branch2a" |
|
|
name: "bn4b_branch2a" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
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" |
|
|
param { |
|
|
name: "res4b_branch2b_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 256 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 1 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res4b_branch2b" |
|
|
top: "res4b_branch2b" |
|
|
name: "bn4b_branch2b" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
use_global_stats: true |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res4b_branch2b" |
|
|
top: "res4b_branch2b" |
|
|
name: "scale4b_branch2b" |
|
|
type: "Scale" |
|
|
scale_param { |
|
|
bias_term: true |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res4a" |
|
|
bottom: "res4b_branch2b" |
|
|
top: "res4b" |
|
|
name: "res4b" |
|
|
type: "Eltwise" |
|
|
eltwise_param { |
|
|
operation: SUM |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res4b" |
|
|
top: "res4b" |
|
|
name: "res4b_relu" |
|
|
type: "ReLU" |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res4b" |
|
|
top: "res5a_branch1" |
|
|
name: "res5a_branch1" |
|
|
type: "Convolution" |
|
|
param { |
|
|
name: "res5a_branch1_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 512 |
|
|
kernel_size: 1 |
|
|
pad: 0 |
|
|
stride: 2 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res5a_branch1" |
|
|
top: "res5a_branch1" |
|
|
name: "bn5a_branch1" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
use_global_stats: true |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res5a_branch1" |
|
|
top: "res5a_branch1" |
|
|
name: "scale5a_branch1" |
|
|
type: "Scale" |
|
|
scale_param { |
|
|
bias_term: true |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res4b" |
|
|
top: "res5a_branch2a" |
|
|
name: "res5a_branch2a" |
|
|
type: "Convolution" |
|
|
param { |
|
|
name: "res5a_branch2a_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 512 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 2 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res5a_branch2a" |
|
|
top: "res5a_branch2a" |
|
|
name: "bn5a_branch2a" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
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" |
|
|
param { |
|
|
name: "res5a_branch2b_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 512 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 1 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res5a_branch2b" |
|
|
top: "res5a_branch2b" |
|
|
name: "bn5a_branch2b" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
use_global_stats: true |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res5a_branch2b" |
|
|
top: "res5a_branch2b" |
|
|
name: "scale5a_branch2b" |
|
|
type: "Scale" |
|
|
scale_param { |
|
|
bias_term: true |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res5a_branch1" |
|
|
bottom: "res5a_branch2b" |
|
|
top: "res5a" |
|
|
name: "res5a" |
|
|
type: "Eltwise" |
|
|
eltwise_param { |
|
|
operation: SUM |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res5a" |
|
|
top: "res5a" |
|
|
name: "res5a_relu" |
|
|
type: "ReLU" |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res5a" |
|
|
top: "res5b_branch2a" |
|
|
name: "res5b_branch2a" |
|
|
type: "Convolution" |
|
|
param { |
|
|
name: "res5b_branch2a_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 512 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 1 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res5b_branch2a" |
|
|
top: "res5b_branch2a" |
|
|
name: "bn5b_branch2a" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
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" |
|
|
param { |
|
|
name: "res5b_branch2b_w" |
|
|
lr_mult: 1 |
|
|
decay_mult: 1 |
|
|
} |
|
|
convolution_param { |
|
|
num_output: 512 |
|
|
kernel_size: 3 |
|
|
pad: 1 |
|
|
stride: 1 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
} |
|
|
bias_term: false |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res5b_branch2b" |
|
|
top: "res5b_branch2b" |
|
|
name: "bn5b_branch2b" |
|
|
type: "BatchNorm" |
|
|
batch_norm_param { |
|
|
# moving_average_fraction: 0.9 |
|
|
use_global_stats: true |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res5b_branch2b" |
|
|
top: "res5b_branch2b" |
|
|
name: "scale5b_branch2b" |
|
|
type: "Scale" |
|
|
scale_param { |
|
|
bias_term: true |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res5a" |
|
|
bottom: "res5b_branch2b" |
|
|
top: "res5b" |
|
|
name: "res5b" |
|
|
type: "Eltwise" |
|
|
eltwise_param { |
|
|
operation: SUM |
|
|
} |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res5b" |
|
|
top: "res5b" |
|
|
name: "res5b_relu" |
|
|
type: "ReLU" |
|
|
} |
|
|
|
|
|
layer { |
|
|
bottom: "res5b" |
|
|
top: "pool5" |
|
|
name: "pool5" |
|
|
type: "Pooling" |
|
|
pooling_param { |
|
|
kernel_size: 7 |
|
|
stride: 1 |
|
|
pool: AVE |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
layer { |
|
|
name: "feat1" |
|
|
type: "InnerProduct" |
|
|
bottom: "pool5" |
|
|
top: "feat1" |
|
|
param { |
|
|
name: "feat1_w" |
|
|
} |
|
|
param { |
|
|
name: "feat1_b" |
|
|
} |
|
|
inner_product_param { |
|
|
num_output: 1 |
|
|
weight_filler { |
|
|
type: "msra" |
|
|
std: 0.01 |
|
|
} |
|
|
bias_filler { |
|
|
type: "constant" |
|
|
value: 0 |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|