Skip to content

Instantly share code, notes, and snippets.

@zeakey
Created September 17, 2017 09:14
Show Gist options
  • Save zeakey/425ac1eee4366a6b06b94c013596bcdb to your computer and use it in GitHub Desktop.
Save zeakey/425ac1eee4366a6b06b94c013596bcdb to your computer and use it in GitHub Desktop.
### dual top-down path network for instance-level salient object detection
name: "LERG"
layer {
name: "data"
type: "Python"
top: "data"
top: "label"
python_param {
module: "pylayer"
layer: "ImageLabelMapDataLayer"
param_str: "{\'phase\': \'train\', \'source\': \'list_shuffled.txt\', \'root\': \'data/SK-LARGE/\', \'shuffle\': False, \'mean\': (104.00699, 116.66877, 122.67892)}"
}
}
layer {
bottom: "data"
top: "conv1_1"
name: "conv1_1"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv1_1"
top: "conv1_1"
name: "relu1_1"
type: "ReLU"
}
layer {
bottom: "conv1_1"
top: "conv1_2"
name: "conv1_2"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv1_2"
top: "conv1_2"
name: "relu1_2"
type: "ReLU"
}
layer {
bottom: "conv1_2"
top: "pool1"
name: "pool1"
type: "Pooling"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
pad: 1
}
}
layer {
bottom: "pool1"
top: "conv2_1"
name: "conv2_1"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv2_1"
top: "conv2_1"
name: "relu2_1"
type: "ReLU"
}
layer {
bottom: "conv2_1"
top: "conv2_2"
name: "conv2_2"
type: "Convolution"
convolution_param {
num_output: 128
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv2_2"
top: "conv2_2"
name: "relu2_2"
type: "ReLU"
}
layer {
bottom: "conv2_2"
top: "pool2"
name: "pool2"
type: "Pooling"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
pad: 1
}
}
layer {
bottom: "pool2"
top: "conv3_1"
name: "conv3_1"
type: "Convolution"
convolution_param {
num_output: 256
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv3_1"
top: "conv3_1"
name: "relu3_1"
type: "ReLU"
}
layer {
bottom: "conv3_1"
top: "conv3_2"
name: "conv3_2"
type: "Convolution"
convolution_param {
num_output: 256
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv3_2"
top: "conv3_2"
name: "relu3_2"
type: "ReLU"
}
layer {
bottom: "conv3_2"
top: "conv3_3"
name: "conv3_3"
type: "Convolution"
convolution_param {
num_output: 256
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv3_3"
top: "conv3_3"
name: "relu3_3"
type: "ReLU"
}
layer {
bottom: "conv3_3"
top: "pool3"
name: "pool3"
type: "Pooling"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
pad: 1
}
}
layer {
bottom: "pool3"
top: "conv4_1"
name: "conv4_1"
type: "Convolution"
convolution_param {
num_output: 512
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv4_1"
top: "conv4_1"
name: "relu4_1"
type: "ReLU"
}
layer {
bottom: "conv4_1"
top: "conv4_2"
name: "conv4_2"
type: "Convolution"
convolution_param {
num_output: 512
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv4_2"
top: "conv4_2"
name: "relu4_2"
type: "ReLU"
}
layer {
bottom: "conv4_2"
top: "conv4_3"
name: "conv4_3"
type: "Convolution"
convolution_param {
num_output: 512
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv4_3"
top: "conv4_3"
name: "relu4_3"
type: "ReLU"
}
layer {
bottom: "conv4_3"
top: "pool4"
name: "pool4"
type: "Pooling"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
pad: 1
}
}
layer {
bottom: "pool4"
top: "conv5_1"
name: "conv5_1"
type: "Convolution"
convolution_param {
num_output: 512
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv5_1"
top: "conv5_1"
name: "relu5_1"
type: "ReLU"
}
layer {
bottom: "conv5_1"
top: "conv5_2"
name: "conv5_2"
type: "Convolution"
convolution_param {
num_output: 512
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv5_2"
top: "conv5_2"
name: "relu5_2"
type: "ReLU"
}
layer {
bottom: "conv5_2"
top: "conv5_3"
name: "conv5_3"
type: "Convolution"
convolution_param {
num_output: 512
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv5_3"
top: "conv5_3"
name: "relu5_3"
type: "ReLU"
}
####################Part 1######################
layer {
bottom: "conv1_2"
top: "conv_11"
name: "conv_11"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
bottom: "conv2_2"
top: "conv_21"
name: "conv_21"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
name: "conv_21_up"
type: "Deconvolution"
bottom: "conv_21"
top: "conv_21_up"
param {
lr_mult: 0
decay_mult: 1
}
convolution_param {
kernel_size: 4
stride: 2
pad: 1
num_output: 64
group: 64
weight_filler { type: "bilinear" }
bias_term: false
}
}
layer {
name: "crop21"
type: "Crop"
bottom: "conv_21_up"
bottom: "conv_11"
top: "crop21"
}
layer {
bottom: "conv3_3"
top: "conv_31"
name: "conv_31"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
name: "conv_31_up"
type: "Deconvolution"
bottom: "conv_31"
top: "conv_31_up"
param {
lr_mult: 0
decay_mult: 1
}
convolution_param {
kernel_size: 8
stride: 4
pad: 2
group: 64
num_output: 64
weight_filler { type: "bilinear" }
bias_term: false
}
}
layer {
name: "crop31"
type: "Crop"
bottom: "conv_31_up"
bottom: "conv_11"
top: "crop31"
}
layer {
bottom: "conv4_3"
top: "conv_41"
name: "conv_41"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
name: "conv_41_up"
type: "Deconvolution"
bottom: "conv_41"
top: "conv_41_up"
param {
lr_mult: 0
decay_mult: 1
}
convolution_param {
kernel_size: 16
stride: 8
pad: 4
group: 64
num_output: 64
weight_filler { type: "bilinear" }
bias_term: false
}
}
layer {
name: "crop41"
type: "Crop"
bottom: "conv_41_up"
bottom: "conv_11"
top: "crop41"
}
layer {
bottom: "conv5_3"
top: "conv_51"
name: "conv_51"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
name: "conv_51_up"
type: "Deconvolution"
bottom: "conv_51"
top: "conv_51_up"
param {
lr_mult: 0
decay_mult: 1
}
convolution_param {
kernel_size: 32
stride: 16
pad: 8
group: 64
num_output: 64
weight_filler { type: "bilinear" }
bias_term: false
}
}
layer {
name: "crop51"
type: "Crop"
bottom: "conv_51_up"
bottom: "conv_11"
top: "crop51"
}
layer {
name: "conv1_sum"
type: "Eltwise"
bottom: "conv_11"
bottom: "crop21"
bottom: "crop31"
bottom: "crop41"
bottom: "crop51"
top: "conv1_sum"
}
layer {
bottom: "conv1_sum"
top: "conv1_sum"
name: "relu1_sum"
type: "ReLU"
}
layer {
bottom: "conv1_sum"
top: "conv1_sum_c1"
name: "conv1_sum_c1"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 21
pad: 1
kernel_size: 3
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
bottom: "conv1_sum_c1"
top: "conv1_sum_c1"
name: "relu1_sum_c1"
type: "ReLU"
}
####################Part 2.1######################
####################Part 2.2######################
layer {
bottom: "conv2_2"
top: "conv_22"
name: "conv_22"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
bottom: "conv3_3"
top: "conv_32"
name: "conv_32"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
name: "conv_32_up"
type: "Deconvolution"
bottom: "conv_32"
top: "conv_32_up"
param {
lr_mult: 0
decay_mult: 1
}
convolution_param {
kernel_size: 4
stride: 2
pad: 1
group: 128
num_output: 128
weight_filler { type: "bilinear" }
bias_term: false
}
}
layer {
name: "crop32"
type: "Crop"
bottom: "conv_32_up"
bottom: "conv_22"
top: "crop32"
}
layer {
bottom: "conv4_3"
top: "conv_42"
name: "conv_42"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
name: "conv_42_up"
type: "Deconvolution"
bottom: "conv_42"
top: "conv_42_up"
param {
lr_mult: 0
decay_mult: 1
}
convolution_param {
kernel_size: 8
stride: 4
pad: 2
group: 128
num_output: 128
weight_filler { type: "bilinear" }
bias_term: false
}
}
layer {
name: "crop42"
type: "Crop"
bottom: "conv_42_up"
bottom: "conv_22"
top: "crop42"
}
layer {
bottom: "conv5_3"
top: "conv_52"
name: "conv_52"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
name: "conv_52_up"
type: "Deconvolution"
bottom: "conv_52"
top: "conv_52_up"
param {
lr_mult: 0
decay_mult: 1
}
convolution_param {
kernel_size: 16
stride: 8
pad: 4
group: 128
num_output: 128
weight_filler { type: "bilinear" }
bias_term: false
}
}
layer {
name: "crop52"
type: "Crop"
bottom: "conv_52_up"
bottom: "conv_22"
top: "crop52"
}
layer {
name: "conv2_sum"
type: "Eltwise"
bottom: "conv_22"
bottom: "crop32"
bottom: "crop42"
bottom: "crop52"
top: "conv2_sum"
}
layer {
bottom: "conv2_sum"
top: "conv2_sum"
name: "relu2_sum"
type: "ReLU"
}
layer {
bottom: "conv2_sum"
top: "conv2_sum_c1"
name: "conv2_sum_c1"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 21
kernel_size: 3
pad: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
bottom: "conv2_sum_c1"
top: "conv2_sum_c1"
name: "relu2_sum_c1"
type: "ReLU"
}
####################Part 2.3######################
layer {
bottom: "conv3_3"
top: "conv_33"
name: "conv_33"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 256
kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
bottom: "conv4_3"
top: "conv_43"
name: "conv_43"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 256
kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
name: "conv_43_up"
type: "Deconvolution"
bottom: "conv_43"
top: "conv_43_up"
param {
lr_mult: 0
decay_mult: 1
}
convolution_param {
kernel_size: 4
stride: 2
pad: 1
group: 256
num_output: 256
weight_filler { type: "bilinear" }
bias_term: false
}
}
layer {
name: "crop43"
type: "Crop"
bottom: "conv_43_up"
bottom: "conv_33"
top: "crop43"
}
layer {
bottom: "conv5_3"
top: "conv_53"
name: "conv_53"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 256
kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
name: "conv_53_up"
type: "Deconvolution"
bottom: "conv_53"
top: "conv_53_up"
param {
lr_mult: 0
decay_mult: 1
}
convolution_param {
kernel_size: 8
stride: 4
pad: 2
group: 256
num_output: 256
weight_filler { type: "bilinear" }
bias_term: false
}
}
layer {
name: "crop53"
type: "Crop"
bottom: "conv_53_up"
bottom: "conv_33"
top: "crop53"
}
layer {
name: "conv3_sum"
type: "Eltwise"
bottom: "conv_33"
bottom: "crop43"
bottom: "crop53"
top: "conv3_sum"
}
layer {
bottom: "conv3_sum"
top: "conv3_sum"
name: "relu3_sum"
type: "ReLU"
}
layer {
bottom: "conv3_sum"
top: "conv3_sum_c1"
name: "conv3_sum_c1"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 21
pad: 1
kernel_size: 3
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
bottom: "conv3_sum_c1"
top: "conv3_sum_c1"
name: "relu3_sum_c1"
type: "ReLU"
}
####################Part 2.4######################
layer {
bottom: "conv4_3"
top: "conv4_trans"
name: "conv4_trans"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 256
kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
bottom: "conv5_3"
top: "conv5_trans"
name: "conv5_trans"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 256
kernel_size: 1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
name: "conv5_trans_up"
type: "Deconvolution"
bottom: "conv5_trans"
top: "conv5_trans_up"
param {
lr_mult: 0
decay_mult: 1
}
convolution_param {
kernel_size: 4
stride: 2
pad: 1
group: 256
num_output: 256
weight_filler { type: "bilinear" }
bias_term: false
}
}
layer {
name: "conv5_trans_crop"
type: "Crop"
bottom: "conv5_trans_up"
bottom: "conv4_trans"
top: "conv5_trans_crop"
}
layer {
name: "conv4_sum"
type: "Eltwise"
bottom: "conv4_trans"
bottom: "conv5_trans_crop"
top: "conv4_sum"
eltwise_param {
operation: SUM
}
}
layer {
bottom: "conv4_sum"
top: "conv4_sum"
name: "relu4_sum"
type: "ReLU"
}
layer {
bottom: "conv4_sum"
top: "conv4_sum_c1"
name: "conv4_sum_c1"
type: "Convolution"
param {
lr_mult: 1
decay_mult: 1 }
convolution_param {
num_output: 21
pad: 1
kernel_size: 3
weight_filler {
type: "gaussian"
std: 0.01
}
bias_term: false
}
}
layer {
bottom: "conv4_sum_c1"
top: "conv4_sum_c1"
name: "relu4_sum_c1"
type: "ReLU"
}
####################Part 2.5######################
#----
layer { name: 'score-dsn1' type: "Convolution" bottom: 'conv1_sum_c1' top: 'score-dsn1'
param { lr_mult: 0.01 decay_mult: 1 } param { lr_mult: 0.02 decay_mult: 0}
convolution_param { engine: CAFFE num_output: 1 kernel_size: 1
weight_filler { type: "gaussian" std: 0.01 } } }
#---
layer { name: 'score-dsn2' type: "Convolution" bottom: 'conv2_sum_c1' top: 'score-dsn2'
param { lr_mult: 0.01 decay_mult: 1 } param { lr_mult: 0.02 decay_mult: 0}
convolution_param { engine: CAFFE num_output: 1 kernel_size: 1
weight_filler { type: "gaussian" std: 0.01 } } }
#--
layer { name: 'score-dsn3' type: "Convolution" bottom: 'conv3_sum_c1' top: 'score-dsn3'
param { lr_mult: 0.01 decay_mult: 1 } param { lr_mult: 0.02 decay_mult: 0}
convolution_param { engine: CAFFE num_output: 1 kernel_size: 1
weight_filler { type: "gaussian" std: 0.01 } } }
#-
layer { name: 'score-dsn4' type: "Convolution" bottom: 'conv4_sum_c1' top: 'score-dsn4'
param { lr_mult: 0.01 decay_mult: 1 } param { lr_mult: 0.02 decay_mult: 0}
convolution_param { engine: CAFFE num_output: 2 kernel_size: 1
weight_filler { type: "gaussian" std: 0.01 } } }
layer{
type: "Slice" name: "slice4"
bottom: "score-dsn4"
top: "score-dsn4-slice1"
top: "score-dsn4-slice2"
slice_param {
axis: 1
slice_point: 1
}
}
# the loss of side output4
layer { type: "Deconvolution" name: 'upsample_8' bottom: 'score-dsn4-slice2' top: 'concat4-score-up-loss'
param { lr_mult: 0 decay_mult: 1 } param { lr_mult: 0 decay_mult: 0}
convolution_param { kernel_size: 16 stride: 8 num_output: 1 weight_filler { type: "bilinear" } } }
layer { type: "Crop" name: 'crop4-loss' bottom: 'concat4-score-up-loss' bottom: 'data' top: 'concat4-score-loss' }
layer { type: "BalanceCrossEntropyLoss" name: 'dsn4_loss' bottom: 'concat4-score-loss' bottom: 'label' top:'dsn4_loss' loss_weight: 1}
#-
# 2x
layer { type: "Deconvolution" name: 'upsample_4_3' bottom: 'score-dsn4-slice1' top: 'score-dsn4-up'
param { lr_mult: 0 decay_mult: 1 } param { lr_mult: 0 decay_mult: 0}
convolution_param { kernel_size: 4 stride: 2 num_output: 1 weight_filler { type: "bilinear" } } }
layer { type: "Crop" name: 'crop4' bottom: 'score-dsn4-up' bottom: 'score-dsn3' top: 'upscore-dsn4' }
layer { name: "concat_4_3" bottom: "upscore-dsn4" bottom: "score-dsn3" top: "concat-upscore3" type: "Concat"
concat_param { concat_dim: 1} }
layer {
name: 'cat3-score' type: "Convolution"
bottom: 'concat-upscore3' top: 'concat3-score'
param { lr_mult: 0.05 decay_mult: 1 } param { lr_mult: 0.002 decay_mult: 0}
convolution_param { engine: CAFFE num_output: 2 kernel_size: 1 weight_filler {type: "constant" value: 0.25 } }
}
layer{
type: "Slice" name: "slice3"
bottom: "concat3-score"
top: "concat3-score-slice1"
top: "concat3-score-slice2"
slice_param {
axis: 1
slice_point: 1
}
}
# the loss of side output3
layer { type: "Deconvolution" name: 'upsample_4' bottom: 'concat3-score-slice2' top: 'concat3-score-up-loss'
param { lr_mult: 0 decay_mult: 1 } param { lr_mult: 0 decay_mult: 0}
convolution_param { kernel_size: 8 stride: 4 num_output: 1 weight_filler { type: "bilinear" } } }
layer { type: "Crop" name: 'crop3-loss' bottom: 'concat3-score-up-loss' bottom: 'data' top: 'concat3-score-loss' }
layer { type: "BalanceCrossEntropyLoss" name: 'dsn3_loss' bottom: 'concat3-score-loss' bottom: 'label' top:'dsn3_loss' loss_weight: 1}
#--
# 2x
layer { type: "Deconvolution" name: 'upsample_3_2' bottom: 'concat3-score-slice1' top: 'score-dsn3-up'
param { lr_mult: 0 decay_mult: 1 } param { lr_mult: 0 decay_mult: 0}
convolution_param { kernel_size: 4 stride: 2 num_output: 1 weight_filler { type: "bilinear" } } }
layer { type: "Crop" name: 'crop3' bottom: 'score-dsn3-up' bottom: 'score-dsn2' top: 'upscore-dsn3' }
layer { name: "concat_3_2" bottom: "upscore-dsn3" bottom: "score-dsn2" top: "concat-upscore2" type: "Concat"
concat_param { concat_dim: 1} }
layer {
name: 'cat2-score' type: "Convolution"
bottom: 'concat-upscore2' top: 'concat2-score'
param { lr_mult: 0.05 decay_mult: 1 } param { lr_mult: 0.002 decay_mult: 0}
convolution_param { engine: CAFFE num_output: 2 kernel_size: 1 weight_filler {type: "constant" value: 0.25 } }
}
layer{
type: "Slice" name: "slice2"
bottom: "concat2-score"
top: "concat2-score-slice1"
top: "concat2-score-slice2"
slice_param {
axis: 1
slice_point: 1
}
}
# the loss of side output2
layer { type: "Deconvolution" name: 'upsample_2' bottom: 'concat2-score-slice2' top: 'concat2-score-up-loss'
param { lr_mult: 0 decay_mult: 1 } param { lr_mult: 0 decay_mult: 0}
convolution_param { kernel_size: 4 stride: 2 num_output: 1 weight_filler { type: "bilinear" } } }
layer { type: "Crop" name: 'crop2-loss' bottom: 'concat2-score-up-loss' bottom: 'data' top: 'concat2-score-loss' }
layer { type: "BalanceCrossEntropyLoss" name: 'dsn2_loss' bottom: 'concat2-score-loss' bottom: 'label' top:'dsn2_loss' loss_weight: 1}
#---
# 2x
layer { type: "Deconvolution" name: 'upsample_2_1' bottom: 'concat2-score-slice1' top: 'score-dsn2-up'
param { lr_mult: 0 decay_mult: 1 } param { lr_mult: 0 decay_mult: 0}
convolution_param { kernel_size: 4 stride: 2 num_output: 1 weight_filler { type: "bilinear" } } }
layer { type: "Crop" name: 'crop2' bottom: 'score-dsn2-up' bottom: 'score-dsn1' top: 'upscore-dsn2' }
layer { name: "concat_2_1" bottom: "upscore-dsn2" bottom: "score-dsn1" top: "concat-upscore1" type: "Concat"
concat_param { concat_dim: 1} }
layer {
name: 'cat1-score' type: "Convolution"
bottom: 'concat-upscore1' top: 'concat1-score'
param { lr_mult: 0.05 decay_mult: 1 } param { lr_mult: 0.002 decay_mult: 0}
convolution_param { engine: CAFFE num_output: 1 kernel_size: 1 weight_filler {type: "constant" value: 0.25 } }
}
# the loss of side output1
layer { type: "Deconvolution" name: 'upsample' bottom: 'concat1-score' top: 'concat1-score-up-loss'
param { lr_mult: 0 decay_mult: 1 } param { lr_mult: 0 decay_mult: 0}
convolution_param { kernel_size: 4 stride: 2 num_output: 1 weight_filler { type: "bilinear" } } }
layer { type: "Crop" name: 'crop1-loss' bottom: 'concat1-score-up-loss' bottom: 'data' top: 'concat1-score-loss' }
layer { type: "BalanceCrossEntropyLoss" name: 'dsn1_loss' bottom: 'concat1-score-loss' bottom: 'label' top:'dsn1_loss' loss_weight: 1}
#----
#-----
#-----------------------------------------------------------
### Concat and multiscale weight layer ###
layer { name: "concat" bottom: "concat1-score-loss" bottom: "concat2-score-loss"
bottom: "concat3-score-loss" bottom: "concat4-score-loss" top: "concat-upscore" type: "Concat"
concat_param { concat_dim: 1} }
layer { name: 'new-score-weighting' type: "Convolution" bottom: 'concat-upscore' top: 'upscore-fuse'
param { lr_mult: 0.001 decay_mult: 1 } param { lr_mult: 0.002 decay_mult: 0}
convolution_param { engine: CAFFE num_output: 1 kernel_size: 1 weight_filler {type: "constant" value: 0.2} } }
layer { type: "BalanceCrossEntropyLoss" bottom: "upscore-fuse" bottom: "label" top:"fuse_loss" name: "fuse_loss" loss_weight: 1}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment