text: name: 'Single Shot Mask - ResNet 50'
  
  layer {
    name: "data"
    type: "Input"
    top: "data"
    input_param {
      shape {
        dim: 1
        dim: 3
        dim: 224
        dim: 224
      }
    }
  }
  layer {
    name: "conv1"
    type: "Convolution"
    bottom: "data"
    top: "conv1"
    convolution_param {
      num_output: 64
      pad: 3
      kernel_size: 7
      stride: 2
    }
  }
  layer {
    name: "bn_conv1"
    type: "BatchNorm"
    bottom: "conv1"
    top: "conv1"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale_conv1"
    type: "Scale"
    bottom: "conv1"
    top: "conv1"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  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: "res2a_branch1"
    type: "Convolution"
    bottom: "pool1"
    top: "res2a_branch1"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn2a_branch1"
    type: "BatchNorm"
    bottom: "res2a_branch1"
    top: "res2a_branch1"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale2a_branch1"
    type: "Scale"
    bottom: "res2a_branch1"
    top: "res2a_branch1"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res2a_branch2a"
    type: "Convolution"
    bottom: "pool1"
    top: "res2a_branch2a"
    convolution_param {
      num_output: 64
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn2a_branch2a"
    type: "BatchNorm"
    bottom: "res2a_branch2a"
    top: "res2a_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale2a_branch2a"
    type: "Scale"
    bottom: "res2a_branch2a"
    top: "res2a_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res2a_branch2a_relu"
    type: "ReLU"
    bottom: "res2a_branch2a"
    top: "res2a_branch2a"
  }
  layer {
    name: "res2a_branch2b"
    type: "Convolution"
    bottom: "res2a_branch2a"
    top: "res2a_branch2b"
    convolution_param {
      num_output: 64
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn2a_branch2b"
    type: "BatchNorm"
    bottom: "res2a_branch2b"
    top: "res2a_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale2a_branch2b"
    type: "Scale"
    bottom: "res2a_branch2b"
    top: "res2a_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res2a_branch2b_relu"
    type: "ReLU"
    bottom: "res2a_branch2b"
    top: "res2a_branch2b"
  }
  layer {
    name: "res2a_branch2c"
    type: "Convolution"
    bottom: "res2a_branch2b"
    top: "res2a_branch2c"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn2a_branch2c"
    type: "BatchNorm"
    bottom: "res2a_branch2c"
    top: "res2a_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale2a_branch2c"
    type: "Scale"
    bottom: "res2a_branch2c"
    top: "res2a_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res2a"
    type: "Eltwise"
    bottom: "res2a_branch1"
    bottom: "res2a_branch2c"
    top: "res2a"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res2a_relu"
    type: "ReLU"
    bottom: "res2a"
    top: "res2a"
  }
  layer {
    name: "res2b_branch2a"
    type: "Convolution"
    bottom: "res2a"
    top: "res2b_branch2a"
    convolution_param {
      num_output: 64
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn2b_branch2a"
    type: "BatchNorm"
    bottom: "res2b_branch2a"
    top: "res2b_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale2b_branch2a"
    type: "Scale"
    bottom: "res2b_branch2a"
    top: "res2b_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res2b_branch2a_relu"
    type: "ReLU"
    bottom: "res2b_branch2a"
    top: "res2b_branch2a"
  }
  layer {
    name: "res2b_branch2b"
    type: "Convolution"
    bottom: "res2b_branch2a"
    top: "res2b_branch2b"
    convolution_param {
      num_output: 64
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn2b_branch2b"
    type: "BatchNorm"
    bottom: "res2b_branch2b"
    top: "res2b_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale2b_branch2b"
    type: "Scale"
    bottom: "res2b_branch2b"
    top: "res2b_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res2b_branch2b_relu"
    type: "ReLU"
    bottom: "res2b_branch2b"
    top: "res2b_branch2b"
  }
  layer {
    name: "res2b_branch2c"
    type: "Convolution"
    bottom: "res2b_branch2b"
    top: "res2b_branch2c"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn2b_branch2c"
    type: "BatchNorm"
    bottom: "res2b_branch2c"
    top: "res2b_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale2b_branch2c"
    type: "Scale"
    bottom: "res2b_branch2c"
    top: "res2b_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res2b"
    type: "Eltwise"
    bottom: "res2a"
    bottom: "res2b_branch2c"
    top: "res2b"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res2b_relu"
    type: "ReLU"
    bottom: "res2b"
    top: "res2b"
  }
  layer {
    name: "res2c_branch2a"
    type: "Convolution"
    bottom: "res2b"
    top: "res2c_branch2a"
    convolution_param {
      num_output: 64
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn2c_branch2a"
    type: "BatchNorm"
    bottom: "res2c_branch2a"
    top: "res2c_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale2c_branch2a"
    type: "Scale"
    bottom: "res2c_branch2a"
    top: "res2c_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res2c_branch2a_relu"
    type: "ReLU"
    bottom: "res2c_branch2a"
    top: "res2c_branch2a"
  }
  layer {
    name: "res2c_branch2b"
    type: "Convolution"
    bottom: "res2c_branch2a"
    top: "res2c_branch2b"
    convolution_param {
      num_output: 64
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn2c_branch2b"
    type: "BatchNorm"
    bottom: "res2c_branch2b"
    top: "res2c_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale2c_branch2b"
    type: "Scale"
    bottom: "res2c_branch2b"
    top: "res2c_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res2c_branch2b_relu"
    type: "ReLU"
    bottom: "res2c_branch2b"
    top: "res2c_branch2b"
  }
  layer {
    name: "res2c_branch2c"
    type: "Convolution"
    bottom: "res2c_branch2b"
    top: "res2c_branch2c"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn2c_branch2c"
    type: "BatchNorm"
    bottom: "res2c_branch2c"
    top: "res2c_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale2c_branch2c"
    type: "Scale"
    bottom: "res2c_branch2c"
    top: "res2c_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res2c"
    type: "Eltwise"
    bottom: "res2b"
    bottom: "res2c_branch2c"
    top: "res2c"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res2c_relu"
    type: "ReLU"
    bottom: "res2c"
    top: "res2c"
  }
  layer {
    name: "res3a_branch1"
    type: "Convolution"
    bottom: "res2c"
    top: "res3a_branch1"
    convolution_param {
      num_output: 512
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 2
    }
  }
  layer {
    name: "bn3a_branch1"
    type: "BatchNorm"
    bottom: "res3a_branch1"
    top: "res3a_branch1"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale3a_branch1"
    type: "Scale"
    bottom: "res3a_branch1"
    top: "res3a_branch1"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res3a_branch2a"
    type: "Convolution"
    bottom: "res2c"
    top: "res3a_branch2a"
    convolution_param {
      num_output: 128
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 2
    }
  }
  layer {
    name: "bn3a_branch2a"
    type: "BatchNorm"
    bottom: "res3a_branch2a"
    top: "res3a_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale3a_branch2a"
    type: "Scale"
    bottom: "res3a_branch2a"
    top: "res3a_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res3a_branch2a_relu"
    type: "ReLU"
    bottom: "res3a_branch2a"
    top: "res3a_branch2a"
  }
  layer {
    name: "res3a_branch2b"
    type: "Convolution"
    bottom: "res3a_branch2a"
    top: "res3a_branch2b"
    convolution_param {
      num_output: 128
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn3a_branch2b"
    type: "BatchNorm"
    bottom: "res3a_branch2b"
    top: "res3a_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale3a_branch2b"
    type: "Scale"
    bottom: "res3a_branch2b"
    top: "res3a_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res3a_branch2b_relu"
    type: "ReLU"
    bottom: "res3a_branch2b"
    top: "res3a_branch2b"
  }
  layer {
    name: "res3a_branch2c"
    type: "Convolution"
    bottom: "res3a_branch2b"
    top: "res3a_branch2c"
    convolution_param {
      num_output: 512
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn3a_branch2c"
    type: "BatchNorm"
    bottom: "res3a_branch2c"
    top: "res3a_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale3a_branch2c"
    type: "Scale"
    bottom: "res3a_branch2c"
    top: "res3a_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res3a"
    type: "Eltwise"
    bottom: "res3a_branch1"
    bottom: "res3a_branch2c"
    top: "res3a"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res3a_relu"
    type: "ReLU"
    bottom: "res3a"
    top: "res3a"
  }
  layer {
    name: "res3b_branch2a"
    type: "Convolution"
    bottom: "res3a"
    top: "res3b_branch2a"
    convolution_param {
      num_output: 128
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn3b_branch2a"
    type: "BatchNorm"
    bottom: "res3b_branch2a"
    top: "res3b_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale3b_branch2a"
    type: "Scale"
    bottom: "res3b_branch2a"
    top: "res3b_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res3b_branch2a_relu"
    type: "ReLU"
    bottom: "res3b_branch2a"
    top: "res3b_branch2a"
  }
  layer {
    name: "res3b_branch2b"
    type: "Convolution"
    bottom: "res3b_branch2a"
    top: "res3b_branch2b"
    convolution_param {
      num_output: 128
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn3b_branch2b"
    type: "BatchNorm"
    bottom: "res3b_branch2b"
    top: "res3b_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale3b_branch2b"
    type: "Scale"
    bottom: "res3b_branch2b"
    top: "res3b_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res3b_branch2b_relu"
    type: "ReLU"
    bottom: "res3b_branch2b"
    top: "res3b_branch2b"
  }
  layer {
    name: "res3b_branch2c"
    type: "Convolution"
    bottom: "res3b_branch2b"
    top: "res3b_branch2c"
    convolution_param {
      num_output: 512
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn3b_branch2c"
    type: "BatchNorm"
    bottom: "res3b_branch2c"
    top: "res3b_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale3b_branch2c"
    type: "Scale"
    bottom: "res3b_branch2c"
    top: "res3b_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res3b"
    type: "Eltwise"
    bottom: "res3a"
    bottom: "res3b_branch2c"
    top: "res3b"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res3b_relu"
    type: "ReLU"
    bottom: "res3b"
    top: "res3b"
  }
  layer {
    name: "res3c_branch2a"
    type: "Convolution"
    bottom: "res3b"
    top: "res3c_branch2a"
    convolution_param {
      num_output: 128
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn3c_branch2a"
    type: "BatchNorm"
    bottom: "res3c_branch2a"
    top: "res3c_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale3c_branch2a"
    type: "Scale"
    bottom: "res3c_branch2a"
    top: "res3c_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res3c_branch2a_relu"
    type: "ReLU"
    bottom: "res3c_branch2a"
    top: "res3c_branch2a"
  }
  layer {
    name: "res3c_branch2b"
    type: "Convolution"
    bottom: "res3c_branch2a"
    top: "res3c_branch2b"
    convolution_param {
      num_output: 128
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn3c_branch2b"
    type: "BatchNorm"
    bottom: "res3c_branch2b"
    top: "res3c_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale3c_branch2b"
    type: "Scale"
    bottom: "res3c_branch2b"
    top: "res3c_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res3c_branch2b_relu"
    type: "ReLU"
    bottom: "res3c_branch2b"
    top: "res3c_branch2b"
  }
  layer {
    name: "res3c_branch2c"
    type: "Convolution"
    bottom: "res3c_branch2b"
    top: "res3c_branch2c"
    convolution_param {
      num_output: 512
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn3c_branch2c"
    type: "BatchNorm"
    bottom: "res3c_branch2c"
    top: "res3c_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale3c_branch2c"
    type: "Scale"
    bottom: "res3c_branch2c"
    top: "res3c_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res3c"
    type: "Eltwise"
    bottom: "res3b"
    bottom: "res3c_branch2c"
    top: "res3c"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res3c_relu"
    type: "ReLU"
    bottom: "res3c"
    top: "res3c"
  }
  layer {
    name: "res3d_branch2a"
    type: "Convolution"
    bottom: "res3c"
    top: "res3d_branch2a"
    convolution_param {
      num_output: 128
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn3d_branch2a"
    type: "BatchNorm"
    bottom: "res3d_branch2a"
    top: "res3d_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale3d_branch2a"
    type: "Scale"
    bottom: "res3d_branch2a"
    top: "res3d_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res3d_branch2a_relu"
    type: "ReLU"
    bottom: "res3d_branch2a"
    top: "res3d_branch2a"
  }
  layer {
    name: "res3d_branch2b"
    type: "Convolution"
    bottom: "res3d_branch2a"
    top: "res3d_branch2b"
    convolution_param {
      num_output: 128
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn3d_branch2b"
    type: "BatchNorm"
    bottom: "res3d_branch2b"
    top: "res3d_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale3d_branch2b"
    type: "Scale"
    bottom: "res3d_branch2b"
    top: "res3d_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res3d_branch2b_relu"
    type: "ReLU"
    bottom: "res3d_branch2b"
    top: "res3d_branch2b"
  }
  layer {
    name: "res3d_branch2c"
    type: "Convolution"
    bottom: "res3d_branch2b"
    top: "res3d_branch2c"
    convolution_param {
      num_output: 512
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn3d_branch2c"
    type: "BatchNorm"
    bottom: "res3d_branch2c"
    top: "res3d_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale3d_branch2c"
    type: "Scale"
    bottom: "res3d_branch2c"
    top: "res3d_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res3d"
    type: "Eltwise"
    bottom: "res3c"
    bottom: "res3d_branch2c"
    top: "res3d"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res3d_relu"
    type: "ReLU"
    bottom: "res3d"
    top: "res3d"
  }
  layer {
    name: "res4a_branch1"
    type: "Convolution"
    bottom: "res3d"
    top: "res4a_branch1"
    convolution_param {
      num_output: 1024
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 2
    }
  }
  layer {
    name: "bn4a_branch1"
    type: "BatchNorm"
    bottom: "res4a_branch1"
    top: "res4a_branch1"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4a_branch1"
    type: "Scale"
    bottom: "res4a_branch1"
    top: "res4a_branch1"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4a_branch2a"
    type: "Convolution"
    bottom: "res3d"
    top: "res4a_branch2a"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 2
    }
  }
  layer {
    name: "bn4a_branch2a"
    type: "BatchNorm"
    bottom: "res4a_branch2a"
    top: "res4a_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4a_branch2a"
    type: "Scale"
    bottom: "res4a_branch2a"
    top: "res4a_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4a_branch2a_relu"
    type: "ReLU"
    bottom: "res4a_branch2a"
    top: "res4a_branch2a"
  }
  layer {
    name: "res4a_branch2b"
    type: "Convolution"
    bottom: "res4a_branch2a"
    top: "res4a_branch2b"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn4a_branch2b"
    type: "BatchNorm"
    bottom: "res4a_branch2b"
    top: "res4a_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4a_branch2b"
    type: "Scale"
    bottom: "res4a_branch2b"
    top: "res4a_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4a_branch2b_relu"
    type: "ReLU"
    bottom: "res4a_branch2b"
    top: "res4a_branch2b"
  }
  layer {
    name: "res4a_branch2c"
    type: "Convolution"
    bottom: "res4a_branch2b"
    top: "res4a_branch2c"
    convolution_param {
      num_output: 1024
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4a_branch2c"
    type: "BatchNorm"
    bottom: "res4a_branch2c"
    top: "res4a_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4a_branch2c"
    type: "Scale"
    bottom: "res4a_branch2c"
    top: "res4a_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4a"
    type: "Eltwise"
    bottom: "res4a_branch1"
    bottom: "res4a_branch2c"
    top: "res4a"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res4a_relu"
    type: "ReLU"
    bottom: "res4a"
    top: "res4a"
  }
  layer {
    name: "res4b_branch2a"
    type: "Convolution"
    bottom: "res4a"
    top: "res4b_branch2a"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4b_branch2a"
    type: "BatchNorm"
    bottom: "res4b_branch2a"
    top: "res4b_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4b_branch2a"
    type: "Scale"
    bottom: "res4b_branch2a"
    top: "res4b_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4b_branch2a_relu"
    type: "ReLU"
    bottom: "res4b_branch2a"
    top: "res4b_branch2a"
  }
  layer {
    name: "res4b_branch2b"
    type: "Convolution"
    bottom: "res4b_branch2a"
    top: "res4b_branch2b"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn4b_branch2b"
    type: "BatchNorm"
    bottom: "res4b_branch2b"
    top: "res4b_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4b_branch2b"
    type: "Scale"
    bottom: "res4b_branch2b"
    top: "res4b_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4b_branch2b_relu"
    type: "ReLU"
    bottom: "res4b_branch2b"
    top: "res4b_branch2b"
  }
  layer {
    name: "res4b_branch2c"
    type: "Convolution"
    bottom: "res4b_branch2b"
    top: "res4b_branch2c"
    convolution_param {
      num_output: 1024
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4b_branch2c"
    type: "BatchNorm"
    bottom: "res4b_branch2c"
    top: "res4b_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4b_branch2c"
    type: "Scale"
    bottom: "res4b_branch2c"
    top: "res4b_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4b"
    type: "Eltwise"
    bottom: "res4a"
    bottom: "res4b_branch2c"
    top: "res4b"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res4b_relu"
    type: "ReLU"
    bottom: "res4b"
    top: "res4b"
  }
  layer {
    name: "res4c_branch2a"
    type: "Convolution"
    bottom: "res4b"
    top: "res4c_branch2a"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4c_branch2a"
    type: "BatchNorm"
    bottom: "res4c_branch2a"
    top: "res4c_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4c_branch2a"
    type: "Scale"
    bottom: "res4c_branch2a"
    top: "res4c_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4c_branch2a_relu"
    type: "ReLU"
    bottom: "res4c_branch2a"
    top: "res4c_branch2a"
  }
  layer {
    name: "res4c_branch2b"
    type: "Convolution"
    bottom: "res4c_branch2a"
    top: "res4c_branch2b"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn4c_branch2b"
    type: "BatchNorm"
    bottom: "res4c_branch2b"
    top: "res4c_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4c_branch2b"
    type: "Scale"
    bottom: "res4c_branch2b"
    top: "res4c_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4c_branch2b_relu"
    type: "ReLU"
    bottom: "res4c_branch2b"
    top: "res4c_branch2b"
  }
  layer {
    name: "res4c_branch2c"
    type: "Convolution"
    bottom: "res4c_branch2b"
    top: "res4c_branch2c"
    convolution_param {
      num_output: 1024
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4c_branch2c"
    type: "BatchNorm"
    bottom: "res4c_branch2c"
    top: "res4c_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4c_branch2c"
    type: "Scale"
    bottom: "res4c_branch2c"
    top: "res4c_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4c"
    type: "Eltwise"
    bottom: "res4b"
    bottom: "res4c_branch2c"
    top: "res4c"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res4c_relu"
    type: "ReLU"
    bottom: "res4c"
    top: "res4c"
  }
  layer {
    name: "res4d_branch2a"
    type: "Convolution"
    bottom: "res4c"
    top: "res4d_branch2a"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4d_branch2a"
    type: "BatchNorm"
    bottom: "res4d_branch2a"
    top: "res4d_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4d_branch2a"
    type: "Scale"
    bottom: "res4d_branch2a"
    top: "res4d_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4d_branch2a_relu"
    type: "ReLU"
    bottom: "res4d_branch2a"
    top: "res4d_branch2a"
  }
  layer {
    name: "res4d_branch2b"
    type: "Convolution"
    bottom: "res4d_branch2a"
    top: "res4d_branch2b"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn4d_branch2b"
    type: "BatchNorm"
    bottom: "res4d_branch2b"
    top: "res4d_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4d_branch2b"
    type: "Scale"
    bottom: "res4d_branch2b"
    top: "res4d_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4d_branch2b_relu"
    type: "ReLU"
    bottom: "res4d_branch2b"
    top: "res4d_branch2b"
  }
  layer {
    name: "res4d_branch2c"
    type: "Convolution"
    bottom: "res4d_branch2b"
    top: "res4d_branch2c"
    convolution_param {
      num_output: 1024
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4d_branch2c"
    type: "BatchNorm"
    bottom: "res4d_branch2c"
    top: "res4d_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4d_branch2c"
    type: "Scale"
    bottom: "res4d_branch2c"
    top: "res4d_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4d"
    type: "Eltwise"
    bottom: "res4c"
    bottom: "res4d_branch2c"
    top: "res4d"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res4d_relu"
    type: "ReLU"
    bottom: "res4d"
    top: "res4d"
  }
  layer {
    name: "res4e_branch2a"
    type: "Convolution"
    bottom: "res4d"
    top: "res4e_branch2a"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4e_branch2a"
    type: "BatchNorm"
    bottom: "res4e_branch2a"
    top: "res4e_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4e_branch2a"
    type: "Scale"
    bottom: "res4e_branch2a"
    top: "res4e_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4e_branch2a_relu"
    type: "ReLU"
    bottom: "res4e_branch2a"
    top: "res4e_branch2a"
  }
  layer {
    name: "res4e_branch2b"
    type: "Convolution"
    bottom: "res4e_branch2a"
    top: "res4e_branch2b"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn4e_branch2b"
    type: "BatchNorm"
    bottom: "res4e_branch2b"
    top: "res4e_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4e_branch2b"
    type: "Scale"
    bottom: "res4e_branch2b"
    top: "res4e_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4e_branch2b_relu"
    type: "ReLU"
    bottom: "res4e_branch2b"
    top: "res4e_branch2b"
  }
  layer {
    name: "res4e_branch2c"
    type: "Convolution"
    bottom: "res4e_branch2b"
    top: "res4e_branch2c"
    convolution_param {
      num_output: 1024
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4e_branch2c"
    type: "BatchNorm"
    bottom: "res4e_branch2c"
    top: "res4e_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4e_branch2c"
    type: "Scale"
    bottom: "res4e_branch2c"
    top: "res4e_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4e"
    type: "Eltwise"
    bottom: "res4d"
    bottom: "res4e_branch2c"
    top: "res4e"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res4e_relu"
    type: "ReLU"
    bottom: "res4e"
    top: "res4e"
  }
  layer {
    name: "res4f_branch2a"
    type: "Convolution"
    bottom: "res4e"
    top: "res4f_branch2a"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4f_branch2a"
    type: "BatchNorm"
    bottom: "res4f_branch2a"
    top: "res4f_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4f_branch2a"
    type: "Scale"
    bottom: "res4f_branch2a"
    top: "res4f_branch2a"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4f_branch2a_relu"
    type: "ReLU"
    bottom: "res4f_branch2a"
    top: "res4f_branch2a"
  }
  layer {
    name: "res4f_branch2b"
    type: "Convolution"
    bottom: "res4f_branch2a"
    top: "res4f_branch2b"
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn4f_branch2b"
    type: "BatchNorm"
    bottom: "res4f_branch2b"
    top: "res4f_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4f_branch2b"
    type: "Scale"
    bottom: "res4f_branch2b"
    top: "res4f_branch2b"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4f_branch2b_relu"
    type: "ReLU"
    bottom: "res4f_branch2b"
    top: "res4f_branch2b"
  }
  layer {
    name: "res4f_branch2c"
    type: "Convolution"
    bottom: "res4f_branch2b"
    top: "res4f_branch2c"
    convolution_param {
      num_output: 1024
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4f_branch2c"
    type: "BatchNorm"
    bottom: "res4f_branch2c"
    top: "res4f_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4f_branch2c"
    type: "Scale"
    bottom: "res4f_branch2c"
    top: "res4f_branch2c"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4f"
    type: "Eltwise"
    bottom: "res4e"
    bottom: "res4f_branch2c"
    top: "res4f"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res4f_relu"
    type: "ReLU"
    bottom: "res4f"
    top: "res4f"
  }
  
  ########## div 3 branch #############
  layer {
    name: "res4a_branch1_div3"
    type: "Convolution"
    bottom: "res3d"
    top: "res4a_branch1_div3"
    param {
      name: "res4a_branch1_weight"
    }
    convolution_param {
      num_output: 1024
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 3
    }
  }
  layer {
    name: "bn4a_branch1_div3"
    type: "BatchNorm"
    bottom: "res4a_branch1_div3"
    top: "res4a_branch1_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4a_branch1_div3"
    type: "Scale"
    bottom: "res4a_branch1_div3"
    top: "res4a_branch1_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4a_branch2a_div3"
    type: "Convolution"
    bottom: "res3d"
    top: "res4a_branch2a_div3"
    param {
      name: "res4a_branch2a_weight"
    }
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 3
    }
  }
  layer {
    name: "bn4a_branch2a_div3"
    type: "BatchNorm"
    bottom: "res4a_branch2a_div3"
    top: "res4a_branch2a_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4a_branch2a_div3"
    type: "Scale"
    bottom: "res4a_branch2a_div3"
    top: "res4a_branch2a_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4a_branch2a_relu_div3"
    type: "ReLU"
    bottom: "res4a_branch2a_div3"
    top: "res4a_branch2a_div3"
  }
  layer {
    name: "res4a_branch2b_div3"
    type: "Convolution"
    bottom: "res4a_branch2a_div3"
    top: "res4a_branch2b_div3"
    param {
      name: "res4a_branch2b_weight"
    }
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn4a_branch2b_div3"
    type: "BatchNorm"
    bottom: "res4a_branch2b_div3"
    top: "res4a_branch2b_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4a_branch2b_div3"
    type: "Scale"
    bottom: "res4a_branch2b_div3"
    top: "res4a_branch2b_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4a_branch2b_relu_div3"
    type: "ReLU"
    bottom: "res4a_branch2b_div3"
    top: "res4a_branch2b_div3"
  }
  layer {
    name: "res4a_branch2c_div3"
    type: "Convolution"
    param {
      name: "res4a_branch2c_weight"
    }
    bottom: "res4a_branch2b_div3"
    top: "res4a_branch2c_div3"
    convolution_param {
      num_output: 1024
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4a_branch2c_div3"
    type: "BatchNorm"
    bottom: "res4a_branch2c_div3"
    top: "res4a_branch2c_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4a_branch2c_div3"
    type: "Scale"
    bottom: "res4a_branch2c_div3"
    top: "res4a_branch2c_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4a_div3"
    type: "Eltwise"
    bottom: "res4a_branch1_div3"
    bottom: "res4a_branch2c_div3"
    top: "res4a_div3"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res4a_relu_div3"
    type: "ReLU"
    bottom: "res4a_div3"
    top: "res4a_div3"
  }
  layer {
    name: "res4b_branch2a_div3"
    type: "Convolution"
    bottom: "res4a_div3"
    top: "res4b_branch2a_div3"
    param {
      name: "res4b_branch2a_weight"
    }
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4b_branch2a_div3"
    type: "BatchNorm"
    bottom: "res4b_branch2a_div3"
    top: "res4b_branch2a_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4b_branch2a_div3"
    type: "Scale"
    bottom: "res4b_branch2a_div3"
    top: "res4b_branch2a_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4b_branch2a_relu_div3"
    type: "ReLU"
    bottom: "res4b_branch2a_div3"
    top: "res4b_branch2a_div3"
  }
  layer {
    name: "res4b_branch2b_div3"
    type: "Convolution"
    bottom: "res4b_branch2a_div3"
    top: "res4b_branch2b_div3"
    param {
      name: "res4b_branch2b_weight"
    }
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn4b_branch2b_div3"
    type: "BatchNorm"
    bottom: "res4b_branch2b_div3"
    top: "res4b_branch2b_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4b_branch2b_div3"
    type: "Scale"
    bottom: "res4b_branch2b_div3"
    top: "res4b_branch2b_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4b_branch2b_relu_div3"
    type: "ReLU"
    bottom: "res4b_branch2b_div3"
    top: "res4b_branch2b_div3"
  }
  layer {
    name: "res4b_branch2c_div3"
    type: "Convolution"
    bottom: "res4b_branch2b_div3"
    top: "res4b_branch2c_div3"
    param {
      name: "res4b_branch2c_weight"
    }
    convolution_param {
      num_output: 1024
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4b_branch2c_div3"
    type: "BatchNorm"
    bottom: "res4b_branch2c_div3"
    top: "res4b_branch2c_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4b_branch2c_div3"
    type: "Scale"
    bottom: "res4b_branch2c_div3"
    top: "res4b_branch2c_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4b"
    type: "Eltwise"
    bottom: "res4a_div3"
    bottom: "res4b_branch2c_div3"
    top: "res4b_div3"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res4b_relu_div3"
    type: "ReLU"
    bottom: "res4b_div3"
    top: "res4b_div3"
  }
  layer {
    name: "res4c_branch2a_div3"
    type: "Convolution"
    bottom: "res4b_div3"
    top: "res4c_branch2a_div3"
    param {
      name: "res4c_branch2a_weight"
    }
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4c_branch2a_div3"
    type: "BatchNorm"
    bottom: "res4c_branch2a_div3"
    top: "res4c_branch2a_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4c_branch2a_div3"
    type: "Scale"
    bottom: "res4c_branch2a_div3"
    top: "res4c_branch2a_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4c_branch2a_relu_div3"
    type: "ReLU"
    bottom: "res4c_branch2a_div3"
    top: "res4c_branch2a_div3"
  }
  layer {
    name: "res4c_branch2b_div3"
    type: "Convolution"
    bottom: "res4c_branch2a_div3"
    top: "res4c_branch2b_div3"
    param {
      name: "res4c_branch2b_weight"
    }
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn4c_branch2b_div3"
    type: "BatchNorm"
    bottom: "res4c_branch2b_div3"
    top: "res4c_branch2b_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4c_branch2b_div3"
    type: "Scale"
    bottom: "res4c_branch2b_div3"
    top: "res4c_branch2b_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4c_branch2b_relu_div3"
    type: "ReLU"
    bottom: "res4c_branch2b_div3"
    top: "res4c_branch2b_div3"
  }
  layer {
    name: "res4c_branch2c_div3"
    type: "Convolution"
    bottom: "res4c_branch2b_div3"
    top: "res4c_branch2c_div3"
    param {
      name: "res4c_branch2c_weight"
    }
    convolution_param {
      num_output: 1024
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4c_branch2c_div3"
    type: "BatchNorm"
    bottom: "res4c_branch2c_div3"
    top: "res4c_branch2c_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4c_branch2c_div3"
    type: "Scale"
    bottom: "res4c_branch2c_div3"
    top: "res4c_branch2c_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4c_div3"
    type: "Eltwise"
    bottom: "res4b_div3"
    bottom: "res4c_branch2c_div3"
    top: "res4c_div3"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res4c_relu_div3"
    type: "ReLU"
    bottom: "res4c_div3"
    top: "res4c_div3"
  }
  layer {
    name: "res4d_branch2a_div3"
    type: "Convolution"
    bottom: "res4c_div3"
    top: "res4d_branch2a_div3"
    param {
      name: "res4d_branch2a_weight"
    }
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4d_branch2a_div3"
    type: "BatchNorm"
    bottom: "res4d_branch2a_div3"
    top: "res4d_branch2a_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4d_branch2a_div3"
    type: "Scale"
    bottom: "res4d_branch2a_div3"
    top: "res4d_branch2a_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4d_branch2a_relu_div3"
    type: "ReLU"
    bottom: "res4d_branch2a_div3"
    top: "res4d_branch2a_div3"
  }
  layer {
    name: "res4d_branch2b_div3"
    type: "Convolution"
    bottom: "res4d_branch2a_div3"
    top: "res4d_branch2b_div3"
    param {
      name: "res4d_branch2b_weight"
    }
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn4d_branch2b_div3"
    type: "BatchNorm"
    bottom: "res4d_branch2b_div3"
    top: "res4d_branch2b_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4d_branch2b_div3"
    type: "Scale"
    bottom: "res4d_branch2b_div3"
    top: "res4d_branch2b_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4d_branch2b_relu_div3"
    type: "ReLU"
    bottom: "res4d_branch2b_div3"
    top: "res4d_branch2b_div3"
  }
  layer {
    name: "res4d_branch2c_div3"
    type: "Convolution"
    bottom: "res4d_branch2b_div3"
    top: "res4d_branch2c_div3"
    param {
      name: "res4d_branch2c_weight"
    }
    convolution_param {
      num_output: 1024
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4d_branch2c_div3"
    type: "BatchNorm"
    bottom: "res4d_branch2c_div3"
    top: "res4d_branch2c_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4d_branch2c_div3"
    type: "Scale"
    bottom: "res4d_branch2c_div3"
    top: "res4d_branch2c_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4d_div3"
    type: "Eltwise"
    bottom: "res4c_div3"
    bottom: "res4d_branch2c_div3"
    top: "res4d_div3"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res4d_relu_div3"
    type: "ReLU"
    bottom: "res4d_div3"
    top: "res4d_div3"
  }
  layer {
    name: "res4e_branch2a_div3"
    type: "Convolution"
    bottom: "res4d_div3"
    top: "res4e_branch2a_div3"
    param {
      name: "res4e_branch2a_weight"
    }
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4e_branch2a_div3"
    type: "BatchNorm"
    bottom: "res4e_branch2a_div3"
    top: "res4e_branch2a_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4e_branch2a_div3"
    type: "Scale"
    bottom: "res4e_branch2a_div3"
    top: "res4e_branch2a_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4e_branch2a_relu_div3"
    type: "ReLU"
    bottom: "res4e_branch2a_div3"
    top: "res4e_branch2a_div3"
  }
  layer {
    name: "res4e_branch2b_div3"
    type: "Convolution"
    bottom: "res4e_branch2a_div3"
    top: "res4e_branch2b_div3"
    param {
      name: "res4e_branch2b_weight"
    }
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn4e_branch2b_div3"
    type: "BatchNorm"
    bottom: "res4e_branch2b_div3"
    top: "res4e_branch2b_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4e_branch2b_div3"
    type: "Scale"
    bottom: "res4e_branch2b_div3"
    top: "res4e_branch2b_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4e_branch2b_relu_div3"
    type: "ReLU"
    bottom: "res4e_branch2b_div3"
    top: "res4e_branch2b_div3"
  }
  layer {
    name: "res4e_branch2c_div3"
    type: "Convolution"
    bottom: "res4e_branch2b_div3"
    top: "res4e_branch2c_div3"
    param {
      name: "res4e_branch2c_weight"
    }
    convolution_param {
      num_output: 1024
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4e_branch2c_div3"
    type: "BatchNorm"
    bottom: "res4e_branch2c_div3"
    top: "res4e_branch2c_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4e_branch2c_div3"
    type: "Scale"
    bottom: "res4e_branch2c_div3"
    top: "res4e_branch2c_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4e_div3"
    type: "Eltwise"
    bottom: "res4d_div3"
    bottom: "res4e_branch2c_div3"
    top: "res4e_div3"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res4e_relu_div3"
    type: "ReLU"
    bottom: "res4e_div3"
    top: "res4e_div3"
  }
  layer {
    name: "res4f_branch2a_div3"
    type: "Convolution"
    bottom: "res4e_div3"
    top: "res4f_branch2a_div3"
    param {
      name: "res4f_branch2a_weight"
    }
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4f_branch2a_div3"
    type: "BatchNorm"
    bottom: "res4f_branch2a_div3"
    top: "res4f_branch2a_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4f_branch2a_div3"
    type: "Scale"
    bottom: "res4f_branch2a_div3"
    top: "res4f_branch2a_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4f_branch2a_relu_div3"
    type: "ReLU"
    bottom: "res4f_branch2a_div3"
    top: "res4f_branch2a_div3"
  }
  layer {
    name: "res4f_branch2b_div3"
    type: "Convolution"
    bottom: "res4f_branch2a_div3"
    top: "res4f_branch2b_div3"
    param {
      name: "res4f_branch2b_weight"
    }
    convolution_param {
      num_output: 256
      bias_term: false
      pad: 1
      kernel_size: 3
      stride: 1
    }
  }
  layer {
    name: "bn4f_branch2b_div3"
    type: "BatchNorm"
    bottom: "res4f_branch2b_div3"
    top: "res4f_branch2b_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4f_branch2b_div3"
    type: "Scale"
    bottom: "res4f_branch2b_div3"
    top: "res4f_branch2b_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4f_branch2b_relu_div3"
    type: "ReLU"
    bottom: "res4f_branch2b_div3"
    top: "res4f_branch2b_div3"
  }
  layer {
    name: "res4f_branch2c_div3"
    type: "Convolution"
    bottom: "res4f_branch2b_div3"
    top: "res4f_branch2c_div3"
    param {
      name: "res4f_branch2c_weight"
    }
    convolution_param {
      num_output: 1024
      bias_term: false
      pad: 0
      kernel_size: 1
      stride: 1
    }
  }
  layer {
    name: "bn4f_branch2c_div3"
    type: "BatchNorm"
    bottom: "res4f_branch2c_div3"
    top: "res4f_branch2c_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    batch_norm_param {
      use_global_stats: true
    }
  }
  layer {
    name: "scale4f_branch2c_div3"
    type: "Scale"
    bottom: "res4f_branch2c_div3"
    top: "res4f_branch2c_div3"
    param {
      lr_mult: 0
    }
    param {
      lr_mult: 0
    }
    scale_param {
      bias_term: true
    }
  }
  layer {
    name: "res4f_div3"
    type: "Eltwise"
    bottom: "res4e_div3"
    bottom: "res4f_branch2c_div3"
    top: "res4f_div3"
    eltwise_param {
      operation: SUM
    }
  }
  layer {
    name: "res4f_relu_div3"
    type: "ReLU"
    bottom: "res4f_div3"
    top: "res4f_div3"
  }
  
  
  
  ########## shared deep_mask feature on 16s ##########
  
  layer { name: 'conv_feat_1_16s' type: 'Convolution' bottom: 'res4f' top: 'conv_feat_1_16s'
    param { name: "conv_feat_1" lr_mult: 1.0 }
    convolution_param { num_output: 128 pad: 0 kernel_size: 1 weight_filler: { type: 'gaussian' std: 0.00001 } bias_term: false } }
  
  ########## shared deep_mask feature on 24s ########
  
  layer { name: 'conv_feat_1_24s' type: 'Convolution' bottom: 'res4f_div3' top: 'conv_feat_1_24s'
    param { name: "conv_feat_1" lr_mult: 1.0 }
    convolution_param { num_output: 128 pad: 0 kernel_size: 1 weight_filler: { type: 'gaussian' std: 0.00001 } bias_term: false } }
  
  ########## shared deep_mask feature on 32s ##########
  
  layer { name: "conv5_4" type:"Convolution" bottom: "res4f" top: "conv5_4"
    param { name: 'rnn_conv_1_weight' } param { name: 'rnn_conv_1_bias' }
    convolution_param { kernel_size: 3 stride: 1 pad: 1  num_output: 256
      weight_filler { type: 'gaussian' std: 0.00001 } bias_filler { type: 'constant' value: 0 } } }
  
  layer { name: "conv5_4_relu" type: "ReLU" bottom: "conv5_4" top: "conv5_4" }
  
  layer { name: "conv5_5" type: "Convolution" bottom: "conv5_4" top: "conv5_5"
    param { name: 'rnn_conv_2_weight' } param { name: 'rnn_conv_2_bias' }
    convolution_param { kernel_size: 1 stride: 1 pad: 0  num_output: 1024
      weight_filler { type: 'gaussian' std: 0.00001 } bias_filler { type: 'constant' value: 0 } } }
  
  layer { name: "pool5b" type: "Pooling" bottom: "conv5_5" top: "pool5b" 
    pooling_param { pool: AVE kernel_size: 2 stride: 2} }
  
  layer { name: "pool5a" type: "Pooling" bottom: "res4f" top: "pool5a" 
    pooling_param { pool: AVE kernel_size: 2 stride: 2} }
  
  layer { name: "sum_32s" type: "Eltwise" bottom: "pool5a" bottom: "pool5b" top: "sum_32s" }
  layer { name: "sum_32s_relu" type: "ReLU" bottom: "sum_32s" top: "sum_32s" }
  
  layer { name: "conv_feat_1_32s" type: "Convolution" bottom: "sum_32s" top: "conv_feat_1_32s"
    param { name: "conv_feat_1" lr_mult: 1 }
    convolution_param { num_output: 128 pad: 0 kernel_size: 1 weight_filler: { type: 'gaussian' std: 0.00001 } bias_term: false } }
  
  ########## shared deep_mask feature on 48s ##########
  
  layer { name: "conv5_4_div3" type:"Convolution" bottom: "res4f_div3" top: "conv5_4_div3"
    param { name: 'rnn_conv_1_weight' } param { name: 'rnn_conv_1_bias' }
    convolution_param { kernel_size: 3 stride: 1 pad: 1  num_output: 256
      weight_filler { type: 'gaussian' std: 0.00001 } bias_filler { type: 'constant' value: 0 } } }
  
  layer { name: "conv5_4_div3_relu" type: "ReLU" bottom: "conv5_4_div3" top: "conv5_4_div3" }
  
  layer { name: "conv5_5_div3" type: "Convolution" bottom: "conv5_4_div3" top: "conv5_5_div3"
    param { name: 'rnn_conv_2_weight' } param { name: 'rnn_conv_2_bias' }
    convolution_param { kernel_size: 1 stride: 1 pad: 0  num_output: 1024
      weight_filler { type: 'gaussian' std: 0.00001 } bias_filler { type: 'constant' value: 0 } } }
  
  layer { name: "pool5b_div3" type: "Pooling" bottom: "conv5_5_div3" top: "pool5b_div3" 
    pooling_param { pool: AVE kernel_size: 2 stride: 2} }
  
  layer { name: "pool5a_div3" type: "Pooling" bottom: "res4f_div3" top: "pool5a_div3" 
    pooling_param { pool: AVE kernel_size: 2 stride: 2} }
  
  layer { name: "sum_48s" type: "Eltwise" bottom: "pool5a_div3" bottom: "pool5b_div3" top: "sum_48s" }
  layer { name: "sum_48s_relu" type: "ReLU" bottom: "sum_48s" top: "sum_48s" }
  
  layer { name: "conv_feat_1_48s" type: "Convolution" bottom: "sum_48s" top: "conv_feat_1_48s"
    param { name: "conv_feat_1" lr_mult: 1 }
    convolution_param { num_output: 128 pad: 0 kernel_size: 1 weight_filler: { type: 'gaussian' std: 0.00001 } bias_term: false } }
  
  ########## shared deep_mask feature on 64s ##########
  
  layer { name: "conv6_1" type:"Convolution" bottom: "sum_32s" top: "conv6_1"
    param { name: 'rnn_conv_1_weight' } param { name: 'rnn_conv_1_bias' }
    convolution_param { kernel_size: 3 stride: 1 pad: 1  num_output: 256
      weight_filler { type: 'gaussian' std: 0.00001 } bias_filler { type: 'constant' value: 0 } } }
  
  layer { name: "conv6_1_relu" type: "ReLU" bottom: "conv6_1" top: "conv6_1" }
  
  layer { name: "conv6_2" type:"Convolution" bottom: "conv6_1" top: "conv6_2"
    param { name: 'rnn_conv_2_weight' } param { name: 'rnn_conv_2_bias' }
    convolution_param { kernel_size: 1 stride: 1 pad: 0  num_output: 1024
      weight_filler { type: 'gaussian' std: 0.00001 } bias_filler { type: 'constant' value: 0 } } }
  
  layer { name: "pool6b" type:"Pooling" bottom: "conv6_2" top: "pool6b"
    pooling_param { pool: AVE kernel_size: 2 stride: 2 } }
  
  layer { name: "pool6a" type:"Pooling" bottom: "sum_32s" top: "pool6a"
    pooling_param { pool: AVE kernel_size: 2 stride: 2 } }
  
  layer { name: "sum_64s" type: "Eltwise" bottom: "pool6a" bottom: "pool6b" top: "sum_64s" }
  layer { name: "sum_64s_relu" type: "ReLU" bottom: "sum_64s" top: "sum_64s" }
  
  layer { name: "conv_feat_1_64s" type: "Convolution" bottom: "sum_64s" top: "conv_feat_1_64s"
    param { name: "conv_feat_1" lr_mult: 1 }
    convolution_param { num_output: 128 pad: 0 kernel_size: 1 weight_filler: { type: 'gaussian' std: 0.001 } bias_term: false } }
  
  ########## shared deep_mask feature on 96s ##########
  
  layer { name: "conv6_1_div3" type:"Convolution" bottom: "sum_48s" top: "conv6_1_div3"
    param { name: 'rnn_conv_1_weight' } param { name: 'rnn_conv_1_bias' }
    convolution_param { kernel_size: 3 stride: 1 pad: 1  num_output: 256
      weight_filler { type: 'gaussian' std: 0.00001 } bias_filler { type: 'constant' value: 0 } } }
  
  layer { name: "conv6_1_div3_relu" type: "ReLU" bottom: "conv6_1_div3" top: "conv6_1_div3" }
  
  layer { name: "conv6_2_div3" type:"Convolution" bottom: "conv6_1_div3" top: "conv6_2_div3"
    param { name: 'rnn_conv_2_weight' } param { name: 'rnn_conv_2_bias' }
    convolution_param { kernel_size: 1 stride: 1 pad: 0  num_output: 1024
      weight_filler { type: 'gaussian' std: 0.00001 } bias_filler { type: 'constant' value: 0 } } }
  
  layer { name: "pool6b_div3" type:"Pooling" bottom: "conv6_2_div3" top: "pool6b_div3"
    pooling_param { pool: AVE kernel_size: 2 stride: 2 } }
  
  layer { name: "pool6a_div3" type:"Pooling" bottom: "sum_48s" top: "pool6a_div3"
    pooling_param { pool: AVE kernel_size: 2 stride: 2 } }
  
  layer { name: "sum_96s" type: "Eltwise" bottom: "pool6a_div3" bottom: "pool6b_div3" top: "sum_96s" }
  layer { name: "sum_96s_relu" type: "ReLU" bottom: "sum_96s" top: "sum_96s" }
  
  layer { name: "conv_feat_1_96s" type: "Convolution" bottom: "sum_96s" top: "conv_feat_1_96s"
    param { name: "conv_feat_1" lr_mult: 1 }
    convolution_param { num_output: 128 pad: 0 kernel_size: 1 weight_filler: { type: 'gaussian' std: 0.001 } bias_term: false } }
  
  
  ########## shared deep_mask feature on 128s #########
  
  layer { name: "conv7_1" type:"Convolution" bottom: "sum_64s" top: "conv7_1"
    param { name: 'rnn_conv_1_weight' } param { name: 'rnn_conv_1_bias' }
    convolution_param { kernel_size: 3 stride: 1 pad: 1  num_output: 256
      weight_filler { type: 'gaussian' std: 0.001 } bias_filler { type: 'constant' value: 0 } } }
  
  layer { name: "conv7_1_relu" type: "ReLU" bottom: "conv7_1" top: "conv7_1" }
  
  layer { name: "conv7_2" type:"Convolution" bottom: "conv7_1" top: "conv7_2"
    param { name: 'rnn_conv_2_weight' } param { name: 'rnn_conv_2_bias' }
    convolution_param { kernel_size: 1 stride: 1 pad: 0  num_output: 1024
      weight_filler { type: 'gaussian' std: 0.001 } bias_filler { type: 'constant' value: 0 } } }
  
  layer { name: "pool7b" type:"Pooling" bottom: "conv7_2" top: "pool7b"
    pooling_param { pool: AVE kernel_size: 2 stride: 2 } }
  
  layer { name: "pool7a" type:"Pooling" bottom: "sum_64s" top: "pool7a"
    pooling_param { pool: AVE kernel_size: 2 stride: 2 } }
  
  layer { name: "sum_128s" type: "Eltwise" bottom: "pool7a" bottom: "pool7b" top: "sum_128s" }
  layer { name: "sum_128s_relu" type: "ReLU" bottom: "sum_128s" top: "sum_128s" }
  
  layer { name: "conv_feat_1_128s" type: "Convolution" bottom: "sum_128s" top: "conv_feat_1_128s"
    param { name: "conv_feat_1" lr_mult: 1 }
    convolution_param { num_output: 128 pad: 0 kernel_size: 1 weight_filler: { type: 'gaussian' std: 0.001 } bias_term: false } }
  
  
  ########## sample #########
  layer { name: "extractor" type: "SlidingWindow" bottom: "conv_feat_1_16s", top: "sample_16s"
    sliding_window_param { window_h: 10 window_w: 10 }}
  
  layer { name: "extractor" type: "SlidingWindow" bottom: "conv_feat_1_24s" top: "sample_24s" 
    sliding_window_param { window_h: 10 window_w: 10 }}
  
  layer { name: "extractor" type: "SlidingWindow" bottom: "conv_feat_1_32s", top: "sample_32s"
    sliding_window_param { window_h: 10 window_w: 10 }}
  
  layer { name: "extractor" type: "SlidingWindow" bottom: "conv_feat_1_48s", top: "sample_48s"
    sliding_window_param { window_h: 10 window_w: 10 }}
  
  layer { name: "extractor" type: "SlidingWindow" bottom: "conv_feat_1_64s", top: "sample_64s"
    sliding_window_param { window_h: 10 window_w: 10 }}
  
  layer { name: "extractor" type: "SlidingWindow" bottom: "conv_feat_1_96s", top: "sample_96s"
    sliding_window_param { window_h: 10 window_w: 10 }}
  
  layer { name: "extractor" type: "SlidingWindow" bottom: "conv_feat_1_128s", top: "sample_128s"
    sliding_window_param { window_h: 10 window_w: 10 }}
  
  layer { name: "sample_concat" type: "Concat" 
    bottom: "sample_16s" bottom: "sample_24s" bottom: "sample_32s" bottom: "sample_48s"
    bottom: "sample_64s" bottom: "sample_96s" bottom: "sample_128s" top: "sample"
    concat_param { concat_dim: 0 } }
  
  layer { bottom: "sample" top: "sample" type: "BatchNorm" name:"sample_bn" batch_norm_param { use_global_stats: true } 
    param { lr_mult: 0 decay_mult: 0 } param { lr_mult: 0 decay_mult: 0 } param { lr_mult: 0 decay_mult: 0 } }
  layer { bottom: "sample" top: "sample" type: "Scale" name: "sample_scale" scale_param { bias_term: true } 
    param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0} }
  
  ########## cls branch ##########
  
  layer { name: 'cls_1' type: 'InnerProduct' bottom: 'sample' top: 'cls_1'
      param { lr_mult: 1.0 } param { lr_mult: 1.0 }
      inner_product_param { num_output: 512 weight_filler: { type: 'gaussian' std: 0.01 } } }
  layer { name: 'relu_cls_1' type: 'ReLU' bottom: 'cls_1' top: 'cls_1' }
  layer { name: 'dropout_cls_1' type: 'Dropout' bottom: 'cls_1' top: 'cls_1' dropout_param { dropout_ratio: 0.5 } }
  
  
  layer { name: 'cls_2' type: 'InnerProduct' bottom: 'cls_1' top: 'cls_2'
    param { lr_mult: 1.0 } param { lr_mult: 1.0 }
    inner_product_param { num_output: 1024 weight_filler: { type: 'gaussian' std: 0.01 } } }
  layer { name: 'relu_cls_2' type: 'ReLU' bottom: 'cls_2' top: 'cls_2' }
  
  
  ########## cls score ##########
  
  layer { name: 'obj_score' type: 'InnerProduct' bottom: 'cls_2' top: 'obj_score' 
    param { lr_mult: 1.0 } param { lr_mult: 2.0 }
    inner_product_param { num_output: 1 weight_filler { type: "gaussian" std: 0.0001 }  bias_filler { type: "constant" std: 0 } } }
  layer { name: 'sig_score' type: 'Sigmoid' bottom: 'obj_score' top: 'objn' }
  
  layer { name: "top_k" type: "DummyData" top: "k" dummy_data_param { shape { dim: 100 dim: 1 dim: 1 dim: 1} } }
  
  layer { name: "batch_filter" type: "TopK" bottom: "sample" bottom: "objn" bottom: "k" top: "filted_sample" top: "top_k" }
  
  ########## att branch ##########
  layer { name: 'att' type: 'InnerProduct' bottom: 'filted_sample' top: 'flatten_att'
    param { lr_mult: 1.0 } param { lr_mult: 2.0 }
    inner_product_param { num_output: 100 weight_filler: { type: 'gaussian' std: 0.0001 } bias_filler { type: 'constant' value: 0 } } }
  
  layer {
    name: "atts_reshape" type: "Reshape" bottom: "flatten_att" top: "atts"
    reshape_param { shape { dim: -1 dim: 1 dim: 10, dim: 10 } }
  }
  
  
  ######### att filter ###########
  layer { name: 'att_sigmoid' type: 'Sigmoid' bottom: 'atts' top: 'sig_atts' }
  layer { name: 'att_filt' type: 'TileProduct' bottom: 'filted_sample' bottom: 'sig_atts' top: 'atts_filt_feat' }
  
  
  ########## seg branch ##########
  
  layer { name: 'seg_1' type: 'InnerProduct' bottom: 'atts_filt_feat' top: 'seg_1'
      param { lr_mult: 1.0 }
      inner_product_param { num_output: 512 weight_filler: { type: 'gaussian' std: 0.001 } bias_term: false } }
  
  layer { bottom: "seg_1" top: "seg_1" type: "BatchNorm" name:"seg_1_bn" batch_norm_param { use_global_stats: true } 
  param { lr_mult: 0 decay_mult: 0 } param { lr_mult: 0 decay_mult: 0 } param { lr_mult: 0 decay_mult: 0 } }
  layer { bottom: "seg_1" top: "seg_1" type: "Scale" name: "seg_1_scale" scale_param { bias_term: true } 
    param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0} }
  
  layer { name: 'seg_2' type: 'InnerProduct' bottom: 'seg_1' top: 'seg_2'
    param { lr_mult: 1.0 } param { lr_mult: 2.0 }
    inner_product_param { num_output: 1600 weight_filler: { type: 'gaussian' std: 0.001 } bias_filler { type: 'constant' value: 0 } } }
  
  ########## seg score ##########
  layer { name: 'mask_reshape' type: 'Reshape' bottom: 'seg_2' top: 'seg_mask'
    reshape_param { shape { dim: -1 dim: 1 dim: 40 dim: 40 } } }
  
  layer { name: 'upscore' type: "Deconvolution" bottom: "seg_mask" top: "seg_mask_up" param { lr_mult: 0 }
    convolution_param { num_output: 1 bias_term: false kernel_size: 8 stride: 4 } }
  
  layer { name: "mask_shape" type: "DummyData" top: "mask_shape" dummy_data_param { shape { dim: 1 dim: 1 dim: 160 dim: 160 } } }
  
  layer { name: "crop" type: "Crop" bottom: "seg_mask_up" bottom: "mask_shape" top: "seg_mask_crop" crop_param { axis: 2 offset: 2 } }
  
  layer { name: 'seg' type: 'Sigmoid' bottom: 'seg_mask_crop' top: 'masks' }
  