Train 网络
name: "Face_Track"
layer {
name: "data_face"
type: "Data"
top: "data_face"
include {
phase: TRAIN
}
transform_param {
mean_value: 104
mean_value: 117
mean_value: 124
scale: 0.0078125
}
data_param {
source: "lmdb_face/train_data_npd"
batch_size: 64
backend: LMDB
}
}
layer {
name: "data_face"
type: "Data"
top: "data_face"
include {
phase: TEST
}
transform_param {
mean_value: 104
mean_value: 117
mean_value: 124
scale: 0.0078125
}
data_param {
source: "lmdb_face/test_data_npd"
batch_size: 64
backend: LMDB
}
}
layer {
name: "data_face_around"
type: "Data"
top: "data_face_around"
include {
phase: TRAIN
}
transform_param {
mean_value: 104
mean_value: 117
mean_value: 124
scale: 0.0078125
}
data_param {
source: "lmdb_face_around/train_data_npd"
batch_size: 64
backend: LMDB
}
}
layer {
name: "data_around_label"
type: "Data"
top: "data_around_label"
include {
phase: TRAIN
}
data_param {
source: "lmdb_face_around/train_label_npd"
batch_size: 64
backend: LMDB
}
}
layer {
name: "data_face_around"
type: "Data"
top: "data_face_around"
include {
phase: TEST
}
transform_param {
mean_value: 104
mean_value: 117
mean_value: 124
scale: 0.0078125
}
data_param {
source: "lmdb_face_around/test_data_npd"
batch_size: 64
backend: LMDB
}
}
layer {
name: "data_around_label"
type: "Data"
top: "data_around_label"
include {
phase: TEST
}
data_param {
source: "lmdb_face_around/test_label_npd"
batch_size: 64
backend: LMDB
}
}
layer {
name: "conv1"
type: "Convolution"
bottom: "data_face"
top: "conv1"
param {
name: "conv1_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv1_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 16
kernel_size: 3
stride: 2
pad: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu1"
type: "PReLU"
bottom: "conv1"
top: "conv1"
param {
name: "prelu1_p"
}
}
layer {
name: "conv2"
type: "Convolution"
bottom: "conv1"
top: "conv2"
param {
name: "conv2_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv2_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 32
kernel_size: 3
stride: 2
pad:1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu2"
type: "PReLU"
bottom: "conv2"
top: "conv2"
param {
name: "prelu2_p"
}
}
layer {
name: "conv3"
type: "Convolution"
bottom: "conv2"
top: "conv3"
param {
name: "conv3_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv3_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 32
kernel_size: 3
stride: 2
pad:1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu3"
type: "PReLU"
bottom: "conv3"
top: "conv3"
param {
name: "prelu3_p"
}
}
layer {
name: "conv4"
type: "Convolution"
bottom: "conv3"
top: "conv4"
param {
name: "conv4_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv4_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 64
kernel_size: 3
stride: 2
pad:1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu4"
type: "PReLU"
bottom: "conv4"
top: "conv4"
param {
name: "prelu4_p"
}
}
layer {
name: "con5"
type: "Convolution"
bottom: "conv4"
top: "conv5"
param {
name: "conv5_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv5_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 128
kernel_size: 3
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv1_P"
type: "Convolution"
bottom: "data_face_around"
top: "conv1_P"
param {
name: "conv1_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv1_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 16
kernel_size: 3
stride: 2
pad: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu1_p"
type: "PReLU"
bottom: "conv1_P"
top: "conv1_P"
param {
name: "prelu1_p"
}
}
layer {
name: "conv2_P"
type: "Convolution"
bottom: "conv1_P"
top: "conv2_P"
param {
name: "conv2_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv2_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 32
kernel_size: 3
stride: 2
pad:1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu2_p"
type: "PReLU"
bottom: "conv2_P"
top: "conv2_P"
param {
name: "prelu2_p"
}
}
layer {
name: "conv3_p"
type: "Convolution"
bottom: "conv2_P"
top: "conv3_p"
param {
name: "conv3_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv3_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 32
kernel_size: 3
stride: 2
pad:1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu3_p"
type: "PReLU"
bottom: "conv3_p"
top: "conv3_p"
param {
name: "prelu3_p"
}
}
layer {
name: "conv4_p"
type: "Convolution"
bottom: "conv3_p"
top: "conv4_p"
param {
name: "conv4_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv4_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 64
kernel_size: 3
stride: 2
pad:1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu4_p"
type: "PReLU"
bottom: "conv4_p"
top: "conv4_p"
param {
name: "prelu4_p"
}
}
layer {
name: "con5_p"
type: "Convolution"
bottom: "conv4_p"
top: "con5_p"
param {
name: "conv5_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv5_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 128
kernel_size: 3
stride: 1
pad:1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "tile_h"
type: "Tile"
bottom: "conv5"
top: "tile_h"
tile_param{
axis :2
tiles :8
}
}
layer {
name: "tile_v"
type: "Tile"
bottom: "tile_h"
top: "tile_v"
tile_param{
axis :3
tiles :8
}
}
layer {
name: "eltwise"
type: "Eltwise"
bottom: "tile_v"
bottom: "con5_p"
top: "eltwise"
eltwise_param{
operation:PROD
}
}
layer {
name: "ip1"
type: "InnerProduct"
bottom: "eltwise"
top: "ip1"
param {
lr_mult: 1
}
param {
lr_mult: 2
}
inner_product_param {
num_output: 64
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layer {
name: "relu_fc1"
type: "PReLU"
bottom: "ip1"
top: "ip1"
}
layer {
name: "ip2"
type: "InnerProduct"
bottom: "ip1"
top: "ip2"
param {
lr_mult: 1
}
param {
lr_mult: 2
}
inner_product_param {
num_output: 4
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layer {
name: "loss"
type: "AbsoluteLoss"
#type:"EuclideanLoss"
bottom: "ip2"
bottom: "data_around_label"
top: "loss"
}
layer {
name: "accuracy"
type: "AbsoluteLoss"
#type:"EuclideanLoss"
bottom: "ip2"
bottom: "data_around_label"
top: "accuracy"
include {
phase: TEST
}
}
Test 网络
name: "Face_Track"
layer
{
name: "data"
type: "MemoryData"
top: "data_face"
top: "label1"
memory_data_param
{
batch_size: 1
channels: 3
height: 48
width: 48
}
transform_param {
mean_value: 104
mean_value: 117
mean_value: 124
scale: 0.0078125
}
}
layer
{
name: "data2"
type: "MemoryData"
top: "data_face_around"
top: "label2"
memory_data_param
{
batch_size: 1
channels: 3
height: 120
width: 120
}
transform_param {
mean_value: 104
mean_value: 117
mean_value: 124
scale: 0.0078125
}
}
layer {
name: "conv1"
type: "Convolution"
bottom: "data_face"
top: "conv1"
param {
name: "conv1_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv1_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 16
kernel_size: 3
stride: 2
pad: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu1"
type: "PReLU"
bottom: "conv1"
top: "conv1"
param {
name: "prelu1_p"
}
}
layer {
name: "conv2"
type: "Convolution"
bottom: "conv1"
top: "conv2"
param {
name: "conv2_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv2_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 32
kernel_size: 3
stride: 2
pad:1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu2"
type: "PReLU"
bottom: "conv2"
top: "conv2"
param {
name: "prelu2_p"
}
}
layer {
name: "conv3"
type: "Convolution"
bottom: "conv2"
top: "conv3"
param {
name: "conv3_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv3_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 32
kernel_size: 3
stride: 2
pad:1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu3"
type: "PReLU"
bottom: "conv3"
top: "conv3"
param {
name: "prelu3_p"
}
}
layer {
name: "conv4"
type: "Convolution"
bottom: "conv3"
top: "conv4"
param {
name: "conv4_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv4_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 64
kernel_size: 3
stride: 2
pad:1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu4"
type: "PReLU"
bottom: "conv4"
top: "conv4"
param {
name: "prelu4_p"
}
}
layer {
name: "con5"
type: "Convolution"
bottom: "conv4"
top: "conv5"
param {
name: "conv5_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv5_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 128
kernel_size: 3
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv1_P"
type: "Convolution"
bottom: "data_face_around"
top: "conv1_P"
param {
name: "conv1_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv1_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 16
kernel_size: 3
stride: 2
pad: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu1_p"
type: "PReLU"
bottom: "conv1_P"
top: "conv1_P"
param {
name: "prelu1_p"
}
}
layer {
name: "conv2_P"
type: "Convolution"
bottom: "conv1_P"
top: "conv2_P"
param {
name: "conv2_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv2_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 32
kernel_size: 3
stride: 2
pad:1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu2_p"
type: "PReLU"
bottom: "conv2_P"
top: "conv2_P"
param {
name: "prelu2_p"
}
}
layer {
name: "conv3_p"
type: "Convolution"
bottom: "conv2_P"
top: "conv3_p"
param {
name: "conv3_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv3_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 32
kernel_size: 3
stride: 2
pad:1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu3_p"
type: "PReLU"
bottom: "conv3_p"
top: "conv3_p"
param {
name: "prelu3_p"
}
}
layer {
name: "conv4_p"
type: "Convolution"
bottom: "conv3_p"
top: "conv4_p"
param {
name: "conv4_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv4_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 64
kernel_size: 3
stride: 2
pad:1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "prelu4_p"
type: "PReLU"
bottom: "conv4_p"
top: "conv4_p"
param {
name: "prelu4_p"
}
}
layer {
name: "con5_p"
type: "Convolution"
bottom: "conv4_p"
top: "con5_p"
param {
name: "conv5_w"
lr_mult: 1
decay_mult: 1
}
param {
name: "conv5_b"
lr_mult: 2
decay_mult: 1
}
convolution_param {
num_output: 128
kernel_size: 3
stride: 1
pad:1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "tile_h"
type: "Tile"
bottom: "conv5"
top: "tile_h"
tile_param{
axis :2
tiles :8
}
}
layer {
name: "tile_v"
type: "Tile"
bottom: "tile_h"
top: "tile_v"
tile_param{
axis :3
tiles :8
}
}
layer {
name: "eltwise"
type: "Eltwise"
bottom: "tile_v"
bottom: "con5_p"
top: "eltwise"
eltwise_param{
operation:PROD
}
}
layer {
name: "ip1"
type: "InnerProduct"
bottom: "eltwise"
top: "ip1"
param {
lr_mult: 1
}
param {
lr_mult: 2
}
inner_product_param {
num_output: 64
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layer {
name: "relu_fc1"
type: "PReLU"
bottom: "ip1"
top: "ip1"
}
layer {
name: "ip2"
type: "InnerProduct"
bottom: "ip1"
top: "ip2"
param {
lr_mult: 1
}
param {
lr_mult: 2
}
inner_product_param {
num_output: 4
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}