Skip to content

Instantly share code, notes, and snippets.

@walsvid
Created September 4, 2018 02:44
Show Gist options
  • Save walsvid/a59291dbbd2128061db15d4eadfe41e3 to your computer and use it in GitHub Desktop.
Save walsvid/a59291dbbd2128061db15d4eadfe41e3 to your computer and use it in GitHub Desktop.
[attribute net]
name: "ResNet-50"
layer {
name: "data"
type: "Python"
top: "data"
python_param{
module: "python_data_layer"
layer: "AdaptAttributeLayer"
}
include {
phase: TRAIN
}
}
layer {
name: "data"
type: "Python"
top: "data"
python_param{
module: "python_data_layer"
layer: "AdaptAttributeLayer"
}
include {
phase: TEST
}
}
layer {
bottom: "data"
top: "conv1"
name: "conv1"
type: "Convolution"
convolution_param {
num_output: 64
kernel_size: 7
pad: 3
stride: 2
}
}
layer {
bottom: "conv1"
top: "conv1"
name: "bn_conv1"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "conv1"
top: "conv1"
name: "scale_conv1"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "conv1"
top: "conv1"
name: "conv1_relu"
type: "ReLU"
}
layer {
bottom: "conv1"
top: "pool1"
name: "pool1"
type: "Pooling"
pooling_param {
kernel_size: 3
stride: 2
pool: MAX
}
}
layer {
bottom: "pool1"
top: "res2a_branch1"
name: "res2a_branch1"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res2a_branch1"
top: "res2a_branch1"
name: "bn2a_branch1"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2a_branch1"
top: "res2a_branch1"
name: "scale2a_branch1"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "pool1"
top: "res2a_branch2a"
name: "res2a_branch2a"
type: "Convolution"
convolution_param {
num_output: 64
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res2a_branch2a"
top: "res2a_branch2a"
name: "bn2a_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2a_branch2a"
top: "res2a_branch2a"
name: "scale2a_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2a_branch2a"
top: "res2a_branch2a"
name: "res2a_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res2a_branch2a"
top: "res2a_branch2b"
name: "res2a_branch2b"
type: "Convolution"
convolution_param {
num_output: 64
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res2a_branch2b"
top: "res2a_branch2b"
name: "bn2a_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2a_branch2b"
top: "res2a_branch2b"
name: "scale2a_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2a_branch2b"
top: "res2a_branch2b"
name: "res2a_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res2a_branch2b"
top: "res2a_branch2c"
name: "res2a_branch2c"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res2a_branch2c"
top: "res2a_branch2c"
name: "bn2a_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2a_branch2c"
top: "res2a_branch2c"
name: "scale2a_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2a_branch1"
bottom: "res2a_branch2c"
top: "res2a"
name: "res2a"
type: "Eltwise"
}
layer {
bottom: "res2a"
top: "res2a"
name: "res2a_relu"
type: "ReLU"
# propagate_down : 0
}
layer {
bottom: "res2a"
top: "res2b_branch2a"
name: "res2b_branch2a"
type: "Convolution"
convolution_param {
num_output: 64
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res2b_branch2a"
top: "res2b_branch2a"
name: "bn2b_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2b_branch2a"
top: "res2b_branch2a"
name: "scale2b_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2b_branch2a"
top: "res2b_branch2a"
name: "res2b_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res2b_branch2a"
top: "res2b_branch2b"
name: "res2b_branch2b"
type: "Convolution"
convolution_param {
num_output: 64
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res2b_branch2b"
top: "res2b_branch2b"
name: "bn2b_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2b_branch2b"
top: "res2b_branch2b"
name: "scale2b_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2b_branch2b"
top: "res2b_branch2b"
name: "res2b_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res2b_branch2b"
top: "res2b_branch2c"
name: "res2b_branch2c"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res2b_branch2c"
top: "res2b_branch2c"
name: "bn2b_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2b_branch2c"
top: "res2b_branch2c"
name: "scale2b_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2a"
bottom: "res2b_branch2c"
top: "res2b"
name: "res2b"
type: "Eltwise"
}
layer {
bottom: "res2b"
top: "res2b"
name: "res2b_relu"
type: "ReLU"
}
layer {
bottom: "res2b"
top: "res2c_branch2a"
name: "res2c_branch2a"
type: "Convolution"
convolution_param {
num_output: 64
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res2c_branch2a"
top: "res2c_branch2a"
name: "bn2c_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2c_branch2a"
top: "res2c_branch2a"
name: "scale2c_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2c_branch2a"
top: "res2c_branch2a"
name: "res2c_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res2c_branch2a"
top: "res2c_branch2b"
name: "res2c_branch2b"
type: "Convolution"
convolution_param {
num_output: 64
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res2c_branch2b"
top: "res2c_branch2b"
name: "bn2c_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2c_branch2b"
top: "res2c_branch2b"
name: "scale2c_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2c_branch2b"
top: "res2c_branch2b"
name: "res2c_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res2c_branch2b"
top: "res2c_branch2c"
name: "res2c_branch2c"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res2c_branch2c"
top: "res2c_branch2c"
name: "bn2c_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2c_branch2c"
top: "res2c_branch2c"
name: "scale2c_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2b"
bottom: "res2c_branch2c"
top: "res2c"
name: "res2c"
type: "Eltwise"
}
layer {
bottom: "res2c"
top: "res2c"
name: "res2c_relu"
type: "ReLU"
}
layer {
bottom: "res2c"
top: "res3a_branch1"
name: "res3a_branch1"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 2
bias_term: false
}
}
layer {
bottom: "res3a_branch1"
top: "res3a_branch1"
name: "bn3a_branch1"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3a_branch1"
top: "res3a_branch1"
name: "scale3a_branch1"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2c"
top: "res3a_branch2a"
name: "res3a_branch2a"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 1
pad: 0
stride: 2
bias_term: false
}
}
layer {
bottom: "res3a_branch2a"
top: "res3a_branch2a"
name: "bn3a_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3a_branch2a"
top: "res3a_branch2a"
name: "scale3a_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3a_branch2a"
top: "res3a_branch2a"
name: "res3a_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res3a_branch2a"
top: "res3a_branch2b"
name: "res3a_branch2b"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res3a_branch2b"
top: "res3a_branch2b"
name: "bn3a_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3a_branch2b"
top: "res3a_branch2b"
name: "scale3a_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3a_branch2b"
top: "res3a_branch2b"
name: "res3a_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res3a_branch2b"
top: "res3a_branch2c"
name: "res3a_branch2c"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res3a_branch2c"
top: "res3a_branch2c"
name: "bn3a_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3a_branch2c"
top: "res3a_branch2c"
name: "scale3a_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3a_branch1"
bottom: "res3a_branch2c"
top: "res3a"
name: "res3a"
type: "Eltwise"
}
layer {
bottom: "res3a"
top: "res3a"
name: "res3a_relu"
type: "ReLU"
}
layer {
bottom: "res3a"
top: "res3b_branch2a"
name: "res3b_branch2a"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res3b_branch2a"
top: "res3b_branch2a"
name: "bn3b_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3b_branch2a"
top: "res3b_branch2a"
name: "scale3b_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3b_branch2a"
top: "res3b_branch2a"
name: "res3b_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res3b_branch2a"
top: "res3b_branch2b"
name: "res3b_branch2b"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res3b_branch2b"
top: "res3b_branch2b"
name: "bn3b_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3b_branch2b"
top: "res3b_branch2b"
name: "scale3b_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3b_branch2b"
top: "res3b_branch2b"
name: "res3b_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res3b_branch2b"
top: "res3b_branch2c"
name: "res3b_branch2c"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res3b_branch2c"
top: "res3b_branch2c"
name: "bn3b_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3b_branch2c"
top: "res3b_branch2c"
name: "scale3b_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3a"
bottom: "res3b_branch2c"
top: "res3b"
name: "res3b"
type: "Eltwise"
}
layer {
bottom: "res3b"
top: "res3b"
name: "res3b_relu"
type: "ReLU"
}
layer {
bottom: "res3b"
top: "res3c_branch2a"
name: "res3c_branch2a"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res3c_branch2a"
top: "res3c_branch2a"
name: "bn3c_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3c_branch2a"
top: "res3c_branch2a"
name: "scale3c_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3c_branch2a"
top: "res3c_branch2a"
name: "res3c_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res3c_branch2a"
top: "res3c_branch2b"
name: "res3c_branch2b"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res3c_branch2b"
top: "res3c_branch2b"
name: "bn3c_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3c_branch2b"
top: "res3c_branch2b"
name: "scale3c_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3c_branch2b"
top: "res3c_branch2b"
name: "res3c_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res3c_branch2b"
top: "res3c_branch2c"
name: "res3c_branch2c"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res3c_branch2c"
top: "res3c_branch2c"
name: "bn3c_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3c_branch2c"
top: "res3c_branch2c"
name: "scale3c_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3b"
bottom: "res3c_branch2c"
top: "res3c"
name: "res3c"
type: "Eltwise"
}
layer {
bottom: "res3c"
top: "res3c"
name: "res3c_relu"
type: "ReLU"
}
layer {
bottom: "res3c"
top: "res3d_branch2a"
name: "res3d_branch2a"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res3d_branch2a"
top: "res3d_branch2a"
name: "bn3d_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3d_branch2a"
top: "res3d_branch2a"
name: "scale3d_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3d_branch2a"
top: "res3d_branch2a"
name: "res3d_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res3d_branch2a"
top: "res3d_branch2b"
name: "res3d_branch2b"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res3d_branch2b"
top: "res3d_branch2b"
name: "bn3d_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3d_branch2b"
top: "res3d_branch2b"
name: "scale3d_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3d_branch2b"
top: "res3d_branch2b"
name: "res3d_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res3d_branch2b"
top: "res3d_branch2c"
name: "res3d_branch2c"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res3d_branch2c"
top: "res3d_branch2c"
name: "bn3d_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3d_branch2c"
top: "res3d_branch2c"
name: "scale3d_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3c"
bottom: "res3d_branch2c"
top: "res3d"
name: "res3d"
type: "Eltwise"
}
layer {
bottom: "res3d"
top: "res3d"
name: "res3d_relu"
type: "ReLU"
}
layer {
bottom: "res3d"
top: "res4a_branch1"
name: "res4a_branch1"
type: "Convolution"
convolution_param {
num_output: 1024
kernel_size: 1
pad: 0
stride: 2
bias_term: false
}
}
layer {
bottom: "res4a_branch1"
top: "res4a_branch1"
name: "bn4a_branch1"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4a_branch1"
top: "res4a_branch1"
name: "scale4a_branch1"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3d"
top: "res4a_branch2a"
name: "res4a_branch2a"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 2
bias_term: false
}
}
layer {
bottom: "res4a_branch2a"
top: "res4a_branch2a"
name: "bn4a_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4a_branch2a"
top: "res4a_branch2a"
name: "scale4a_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4a_branch2a"
top: "res4a_branch2a"
name: "res4a_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res4a_branch2a"
top: "res4a_branch2b"
name: "res4a_branch2b"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res4a_branch2b"
top: "res4a_branch2b"
name: "bn4a_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4a_branch2b"
top: "res4a_branch2b"
name: "scale4a_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4a_branch2b"
top: "res4a_branch2b"
name: "res4a_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res4a_branch2b"
top: "res4a_branch2c"
name: "res4a_branch2c"
type: "Convolution"
convolution_param {
num_output: 1024
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4a_branch2c"
top: "res4a_branch2c"
name: "bn4a_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4a_branch2c"
top: "res4a_branch2c"
name: "scale4a_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4a_branch1"
bottom: "res4a_branch2c"
top: "res4a"
name: "res4a"
type: "Eltwise"
}
layer {
bottom: "res4a"
top: "res4a"
name: "res4a_relu"
type: "ReLU"
}
layer {
bottom: "res4a"
top: "res4b_branch2a"
name: "res4b_branch2a"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4b_branch2a"
top: "res4b_branch2a"
name: "bn4b_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4b_branch2a"
top: "res4b_branch2a"
name: "scale4b_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4b_branch2a"
top: "res4b_branch2a"
name: "res4b_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res4b_branch2a"
top: "res4b_branch2b"
name: "res4b_branch2b"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res4b_branch2b"
top: "res4b_branch2b"
name: "bn4b_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4b_branch2b"
top: "res4b_branch2b"
name: "scale4b_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4b_branch2b"
top: "res4b_branch2b"
name: "res4b_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res4b_branch2b"
top: "res4b_branch2c"
name: "res4b_branch2c"
type: "Convolution"
convolution_param {
num_output: 1024
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4b_branch2c"
top: "res4b_branch2c"
name: "bn4b_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4b_branch2c"
top: "res4b_branch2c"
name: "scale4b_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4a"
bottom: "res4b_branch2c"
top: "res4b"
name: "res4b"
type: "Eltwise"
}
layer {
bottom: "res4b"
top: "res4b"
name: "res4b_relu"
type: "ReLU"
}
layer {
bottom: "res4b"
top: "res4c_branch2a"
name: "res4c_branch2a"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4c_branch2a"
top: "res4c_branch2a"
name: "bn4c_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4c_branch2a"
top: "res4c_branch2a"
name: "scale4c_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4c_branch2a"
top: "res4c_branch2a"
name: "res4c_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res4c_branch2a"
top: "res4c_branch2b"
name: "res4c_branch2b"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res4c_branch2b"
top: "res4c_branch2b"
name: "bn4c_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4c_branch2b"
top: "res4c_branch2b"
name: "scale4c_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4c_branch2b"
top: "res4c_branch2b"
name: "res4c_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res4c_branch2b"
top: "res4c_branch2c"
name: "res4c_branch2c"
type: "Convolution"
convolution_param {
num_output: 1024
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4c_branch2c"
top: "res4c_branch2c"
name: "bn4c_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4c_branch2c"
top: "res4c_branch2c"
name: "scale4c_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4b"
bottom: "res4c_branch2c"
top: "res4c"
name: "res4c"
type: "Eltwise"
}
layer {
bottom: "res4c"
top: "res4c"
name: "res4c_relu"
type: "ReLU"
}
layer {
bottom: "res4c"
top: "res4d_branch2a"
name: "res4d_branch2a"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4d_branch2a"
top: "res4d_branch2a"
name: "bn4d_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4d_branch2a"
top: "res4d_branch2a"
name: "scale4d_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4d_branch2a"
top: "res4d_branch2a"
name: "res4d_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res4d_branch2a"
top: "res4d_branch2b"
name: "res4d_branch2b"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res4d_branch2b"
top: "res4d_branch2b"
name: "bn4d_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4d_branch2b"
top: "res4d_branch2b"
name: "scale4d_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4d_branch2b"
top: "res4d_branch2b"
name: "res4d_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res4d_branch2b"
top: "res4d_branch2c"
name: "res4d_branch2c"
type: "Convolution"
convolution_param {
num_output: 1024
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4d_branch2c"
top: "res4d_branch2c"
name: "bn4d_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4d_branch2c"
top: "res4d_branch2c"
name: "scale4d_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4c"
bottom: "res4d_branch2c"
top: "res4d"
name: "res4d"
type: "Eltwise"
}
layer {
bottom: "res4d"
top: "res4d"
name: "res4d_relu"
type: "ReLU"
}
layer {
bottom: "res4d"
top: "res4e_branch2a"
name: "res4e_branch2a"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4e_branch2a"
top: "res4e_branch2a"
name: "bn4e_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4e_branch2a"
top: "res4e_branch2a"
name: "scale4e_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4e_branch2a"
top: "res4e_branch2a"
name: "res4e_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res4e_branch2a"
top: "res4e_branch2b"
name: "res4e_branch2b"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res4e_branch2b"
top: "res4e_branch2b"
name: "bn4e_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4e_branch2b"
top: "res4e_branch2b"
name: "scale4e_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4e_branch2b"
top: "res4e_branch2b"
name: "res4e_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res4e_branch2b"
top: "res4e_branch2c"
name: "res4e_branch2c"
type: "Convolution"
convolution_param {
num_output: 1024
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4e_branch2c"
top: "res4e_branch2c"
name: "bn4e_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4e_branch2c"
top: "res4e_branch2c"
name: "scale4e_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4d"
bottom: "res4e_branch2c"
top: "res4e"
name: "res4e"
type: "Eltwise"
}
layer {
bottom: "res4e"
top: "res4e"
name: "res4e_relu"
type: "ReLU"
}
layer {
bottom: "res4e"
top: "res4f_branch2a"
name: "res4f_branch2a"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4f_branch2a"
top: "res4f_branch2a"
name: "bn4f_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4f_branch2a"
top: "res4f_branch2a"
name: "scale4f_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4f_branch2a"
top: "res4f_branch2a"
name: "res4f_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res4f_branch2a"
top: "res4f_branch2b"
name: "res4f_branch2b"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res4f_branch2b"
top: "res4f_branch2b"
name: "bn4f_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4f_branch2b"
top: "res4f_branch2b"
name: "scale4f_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4f_branch2b"
top: "res4f_branch2b"
name: "res4f_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res4f_branch2b"
top: "res4f_branch2c"
name: "res4f_branch2c"
type: "Convolution"
convolution_param {
num_output: 1024
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4f_branch2c"
top: "res4f_branch2c"
name: "bn4f_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4f_branch2c"
top: "res4f_branch2c"
name: "scale4f_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4e"
bottom: "res4f_branch2c"
top: "res4f"
name: "res4f"
type: "Eltwise"
}
layer {
bottom: "res4f"
top: "res4f"
name: "res4f_relu"
type: "ReLU"
}
layer {
bottom: "res4f"
top: "res5a_branch1"
name: "res5a_branch1"
type: "Convolution"
convolution_param {
num_output: 2048
kernel_size: 1
pad: 0
stride: 2
bias_term: false
}
}
layer {
bottom: "res5a_branch1"
top: "res5a_branch1"
name: "bn5a_branch1"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5a_branch1"
top: "res5a_branch1"
name: "scale5a_branch1"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4f"
top: "res5a_branch2a"
name: "res5a_branch2a"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 2
bias_term: false
}
}
layer {
bottom: "res5a_branch2a"
top: "res5a_branch2a"
name: "bn5a_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5a_branch2a"
top: "res5a_branch2a"
name: "scale5a_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5a_branch2a"
top: "res5a_branch2a"
name: "res5a_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res5a_branch2a"
top: "res5a_branch2b"
name: "res5a_branch2b"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res5a_branch2b"
top: "res5a_branch2b"
name: "bn5a_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5a_branch2b"
top: "res5a_branch2b"
name: "scale5a_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5a_branch2b"
top: "res5a_branch2b"
name: "res5a_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res5a_branch2b"
top: "res5a_branch2c"
name: "res5a_branch2c"
type: "Convolution"
convolution_param {
num_output: 2048
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res5a_branch2c"
top: "res5a_branch2c"
name: "bn5a_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5a_branch2c"
top: "res5a_branch2c"
name: "scale5a_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5a_branch1"
bottom: "res5a_branch2c"
top: "res5a"
name: "res5a"
type: "Eltwise"
}
layer {
bottom: "res5a"
top: "res5a"
name: "res5a_relu"
type: "ReLU"
}
layer {
bottom: "res5a"
top: "res5b_branch2a"
name: "res5b_branch2a"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res5b_branch2a"
top: "res5b_branch2a"
name: "bn5b_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5b_branch2a"
top: "res5b_branch2a"
name: "scale5b_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5b_branch2a"
top: "res5b_branch2a"
name: "res5b_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res5b_branch2a"
top: "res5b_branch2b"
name: "res5b_branch2b"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res5b_branch2b"
top: "res5b_branch2b"
name: "bn5b_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5b_branch2b"
top: "res5b_branch2b"
name: "scale5b_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5b_branch2b"
top: "res5b_branch2b"
name: "res5b_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res5b_branch2b"
top: "res5b_branch2c"
name: "res5b_branch2c"
type: "Convolution"
convolution_param {
num_output: 2048
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res5b_branch2c"
top: "res5b_branch2c"
name: "bn5b_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5b_branch2c"
top: "res5b_branch2c"
name: "scale5b_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5a"
bottom: "res5b_branch2c"
top: "res5b"
name: "res5b"
type: "Eltwise"
}
layer {
bottom: "res5b"
top: "res5b"
name: "res5b_relu"
type: "ReLU"
}
layer {
bottom: "res5b"
top: "res5c_branch2a"
name: "res5c_branch2a"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res5c_branch2a"
top: "res5c_branch2a"
name: "bn5c_branch2a"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5c_branch2a"
top: "res5c_branch2a"
name: "scale5c_branch2a"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5c_branch2a"
top: "res5c_branch2a"
name: "res5c_branch2a_relu"
type: "ReLU"
}
layer {
bottom: "res5c_branch2a"
top: "res5c_branch2b"
name: "res5c_branch2b"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res5c_branch2b"
top: "res5c_branch2b"
name: "bn5c_branch2b"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5c_branch2b"
top: "res5c_branch2b"
name: "scale5c_branch2b"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5c_branch2b"
top: "res5c_branch2b"
name: "res5c_branch2b_relu"
type: "ReLU"
}
layer {
bottom: "res5c_branch2b"
top: "res5c_branch2c"
name: "res5c_branch2c"
type: "Convolution"
convolution_param {
num_output: 2048
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res5c_branch2c"
top: "res5c_branch2c"
name: "bn5c_branch2c"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5c_branch2c"
top: "res5c_branch2c"
name: "scale5c_branch2c"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5b"
bottom: "res5c_branch2c"
top: "res5c"
name: "res5c"
type: "Eltwise"
}
layer {
bottom: "res5c"
top: "res5c"
name: "res5c_relu"
type: "ReLU"
}
layer {
bottom: "res5c"
top: "pool5"
name: "pool5"
type: "Pooling"
pooling_param {
kernel_size: 7
stride: 1
pool: AVE
}
}
layer {
name: "pred_attribute"
type: "InnerProductWithWeights"
bottom: "pool5"
top: "pred_attribute"
top: "fc_weights"
param {
lr_mult: 0
}
param {
lr_mult: 0
}
inner_product_param {
num_output: 6
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
bottom: "data"
top: "conv1@t"
name: "conv1@t"
type: "Convolution"
convolution_param {
num_output: 64
kernel_size: 7
pad: 3
stride: 2
}
}
layer {
bottom: "conv1@t"
top: "conv1@t"
name: "bn_conv1@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "conv1@t"
top: "conv1@t"
name: "scale_conv1@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "conv1@t"
top: "conv1@t"
name: "conv1_relu@t"
type: "ReLU"
}
layer {
bottom: "conv1@t"
top: "pool1@t"
name: "pool1@t"
type: "Pooling"
pooling_param {
kernel_size: 3
stride: 2
pool: MAX
}
}
layer {
bottom: "pool1@t"
top: "res2a_branch1@t"
name: "res2a_branch1@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res2a_branch1@t"
top: "res2a_branch1@t"
name: "bn2a_branch1@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2a_branch1@t"
top: "res2a_branch1@t"
name: "scale2a_branch1@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "pool1@t"
top: "res2a_branch2a@t"
name: "res2a_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 64
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res2a_branch2a@t"
top: "res2a_branch2a@t"
name: "bn2a_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2a_branch2a@t"
top: "res2a_branch2a@t"
name: "scale2a_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2a_branch2a@t"
top: "res2a_branch2a@t"
name: "res2a_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res2a_branch2a@t"
top: "res2a_branch2b@t"
name: "res2a_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 64
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res2a_branch2b@t"
top: "res2a_branch2b@t"
name: "bn2a_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2a_branch2b@t"
top: "res2a_branch2b@t"
name: "scale2a_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2a_branch2b@t"
top: "res2a_branch2b@t"
name: "res2a_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res2a_branch2b@t"
top: "res2a_branch2c@t"
name: "res2a_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res2a_branch2c@t"
top: "res2a_branch2c@t"
name: "bn2a_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2a_branch2c@t"
top: "res2a_branch2c@t"
name: "scale2a_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2a_branch1@t"
bottom: "res2a_branch2c@t"
top: "res2a@t"
name: "res2a@t"
type: "Eltwise"
}
layer {
bottom: "res2a@t"
top: "res2a@t"
name: "res2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res2a@t"
top: "res2b_branch2a@t"
name: "res2b_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 64
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res2b_branch2a@t"
top: "res2b_branch2a@t"
name: "bn2b_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2b_branch2a@t"
top: "res2b_branch2a@t"
name: "scale2b_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2b_branch2a@t"
top: "res2b_branch2a@t"
name: "res2b_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res2b_branch2a@t"
top: "res2b_branch2b@t"
name: "res2b_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 64
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res2b_branch2b@t"
top: "res2b_branch2b@t"
name: "bn2b_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2b_branch2b@t"
top: "res2b_branch2b@t"
name: "scale2b_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2b_branch2b@t"
top: "res2b_branch2b@t"
name: "res2b_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res2b_branch2b@t"
top: "res2b_branch2c@t"
name: "res2b_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res2b_branch2c@t"
top: "res2b_branch2c@t"
name: "bn2b_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2b_branch2c@t"
top: "res2b_branch2c@t"
name: "scale2b_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2a@t"
bottom: "res2b_branch2c@t"
top: "res2b@t"
name: "res2b@t"
type: "Eltwise"
}
layer {
bottom: "res2b@t"
top: "res2b@t"
name: "res2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res2b@t"
top: "res2c_branch2a@t"
name: "res2c_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 64
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res2c_branch2a@t"
top: "res2c_branch2a@t"
name: "bn2c_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2c_branch2a@t"
top: "res2c_branch2a@t"
name: "scale2c_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2c_branch2a@t"
top: "res2c_branch2a@t"
name: "res2c_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res2c_branch2a@t"
top: "res2c_branch2b@t"
name: "res2c_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 64
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res2c_branch2b@t"
top: "res2c_branch2b@t"
name: "bn2c_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2c_branch2b@t"
top: "res2c_branch2b@t"
name: "scale2c_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2c_branch2b@t"
top: "res2c_branch2b@t"
name: "res2c_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res2c_branch2b@t"
top: "res2c_branch2c@t"
name: "res2c_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res2c_branch2c@t"
top: "res2c_branch2c@t"
name: "bn2c_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res2c_branch2c@t"
top: "res2c_branch2c@t"
name: "scale2c_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2b@t"
bottom: "res2c_branch2c@t"
top: "res2c@t"
name: "res2c@t"
type: "Eltwise"
}
layer {
bottom: "res2c@t"
top: "res2c@t"
name: "res2c_relu@t"
type: "ReLU"
}
layer {
bottom: "res2c@t"
top: "res3a_branch1@t"
name: "res3a_branch1@t"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 2
bias_term: false
}
}
layer {
bottom: "res3a_branch1@t"
top: "res3a_branch1@t"
name: "bn3a_branch1@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3a_branch1@t"
top: "res3a_branch1@t"
name: "scale3a_branch1@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res2c@t"
top: "res3a_branch2a@t"
name: "res3a_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 1
pad: 0
stride: 2
bias_term: false
}
}
layer {
bottom: "res3a_branch2a@t"
top: "res3a_branch2a@t"
name: "bn3a_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3a_branch2a@t"
top: "res3a_branch2a@t"
name: "scale3a_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3a_branch2a@t"
top: "res3a_branch2a@t"
name: "res3a_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res3a_branch2a@t"
top: "res3a_branch2b@t"
name: "res3a_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res3a_branch2b@t"
top: "res3a_branch2b@t"
name: "bn3a_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3a_branch2b@t"
top: "res3a_branch2b@t"
name: "scale3a_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3a_branch2b@t"
top: "res3a_branch2b@t"
name: "res3a_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res3a_branch2b@t"
top: "res3a_branch2c@t"
name: "res3a_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res3a_branch2c@t"
top: "res3a_branch2c@t"
name: "bn3a_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3a_branch2c@t"
top: "res3a_branch2c@t"
name: "scale3a_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3a_branch1@t"
bottom: "res3a_branch2c@t"
top: "res3a@t"
name: "res3a@t"
type: "Eltwise"
}
layer {
bottom: "res3a@t"
top: "res3a@t"
name: "res3a_relu@t"
type: "ReLU"
}
layer {
bottom: "res3a@t"
top: "res3b_branch2a@t"
name: "res3b_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res3b_branch2a@t"
top: "res3b_branch2a@t"
name: "bn3b_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3b_branch2a@t"
top: "res3b_branch2a@t"
name: "scale3b_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3b_branch2a@t"
top: "res3b_branch2a@t"
name: "res3b_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res3b_branch2a@t"
top: "res3b_branch2b@t"
name: "res3b_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res3b_branch2b@t"
top: "res3b_branch2b@t"
name: "bn3b_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3b_branch2b@t"
top: "res3b_branch2b@t"
name: "scale3b_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3b_branch2b@t"
top: "res3b_branch2b@t"
name: "res3b_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res3b_branch2b@t"
top: "res3b_branch2c@t"
name: "res3b_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res3b_branch2c@t"
top: "res3b_branch2c@t"
name: "bn3b_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3b_branch2c@t"
top: "res3b_branch2c@t"
name: "scale3b_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3a@t"
bottom: "res3b_branch2c@t"
top: "res3b@t"
name: "res3b@t"
type: "Eltwise"
}
layer {
bottom: "res3b@t"
top: "res3b@t"
name: "res3b_relu@t"
type: "ReLU"
}
layer {
bottom: "res3b@t"
top: "res3c_branch2a@t"
name: "res3c_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res3c_branch2a@t"
top: "res3c_branch2a@t"
name: "bn3c_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3c_branch2a@t"
top: "res3c_branch2a@t"
name: "scale3c_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3c_branch2a@t"
top: "res3c_branch2a@t"
name: "res3c_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res3c_branch2a@t"
top: "res3c_branch2b@t"
name: "res3c_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res3c_branch2b@t"
top: "res3c_branch2b@t"
name: "bn3c_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3c_branch2b@t"
top: "res3c_branch2b@t"
name: "scale3c_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3c_branch2b@t"
top: "res3c_branch2b@t"
name: "res3c_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res3c_branch2b@t"
top: "res3c_branch2c@t"
name: "res3c_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res3c_branch2c@t"
top: "res3c_branch2c@t"
name: "bn3c_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3c_branch2c@t"
top: "res3c_branch2c@t"
name: "scale3c_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3b@t"
bottom: "res3c_branch2c@t"
top: "res3c@t"
name: "res3c@t"
type: "Eltwise"
}
layer {
bottom: "res3c@t"
top: "res3c@t"
name: "res3c_relu@t"
type: "ReLU"
}
layer {
bottom: "res3c@t"
top: "res3d_branch2a@t"
name: "res3d_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res3d_branch2a@t"
top: "res3d_branch2a@t"
name: "bn3d_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3d_branch2a@t"
top: "res3d_branch2a@t"
name: "scale3d_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3d_branch2a@t"
top: "res3d_branch2a@t"
name: "res3d_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res3d_branch2a@t"
top: "res3d_branch2b@t"
name: "res3d_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res3d_branch2b@t"
top: "res3d_branch2b@t"
name: "bn3d_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3d_branch2b@t"
top: "res3d_branch2b@t"
name: "scale3d_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3d_branch2b@t"
top: "res3d_branch2b@t"
name: "res3d_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res3d_branch2b@t"
top: "res3d_branch2c@t"
name: "res3d_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res3d_branch2c@t"
top: "res3d_branch2c@t"
name: "bn3d_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res3d_branch2c@t"
top: "res3d_branch2c@t"
name: "scale3d_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3c@t"
bottom: "res3d_branch2c@t"
top: "res3d@t"
name: "res3d@t"
type: "Eltwise"
}
layer {
bottom: "res3d@t"
top: "res3d@t"
name: "res3d_relu@t"
type: "ReLU"
}
layer {
bottom: "res3d@t"
top: "res4a_branch1@t"
name: "res4a_branch1@t"
type: "Convolution"
convolution_param {
num_output: 1024
kernel_size: 1
pad: 0
stride: 2
bias_term: false
}
}
layer {
bottom: "res4a_branch1@t"
top: "res4a_branch1@t"
name: "bn4a_branch1@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4a_branch1@t"
top: "res4a_branch1@t"
name: "scale4a_branch1@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res3d@t"
top: "res4a_branch2a@t"
name: "res4a_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 2
bias_term: false
}
}
layer {
bottom: "res4a_branch2a@t"
top: "res4a_branch2a@t"
name: "bn4a_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4a_branch2a@t"
top: "res4a_branch2a@t"
name: "scale4a_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4a_branch2a@t"
top: "res4a_branch2a@t"
name: "res4a_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res4a_branch2a@t"
top: "res4a_branch2b@t"
name: "res4a_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res4a_branch2b@t"
top: "res4a_branch2b@t"
name: "bn4a_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4a_branch2b@t"
top: "res4a_branch2b@t"
name: "scale4a_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4a_branch2b@t"
top: "res4a_branch2b@t"
name: "res4a_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res4a_branch2b@t"
top: "res4a_branch2c@t"
name: "res4a_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 1024
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4a_branch2c@t"
top: "res4a_branch2c@t"
name: "bn4a_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4a_branch2c@t"
top: "res4a_branch2c@t"
name: "scale4a_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4a_branch1@t"
bottom: "res4a_branch2c@t"
top: "res4a@t"
name: "res4a@t"
type: "Eltwise"
}
layer {
bottom: "res4a@t"
top: "res4a@t"
name: "res4a_relu@t"
type: "ReLU"
}
layer {
bottom: "res4a@t"
top: "res4b_branch2a@t"
name: "res4b_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4b_branch2a@t"
top: "res4b_branch2a@t"
name: "bn4b_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4b_branch2a@t"
top: "res4b_branch2a@t"
name: "scale4b_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4b_branch2a@t"
top: "res4b_branch2a@t"
name: "res4b_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res4b_branch2a@t"
top: "res4b_branch2b@t"
name: "res4b_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res4b_branch2b@t"
top: "res4b_branch2b@t"
name: "bn4b_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4b_branch2b@t"
top: "res4b_branch2b@t"
name: "scale4b_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4b_branch2b@t"
top: "res4b_branch2b@t"
name: "res4b_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res4b_branch2b@t"
top: "res4b_branch2c@t"
name: "res4b_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 1024
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4b_branch2c@t"
top: "res4b_branch2c@t"
name: "bn4b_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4b_branch2c@t"
top: "res4b_branch2c@t"
name: "scale4b_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4a@t"
bottom: "res4b_branch2c@t"
top: "res4b@t"
name: "res4b@t"
type: "Eltwise"
}
layer {
bottom: "res4b@t"
top: "res4b@t"
name: "res4b_relu@t"
type: "ReLU"
}
layer {
bottom: "res4b@t"
top: "res4c_branch2a@t"
name: "res4c_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4c_branch2a@t"
top: "res4c_branch2a@t"
name: "bn4c_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4c_branch2a@t"
top: "res4c_branch2a@t"
name: "scale4c_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4c_branch2a@t"
top: "res4c_branch2a@t"
name: "res4c_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res4c_branch2a@t"
top: "res4c_branch2b@t"
name: "res4c_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res4c_branch2b@t"
top: "res4c_branch2b@t"
name: "bn4c_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4c_branch2b@t"
top: "res4c_branch2b@t"
name: "scale4c_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4c_branch2b@t"
top: "res4c_branch2b@t"
name: "res4c_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res4c_branch2b@t"
top: "res4c_branch2c@t"
name: "res4c_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 1024
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4c_branch2c@t"
top: "res4c_branch2c@t"
name: "bn4c_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4c_branch2c@t"
top: "res4c_branch2c@t"
name: "scale4c_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4b@t"
bottom: "res4c_branch2c@t"
top: "res4c@t"
name: "res4c@t"
type: "Eltwise"
}
layer {
bottom: "res4c@t"
top: "res4c@t"
name: "res4c_relu@t"
type: "ReLU"
}
layer {
bottom: "res4c@t"
top: "res4d_branch2a@t"
name: "res4d_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4d_branch2a@t"
top: "res4d_branch2a@t"
name: "bn4d_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4d_branch2a@t"
top: "res4d_branch2a@t"
name: "scale4d_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4d_branch2a@t"
top: "res4d_branch2a@t"
name: "res4d_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res4d_branch2a@t"
top: "res4d_branch2b@t"
name: "res4d_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res4d_branch2b@t"
top: "res4d_branch2b@t"
name: "bn4d_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4d_branch2b@t"
top: "res4d_branch2b@t"
name: "scale4d_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4d_branch2b@t"
top: "res4d_branch2b@t"
name: "res4d_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res4d_branch2b@t"
top: "res4d_branch2c@t"
name: "res4d_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 1024
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4d_branch2c@t"
top: "res4d_branch2c@t"
name: "bn4d_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4d_branch2c@t"
top: "res4d_branch2c@t"
name: "scale4d_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4c@t"
bottom: "res4d_branch2c@t"
top: "res4d@t"
name: "res4d@t"
type: "Eltwise"
}
layer {
bottom: "res4d@t"
top: "res4d@t"
name: "res4d_relu@t"
type: "ReLU"
}
layer {
bottom: "res4d@t"
top: "res4e_branch2a@t"
name: "res4e_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4e_branch2a@t"
top: "res4e_branch2a@t"
name: "bn4e_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4e_branch2a@t"
top: "res4e_branch2a@t"
name: "scale4e_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4e_branch2a@t"
top: "res4e_branch2a@t"
name: "res4e_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res4e_branch2a@t"
top: "res4e_branch2b@t"
name: "res4e_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res4e_branch2b@t"
top: "res4e_branch2b@t"
name: "bn4e_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4e_branch2b@t"
top: "res4e_branch2b@t"
name: "scale4e_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4e_branch2b@t"
top: "res4e_branch2b@t"
name: "res4e_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res4e_branch2b@t"
top: "res4e_branch2c@t"
name: "res4e_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 1024
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4e_branch2c@t"
top: "res4e_branch2c@t"
name: "bn4e_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4e_branch2c@t"
top: "res4e_branch2c@t"
name: "scale4e_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4d@t"
bottom: "res4e_branch2c@t"
top: "res4e@t"
name: "res4e@t"
type: "Eltwise"
}
layer {
bottom: "res4e@t"
top: "res4e@t"
name: "res4e_relu@t"
type: "ReLU"
}
layer {
bottom: "res4e@t"
top: "res4f_branch2a@t"
name: "res4f_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4f_branch2a@t"
top: "res4f_branch2a@t"
name: "bn4f_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4f_branch2a@t"
top: "res4f_branch2a@t"
name: "scale4f_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4f_branch2a@t"
top: "res4f_branch2a@t"
name: "res4f_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res4f_branch2a@t"
top: "res4f_branch2b@t"
name: "res4f_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 256
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res4f_branch2b@t"
top: "res4f_branch2b@t"
name: "bn4f_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4f_branch2b@t"
top: "res4f_branch2b@t"
name: "scale4f_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4f_branch2b@t"
top: "res4f_branch2b@t"
name: "res4f_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res4f_branch2b@t"
top: "res4f_branch2c@t"
name: "res4f_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 1024
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res4f_branch2c@t"
top: "res4f_branch2c@t"
name: "bn4f_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res4f_branch2c@t"
top: "res4f_branch2c@t"
name: "scale4f_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4e@t"
bottom: "res4f_branch2c@t"
top: "res4f@t"
name: "res4f@t"
type: "Eltwise"
}
layer {
bottom: "res4f@t"
top: "res4f@t"
name: "res4f_relu@t"
type: "ReLU"
}
layer {
bottom: "res4f@t"
top: "res5a_branch1@t"
name: "res5a_branch1@t"
type: "Convolution"
convolution_param {
num_output: 2048
kernel_size: 1
pad: 0
stride: 2
bias_term: false
}
}
layer {
bottom: "res5a_branch1@t"
top: "res5a_branch1@t"
name: "bn5a_branch1@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5a_branch1@t"
top: "res5a_branch1@t"
name: "scale5a_branch1@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res4f@t"
top: "res5a_branch2a@t"
name: "res5a_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 2
bias_term: false
}
}
layer {
bottom: "res5a_branch2a@t"
top: "res5a_branch2a@t"
name: "bn5a_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5a_branch2a@t"
top: "res5a_branch2a@t"
name: "scale5a_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5a_branch2a@t"
top: "res5a_branch2a@t"
name: "res5a_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res5a_branch2a@t"
top: "res5a_branch2b@t"
name: "res5a_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res5a_branch2b@t"
top: "res5a_branch2b@t"
name: "bn5a_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5a_branch2b@t"
top: "res5a_branch2b@t"
name: "scale5a_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5a_branch2b@t"
top: "res5a_branch2b@t"
name: "res5a_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res5a_branch2b@t"
top: "res5a_branch2c@t"
name: "res5a_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 2048
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res5a_branch2c@t"
top: "res5a_branch2c@t"
name: "bn5a_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5a_branch2c@t"
top: "res5a_branch2c@t"
name: "scale5a_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5a_branch1@t"
bottom: "res5a_branch2c@t"
top: "res5a@t"
name: "res5a@t"
type: "Eltwise"
}
layer {
bottom: "res5a@t"
top: "res5a@t"
name: "res5a_relu@t"
type: "ReLU"
}
layer {
bottom: "res5a@t"
top: "res5b_branch2a@t"
name: "res5b_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res5b_branch2a@t"
top: "res5b_branch2a@t"
name: "bn5b_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5b_branch2a@t"
top: "res5b_branch2a@t"
name: "scale5b_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5b_branch2a@t"
top: "res5b_branch2a@t"
name: "res5b_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res5b_branch2a@t"
top: "res5b_branch2b@t"
name: "res5b_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res5b_branch2b@t"
top: "res5b_branch2b@t"
name: "bn5b_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5b_branch2b@t"
top: "res5b_branch2b@t"
name: "scale5b_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5b_branch2b@t"
top: "res5b_branch2b@t"
name: "res5b_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res5b_branch2b@t"
top: "res5b_branch2c@t"
name: "res5b_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 2048
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res5b_branch2c@t"
top: "res5b_branch2c@t"
name: "bn5b_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5b_branch2c@t"
top: "res5b_branch2c@t"
name: "scale5b_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5a@t"
bottom: "res5b_branch2c@t"
top: "res5b@t"
name: "res5b@t"
type: "Eltwise"
}
layer {
bottom: "res5b@t"
top: "res5b@t"
name: "res5b_relu@t"
type: "ReLU"
}
layer {
bottom: "res5b@t"
top: "res5c_branch2a@t"
name: "res5c_branch2a@t"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res5c_branch2a@t"
top: "res5c_branch2a@t"
name: "bn5c_branch2a@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5c_branch2a@t"
top: "res5c_branch2a@t"
name: "scale5c_branch2a@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5c_branch2a@t"
top: "res5c_branch2a@t"
name: "res5c_branch2a_relu@t"
type: "ReLU"
}
layer {
bottom: "res5c_branch2a@t"
top: "res5c_branch2b@t"
name: "res5c_branch2b@t"
type: "Convolution"
convolution_param {
num_output: 512
kernel_size: 3
pad: 1
stride: 1
bias_term: false
}
}
layer {
bottom: "res5c_branch2b@t"
top: "res5c_branch2b@t"
name: "bn5c_branch2b@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5c_branch2b@t"
top: "res5c_branch2b@t"
name: "scale5c_branch2b@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5c_branch2b@t"
top: "res5c_branch2b@t"
name: "res5c_branch2b_relu@t"
type: "ReLU"
}
layer {
bottom: "res5c_branch2b@t"
top: "res5c_branch2c@t"
name: "res5c_branch2c@t"
type: "Convolution"
convolution_param {
num_output: 2048
kernel_size: 1
pad: 0
stride: 1
bias_term: false
}
}
layer {
bottom: "res5c_branch2c@t"
top: "res5c_branch2c@t"
name: "bn5c_branch2c@t"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
}
layer {
bottom: "res5c_branch2c@t"
top: "res5c_branch2c@t"
name: "scale5c_branch2c@t"
type: "Scale"
scale_param {
bias_term: true
}
}
layer {
bottom: "res5b@t"
bottom: "res5c_branch2c@t"
top: "res5c@t"
name: "res5c@t"
type: "Eltwise"
}
layer {
bottom: "res5c@t"
top: "res5c@t"
name: "res5c_relu@t"
type: "ReLU"
}
layer {
bottom: "res5c@t"
top: "pool5@t"
name: "pool5@t"
type: "Pooling"
pooling_param {
kernel_size: 7
stride: 1
pool: AVE
}
}
layer {
name: "pred_attribute@t"
type: "InnerProductWithWeights"
bottom: "pool5@t"
top: "pred_attribute@t"
top: "fc_weights@t"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 1
decay_mult: 0
}
inner_product_param {
num_output: 6
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
type: "Python"
name: "res_loss"
top: "res_loss"
bottom: "pred_attribute@t"
bottom: "pred_attribute"
bottom: "fc_weights@t"
bottom: "fc_weights"
propagate_down: 1
propagate_down: 0
propagate_down: 0
propagate_down: 0
python_param {
# the module name -- usually the filename -- that needs to be in $PYTHONPATH
module: 'python_loss_layer'
# the layer name -- the class name in the module
layer: 'UnsupervisedResdualCrossEntroyLossLayer'
}
# set loss weight so Caffe knows this is a loss layer.
# since PythonLayer inherits directly from Layer, this isn't automatically
# known to Caffe
loss_weight: 1
#loss_param {
# ignore_label: -1
#}
include {
phase: TRAIN
}
}
layer {
type: "Python"
name: "res_loss"
top: "res_loss"
bottom: "pred_attribute@t"
bottom: "pred_attribute"
bottom: "fc_weights@t"
bottom: "fc_weights"
propagate_down: 1
propagate_down: 0
propagate_down: 0
propagate_down: 0
python_param {
# the module name -- usually the filename -- that needs to be in $PYTHONPATH
module: 'python_loss_layer'
# the layer name -- the class name in the module
layer: 'UnsupervisedResdualCrossEntroyLossLayer'
}
# set loss weight so Caffe knows this is a loss layer.
# since PythonLayer inherits directly from Layer, this isn't automatically
# known to Caffe
loss_weight: 1
#loss_param {
# ignore_label: -1
#}
include {
phase: TEST
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment