Skip to content

Instantly share code, notes, and snippets.

@northeastsquare
Created May 9, 2018 06:07
Show Gist options
  • Save northeastsquare/5577867c7084405bf2ed567af1f1bcdf to your computer and use it in GitHub Desktop.
Save northeastsquare/5577867c7084405bf2ed567af1f1bcdf to your computer and use it in GitHub Desktop.
shufflenet
name: "shufflenet"
# transform_param {
# scale: 0.017
# mirror: false
# crop_size: 224
# mean_value: [103.94,116.78,123.68]
# }
input: "data"
input_shape {
dim: 1
dim: 3
dim: 224
dim: 224
}
layer {
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"
convolution_param {
num_output: 24
pad: 1
kernel_size: 3
stride: 2
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv1_bn"
type: "BatchNorm"
bottom: "conv1"
top: "conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "conv1_scale"
bottom: "conv1"
top: "conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "conv1_relu"
type: "ReLU"
bottom: "conv1"
top: "conv1"
}
layer {
name: "pool1"
type: "Pooling"
bottom: "conv1"
top: "pool1"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
layer {
name: "resx1_match_conv"
type: "Pooling"
bottom: "pool1"
top: "resx1_match_conv"
pooling_param {
pool: AVE
kernel_size: 3
stride: 2
}
}
layer {
name: "resx1_conv1"
type: "Convolution"
bottom: "pool1"
top: "resx1_conv1"
convolution_param {
num_output: 54
kernel_size: 1
stride: 1
pad: 0
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx1_conv1_bn"
type: "BatchNorm"
bottom: "resx1_conv1"
top: "resx1_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx1_conv1_scale"
bottom: "resx1_conv1"
top: "resx1_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx1_conv1_relu"
type: "ReLU"
bottom: "resx1_conv1"
top: "resx1_conv1"
}
layer {
name: "resx1_conv2"
type: "ConvolutionDepthwise"
bottom: "resx1_conv1"
top: "resx1_conv2"
convolution_param {
num_output: 54
kernel_size: 3
stride: 2
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx1_conv2_bn"
type: "BatchNorm"
bottom: "resx1_conv2"
top: "resx1_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx1_conv2_scale"
bottom: "resx1_conv2"
top: "resx1_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx1_conv3"
type: "Convolution"
bottom: "resx1_conv2"
top: "resx1_conv3"
convolution_param {
num_output: 216
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx1_conv3_bn"
type: "BatchNorm"
bottom: "resx1_conv3"
top: "resx1_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx1_conv3_scale"
bottom: "resx1_conv3"
top: "resx1_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx1_concat"
type: "Concat"
bottom: "resx1_match_conv"
bottom: "resx1_conv3"
top: "resx1_concat"
}
layer {
name: "resx1_concat_relu"
type: "ReLU"
bottom: "resx1_concat"
top: "resx1_concat"
}
layer {
name: "resx2_conv1"
type: "Convolution"
bottom: "resx1_concat"
top: "resx2_conv1"
convolution_param {
num_output: 60
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx2_conv1_bn"
type: "BatchNorm"
bottom: "resx2_conv1"
top: "resx2_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx2_conv1_scale"
bottom: "resx2_conv1"
top: "resx2_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx2_conv1_relu"
type: "ReLU"
bottom: "resx2_conv1"
top: "resx2_conv1"
}
layer {
name: "shuffle2"
type: "ShuffleChannel"
bottom: "resx2_conv1"
top: "shuffle2"
shuffle_channel_param {
group: 3
}
}
layer {
name: "resx2_conv2"
type: "ConvolutionDepthwise"
bottom: "shuffle2"
top: "resx2_conv2"
convolution_param {
num_output: 60
kernel_size: 3
stride: 1
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx2_conv2_bn"
type: "BatchNorm"
bottom: "resx2_conv2"
top: "resx2_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx2_conv2_scale"
bottom: "resx2_conv2"
top: "resx2_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx2_conv3"
type: "Convolution"
bottom: "resx2_conv2"
top: "resx2_conv3"
convolution_param {
num_output: 240
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx2_conv3_bn"
type: "BatchNorm"
bottom: "resx2_conv3"
top: "resx2_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx2_conv3_scale"
bottom: "resx2_conv3"
top: "resx2_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx2_elewise"
type: "Eltwise"
bottom: "resx1_concat"
bottom: "resx2_conv3"
top: "resx2_elewise"
eltwise_param {
operation: SUM
}
}
layer {
name: "resx2_elewise_relu"
type: "ReLU"
bottom: "resx2_elewise"
top: "resx2_elewise"
}
layer {
name: "resx3_conv1"
type: "Convolution"
bottom: "resx2_elewise"
top: "resx3_conv1"
convolution_param {
num_output: 60
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx3_conv1_bn"
type: "BatchNorm"
bottom: "resx3_conv1"
top: "resx3_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx3_conv1_scale"
bottom: "resx3_conv1"
top: "resx3_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx3_conv1_relu"
type: "ReLU"
bottom: "resx3_conv1"
top: "resx3_conv1"
}
layer {
name: "shuffle3"
type: "ShuffleChannel"
bottom: "resx3_conv1"
top: "shuffle3"
shuffle_channel_param {
group: 3
}
}
layer {
name: "resx3_conv2"
type: "ConvolutionDepthwise"
bottom: "shuffle3"
top: "resx3_conv2"
convolution_param {
num_output: 60
kernel_size: 3
stride: 1
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx3_conv2_bn"
type: "BatchNorm"
bottom: "resx3_conv2"
top: "resx3_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx3_conv2_scale"
bottom: "resx3_conv2"
top: "resx3_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx3_conv3"
type: "Convolution"
bottom: "resx3_conv2"
top: "resx3_conv3"
convolution_param {
num_output: 240
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx3_conv3_bn"
type: "BatchNorm"
bottom: "resx3_conv3"
top: "resx3_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx3_conv3_scale"
bottom: "resx3_conv3"
top: "resx3_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx3_elewise"
type: "Eltwise"
bottom: "resx2_elewise"
bottom: "resx3_conv3"
top: "resx3_elewise"
eltwise_param {
operation: SUM
}
}
layer {
name: "resx3_elewise_relu"
type: "ReLU"
bottom: "resx3_elewise"
top: "resx3_elewise"
}
layer {
name: "resx4_conv1"
type: "Convolution"
bottom: "resx3_elewise"
top: "resx4_conv1"
convolution_param {
num_output: 60
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx4_conv1_bn"
type: "BatchNorm"
bottom: "resx4_conv1"
top: "resx4_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx4_conv1_scale"
bottom: "resx4_conv1"
top: "resx4_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx4_conv1_relu"
type: "ReLU"
bottom: "resx4_conv1"
top: "resx4_conv1"
}
layer {
name: "shuffle4"
type: "ShuffleChannel"
bottom: "resx4_conv1"
top: "shuffle4"
shuffle_channel_param {
group: 3
}
}
layer {
name: "resx4_conv2"
type: "ConvolutionDepthwise"
bottom: "shuffle4"
top: "resx4_conv2"
convolution_param {
num_output: 60
kernel_size: 3
stride: 1
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx4_conv2_bn"
type: "BatchNorm"
bottom: "resx4_conv2"
top: "resx4_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx4_conv2_scale"
bottom: "resx4_conv2"
top: "resx4_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx4_conv3"
type: "Convolution"
bottom: "resx4_conv2"
top: "resx4_conv3"
convolution_param {
num_output: 240
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx4_conv3_bn"
type: "BatchNorm"
bottom: "resx4_conv3"
top: "resx4_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx4_conv3_scale"
bottom: "resx4_conv3"
top: "resx4_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx4_elewise"
type: "Eltwise"
bottom: "resx3_elewise"
bottom: "resx4_conv3"
top: "resx4_elewise"
eltwise_param {
operation: SUM
}
}
layer {
name: "resx4_elewise_relu"
type: "ReLU"
bottom: "resx4_elewise"
top: "resx4_elewise"
}
layer {
name: "resx5_match_conv"
type: "Pooling"
bottom: "resx4_elewise"
top: "resx5_match_conv"
pooling_param {
pool: AVE
kernel_size: 3
stride: 2
}
}
layer {
name: "resx5_conv1"
type: "Convolution"
bottom: "resx4_elewise"
top: "resx5_conv1"
convolution_param {
num_output: 60
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx5_conv1_bn"
type: "BatchNorm"
bottom: "resx5_conv1"
top: "resx5_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx5_conv1_scale"
bottom: "resx5_conv1"
top: "resx5_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx5_conv1_relu"
type: "ReLU"
bottom: "resx5_conv1"
top: "resx5_conv1"
}
layer {
name: "shuffle5"
type: "ShuffleChannel"
bottom: "resx5_conv1"
top: "shuffle5"
shuffle_channel_param {
group: 3
}
}
layer {
name: "resx5_conv2"
type: "ConvolutionDepthwise"
bottom: "shuffle5"
top: "resx5_conv2"
convolution_param {
num_output: 60
kernel_size: 3
stride: 2
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx5_conv2_bn"
type: "BatchNorm"
bottom: "resx5_conv2"
top: "resx5_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx5_conv2_scale"
bottom: "resx5_conv2"
top: "resx5_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx5_conv3"
type: "Convolution"
bottom: "resx5_conv2"
top: "resx5_conv3"
convolution_param {
num_output: 240
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx5_conv3_bn"
type: "BatchNorm"
bottom: "resx5_conv3"
top: "resx5_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx5_conv3_scale"
bottom: "resx5_conv3"
top: "resx5_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx5_concat"
type: "Concat"
bottom: "resx5_match_conv"
bottom: "resx5_conv3"
top: "resx5_concat"
}
layer {
name: "resx5_concat_relu"
type: "ReLU"
bottom: "resx5_concat"
top: "resx5_concat"
}
layer {
name: "resx6_conv1"
type: "Convolution"
bottom: "resx5_concat"
top: "resx6_conv1"
convolution_param {
num_output: 120
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx6_conv1_bn"
type: "BatchNorm"
bottom: "resx6_conv1"
top: "resx6_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx6_conv1_scale"
bottom: "resx6_conv1"
top: "resx6_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx6_conv1_relu"
type: "ReLU"
bottom: "resx6_conv1"
top: "resx6_conv1"
}
layer {
name: "shuffle6"
type: "ShuffleChannel"
bottom: "resx6_conv1"
top: "shuffle6"
shuffle_channel_param {
group: 3
}
}
layer {
name: "resx6_conv2"
type: "ConvolutionDepthwise"
bottom: "shuffle6"
top: "resx6_conv2"
convolution_param {
num_output: 120
kernel_size: 3
stride: 1
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx6_conv2_bn"
type: "BatchNorm"
bottom: "resx6_conv2"
top: "resx6_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx6_conv2_scale"
bottom: "resx6_conv2"
top: "resx6_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx6_conv3"
type: "Convolution"
bottom: "resx6_conv2"
top: "resx6_conv3"
convolution_param {
num_output: 480
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx6_conv3_bn"
type: "BatchNorm"
bottom: "resx6_conv3"
top: "resx6_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx6_conv3_scale"
bottom: "resx6_conv3"
top: "resx6_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx6_elewise"
type: "Eltwise"
bottom: "resx5_concat"
bottom: "resx6_conv3"
top: "resx6_elewise"
eltwise_param {
operation: SUM
}
}
layer {
name: "resx6_elewise_relu"
type: "ReLU"
bottom: "resx6_elewise"
top: "resx6_elewise"
}
layer {
name: "resx7_conv1"
type: "Convolution"
bottom: "resx6_elewise"
top: "resx7_conv1"
convolution_param {
num_output: 120
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx7_conv1_bn"
type: "BatchNorm"
bottom: "resx7_conv1"
top: "resx7_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx7_conv1_scale"
bottom: "resx7_conv1"
top: "resx7_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx7_conv1_relu"
type: "ReLU"
bottom: "resx7_conv1"
top: "resx7_conv1"
}
layer {
name: "shuffle7"
type: "ShuffleChannel"
bottom: "resx7_conv1"
top: "shuffle7"
shuffle_channel_param {
group: 3
}
}
layer {
name: "resx7_conv2"
type: "ConvolutionDepthwise"
bottom: "shuffle7"
top: "resx7_conv2"
convolution_param {
num_output: 120
kernel_size: 3
stride: 1
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx7_conv2_bn"
type: "BatchNorm"
bottom: "resx7_conv2"
top: "resx7_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx7_conv2_scale"
bottom: "resx7_conv2"
top: "resx7_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx7_conv3"
type: "Convolution"
bottom: "resx7_conv2"
top: "resx7_conv3"
convolution_param {
num_output: 480
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx7_conv3_bn"
type: "BatchNorm"
bottom: "resx7_conv3"
top: "resx7_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx7_conv3_scale"
bottom: "resx7_conv3"
top: "resx7_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx7_elewise"
type: "Eltwise"
bottom: "resx6_elewise"
bottom: "resx7_conv3"
top: "resx7_elewise"
eltwise_param {
operation: SUM
}
}
layer {
name: "resx7_elewise_relu"
type: "ReLU"
bottom: "resx7_elewise"
top: "resx7_elewise"
}
layer {
name: "resx8_conv1"
type: "Convolution"
bottom: "resx7_elewise"
top: "resx8_conv1"
convolution_param {
num_output: 120
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx8_conv1_bn"
type: "BatchNorm"
bottom: "resx8_conv1"
top: "resx8_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx8_conv1_scale"
bottom: "resx8_conv1"
top: "resx8_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx8_conv1_relu"
type: "ReLU"
bottom: "resx8_conv1"
top: "resx8_conv1"
}
layer {
name: "shuffle8"
type: "ShuffleChannel"
bottom: "resx8_conv1"
top: "shuffle8"
shuffle_channel_param {
group: 3
}
}
layer {
name: "resx8_conv2"
type: "ConvolutionDepthwise"
bottom: "shuffle8"
top: "resx8_conv2"
convolution_param {
num_output: 120
kernel_size: 3
stride: 1
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx8_conv2_bn"
type: "BatchNorm"
bottom: "resx8_conv2"
top: "resx8_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx8_conv2_scale"
bottom: "resx8_conv2"
top: "resx8_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx8_conv3"
type: "Convolution"
bottom: "resx8_conv2"
top: "resx8_conv3"
convolution_param {
num_output: 480
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx8_conv3_bn"
type: "BatchNorm"
bottom: "resx8_conv3"
top: "resx8_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx8_conv3_scale"
bottom: "resx8_conv3"
top: "resx8_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx8_elewise"
type: "Eltwise"
bottom: "resx7_elewise"
bottom: "resx8_conv3"
top: "resx8_elewise"
eltwise_param {
operation: SUM
}
}
layer {
name: "resx8_elewise_relu"
type: "ReLU"
bottom: "resx8_elewise"
top: "resx8_elewise"
}
layer {
name: "resx9_conv1"
type: "Convolution"
bottom: "resx8_elewise"
top: "resx9_conv1"
convolution_param {
num_output: 120
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx9_conv1_bn"
type: "BatchNorm"
bottom: "resx9_conv1"
top: "resx9_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx9_conv1_scale"
bottom: "resx9_conv1"
top: "resx9_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx9_conv1_relu"
type: "ReLU"
bottom: "resx9_conv1"
top: "resx9_conv1"
}
layer {
name: "shuffle9"
type: "ShuffleChannel"
bottom: "resx9_conv1"
top: "shuffle9"
shuffle_channel_param {
group: 3
}
}
layer {
name: "resx9_conv2"
type: "ConvolutionDepthwise"
bottom: "shuffle9"
top: "resx9_conv2"
convolution_param {
num_output: 120
kernel_size: 3
stride: 1
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx9_conv2_bn"
type: "BatchNorm"
bottom: "resx9_conv2"
top: "resx9_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx9_conv2_scale"
bottom: "resx9_conv2"
top: "resx9_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx9_conv3"
type: "Convolution"
bottom: "resx9_conv2"
top: "resx9_conv3"
convolution_param {
num_output: 480
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx9_conv3_bn"
type: "BatchNorm"
bottom: "resx9_conv3"
top: "resx9_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx9_conv3_scale"
bottom: "resx9_conv3"
top: "resx9_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx9_elewise"
type: "Eltwise"
bottom: "resx8_elewise"
bottom: "resx9_conv3"
top: "resx9_elewise"
eltwise_param {
operation: SUM
}
}
layer {
name: "resx9_elewise_relu"
type: "ReLU"
bottom: "resx9_elewise"
top: "resx9_elewise"
}
layer {
name: "resx10_conv1"
type: "Convolution"
bottom: "resx9_elewise"
top: "resx10_conv1"
convolution_param {
num_output: 120
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx10_conv1_bn"
type: "BatchNorm"
bottom: "resx10_conv1"
top: "resx10_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx10_conv1_scale"
bottom: "resx10_conv1"
top: "resx10_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx10_conv1_relu"
type: "ReLU"
bottom: "resx10_conv1"
top: "resx10_conv1"
}
layer {
name: "shuffle10"
type: "ShuffleChannel"
bottom: "resx10_conv1"
top: "shuffle10"
shuffle_channel_param {
group: 3
}
}
layer {
name: "resx10_conv2"
type: "ConvolutionDepthwise"
bottom: "shuffle10"
top: "resx10_conv2"
convolution_param {
num_output: 120
kernel_size: 3
stride: 1
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx10_conv2_bn"
type: "BatchNorm"
bottom: "resx10_conv2"
top: "resx10_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx10_conv2_scale"
bottom: "resx10_conv2"
top: "resx10_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx10_conv3"
type: "Convolution"
bottom: "resx10_conv2"
top: "resx10_conv3"
convolution_param {
num_output: 480
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx10_conv3_bn"
type: "BatchNorm"
bottom: "resx10_conv3"
top: "resx10_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx10_conv3_scale"
bottom: "resx10_conv3"
top: "resx10_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx10_elewise"
type: "Eltwise"
bottom: "resx9_elewise"
bottom: "resx10_conv3"
top: "resx10_elewise"
eltwise_param {
operation: SUM
}
}
layer {
name: "resx10_elewise_relu"
type: "ReLU"
bottom: "resx10_elewise"
top: "resx10_elewise"
}
layer {
name: "resx11_conv1"
type: "Convolution"
bottom: "resx10_elewise"
top: "resx11_conv1"
convolution_param {
num_output: 120
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx11_conv1_bn"
type: "BatchNorm"
bottom: "resx11_conv1"
top: "resx11_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx11_conv1_scale"
bottom: "resx11_conv1"
top: "resx11_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx11_conv1_relu"
type: "ReLU"
bottom: "resx11_conv1"
top: "resx11_conv1"
}
layer {
name: "shuffle11"
type: "ShuffleChannel"
bottom: "resx11_conv1"
top: "shuffle11"
shuffle_channel_param {
group: 3
}
}
layer {
name: "resx11_conv2"
type: "ConvolutionDepthwise"
bottom: "shuffle11"
top: "resx11_conv2"
convolution_param {
num_output: 120
kernel_size: 3
stride: 1
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx11_conv2_bn"
type: "BatchNorm"
bottom: "resx11_conv2"
top: "resx11_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx11_conv2_scale"
bottom: "resx11_conv2"
top: "resx11_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx11_conv3"
type: "Convolution"
bottom: "resx11_conv2"
top: "resx11_conv3"
convolution_param {
num_output: 480
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx11_conv3_bn"
type: "BatchNorm"
bottom: "resx11_conv3"
top: "resx11_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx11_conv3_scale"
bottom: "resx11_conv3"
top: "resx11_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx11_elewise"
type: "Eltwise"
bottom: "resx10_elewise"
bottom: "resx11_conv3"
top: "resx11_elewise"
eltwise_param {
operation: SUM
}
}
layer {
name: "resx11_elewise_relu"
type: "ReLU"
bottom: "resx11_elewise"
top: "resx11_elewise"
}
layer {
name: "resx12_conv1"
type: "Convolution"
bottom: "resx11_elewise"
top: "resx12_conv1"
convolution_param {
num_output: 120
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx12_conv1_bn"
type: "BatchNorm"
bottom: "resx12_conv1"
top: "resx12_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx12_conv1_scale"
bottom: "resx12_conv1"
top: "resx12_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx12_conv1_relu"
type: "ReLU"
bottom: "resx12_conv1"
top: "resx12_conv1"
}
layer {
name: "shuffle12"
type: "ShuffleChannel"
bottom: "resx12_conv1"
top: "shuffle12"
shuffle_channel_param {
group: 3
}
}
layer {
name: "resx12_conv2"
type: "ConvolutionDepthwise"
bottom: "shuffle12"
top: "resx12_conv2"
convolution_param {
num_output: 120
kernel_size: 3
stride: 1
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx12_conv2_bn"
type: "BatchNorm"
bottom: "resx12_conv2"
top: "resx12_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx12_conv2_scale"
bottom: "resx12_conv2"
top: "resx12_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx12_conv3"
type: "Convolution"
bottom: "resx12_conv2"
top: "resx12_conv3"
convolution_param {
num_output: 480
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx12_conv3_bn"
type: "BatchNorm"
bottom: "resx12_conv3"
top: "resx12_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx12_conv3_scale"
bottom: "resx12_conv3"
top: "resx12_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx12_elewise"
type: "Eltwise"
bottom: "resx11_elewise"
bottom: "resx12_conv3"
top: "resx12_elewise"
eltwise_param {
operation: SUM
}
}
layer {
name: "resx12_elewise_relu"
type: "ReLU"
bottom: "resx12_elewise"
top: "resx12_elewise"
}
layer {
name: "resx13_match_conv"
type: "Pooling"
bottom: "resx12_elewise"
top: "resx13_match_conv"
pooling_param {
pool: AVE
kernel_size: 3
stride: 2
}
}
layer {
name: "resx13_conv1"
type: "Convolution"
bottom: "resx12_elewise"
top: "resx13_conv1"
convolution_param {
num_output: 120
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx13_conv1_bn"
type: "BatchNorm"
bottom: "resx13_conv1"
top: "resx13_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx13_conv1_scale"
bottom: "resx13_conv1"
top: "resx13_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx13_conv1_relu"
type: "ReLU"
bottom: "resx13_conv1"
top: "resx13_conv1"
}
layer {
name: "shuffle13"
type: "ShuffleChannel"
bottom: "resx13_conv1"
top: "shuffle13"
shuffle_channel_param {
group: 3
}
}
layer {
name: "resx13_conv2"
type: "ConvolutionDepthwise"
bottom: "shuffle13"
top: "resx13_conv2"
convolution_param {
num_output: 120
kernel_size: 3
stride: 2
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx13_conv2_bn"
type: "BatchNorm"
bottom: "resx13_conv2"
top: "resx13_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx13_conv2_scale"
bottom: "resx13_conv2"
top: "resx13_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx13_conv3"
type: "Convolution"
bottom: "resx13_conv2"
top: "resx13_conv3"
convolution_param {
num_output: 480
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx13_conv3_bn"
type: "BatchNorm"
bottom: "resx13_conv3"
top: "resx13_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx13_conv3_scale"
bottom: "resx13_conv3"
top: "resx13_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx13_concat"
type: "Concat"
bottom: "resx13_match_conv"
bottom: "resx13_conv3"
top: "resx13_concat"
}
layer {
name: "resx13_concat_relu"
type: "ReLU"
bottom: "resx13_concat"
top: "resx13_concat"
}
layer {
name: "resx14_conv1"
type: "Convolution"
bottom: "resx13_concat"
top: "resx14_conv1"
convolution_param {
num_output: 240
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx14_conv1_bn"
type: "BatchNorm"
bottom: "resx14_conv1"
top: "resx14_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx14_conv1_scale"
bottom: "resx14_conv1"
top: "resx14_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx14_conv1_relu"
type: "ReLU"
bottom: "resx14_conv1"
top: "resx14_conv1"
}
layer {
name: "shuffle14"
type: "ShuffleChannel"
bottom: "resx14_conv1"
top: "shuffle14"
shuffle_channel_param {
group: 3
}
}
layer {
name: "resx14_conv2"
type: "ConvolutionDepthwise"
bottom: "shuffle14"
top: "resx14_conv2"
convolution_param {
num_output: 240
kernel_size: 3
stride: 1
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx14_conv2_bn"
type: "BatchNorm"
bottom: "resx14_conv2"
top: "resx14_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx14_conv2_scale"
bottom: "resx14_conv2"
top: "resx14_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx14_conv3"
type: "Convolution"
bottom: "resx14_conv2"
top: "resx14_conv3"
convolution_param {
num_output: 960
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx14_conv3_bn"
type: "BatchNorm"
bottom: "resx14_conv3"
top: "resx14_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx14_conv3_scale"
bottom: "resx14_conv3"
top: "resx14_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx14_elewise"
type: "Eltwise"
bottom: "resx13_concat"
bottom: "resx14_conv3"
top: "resx14_elewise"
eltwise_param {
operation: SUM
}
}
layer {
name: "resx14_elewise_relu"
type: "ReLU"
bottom: "resx14_elewise"
top: "resx14_elewise"
}
layer {
name: "resx15_conv1"
type: "Convolution"
bottom: "resx14_elewise"
top: "resx15_conv1"
convolution_param {
num_output: 240
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx15_conv1_bn"
type: "BatchNorm"
bottom: "resx15_conv1"
top: "resx15_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx15_conv1_scale"
bottom: "resx15_conv1"
top: "resx15_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx15_conv1_relu"
type: "ReLU"
bottom: "resx15_conv1"
top: "resx15_conv1"
}
layer {
name: "shuffle15"
type: "ShuffleChannel"
bottom: "resx15_conv1"
top: "shuffle15"
shuffle_channel_param {
group: 3
}
}
layer {
name: "resx15_conv2"
type: "ConvolutionDepthwise"
bottom: "shuffle15"
top: "resx15_conv2"
convolution_param {
num_output: 240
kernel_size: 3
stride: 1
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx15_conv2_bn"
type: "BatchNorm"
bottom: "resx15_conv2"
top: "resx15_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx15_conv2_scale"
bottom: "resx15_conv2"
top: "resx15_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx15_conv3"
type: "Convolution"
bottom: "resx15_conv2"
top: "resx15_conv3"
convolution_param {
num_output: 960
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx15_conv3_bn"
type: "BatchNorm"
bottom: "resx15_conv3"
top: "resx15_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx15_conv3_scale"
bottom: "resx15_conv3"
top: "resx15_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx15_elewise"
type: "Eltwise"
bottom: "resx14_elewise"
bottom: "resx15_conv3"
top: "resx15_elewise"
eltwise_param {
operation: SUM
}
}
layer {
name: "resx15_elewise_relu"
type: "ReLU"
bottom: "resx15_elewise"
top: "resx15_elewise"
}
layer {
name: "resx16_conv1"
type: "Convolution"
bottom: "resx15_elewise"
top: "resx16_conv1"
convolution_param {
num_output: 240
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx16_conv1_bn"
type: "BatchNorm"
bottom: "resx16_conv1"
top: "resx16_conv1"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx16_conv1_scale"
bottom: "resx16_conv1"
top: "resx16_conv1"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx16_conv1_relu"
type: "ReLU"
bottom: "resx16_conv1"
top: "resx16_conv1"
}
layer {
name: "shuffle16"
type: "ShuffleChannel"
bottom: "resx16_conv1"
top: "shuffle16"
shuffle_channel_param {
group: 3
}
}
layer {
name: "resx16_conv2"
type: "ConvolutionDepthwise"
bottom: "shuffle16"
top: "resx16_conv2"
convolution_param {
num_output: 240
kernel_size: 3
stride: 1
pad: 1
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx16_conv2_bn"
type: "BatchNorm"
bottom: "resx16_conv2"
top: "resx16_conv2"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx16_conv2_scale"
bottom: "resx16_conv2"
top: "resx16_conv2"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx16_conv3"
type: "Convolution"
bottom: "resx16_conv2"
top: "resx16_conv3"
convolution_param {
num_output: 960
kernel_size: 1
stride: 1
pad: 0
group: 3
bias_term: false
weight_filler {
type: "msra"
}
}
}
layer {
name: "resx16_conv3_bn"
type: "BatchNorm"
bottom: "resx16_conv3"
top: "resx16_conv3"
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
param {
lr_mult: 0
decay_mult: 0
}
}
layer {
name: "resx16_conv3_scale"
bottom: "resx16_conv3"
top: "resx16_conv3"
type: "Scale"
scale_param {
filler {
value: 1
}
bias_term: true
bias_filler {
value: 0
}
}
}
layer {
name: "resx16_elewise"
type: "Eltwise"
bottom: "resx15_elewise"
bottom: "resx16_conv3"
top: "resx16_elewise"
eltwise_param {
operation: SUM
}
}
layer {
name: "resx16_elewise_relu"
type: "ReLU"
bottom: "resx16_elewise"
top: "resx16_elewise"
}
layer {
name: "pool_ave"
type: "Pooling"
bottom: "resx16_elewise"
top: "pool_ave"
pooling_param {
global_pooling : true
pool: AVE
}
}
layer {
name: "fc1000"
type: "Convolution"
bottom: "pool_ave"
top: "fc1000"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 1000
kernel_size: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: 0
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment