Skip to content

Instantly share code, notes, and snippets.

@T2hhbmEK
Created March 13, 2018 15:13
Show Gist options
  • Save T2hhbmEK/1b68416816813fbd7419d4926f6ca090 to your computer and use it in GitHub Desktop.
Save T2hhbmEK/1b68416816813fbd7419d4926f6ca090 to your computer and use it in GitHub Desktop.
name: "exp_113_cls"
layer {
name: "data"
type: "EnhancedImageData"
top: "data"
top: "label"
enhanced_image_data_param {
root_folder: "/data/shuhao/images/"
source: "/home/shuhao/share/mrdk/train_all_bbox.txt"
batch_size: 256
shuffle: true
data_type: IMAGE
data_num: 1
label_type: REAL
label_num: 4
force_gray: true
thread_num: 16
cache_in_gb: 150
data_process_param {
normalize_type: CONSTANT
normalize_subtractor: 127
normalize_divider: 1
crop_type: CENTER
crop_h: 112
crop_w: 112
label_type: POINT
has_weight: false
enable_trans: true
trans_x_rng {
type: UNIFORM
min: -112
max: 112
}
trans_y_rng {
type: UNIFORM
min: -112
max: 112
}
# enable_rotate: true
# rotate_rng {
# type: UNIFORM
# min: -30
# max: 30
# }
enable_zoom: true
zoom_rng {
type: UNIFORM
min: 0.35
max: 0.65
}
enable_noise: true
noise_rng {
type: UNIFORM
min: -10
max: 10
}
enable_occlusion: true
occlusion_size_rng {
type: UNIFORM
min: 5
max: 50
}
occlusion_center_rng {
type: UNIFORM
min: 0
max: 112
}
occlusion_color_rng {
type: UNIFORM
min: 0
max: 255
}
}
}
include {
phase: TRAIN
}
}
layer {
name: "data"
type: "EnhancedImageData"
top: "data"
top: "label"
enhanced_image_data_param {
root_folder: "/data/shuhao/images/"
source: "/home/shuhao/share/mrdk/test_all_bbox.txt"
batch_size: 256
shuffle: true
data_type: IMAGE
data_num: 1
label_type: REAL
label_num: 4
force_gray: true
thread_num: 16
cache_in_gb: 10
data_process_param {
normalize_type: CONSTANT
normalize_subtractor: 127
normalize_divider: 1
crop_type: CENTER
crop_h: 112
crop_w: 112
label_type: POINT
has_weight: false
enable_trans: true
trans_x_rng {
type: UNIFORM
min: -112
max: 112
}
trans_y_rng {
type: UNIFORM
min: -112
max: 112
}
enable_zoom: true
zoom_rng {
type: UNIFORM
min: 0.35
max: 0.65
}
}
}
include {
phase: TEST
}
}
# net ---------------------------
layer {
name: "conv1/3x3_s2"
type: "Convolution"
bottom: "data"
top: "conv1/3x3_s2"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 6
bias_term: true
pad: 1
kernel_size: 3
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv1/relu_3x3_s2"
type: "ReLU"
bottom: "conv1/3x3_s2"
top: "conv1/3x3_s2"
}
layer {
name: "pool1/3x3_s2"
type: "Pooling"
bottom: "conv1/3x3_s2"
top: "pool1/3x3_s2"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
layer {
name: "conv2_1_1x1_reduce"
type: "Convolution"
bottom: "pool1/3x3_s2"
top: "conv2_1_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 15
bias_term: true
pad: 0
kernel_size: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv2_1_1x1_reduce/relu"
type: "ReLU"
bottom: "conv2_1_1x1_reduce"
top: "conv2_1_1x1_reduce"
}
layer {
name: "shuffle_2_1"
type: "ShuffleChannel"
bottom: "conv2_1_1x1_reduce"
top: "shuffle_2_1"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv2_1_3x3"
type: "Convolution"
bottom: "shuffle_2_1"
top: "conv2_1_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 15
bias_term: true
pad: 1
kernel_size: 3
group: 15
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv2_1_1x1_increase"
type: "Convolution"
bottom: "conv2_1_3x3"
top: "conv2_1_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 54
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "pool2_1/3x3_shortcut"
type: "Pooling"
bottom: "pool1/3x3_s2"
top: "pool2_1/3x3_shortcut"
pooling_param {
pool: AVE
kernel_size: 2
stride: 2
}
}
layer {
name: "concat2_1"
type: "Concat"
bottom: "conv2_1_1x1_increase"
bottom: "pool2_1/3x3_shortcut"
top: "concat2_1"
concat_param {
axis: 1
}
}
layer {
name: "conv2_1/relu"
type: "ReLU"
bottom: "concat2_1"
top: "concat2_1"
}
layer {
name: "conv2_2_1x1_reduce"
type: "Convolution"
bottom: "concat2_1"
top: "conv2_2_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 15
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv2_2_1x1_reduce/relu"
type: "ReLU"
bottom: "conv2_2_1x1_reduce"
top: "conv2_2_1x1_reduce"
}
layer {
name: "shuffle_2_2"
type: "ShuffleChannel"
bottom: "conv2_2_1x1_reduce"
top: "shuffle_2_2"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv2_2_3x3"
type: "Convolution"
bottom: "shuffle_2_2"
top: "conv2_2_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 15
bias_term: true
pad: 1
kernel_size: 3
group: 15
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv2_2_1x1_increase"
type: "Convolution"
bottom: "conv2_2_3x3"
top: "conv2_2_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 60
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv2_2"
type: "Eltwise"
bottom: "concat2_1"
bottom: "conv2_2_1x1_increase"
top: "conv2_2"
eltwise_param {
operation: SUM
}
}
layer {
name: "conv2_2/relu"
type: "ReLU"
bottom: "conv2_2"
top: "conv2_2"
}
layer {
name: "conv2_3_1x1_reduce"
type: "Convolution"
bottom: "conv2_2"
top: "conv2_3_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 15
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv2_3_1x1_reduce/relu"
type: "ReLU"
bottom: "conv2_3_1x1_reduce"
top: "conv2_3_1x1_reduce"
}
layer {
name: "shuffle_2_3"
type: "ShuffleChannel"
bottom: "conv2_3_1x1_reduce"
top: "shuffle_2_3"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv2_3_3x3"
type: "Convolution"
bottom: "shuffle_2_3"
top: "conv2_3_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 15
bias_term: true
pad: 1
kernel_size: 3
group: 15
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv2_3_1x1_increase"
type: "Convolution"
bottom: "conv2_3_3x3"
top: "conv2_3_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 60
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv2_3"
type: "Eltwise"
bottom: "conv2_2"
bottom: "conv2_3_1x1_increase"
top: "conv2_3"
eltwise_param {
operation: SUM
}
}
layer {
name: "conv2_3/relu"
type: "ReLU"
bottom: "conv2_3"
top: "conv2_3"
}
layer {
name: "conv2_4_1x1_reduce"
type: "Convolution"
bottom: "conv2_3"
top: "conv2_4_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 15
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv2_4_1x1_reduce/relu"
type: "ReLU"
bottom: "conv2_4_1x1_reduce"
top: "conv2_4_1x1_reduce"
}
layer {
name: "shuffle_2_4"
type: "ShuffleChannel"
bottom: "conv2_4_1x1_reduce"
top: "shuffle_2_4"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv2_4_3x3"
type: "Convolution"
bottom: "shuffle_2_4"
top: "conv2_4_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 15
bias_term: true
pad: 1
kernel_size: 3
group: 15
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv2_4_1x1_increase"
type: "Convolution"
bottom: "conv2_4_3x3"
top: "conv2_4_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 60
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv2_4"
type: "Eltwise"
bottom: "conv2_3"
bottom: "conv2_4_1x1_increase"
top: "conv2_4"
eltwise_param {
operation: SUM
}
}
layer {
name: "conv2_4/relu"
type: "ReLU"
bottom: "conv2_4"
top: "conv2_4"
}
layer {
name: "conv3_1_1x1_reduce"
type: "Convolution"
bottom: "conv2_4"
top: "conv3_1_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 0
kernel_size: 1
group: 3
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_1_1x1_reduce/relu"
type: "ReLU"
bottom: "conv3_1_1x1_reduce"
top: "conv3_1_1x1_reduce"
}
layer {
name: "shuffle_3_1"
type: "ShuffleChannel"
bottom: "conv3_1_1x1_reduce"
top: "shuffle_3_1"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv3_1_3x3"
type: "Convolution"
bottom: "shuffle_3_1"
top: "conv3_1_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 1
kernel_size: 3
group: 30
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_1_1x1_increase"
type: "Convolution"
bottom: "conv3_1_3x3"
top: "conv3_1_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 60
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "pool3_1/3x3_shortcut"
type: "Pooling"
bottom: "conv2_4"
top: "pool3_1/3x3_shortcut"
pooling_param {
pool: AVE
kernel_size: 2
stride: 2
}
}
layer {
name: "concat3_1"
type: "Concat"
bottom: "conv3_1_1x1_increase"
bottom: "pool3_1/3x3_shortcut"
top: "concat3_1"
concat_param {
axis: 1
}
}
layer {
name: "conv3_1/relu"
type: "ReLU"
bottom: "concat3_1"
top: "concat3_1"
}
layer {
name: "conv3_2_1x1_reduce"
type: "Convolution"
bottom: "concat3_1"
top: "conv3_2_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_2_1x1_reduce/relu"
type: "ReLU"
bottom: "conv3_2_1x1_reduce"
top: "conv3_2_1x1_reduce"
}
layer {
name: "shuffle_3_2"
type: "ShuffleChannel"
bottom: "conv3_2_1x1_reduce"
top: "shuffle_3_2"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv3_2_3x3"
type: "Convolution"
bottom: "shuffle_3_2"
top: "conv3_2_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 1
kernel_size: 3
group: 30
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_2_1x1_increase"
type: "Convolution"
bottom: "conv3_2_3x3"
top: "conv3_2_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 120
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_2"
type: "Eltwise"
bottom: "concat3_1"
bottom: "conv3_2_1x1_increase"
top: "conv3_2"
eltwise_param {
operation: SUM
}
}
layer {
name: "conv3_2/relu"
type: "ReLU"
bottom: "conv3_2"
top: "conv3_2"
}
layer {
name: "conv3_3_1x1_reduce"
type: "Convolution"
bottom: "conv3_2"
top: "conv3_3_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_3_1x1_reduce/relu"
type: "ReLU"
bottom: "conv3_3_1x1_reduce"
top: "conv3_3_1x1_reduce"
}
layer {
name: "shuffle_3_3"
type: "ShuffleChannel"
bottom: "conv3_3_1x1_reduce"
top: "shuffle_3_3"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv3_3_3x3"
type: "Convolution"
bottom: "shuffle_3_3"
top: "conv3_3_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 1
kernel_size: 3
group: 30
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_3_1x1_increase"
type: "Convolution"
bottom: "conv3_3_3x3"
top: "conv3_3_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 120
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_3"
type: "Eltwise"
bottom: "conv3_2"
bottom: "conv3_3_1x1_increase"
top: "conv3_3"
eltwise_param {
operation: SUM
}
}
layer {
name: "conv3_3/relu"
type: "ReLU"
bottom: "conv3_3"
top: "conv3_3"
}
layer {
name: "conv3_4_1x1_reduce"
type: "Convolution"
bottom: "conv3_3"
top: "conv3_4_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_4_1x1_reduce/relu"
type: "ReLU"
bottom: "conv3_4_1x1_reduce"
top: "conv3_4_1x1_reduce"
}
layer {
name: "shuffle_3_4"
type: "ShuffleChannel"
bottom: "conv3_4_1x1_reduce"
top: "shuffle_3_4"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv3_4_3x3"
type: "Convolution"
bottom: "shuffle_3_4"
top: "conv3_4_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 1
kernel_size: 3
group: 30
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_4_1x1_increase"
type: "Convolution"
bottom: "conv3_4_3x3"
top: "conv3_4_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 120
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_4"
type: "Eltwise"
bottom: "conv3_3"
bottom: "conv3_4_1x1_increase"
top: "conv3_4"
eltwise_param {
operation: SUM
}
}
layer {
name: "conv3_4/relu"
type: "ReLU"
bottom: "conv3_4"
top: "conv3_4"
}
layer {
name: "conv3_5_1x1_reduce"
type: "Convolution"
bottom: "conv3_4"
top: "conv3_5_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_5_1x1_reduce/relu"
type: "ReLU"
bottom: "conv3_5_1x1_reduce"
top: "conv3_5_1x1_reduce"
}
layer {
name: "shuffle_3_5"
type: "ShuffleChannel"
bottom: "conv3_5_1x1_reduce"
top: "shuffle_3_5"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv3_5_3x3"
type: "Convolution"
bottom: "shuffle_3_5"
top: "conv3_5_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 1
kernel_size: 3
group: 30
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_5_1x1_increase"
type: "Convolution"
bottom: "conv3_5_3x3"
top: "conv3_5_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 120
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_5"
type: "Eltwise"
bottom: "conv3_4"
bottom: "conv3_5_1x1_increase"
top: "conv3_5"
eltwise_param {
operation: SUM
}
}
layer {
name: "conv3_5/relu"
type: "ReLU"
bottom: "conv3_5"
top: "conv3_5"
}
layer {
name: "conv3_6_1x1_reduce"
type: "Convolution"
bottom: "conv3_5"
top: "conv3_6_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_6_1x1_reduce/relu"
type: "ReLU"
bottom: "conv3_6_1x1_reduce"
top: "conv3_6_1x1_reduce"
}
layer {
name: "shuffle_3_6"
type: "ShuffleChannel"
bottom: "conv3_6_1x1_reduce"
top: "shuffle_3_6"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv3_6_3x3"
type: "Convolution"
bottom: "shuffle_3_6"
top: "conv3_6_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 1
kernel_size: 3
group: 30
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_6_1x1_increase"
type: "Convolution"
bottom: "conv3_6_3x3"
top: "conv3_6_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 120
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_6"
type: "Eltwise"
bottom: "conv3_5"
bottom: "conv3_6_1x1_increase"
top: "conv3_6"
eltwise_param {
operation: SUM
}
}
layer {
name: "conv3_6/relu"
type: "ReLU"
bottom: "conv3_6"
top: "conv3_6"
}
layer {
name: "conv3_7_1x1_reduce"
type: "Convolution"
bottom: "conv3_6"
top: "conv3_7_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_7_1x1_reduce/relu"
type: "ReLU"
bottom: "conv3_7_1x1_reduce"
top: "conv3_7_1x1_reduce"
}
layer {
name: "shuffle_3_7"
type: "ShuffleChannel"
bottom: "conv3_7_1x1_reduce"
top: "shuffle_3_7"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv3_7_3x3"
type: "Convolution"
bottom: "shuffle_3_7"
top: "conv3_7_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 1
kernel_size: 3
group: 30
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_7_1x1_increase"
type: "Convolution"
bottom: "conv3_7_3x3"
top: "conv3_7_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 120
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_7"
type: "Eltwise"
bottom: "conv3_6"
bottom: "conv3_7_1x1_increase"
top: "conv3_7"
eltwise_param {
operation: SUM
}
}
layer {
name: "conv3_7/relu"
type: "ReLU"
bottom: "conv3_7"
top: "conv3_7"
}
layer {
name: "conv3_8_1x1_reduce"
type: "Convolution"
bottom: "conv3_7"
top: "conv3_8_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_8_1x1_reduce/relu"
type: "ReLU"
bottom: "conv3_8_1x1_reduce"
top: "conv3_8_1x1_reduce"
}
layer {
name: "shuffle_3_8"
type: "ShuffleChannel"
bottom: "conv3_8_1x1_reduce"
top: "shuffle_3_8"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv3_8_3x3"
type: "Convolution"
bottom: "shuffle_3_8"
top: "conv3_8_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 30
bias_term: true
pad: 1
kernel_size: 3
group: 30
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_8_1x1_increase"
type: "Convolution"
bottom: "conv3_8_3x3"
top: "conv3_8_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 120
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv3_8"
type: "Eltwise"
bottom: "conv3_7"
bottom: "conv3_8_1x1_increase"
top: "conv3_8"
eltwise_param {
operation: SUM
}
}
layer {
name: "conv3_8/relu"
type: "ReLU"
bottom: "conv3_8"
top: "conv3_8"
}
layer {
name: "conv4_1_1x1_reduce"
type: "Convolution"
bottom: "conv3_8"
top: "conv4_1_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 60
bias_term: true
pad: 0
kernel_size: 1
group: 3
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv4_1_1x1_reduce/relu"
type: "ReLU"
bottom: "conv4_1_1x1_reduce"
top: "conv4_1_1x1_reduce"
}
layer {
name: "shuffle_4_1"
type: "ShuffleChannel"
bottom: "conv4_1_1x1_reduce"
top: "shuffle_4_1"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv4_1_3x3"
type: "Convolution"
bottom: "shuffle_4_1"
top: "conv4_1_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 60
bias_term: true
pad: 1
kernel_size: 3
group: 60
stride: 2
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv4_1_1x1_increase"
type: "Convolution"
bottom: "conv4_1_3x3"
top: "conv4_1_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 120
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "pool4_1/3x3_shortcut"
type: "Pooling"
bottom: "conv3_8"
top: "pool4_1/3x3_shortcut"
pooling_param {
pool: AVE
kernel_size: 2
stride: 2
}
}
layer {
name: "concat4_1"
type: "Concat"
bottom: "conv4_1_1x1_increase"
bottom: "pool4_1/3x3_shortcut"
top: "concat4_1"
concat_param {
axis: 1
}
}
layer {
name: "conv4_1/relu"
type: "ReLU"
bottom: "concat4_1"
top: "concat4_1"
}
layer {
name: "conv4_2_1x1_reduce"
type: "Convolution"
bottom: "concat4_1"
top: "conv4_2_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 60
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv4_2_1x1_reduce/relu"
type: "ReLU"
bottom: "conv4_2_1x1_reduce"
top: "conv4_2_1x1_reduce"
}
layer {
name: "shuffle_4_2"
type: "ShuffleChannel"
bottom: "conv4_2_1x1_reduce"
top: "shuffle_4_2"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv4_2_3x3"
type: "Convolution"
bottom: "shuffle_4_2"
top: "conv4_2_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 60
bias_term: true
pad: 1
kernel_size: 3
group: 60
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv4_2_1x1_increase"
type: "Convolution"
bottom: "conv4_2_3x3"
top: "conv4_2_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 240
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv4_2"
type: "Eltwise"
bottom: "concat4_1"
bottom: "conv4_2_1x1_increase"
top: "conv4_2"
eltwise_param {
operation: SUM
}
}
layer {
name: "conv4_2/relu"
type: "ReLU"
bottom: "conv4_2"
top: "conv4_2"
}
layer {
name: "conv4_3_1x1_reduce"
type: "Convolution"
bottom: "conv4_2"
top: "conv4_3_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 60
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv4_3_1x1_reduce/relu"
type: "ReLU"
bottom: "conv4_3_1x1_reduce"
top: "conv4_3_1x1_reduce"
}
layer {
name: "shuffle_4_3"
type: "ShuffleChannel"
bottom: "conv4_3_1x1_reduce"
top: "shuffle_4_3"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv4_3_3x3"
type: "Convolution"
bottom: "shuffle_4_3"
top: "conv4_3_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 60
bias_term: true
pad: 1
kernel_size: 3
group: 60
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv4_3_1x1_increase"
type: "Convolution"
bottom: "conv4_3_3x3"
top: "conv4_3_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 240
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv4_3"
type: "Eltwise"
bottom: "conv4_2"
bottom: "conv4_3_1x1_increase"
top: "conv4_3"
eltwise_param {
operation: SUM
}
}
layer {
name: "conv4_3/relu"
type: "ReLU"
bottom: "conv4_3"
top: "conv4_3"
}
layer {
name: "conv4_4_1x1_reduce"
type: "Convolution"
bottom: "conv4_3"
top: "conv4_4_1x1_reduce"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 60
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv4_4_1x1_reduce/relu"
type: "ReLU"
bottom: "conv4_4_1x1_reduce"
top: "conv4_4_1x1_reduce"
}
layer {
name: "shuffle_4_4"
type: "ShuffleChannel"
bottom: "conv4_4_1x1_reduce"
top: "shuffle_4_4"
shuffle_channel_param {
group: 3
}
}
layer {
name: "conv4_4_3x3"
type: "Convolution"
bottom: "shuffle_4_4"
top: "conv4_4_3x3"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 60
bias_term: true
pad: 1
kernel_size: 3
group: 60
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv4_4_1x1_increase"
type: "Convolution"
bottom: "conv4_4_3x3"
top: "conv4_4_1x1_increase"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
convolution_param {
num_output: 240
bias_term: true
pad: 0
kernel_size: 1
group: 3
stride: 1
weight_filler {
type: "msra"
}
}
}
layer {
name: "conv4_4"
type: "Eltwise"
bottom: "conv4_3"
bottom: "conv4_4_1x1_increase"
top: "conv4_4"
eltwise_param {
operation: SUM
}
}
layer {
name: "conv4_4/relu"
type: "ReLU"
bottom: "conv4_4"
top: "conv4_4"
}
layer {
name: "pool5/7x7_s1"
type: "Pooling"
bottom: "conv4_4"
top: "pool5/7x7_s1"
pooling_param {
pool: AVE
kernel_size: 4
stride: 1
}
}
layer {
name: "pool5/7x7_s1"
type: "Gather"
bottom: "pool5/7x7_s1"
top: "pool5/7x7_s1_gather"
}
layer {
name: "fc6"
type: "InnerProduct"
bottom: "pool5/7x7_s1_gather"
top: "fc6"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
inner_product_param {
num_output: 256
weight_filler {
type: "gaussian"
std: 0.005
}
bias_filler {
type: "constant"
std: 0
}
}
}
layer {
name: "relu6"
type: "ReLU"
bottom: "fc6"
top: "fc6"
}
layer {
name: "fc7"
type: "InnerProduct"
bottom: "fc6"
top: "fc7"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
inner_product_param {
num_output: 256
weight_filler {
type: "gaussian"
std: 0.005
}
bias_filler {
type: "constant"
std: 0
}
}
}
layer {
name: "relu7"
type: "ReLU"
bottom: "fc7"
top: "fc7"
}
layer {
name: "fc8"
type: "InnerProduct"
bottom: "fc7"
top: "fc8"
param {
lr_mult: 0 # 1
decay_mult: 0 # 1
}
param {
lr_mult: 0 # 2
decay_mult: 0
}
inner_product_param {
num_output: 4
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
std: 0
}
}
}
layer {
name: "fc6_cls"
type: "InnerProduct"
bottom: "pool5/7x7_s1_gather"
top: "fc6_cls"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 256
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "fc6_cls/relu"
type: "ReLU"
bottom: "fc6_cls"
top: "fc6_cls"
}
layer {
name: "fc7_cls"
type: "InnerProduct"
bottom: "fc6_cls"
top: "fc7_cls"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 256
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "fc7_cls/relu"
type: "ReLU"
bottom: "fc7_cls"
top: "fc7_cls"
}
layer {
name: "fc8_cls"
type: "InnerProduct"
bottom: "fc7_cls"
top: "fc8_cls"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 2
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
# loss layer ----------------------------------------
layer {
name: "label_gather"
type: "Gather"
bottom: "label"
top: "label_gather"
}
layer {
name: "alignment_accuracy"
type: "AlignmentAccuracy"
bottom: "fc8"
bottom: "label_gather"
top: "alignment_accuracy"
top: "error"
alignment_accuracy_param{
ref_start: 0
ref_end: 1
use_mean_shape: false
accuracy_for_each_point: true
}
}
layer {
name: "cls_label"
type: "Threshold"
bottom: "error"
top: "cls_label"
threshold_param {
threshold: 0.2
}
}
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "fc8_cls"
bottom: "cls_label"
top: "loss"
}
layer {
name: "accuracy"
type: "Accuracy"
bottom: "fc8_cls"
bottom: "cls_label"
top: "accuracy"
include {
phase: TEST
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment