name: "iTracker_test"
input: "image_left"
input_dim: 256
input_dim: 3
input_dim: 224
input_dim: 224
input: "image_right"
input_dim: 256
input_dim: 3
input_dim: 224
input_dim: 224
input: "image_face"
input_dim: 256
input_dim: 3
input_dim: 224
input_dim: 224
input: "facegrid"
input_dim: 256
input_dim: 625
input_dim: 1
input_dim: 1
layer {
  name: "conv1"
  type: "Convolution"
  bottom: "image_left"
  top: "conv1"
  param {
    name: "conv1_w"
    lr_mult: 1
    decay_mult: 1
  }
  param {
    name: "conv1_b"
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 96
    kernel_size: 11
    stride: 4
  }
}
layer {
  name: "relu1"
  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: "norm1"
  type: "LRN"
  bottom: "pool1"
  top: "norm1"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "conv2"
  type: "Convolution"
  bottom: "norm1"
  top: "conv2"
  param {
    name: "conv2_w"
    lr_mult: 1
    decay_mult: 1
  }
  param {
    name: "conv2_b"
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 256
    pad: 2
    kernel_size: 5
    group: 2
  }
}
layer {
  name: "relu2"
  type: "ReLU"
  bottom: "conv2"
  top: "conv2"
}
layer {
  name: "pool2"
  type: "Pooling"
  bottom: "conv2"
  top: "pool2"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "norm2"
  type: "LRN"
  bottom: "pool2"
  top: "norm2"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "conv3"
  type: "Convolution"
  bottom: "norm2"
  top: "conv3"
  param {
    name: "conv3_w"
    lr_mult: 1
    decay_mult: 1
  }
  param {
    name: "conv3_b"
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 384
    pad: 1
    kernel_size: 3
  }
}
layer {
  name: "relu3"
  type: "ReLU"
  bottom: "conv3"
  top: "conv3"
}
layer {
  name: "conv4_l"
  type: "Convolution"
  bottom: "conv3"
  top: "conv4_l"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 64
    pad: 0
    kernel_size: 1
  }
}
layer {
  name: "relu4_l"
  type: "ReLU"
  bottom: "conv4_l"
  top: "conv4_l"
}










layer {
  name: "conv1_r"
  type: "Convolution"
  bottom: "image_right"
  top: "conv1_r"
  param {
    name: "conv1_w"
    lr_mult: 1
    decay_mult: 1
  }
  param {
    name: "conv1_b"
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 96
    kernel_size: 11
    stride: 4
  }
}
layer {
  name: "relu1_r"
  type: "ReLU"
  bottom: "conv1_r"
  top: "conv1_r"
}
layer {
  name: "pool1_r"
  type: "Pooling"
  bottom: "conv1_r"
  top: "pool1_r"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "norm1_r"
  type: "LRN"
  bottom: "pool1_r"
  top: "norm1_r"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "conv2_r"
  type: "Convolution"
  bottom: "norm1_r"
  top: "conv2_r"
  param {
    name: "conv2_w"
    lr_mult: 1
    decay_mult: 1
  }
  param {
    name: "conv2_b"
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 256
    pad: 2
    kernel_size: 5
    group: 2
  }
}
layer {
  name: "relu2_r"
  type: "ReLU"
  bottom: "conv2_r"
  top: "conv2_r"
}
layer {
  name: "pool2_r"
  type: "Pooling"
  bottom: "conv2_r"
  top: "pool2_r"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "norm2_r"
  type: "LRN"
  bottom: "pool2_r"
  top: "norm2_r"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "conv3_r"
  type: "Convolution"
  bottom: "norm2_r"
  top: "conv3_r"
  param {
    name: "conv3_w"
    lr_mult: 1
    decay_mult: 1
  }
  param {
    name: "conv3_b"
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 384
    pad: 1
    kernel_size: 3
  }
}
layer {
  name: "relu3_r"
  type: "ReLU"
  bottom: "conv3_r"
  top: "conv3_r"
}
layer {
  name: "conv4_r"
  type: "Convolution"
  bottom: "conv3_r"
  top: "conv4_r"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 64
    pad: 0
    kernel_size: 1
  }
}
layer {
  name: "relu4_r"
  type: "ReLU"
  bottom: "conv4_r"
  top: "conv4_r"
}










layer {
  name: "conv1_f"
  type: "Convolution"
  bottom: "image_face"
  top: "conv1_f"
  param {
    name: "conv1_f_w"
    lr_mult: 1
    decay_mult: 1
  }
  param {
    name: "conv1_f_b"
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 96
    kernel_size: 11
    stride: 4
  }
}
layer {
  name: "relu1_f"
  type: "ReLU"
  bottom: "conv1_f"
  top: "conv1_f"
}
layer {
  name: "pool1_f"
  type: "Pooling"
  bottom: "conv1_f"
  top: "pool1_f"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "norm1_f"
  type: "LRN"
  bottom: "pool1_f"
  top: "norm1_f"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "conv2_f"
  type: "Convolution"
  bottom: "norm1_f"
  top: "conv2_f"
  param {
    name: "conv2_f_w"
    lr_mult: 1
    decay_mult: 1
  }
  param {
    name: "conv2_f_b"
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 256
    pad: 2
    kernel_size: 5
    group: 2
  }
}
layer {
  name: "relu2_f"
  type: "ReLU"
  bottom: "conv2_f"
  top: "conv2_f"
}
layer {
  name: "pool2_f"
  type: "Pooling"
  bottom: "conv2_f"
  top: "pool2_f"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "norm2_f"
  type: "LRN"
  bottom: "pool2_f"
  top: "norm2_f"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "conv3_f"
  type: "Convolution"
  bottom: "norm2_f"
  top: "conv3_f"
  param {
    name: "conv3_f_w"
    lr_mult: 1
    decay_mult: 1
  }
  param {
    name: "conv3_f_b"
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 384
    pad: 1
    kernel_size: 3
  }
}
layer {
  name: "relu3_f"
  type: "ReLU"
  bottom: "conv3_f"
  top: "conv3_f"
}
layer {
  name: "conv4_f"
  type: "Convolution"
  bottom: "conv3_f"
  top: "conv4_f"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 64
    pad: 0
    kernel_size: 1
  }
}
layer {
  name: "relu4_f"
  type: "ReLU"
  bottom: "conv4_f"
  top: "conv4_f"
}
layer {
  name: "fc1_f"
  type: "InnerProduct"
  bottom: "conv4_f"
  top: "fc1_f"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 128
  }
}
layer {
  name: "relufc1_f"
  type: "ReLU"
  bottom: "fc1_f"
  top: "fc1_f"
}
layer {
  name: "fc2_f"
  type: "InnerProduct"
  bottom: "fc1_f"
  top: "fc2_f"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 64
  }
}
layer {
  name: "relufc2_f"
  type: "ReLU"
  bottom: "fc2_f"
  top: "fc2_f"
}










layer {
  name: "concat1"
  bottom: "conv4_l"
  bottom: "conv4_r"
  top: "concat1"
  type: "Concat"
  concat_param {
    axis: 1
  }
}
layer {
  name: "fc1"
  type: "InnerProduct"
  bottom: "concat1"
  top: "fc1"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 128
  }
}
layer {
  name: "relufc1"
  type: "ReLU"
  bottom: "fc1"
  top: "fc1"
}
layer {
  name: "flatten"
  type: "Flatten"
  bottom: "facegrid"
  top: "flatten"
}
layer {
  name: "fg_fc1"
  type: "InnerProduct"
  bottom: "flatten"
  top: "fg_fc1"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 256
    weight_filler {
      type: "gaussian"
      std: 0.005
    }
    bias_filler {
      type: "constant"
      value: 1
    }
  }
}
layer {
  name: "relufgfc1"
  type: "ReLU"
  bottom: "fg_fc1"
  top: "fg_fc1"
}
layer {
  name: "fg_fc2"
  type: "InnerProduct"
  bottom: "fg_fc1"
  top: "fg_fc2"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 128
  }
}
layer {
  name: "relufgfc2"
  type: "ReLU"
  bottom: "fg_fc2"
  top: "fg_fc2"
}
layer {
  name: "concat2"
  bottom: "fc1"
  bottom: "fg_fc2"
  bottom: "fc2_f"
  top: "concat2"
  type: "Concat"
  concat_param {
    axis: 1
  }
}
layer {
  name: "fc2"
  type: "InnerProduct"
  bottom: "concat2"
  top: "fc2"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 128
  }
}
layer {
  name: "relufc2"
  type: "ReLU"
  bottom: "fc2"
  top: "fc2"
}
layer {
  name: "fc3"
  type: "InnerProduct"
  bottom: "fc2"
  top: "fc3"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 2
  }
}