Realtime_Multi-Person_Pose_Estimation icon indicating copy to clipboard operation
Realtime_Multi-Person_Pose_Estimation copied to clipboard

training loss is strange,for openpose body_25 model training

Open oujieww opened this issue 7 years ago • 9 comments

I use that model to train my dataset ,train.prototxt as : layer { name: "data" type: "CPMData" top: "data" top: "label" data_param { source: "/home/oujie/Desktop/Realtime_Multi-Person_Pose_Estimation/training/dataset/lmdb/" batch_size: 8 backend: LMDB } cpm_transform_param { stride: 8 max_rotate_degree: 40 visualize: false crop_size_x: 368 crop_size_y: 368 scale_prob: 1 scale_min: 0.5 scale_max: 1.1 target_dist: 0.6 center_perterb_max: 40 do_clahe: false num_parts: 58 np_in_lmdb: 19 } } layer { name: "vec_weight" type: "Slice" bottom: "label" top: "vec_weight" top: "heat_weight" top: "vec_temp" top: "heat_temp" slice_param { slice_point: 38 slice_point: 59 slice_point: 97 axis: 1 } } layer { name: "label_vec" type: "Eltwise" bottom: "vec_weight" bottom: "vec_temp" top: "label_vec" eltwise_param { operation: PROD } } layer { name: "label_heat" type: "Eltwise" bottom: "heat_weight" bottom: "heat_temp" top: "label_heat" eltwise_param { operation: PROD } } layer { name: "image" type: "Slice" bottom: "data" top: "image" top: "center_map" slice_param { slice_point: 3 axis: 1 } } layer { name: "silence2" type: "Silence" bottom: "center_map" } layer { name: "conv1_1" type: "Convolution" bottom: "image" top: "conv1_1" param { lr_mult: 1.0 decay_mult: 1 } param { lr_mult: 2.0 decay_mult: 0 } convolution_param { num_output: 64 pad: 1 kernel_size: 3 } } layer { name: "relu1_1" type: "ReLU" bottom: "conv1_1" top: "conv1_1" } layer { name: "conv1_2" type: "Convolution" bottom: "conv1_1" top: "conv1_2" param { lr_mult: 1.0 decay_mult: 1 } param { lr_mult: 2.0 decay_mult: 0 } convolution_param { num_output: 64 pad: 1 kernel_size: 3 } } layer { name: "relu1_2" type: "ReLU" bottom: "conv1_2" top: "conv1_2" } layer { name: "pool1_stage1" type: "Pooling" bottom: "conv1_2" top: "pool1_stage1" pooling_param { pool: MAX kernel_size: 2 stride: 2 } } layer { name: "conv2_1" type: "Convolution" bottom: "pool1_stage1" top: "conv2_1" param { lr_mult: 1.0 decay_mult: 1 } param { lr_mult: 2.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "relu2_1" type: "ReLU" bottom: "conv2_1" top: "conv2_1" } layer { name: "conv2_2" type: "Convolution" bottom: "conv2_1" top: "conv2_2" param { lr_mult: 1.0 decay_mult: 1 } param { lr_mult: 2.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "relu2_2" type: "ReLU" bottom: "conv2_2" top: "conv2_2" } layer { name: "pool2_stage1" type: "Pooling" bottom: "conv2_2" top: "pool2_stage1" pooling_param { pool: MAX kernel_size: 2 stride: 2 } } layer { name: "conv3_1" type: "Convolution" bottom: "pool2_stage1" top: "conv3_1" param { lr_mult: 1.0 decay_mult: 1 } param { lr_mult: 2.0 decay_mult: 0 } convolution_param { num_output: 256 pad: 1 kernel_size: 3 } } layer { name: "relu3_1" type: "ReLU" bottom: "conv3_1" top: "conv3_1" } layer { name: "conv3_2" type: "Convolution" bottom: "conv3_1" top: "conv3_2" param { lr_mult: 1.0 decay_mult: 1 } param { lr_mult: 2.0 decay_mult: 0 } convolution_param { num_output: 256 pad: 1 kernel_size: 3 } } layer { name: "relu3_2" type: "ReLU" bottom: "conv3_2" top: "conv3_2" } layer { name: "conv3_3" type: "Convolution" bottom: "conv3_2" top: "conv3_3" param { lr_mult: 1.0 decay_mult: 1 } param { lr_mult: 2.0 decay_mult: 0 } convolution_param { num_output: 256 pad: 1 kernel_size: 3 } } layer { name: "relu3_3" type: "ReLU" bottom: "conv3_3" top: "conv3_3" } layer { name: "conv3_4" type: "Convolution" bottom: "conv3_3" top: "conv3_4" param { lr_mult: 1.0 decay_mult: 1 } param { lr_mult: 2.0 decay_mult: 0 } convolution_param { num_output: 256 pad: 1 kernel_size: 3 } } layer { name: "relu3_4" type: "ReLU" bottom: "conv3_4" top: "conv3_4" } layer { name: "pool3_stage1" type: "Pooling" bottom: "conv3_4" top: "pool3_stage1" pooling_param { pool: MAX kernel_size: 2 stride: 2 } } layer { name: "conv4_1" type: "Convolution" bottom: "pool3_stage1" top: "conv4_1" param { lr_mult: 1.0 decay_mult: 1 } param { lr_mult: 2.0 decay_mult: 0 } convolution_param { num_output: 512 pad: 1 kernel_size: 3 } } layer { name: "relu4_1" type: "ReLU" bottom: "conv4_1" top: "conv4_1" } layer { name: "conv4_2" type: "Convolution" bottom: "conv4_1" top: "conv4_2" param { lr_mult: 1.0 decay_mult: 1 } param { lr_mult: 2.0 decay_mult: 0 } convolution_param { num_output: 512 pad: 1 kernel_size: 3 } } layer { name: "prelu4_2" type: "PReLU" bottom: "conv4_2" top: "conv4_2" } layer { name: "conv4_3_CPM" type: "Convolution" bottom: "conv4_2" top: "conv4_3_CPM" param { lr_mult: 1.0 decay_mult: 1 } param { lr_mult: 2.0 decay_mult: 0 } convolution_param { num_output: 256 pad: 1 kernel_size: 3 } } layer { name: "prelu4_3_CPM" type: "PReLU" bottom: "conv4_3_CPM" top: "conv4_3_CPM" } layer { name: "conv4_4_CPM" type: "Convolution" bottom: "conv4_3_CPM" top: "conv4_4_CPM" param { lr_mult: 1.0 decay_mult: 1 } param { lr_mult: 2.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "prelu4_4_CPM" type: "PReLU" bottom: "conv4_4_CPM" top: "conv4_4_CPM" } layer { name: "Mconv1_stage0_L2_0" type: "Convolution" bottom: "conv4_4_CPM" top: "Mconv1_stage0_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage0_L2_0" type: "PReLU" bottom: "Mconv1_stage0_L2_0" top: "Mconv1_stage0_L2_0" } layer { name: "Mconv1_stage0_L2_1" type: "Convolution" bottom: "Mconv1_stage0_L2_0" top: "Mconv1_stage0_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage0_L2_1" type: "PReLU" bottom: "Mconv1_stage0_L2_1" top: "Mconv1_stage0_L2_1" } layer { name: "Mconv1_stage0_L2_2" type: "Convolution" bottom: "Mconv1_stage0_L2_1" top: "Mconv1_stage0_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage0_L2_2" type: "PReLU" bottom: "Mconv1_stage0_L2_2" top: "Mconv1_stage0_L2_2" } layer { name: "Mconv1_stage0_L2_concat" type: "Concat" bottom: "Mconv1_stage0_L2_0" bottom: "Mconv1_stage0_L2_1" bottom: "Mconv1_stage0_L2_2" top: "Mconv1_stage0_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv2_stage0_L2_0" type: "Convolution" bottom: "Mconv1_stage0_L2_concat" top: "Mconv2_stage0_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage0_L2_0" type: "PReLU" bottom: "Mconv2_stage0_L2_0" top: "Mconv2_stage0_L2_0" } layer { name: "Mconv2_stage0_L2_1" type: "Convolution" bottom: "Mconv2_stage0_L2_0" top: "Mconv2_stage0_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage0_L2_1" type: "PReLU" bottom: "Mconv2_stage0_L2_1" top: "Mconv2_stage0_L2_1" } layer { name: "Mconv2_stage0_L2_2" type: "Convolution" bottom: "Mconv2_stage0_L2_1" top: "Mconv2_stage0_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage0_L2_2" type: "PReLU" bottom: "Mconv2_stage0_L2_2" top: "Mconv2_stage0_L2_2" } layer { name: "Mconv2_stage0_L2_concat" type: "Concat" bottom: "Mconv2_stage0_L2_0" bottom: "Mconv2_stage0_L2_1" bottom: "Mconv2_stage0_L2_2" top: "Mconv2_stage0_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv3_stage0_L2_0" type: "Convolution" bottom: "Mconv2_stage0_L2_concat" top: "Mconv3_stage0_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage0_L2_0" type: "PReLU" bottom: "Mconv3_stage0_L2_0" top: "Mconv3_stage0_L2_0" } layer { name: "Mconv3_stage0_L2_1" type: "Convolution" bottom: "Mconv3_stage0_L2_0" top: "Mconv3_stage0_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage0_L2_1" type: "PReLU" bottom: "Mconv3_stage0_L2_1" top: "Mconv3_stage0_L2_1" } layer { name: "Mconv3_stage0_L2_2" type: "Convolution" bottom: "Mconv3_stage0_L2_1" top: "Mconv3_stage0_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage0_L2_2" type: "PReLU" bottom: "Mconv3_stage0_L2_2" top: "Mconv3_stage0_L2_2" } layer { name: "Mconv3_stage0_L2_concat" type: "Concat" bottom: "Mconv3_stage0_L2_0" bottom: "Mconv3_stage0_L2_1" bottom: "Mconv3_stage0_L2_2" top: "Mconv3_stage0_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv4_stage0_L2_0" type: "Convolution" bottom: "Mconv3_stage0_L2_concat" top: "Mconv4_stage0_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage0_L2_0" type: "PReLU" bottom: "Mconv4_stage0_L2_0" top: "Mconv4_stage0_L2_0" } layer { name: "Mconv4_stage0_L2_1" type: "Convolution" bottom: "Mconv4_stage0_L2_0" top: "Mconv4_stage0_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage0_L2_1" type: "PReLU" bottom: "Mconv4_stage0_L2_1" top: "Mconv4_stage0_L2_1" } layer { name: "Mconv4_stage0_L2_2" type: "Convolution" bottom: "Mconv4_stage0_L2_1" top: "Mconv4_stage0_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage0_L2_2" type: "PReLU" bottom: "Mconv4_stage0_L2_2" top: "Mconv4_stage0_L2_2" } layer { name: "Mconv4_stage0_L2_concat" type: "Concat" bottom: "Mconv4_stage0_L2_0" bottom: "Mconv4_stage0_L2_1" bottom: "Mconv4_stage0_L2_2" top: "Mconv4_stage0_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv5_stage0_L2_0" type: "Convolution" bottom: "Mconv4_stage0_L2_concat" top: "Mconv5_stage0_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage0_L2_0" type: "PReLU" bottom: "Mconv5_stage0_L2_0" top: "Mconv5_stage0_L2_0" } layer { name: "Mconv5_stage0_L2_1" type: "Convolution" bottom: "Mconv5_stage0_L2_0" top: "Mconv5_stage0_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage0_L2_1" type: "PReLU" bottom: "Mconv5_stage0_L2_1" top: "Mconv5_stage0_L2_1" } layer { name: "Mconv5_stage0_L2_2" type: "Convolution" bottom: "Mconv5_stage0_L2_1" top: "Mconv5_stage0_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage0_L2_2" type: "PReLU" bottom: "Mconv5_stage0_L2_2" top: "Mconv5_stage0_L2_2" } layer { name: "Mconv5_stage0_L2_concat" type: "Concat" bottom: "Mconv5_stage0_L2_0" bottom: "Mconv5_stage0_L2_1" bottom: "Mconv5_stage0_L2_2" top: "Mconv5_stage0_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv6_stage0_L2" type: "Convolution" bottom: "Mconv5_stage0_L2_concat" top: "Mconv6_stage0_L2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 256 pad: 0 kernel_size: 1 } } layer { name: "Mprelu6_stage0_L2" type: "PReLU" bottom: "Mconv6_stage0_L2" top: "Mconv6_stage0_L2" } layer { name: "Mconv7_stage0_L2" type: "Convolution" bottom: "Mconv6_stage0_L2" top: "Mconv7_stage0_L2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 38 pad: 0 kernel_size: 1 } } ###loss##### layer { name: "weight_stage0_L2" type: "Eltwise" bottom: "Mconv7_stage0_L2" bottom: "vec_weight" top: "weight_stage0_L2" eltwise_param { operation: PROD } } layer { name: "loss_stage0_L2" type: "EuclideanLoss" bottom: "weight_stage0_L2" bottom: "label_vec" top: "loss_stage0_L2" loss_weight: 1 }

####loss########### layer { name: "concat_stage1_L2" type: "Concat" bottom: "conv4_4_CPM" bottom: "Mconv7_stage0_L2" top: "concat_stage1_L2" concat_param { axis: 1 } } layer { name: "Mconv1_stage1_L2_0" type: "Convolution" bottom: "concat_stage1_L2" top: "Mconv1_stage1_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage1_L2_0" type: "PReLU" bottom: "Mconv1_stage1_L2_0" top: "Mconv1_stage1_L2_0" } layer { name: "Mconv1_stage1_L2_1" type: "Convolution" bottom: "Mconv1_stage1_L2_0" top: "Mconv1_stage1_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage1_L2_1" type: "PReLU" bottom: "Mconv1_stage1_L2_1" top: "Mconv1_stage1_L2_1" } layer { name: "Mconv1_stage1_L2_2" type: "Convolution" bottom: "Mconv1_stage1_L2_1" top: "Mconv1_stage1_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage1_L2_2" type: "PReLU" bottom: "Mconv1_stage1_L2_2" top: "Mconv1_stage1_L2_2" } layer { name: "Mconv1_stage1_L2_concat" type: "Concat" bottom: "Mconv1_stage1_L2_0" bottom: "Mconv1_stage1_L2_1" bottom: "Mconv1_stage1_L2_2" top: "Mconv1_stage1_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv2_stage1_L2_0" type: "Convolution" bottom: "Mconv1_stage1_L2_concat" top: "Mconv2_stage1_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage1_L2_0" type: "PReLU" bottom: "Mconv2_stage1_L2_0" top: "Mconv2_stage1_L2_0" } layer { name: "Mconv2_stage1_L2_1" type: "Convolution" bottom: "Mconv2_stage1_L2_0" top: "Mconv2_stage1_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage1_L2_1" type: "PReLU" bottom: "Mconv2_stage1_L2_1" top: "Mconv2_stage1_L2_1" } layer { name: "Mconv2_stage1_L2_2" type: "Convolution" bottom: "Mconv2_stage1_L2_1" top: "Mconv2_stage1_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage1_L2_2" type: "PReLU" bottom: "Mconv2_stage1_L2_2" top: "Mconv2_stage1_L2_2" } layer { name: "Mconv2_stage1_L2_concat" type: "Concat" bottom: "Mconv2_stage1_L2_0" bottom: "Mconv2_stage1_L2_1" bottom: "Mconv2_stage1_L2_2" top: "Mconv2_stage1_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv3_stage1_L2_0" type: "Convolution" bottom: "Mconv2_stage1_L2_concat" top: "Mconv3_stage1_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage1_L2_0" type: "PReLU" bottom: "Mconv3_stage1_L2_0" top: "Mconv3_stage1_L2_0" } layer { name: "Mconv3_stage1_L2_1" type: "Convolution" bottom: "Mconv3_stage1_L2_0" top: "Mconv3_stage1_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage1_L2_1" type: "PReLU" bottom: "Mconv3_stage1_L2_1" top: "Mconv3_stage1_L2_1" } layer { name: "Mconv3_stage1_L2_2" type: "Convolution" bottom: "Mconv3_stage1_L2_1" top: "Mconv3_stage1_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage1_L2_2" type: "PReLU" bottom: "Mconv3_stage1_L2_2" top: "Mconv3_stage1_L2_2" } layer { name: "Mconv3_stage1_L2_concat" type: "Concat" bottom: "Mconv3_stage1_L2_0" bottom: "Mconv3_stage1_L2_1" bottom: "Mconv3_stage1_L2_2" top: "Mconv3_stage1_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv4_stage1_L2_0" type: "Convolution" bottom: "Mconv3_stage1_L2_concat" top: "Mconv4_stage1_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage1_L2_0" type: "PReLU" bottom: "Mconv4_stage1_L2_0" top: "Mconv4_stage1_L2_0" } layer { name: "Mconv4_stage1_L2_1" type: "Convolution" bottom: "Mconv4_stage1_L2_0" top: "Mconv4_stage1_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage1_L2_1" type: "PReLU" bottom: "Mconv4_stage1_L2_1" top: "Mconv4_stage1_L2_1" } layer { name: "Mconv4_stage1_L2_2" type: "Convolution" bottom: "Mconv4_stage1_L2_1" top: "Mconv4_stage1_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage1_L2_2" type: "PReLU" bottom: "Mconv4_stage1_L2_2" top: "Mconv4_stage1_L2_2" } layer { name: "Mconv4_stage1_L2_concat" type: "Concat" bottom: "Mconv4_stage1_L2_0" bottom: "Mconv4_stage1_L2_1" bottom: "Mconv4_stage1_L2_2" top: "Mconv4_stage1_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv5_stage1_L2_0" type: "Convolution" bottom: "Mconv4_stage1_L2_concat" top: "Mconv5_stage1_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage1_L2_0" type: "PReLU" bottom: "Mconv5_stage1_L2_0" top: "Mconv5_stage1_L2_0" } layer { name: "Mconv5_stage1_L2_1" type: "Convolution" bottom: "Mconv5_stage1_L2_0" top: "Mconv5_stage1_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage1_L2_1" type: "PReLU" bottom: "Mconv5_stage1_L2_1" top: "Mconv5_stage1_L2_1" } layer { name: "Mconv5_stage1_L2_2" type: "Convolution" bottom: "Mconv5_stage1_L2_1" top: "Mconv5_stage1_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage1_L2_2" type: "PReLU" bottom: "Mconv5_stage1_L2_2" top: "Mconv5_stage1_L2_2" } layer { name: "Mconv5_stage1_L2_concat" type: "Concat" bottom: "Mconv5_stage1_L2_0" bottom: "Mconv5_stage1_L2_1" bottom: "Mconv5_stage1_L2_2" top: "Mconv5_stage1_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv6_stage1_L2" type: "Convolution" bottom: "Mconv5_stage1_L2_concat" top: "Mconv6_stage1_L2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 512 pad: 0 kernel_size: 1 } } layer { name: "Mprelu6_stage1_L2" type: "PReLU" bottom: "Mconv6_stage1_L2" top: "Mconv6_stage1_L2" } layer { name: "Mconv7_stage1_L2" type: "Convolution" bottom: "Mconv6_stage1_L2" top: "Mconv7_stage1_L2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 38 pad: 0 kernel_size: 1 } } ###loss##### layer { name: "weight_stage1_L2" type: "Eltwise" bottom: "Mconv7_stage1_L2" bottom: "vec_weight" top: "weight_stage1_L2" eltwise_param { operation: PROD } } layer { name: "loss_stage1_L2" type: "EuclideanLoss" bottom: "weight_stage1_L2" bottom: "label_vec" top: "loss_stage1_L2" loss_weight: 1 }

####loss########### layer { name: "concat_stage2_L2" type: "Concat" bottom: "conv4_4_CPM" bottom: "Mconv7_stage1_L2" top: "concat_stage2_L2" concat_param { axis: 1 } } layer { name: "Mconv1_stage2_L2_0" type: "Convolution" bottom: "concat_stage2_L2" top: "Mconv1_stage2_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage2_L2_0" type: "PReLU" bottom: "Mconv1_stage2_L2_0" top: "Mconv1_stage2_L2_0" } layer { name: "Mconv1_stage2_L2_1" type: "Convolution" bottom: "Mconv1_stage2_L2_0" top: "Mconv1_stage2_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage2_L2_1" type: "PReLU" bottom: "Mconv1_stage2_L2_1" top: "Mconv1_stage2_L2_1" } layer { name: "Mconv1_stage2_L2_2" type: "Convolution" bottom: "Mconv1_stage2_L2_1" top: "Mconv1_stage2_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage2_L2_2" type: "PReLU" bottom: "Mconv1_stage2_L2_2" top: "Mconv1_stage2_L2_2" } layer { name: "Mconv1_stage2_L2_concat" type: "Concat" bottom: "Mconv1_stage2_L2_0" bottom: "Mconv1_stage2_L2_1" bottom: "Mconv1_stage2_L2_2" top: "Mconv1_stage2_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv2_stage2_L2_0" type: "Convolution" bottom: "Mconv1_stage2_L2_concat" top: "Mconv2_stage2_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage2_L2_0" type: "PReLU" bottom: "Mconv2_stage2_L2_0" top: "Mconv2_stage2_L2_0" } layer { name: "Mconv2_stage2_L2_1" type: "Convolution" bottom: "Mconv2_stage2_L2_0" top: "Mconv2_stage2_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage2_L2_1" type: "PReLU" bottom: "Mconv2_stage2_L2_1" top: "Mconv2_stage2_L2_1" } layer { name: "Mconv2_stage2_L2_2" type: "Convolution" bottom: "Mconv2_stage2_L2_1" top: "Mconv2_stage2_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage2_L2_2" type: "PReLU" bottom: "Mconv2_stage2_L2_2" top: "Mconv2_stage2_L2_2" } layer { name: "Mconv2_stage2_L2_concat" type: "Concat" bottom: "Mconv2_stage2_L2_0" bottom: "Mconv2_stage2_L2_1" bottom: "Mconv2_stage2_L2_2" top: "Mconv2_stage2_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv3_stage2_L2_0" type: "Convolution" bottom: "Mconv2_stage2_L2_concat" top: "Mconv3_stage2_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage2_L2_0" type: "PReLU" bottom: "Mconv3_stage2_L2_0" top: "Mconv3_stage2_L2_0" } layer { name: "Mconv3_stage2_L2_1" type: "Convolution" bottom: "Mconv3_stage2_L2_0" top: "Mconv3_stage2_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage2_L2_1" type: "PReLU" bottom: "Mconv3_stage2_L2_1" top: "Mconv3_stage2_L2_1" } layer { name: "Mconv3_stage2_L2_2" type: "Convolution" bottom: "Mconv3_stage2_L2_1" top: "Mconv3_stage2_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage2_L2_2" type: "PReLU" bottom: "Mconv3_stage2_L2_2" top: "Mconv3_stage2_L2_2" } layer { name: "Mconv3_stage2_L2_concat" type: "Concat" bottom: "Mconv3_stage2_L2_0" bottom: "Mconv3_stage2_L2_1" bottom: "Mconv3_stage2_L2_2" top: "Mconv3_stage2_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv4_stage2_L2_0" type: "Convolution" bottom: "Mconv3_stage2_L2_concat" top: "Mconv4_stage2_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage2_L2_0" type: "PReLU" bottom: "Mconv4_stage2_L2_0" top: "Mconv4_stage2_L2_0" } layer { name: "Mconv4_stage2_L2_1" type: "Convolution" bottom: "Mconv4_stage2_L2_0" top: "Mconv4_stage2_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage2_L2_1" type: "PReLU" bottom: "Mconv4_stage2_L2_1" top: "Mconv4_stage2_L2_1" } layer { name: "Mconv4_stage2_L2_2" type: "Convolution" bottom: "Mconv4_stage2_L2_1" top: "Mconv4_stage2_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage2_L2_2" type: "PReLU" bottom: "Mconv4_stage2_L2_2" top: "Mconv4_stage2_L2_2" } layer { name: "Mconv4_stage2_L2_concat" type: "Concat" bottom: "Mconv4_stage2_L2_0" bottom: "Mconv4_stage2_L2_1" bottom: "Mconv4_stage2_L2_2" top: "Mconv4_stage2_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv5_stage2_L2_0" type: "Convolution" bottom: "Mconv4_stage2_L2_concat" top: "Mconv5_stage2_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage2_L2_0" type: "PReLU" bottom: "Mconv5_stage2_L2_0" top: "Mconv5_stage2_L2_0" } layer { name: "Mconv5_stage2_L2_1" type: "Convolution" bottom: "Mconv5_stage2_L2_0" top: "Mconv5_stage2_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage2_L2_1" type: "PReLU" bottom: "Mconv5_stage2_L2_1" top: "Mconv5_stage2_L2_1" } layer { name: "Mconv5_stage2_L2_2" type: "Convolution" bottom: "Mconv5_stage2_L2_1" top: "Mconv5_stage2_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage2_L2_2" type: "PReLU" bottom: "Mconv5_stage2_L2_2" top: "Mconv5_stage2_L2_2" } layer { name: "Mconv5_stage2_L2_concat" type: "Concat" bottom: "Mconv5_stage2_L2_0" bottom: "Mconv5_stage2_L2_1" bottom: "Mconv5_stage2_L2_2" top: "Mconv5_stage2_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv6_stage2_L2" type: "Convolution" bottom: "Mconv5_stage2_L2_concat" top: "Mconv6_stage2_L2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 512 pad: 0 kernel_size: 1 } } layer { name: "Mprelu6_stage2_L2" type: "PReLU" bottom: "Mconv6_stage2_L2" top: "Mconv6_stage2_L2" } layer { name: "Mconv7_stage2_L2" type: "Convolution" bottom: "Mconv6_stage2_L2" top: "Mconv7_stage2_L2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 38 pad: 0 kernel_size: 1 } } ###loss##### layer { name: "weight_stage2_L2" type: "Eltwise" bottom: "Mconv7_stage2_L2" bottom: "vec_weight" top: "weight_stage2_L2" eltwise_param { operation: PROD } } layer { name: "loss_stage2_L2" type: "EuclideanLoss" bottom: "weight_stage2_L2" bottom: "label_vec" top: "loss_stage2_L2" loss_weight: 1 }

####loss########### layer { name: "concat_stage3_L2" type: "Concat" bottom: "conv4_4_CPM" bottom: "Mconv7_stage2_L2" top: "concat_stage3_L2" concat_param { axis: 1 } } layer { name: "Mconv1_stage3_L2_0" type: "Convolution" bottom: "concat_stage3_L2" top: "Mconv1_stage3_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage3_L2_0" type: "PReLU" bottom: "Mconv1_stage3_L2_0" top: "Mconv1_stage3_L2_0" } layer { name: "Mconv1_stage3_L2_1" type: "Convolution" bottom: "Mconv1_stage3_L2_0" top: "Mconv1_stage3_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage3_L2_1" type: "PReLU" bottom: "Mconv1_stage3_L2_1" top: "Mconv1_stage3_L2_1" } layer { name: "Mconv1_stage3_L2_2" type: "Convolution" bottom: "Mconv1_stage3_L2_1" top: "Mconv1_stage3_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage3_L2_2" type: "PReLU" bottom: "Mconv1_stage3_L2_2" top: "Mconv1_stage3_L2_2" } layer { name: "Mconv1_stage3_L2_concat" type: "Concat" bottom: "Mconv1_stage3_L2_0" bottom: "Mconv1_stage3_L2_1" bottom: "Mconv1_stage3_L2_2" top: "Mconv1_stage3_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv2_stage3_L2_0" type: "Convolution" bottom: "Mconv1_stage3_L2_concat" top: "Mconv2_stage3_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage3_L2_0" type: "PReLU" bottom: "Mconv2_stage3_L2_0" top: "Mconv2_stage3_L2_0" } layer { name: "Mconv2_stage3_L2_1" type: "Convolution" bottom: "Mconv2_stage3_L2_0" top: "Mconv2_stage3_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage3_L2_1" type: "PReLU" bottom: "Mconv2_stage3_L2_1" top: "Mconv2_stage3_L2_1" } layer { name: "Mconv2_stage3_L2_2" type: "Convolution" bottom: "Mconv2_stage3_L2_1" top: "Mconv2_stage3_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage3_L2_2" type: "PReLU" bottom: "Mconv2_stage3_L2_2" top: "Mconv2_stage3_L2_2" } layer { name: "Mconv2_stage3_L2_concat" type: "Concat" bottom: "Mconv2_stage3_L2_0" bottom: "Mconv2_stage3_L2_1" bottom: "Mconv2_stage3_L2_2" top: "Mconv2_stage3_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv3_stage3_L2_0" type: "Convolution" bottom: "Mconv2_stage3_L2_concat" top: "Mconv3_stage3_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage3_L2_0" type: "PReLU" bottom: "Mconv3_stage3_L2_0" top: "Mconv3_stage3_L2_0" } layer { name: "Mconv3_stage3_L2_1" type: "Convolution" bottom: "Mconv3_stage3_L2_0" top: "Mconv3_stage3_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage3_L2_1" type: "PReLU" bottom: "Mconv3_stage3_L2_1" top: "Mconv3_stage3_L2_1" } layer { name: "Mconv3_stage3_L2_2" type: "Convolution" bottom: "Mconv3_stage3_L2_1" top: "Mconv3_stage3_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage3_L2_2" type: "PReLU" bottom: "Mconv3_stage3_L2_2" top: "Mconv3_stage3_L2_2" } layer { name: "Mconv3_stage3_L2_concat" type: "Concat" bottom: "Mconv3_stage3_L2_0" bottom: "Mconv3_stage3_L2_1" bottom: "Mconv3_stage3_L2_2" top: "Mconv3_stage3_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv4_stage3_L2_0" type: "Convolution" bottom: "Mconv3_stage3_L2_concat" top: "Mconv4_stage3_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage3_L2_0" type: "PReLU" bottom: "Mconv4_stage3_L2_0" top: "Mconv4_stage3_L2_0" } layer { name: "Mconv4_stage3_L2_1" type: "Convolution" bottom: "Mconv4_stage3_L2_0" top: "Mconv4_stage3_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage3_L2_1" type: "PReLU" bottom: "Mconv4_stage3_L2_1" top: "Mconv4_stage3_L2_1" } layer { name: "Mconv4_stage3_L2_2" type: "Convolution" bottom: "Mconv4_stage3_L2_1" top: "Mconv4_stage3_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage3_L2_2" type: "PReLU" bottom: "Mconv4_stage3_L2_2" top: "Mconv4_stage3_L2_2" } layer { name: "Mconv4_stage3_L2_concat" type: "Concat" bottom: "Mconv4_stage3_L2_0" bottom: "Mconv4_stage3_L2_1" bottom: "Mconv4_stage3_L2_2" top: "Mconv4_stage3_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv5_stage3_L2_0" type: "Convolution" bottom: "Mconv4_stage3_L2_concat" top: "Mconv5_stage3_L2_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage3_L2_0" type: "PReLU" bottom: "Mconv5_stage3_L2_0" top: "Mconv5_stage3_L2_0" } layer { name: "Mconv5_stage3_L2_1" type: "Convolution" bottom: "Mconv5_stage3_L2_0" top: "Mconv5_stage3_L2_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage3_L2_1" type: "PReLU" bottom: "Mconv5_stage3_L2_1" top: "Mconv5_stage3_L2_1" } layer { name: "Mconv5_stage3_L2_2" type: "Convolution" bottom: "Mconv5_stage3_L2_1" top: "Mconv5_stage3_L2_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage3_L2_2" type: "PReLU" bottom: "Mconv5_stage3_L2_2" top: "Mconv5_stage3_L2_2" } layer { name: "Mconv5_stage3_L2_concat" type: "Concat" bottom: "Mconv5_stage3_L2_0" bottom: "Mconv5_stage3_L2_1" bottom: "Mconv5_stage3_L2_2" top: "Mconv5_stage3_L2_concat" concat_param { axis: 1 } } layer { name: "Mconv6_stage3_L2" type: "Convolution" bottom: "Mconv5_stage3_L2_concat" top: "Mconv6_stage3_L2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 512 pad: 0 kernel_size: 1 } } layer { name: "Mprelu6_stage3_L2" type: "PReLU" bottom: "Mconv6_stage3_L2" top: "Mconv6_stage3_L2" } layer { name: "Mconv7_stage3_L2" type: "Convolution" bottom: "Mconv6_stage3_L2" top: "Mconv7_stage3_L2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 38 pad: 0 kernel_size: 1 } } ###loss##### layer { name: "weight_stage3_L2" type: "Eltwise" bottom: "Mconv7_stage3_L2" bottom: "vec_weight" top: "weight_stage3_L2" eltwise_param { operation: PROD } } layer { name: "loss_stage3_L2" type: "EuclideanLoss" bottom: "weight_stage3_L2" bottom: "label_vec" top: "loss_stage3_L2" loss_weight: 1 }

####loss########### layer { name: "concat_stage0_L1" type: "Concat" bottom: "conv4_4_CPM" bottom: "Mconv7_stage3_L2" top: "concat_stage0_L1" concat_param { axis: 1 } } layer { name: "Mconv1_stage0_L1_0" type: "Convolution" bottom: "concat_stage0_L1" top: "Mconv1_stage0_L1_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage0_L1_0" type: "PReLU" bottom: "Mconv1_stage0_L1_0" top: "Mconv1_stage0_L1_0" } layer { name: "Mconv1_stage0_L1_1" type: "Convolution" bottom: "Mconv1_stage0_L1_0" top: "Mconv1_stage0_L1_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage0_L1_1" type: "PReLU" bottom: "Mconv1_stage0_L1_1" top: "Mconv1_stage0_L1_1" } layer { name: "Mconv1_stage0_L1_2" type: "Convolution" bottom: "Mconv1_stage0_L1_1" top: "Mconv1_stage0_L1_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage0_L1_2" type: "PReLU" bottom: "Mconv1_stage0_L1_2" top: "Mconv1_stage0_L1_2" } layer { name: "Mconv1_stage0_L1_concat" type: "Concat" bottom: "Mconv1_stage0_L1_0" bottom: "Mconv1_stage0_L1_1" bottom: "Mconv1_stage0_L1_2" top: "Mconv1_stage0_L1_concat" concat_param { axis: 1 } } layer { name: "Mconv2_stage0_L1_0" type: "Convolution" bottom: "Mconv1_stage0_L1_concat" top: "Mconv2_stage0_L1_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage0_L1_0" type: "PReLU" bottom: "Mconv2_stage0_L1_0" top: "Mconv2_stage0_L1_0" } layer { name: "Mconv2_stage0_L1_1" type: "Convolution" bottom: "Mconv2_stage0_L1_0" top: "Mconv2_stage0_L1_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage0_L1_1" type: "PReLU" bottom: "Mconv2_stage0_L1_1" top: "Mconv2_stage0_L1_1" } layer { name: "Mconv2_stage0_L1_2" type: "Convolution" bottom: "Mconv2_stage0_L1_1" top: "Mconv2_stage0_L1_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage0_L1_2" type: "PReLU" bottom: "Mconv2_stage0_L1_2" top: "Mconv2_stage0_L1_2" } layer { name: "Mconv2_stage0_L1_concat" type: "Concat" bottom: "Mconv2_stage0_L1_0" bottom: "Mconv2_stage0_L1_1" bottom: "Mconv2_stage0_L1_2" top: "Mconv2_stage0_L1_concat" concat_param { axis: 1 } } layer { name: "Mconv3_stage0_L1_0" type: "Convolution" bottom: "Mconv2_stage0_L1_concat" top: "Mconv3_stage0_L1_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage0_L1_0" type: "PReLU" bottom: "Mconv3_stage0_L1_0" top: "Mconv3_stage0_L1_0" } layer { name: "Mconv3_stage0_L1_1" type: "Convolution" bottom: "Mconv3_stage0_L1_0" top: "Mconv3_stage0_L1_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage0_L1_1" type: "PReLU" bottom: "Mconv3_stage0_L1_1" top: "Mconv3_stage0_L1_1" } layer { name: "Mconv3_stage0_L1_2" type: "Convolution" bottom: "Mconv3_stage0_L1_1" top: "Mconv3_stage0_L1_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage0_L1_2" type: "PReLU" bottom: "Mconv3_stage0_L1_2" top: "Mconv3_stage0_L1_2" } layer { name: "Mconv3_stage0_L1_concat" type: "Concat" bottom: "Mconv3_stage0_L1_0" bottom: "Mconv3_stage0_L1_1" bottom: "Mconv3_stage0_L1_2" top: "Mconv3_stage0_L1_concat" concat_param { axis: 1 } } layer { name: "Mconv4_stage0_L1_0" type: "Convolution" bottom: "Mconv3_stage0_L1_concat" top: "Mconv4_stage0_L1_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage0_L1_0" type: "PReLU" bottom: "Mconv4_stage0_L1_0" top: "Mconv4_stage0_L1_0" } layer { name: "Mconv4_stage0_L1_1" type: "Convolution" bottom: "Mconv4_stage0_L1_0" top: "Mconv4_stage0_L1_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage0_L1_1" type: "PReLU" bottom: "Mconv4_stage0_L1_1" top: "Mconv4_stage0_L1_1" } layer { name: "Mconv4_stage0_L1_2" type: "Convolution" bottom: "Mconv4_stage0_L1_1" top: "Mconv4_stage0_L1_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage0_L1_2" type: "PReLU" bottom: "Mconv4_stage0_L1_2" top: "Mconv4_stage0_L1_2" } layer { name: "Mconv4_stage0_L1_concat" type: "Concat" bottom: "Mconv4_stage0_L1_0" bottom: "Mconv4_stage0_L1_1" bottom: "Mconv4_stage0_L1_2" top: "Mconv4_stage0_L1_concat" concat_param { axis: 1 } } layer { name: "Mconv5_stage0_L1_0" type: "Convolution" bottom: "Mconv4_stage0_L1_concat" top: "Mconv5_stage0_L1_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage0_L1_0" type: "PReLU" bottom: "Mconv5_stage0_L1_0" top: "Mconv5_stage0_L1_0" } layer { name: "Mconv5_stage0_L1_1" type: "Convolution" bottom: "Mconv5_stage0_L1_0" top: "Mconv5_stage0_L1_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage0_L1_1" type: "PReLU" bottom: "Mconv5_stage0_L1_1" top: "Mconv5_stage0_L1_1" } layer { name: "Mconv5_stage0_L1_2" type: "Convolution" bottom: "Mconv5_stage0_L1_1" top: "Mconv5_stage0_L1_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 96 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage0_L1_2" type: "PReLU" bottom: "Mconv5_stage0_L1_2" top: "Mconv5_stage0_L1_2" } layer { name: "Mconv5_stage0_L1_concat" type: "Concat" bottom: "Mconv5_stage0_L1_0" bottom: "Mconv5_stage0_L1_1" bottom: "Mconv5_stage0_L1_2" top: "Mconv5_stage0_L1_concat" concat_param { axis: 1 } } layer { name: "Mconv6_stage0_L1" type: "Convolution" bottom: "Mconv5_stage0_L1_concat" top: "Mconv6_stage0_L1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 256 pad: 0 kernel_size: 1 } } layer { name: "Mprelu6_stage0_L1" type: "PReLU" bottom: "Mconv6_stage0_L1" top: "Mconv6_stage0_L1" } layer { name: "Mconv7_stage0_L1" type: "Convolution" bottom: "Mconv6_stage0_L1" top: "Mconv7_stage0_L1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 21 pad: 0 kernel_size: 1 } } #########loss############## layer { name: "weight_stage0_L1" type: "Eltwise" bottom: "Mconv7_stage0_L1" bottom: "heat_weight" top: "weight_stage0_L1" eltwise_param { operation: PROD } } layer { name: "loss_stage0_L1" type: "EuclideanLoss" bottom: "weight_stage0_L1" bottom: "label_heat" top: "loss_stage0_L1" loss_weight: 1 }

#########loss############## layer { name: "concat_stage1_L1" type: "Concat" bottom: "conv4_4_CPM" bottom: "Mconv7_stage0_L1" bottom: "Mconv7_stage3_L2" top: "concat_stage1_L1" concat_param { axis: 1 } } layer { name: "Mconv1_stage1_L1_0" type: "Convolution" bottom: "concat_stage1_L1" top: "Mconv1_stage1_L1_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage1_L1_0" type: "PReLU" bottom: "Mconv1_stage1_L1_0" top: "Mconv1_stage1_L1_0" } layer { name: "Mconv1_stage1_L1_1" type: "Convolution" bottom: "Mconv1_stage1_L1_0" top: "Mconv1_stage1_L1_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage1_L1_1" type: "PReLU" bottom: "Mconv1_stage1_L1_1" top: "Mconv1_stage1_L1_1" } layer { name: "Mconv1_stage1_L1_2" type: "Convolution" bottom: "Mconv1_stage1_L1_1" top: "Mconv1_stage1_L1_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu1_stage1_L1_2" type: "PReLU" bottom: "Mconv1_stage1_L1_2" top: "Mconv1_stage1_L1_2" } layer { name: "Mconv1_stage1_L1_concat" type: "Concat" bottom: "Mconv1_stage1_L1_0" bottom: "Mconv1_stage1_L1_1" bottom: "Mconv1_stage1_L1_2" top: "Mconv1_stage1_L1_concat" concat_param { axis: 1 } } layer { name: "Mconv2_stage1_L1_0" type: "Convolution" bottom: "Mconv1_stage1_L1_concat" top: "Mconv2_stage1_L1_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage1_L1_0" type: "PReLU" bottom: "Mconv2_stage1_L1_0" top: "Mconv2_stage1_L1_0" } layer { name: "Mconv2_stage1_L1_1" type: "Convolution" bottom: "Mconv2_stage1_L1_0" top: "Mconv2_stage1_L1_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage1_L1_1" type: "PReLU" bottom: "Mconv2_stage1_L1_1" top: "Mconv2_stage1_L1_1" } layer { name: "Mconv2_stage1_L1_2" type: "Convolution" bottom: "Mconv2_stage1_L1_1" top: "Mconv2_stage1_L1_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu2_stage1_L1_2" type: "PReLU" bottom: "Mconv2_stage1_L1_2" top: "Mconv2_stage1_L1_2" } layer { name: "Mconv2_stage1_L1_concat" type: "Concat" bottom: "Mconv2_stage1_L1_0" bottom: "Mconv2_stage1_L1_1" bottom: "Mconv2_stage1_L1_2" top: "Mconv2_stage1_L1_concat" concat_param { axis: 1 } } layer { name: "Mconv3_stage1_L1_0" type: "Convolution" bottom: "Mconv2_stage1_L1_concat" top: "Mconv3_stage1_L1_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage1_L1_0" type: "PReLU" bottom: "Mconv3_stage1_L1_0" top: "Mconv3_stage1_L1_0" } layer { name: "Mconv3_stage1_L1_1" type: "Convolution" bottom: "Mconv3_stage1_L1_0" top: "Mconv3_stage1_L1_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage1_L1_1" type: "PReLU" bottom: "Mconv3_stage1_L1_1" top: "Mconv3_stage1_L1_1" } layer { name: "Mconv3_stage1_L1_2" type: "Convolution" bottom: "Mconv3_stage1_L1_1" top: "Mconv3_stage1_L1_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu3_stage1_L1_2" type: "PReLU" bottom: "Mconv3_stage1_L1_2" top: "Mconv3_stage1_L1_2" } layer { name: "Mconv3_stage1_L1_concat" type: "Concat" bottom: "Mconv3_stage1_L1_0" bottom: "Mconv3_stage1_L1_1" bottom: "Mconv3_stage1_L1_2" top: "Mconv3_stage1_L1_concat" concat_param { axis: 1 } } layer { name: "Mconv4_stage1_L1_0" type: "Convolution" bottom: "Mconv3_stage1_L1_concat" top: "Mconv4_stage1_L1_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage1_L1_0" type: "PReLU" bottom: "Mconv4_stage1_L1_0" top: "Mconv4_stage1_L1_0" } layer { name: "Mconv4_stage1_L1_1" type: "Convolution" bottom: "Mconv4_stage1_L1_0" top: "Mconv4_stage1_L1_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage1_L1_1" type: "PReLU" bottom: "Mconv4_stage1_L1_1" top: "Mconv4_stage1_L1_1" } layer { name: "Mconv4_stage1_L1_2" type: "Convolution" bottom: "Mconv4_stage1_L1_1" top: "Mconv4_stage1_L1_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu4_stage1_L1_2" type: "PReLU" bottom: "Mconv4_stage1_L1_2" top: "Mconv4_stage1_L1_2" } layer { name: "Mconv4_stage1_L1_concat" type: "Concat" bottom: "Mconv4_stage1_L1_0" bottom: "Mconv4_stage1_L1_1" bottom: "Mconv4_stage1_L1_2" top: "Mconv4_stage1_L1_concat" concat_param { axis: 1 } } layer { name: "Mconv5_stage1_L1_0" type: "Convolution" bottom: "Mconv4_stage1_L1_concat" top: "Mconv5_stage1_L1_0" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage1_L1_0" type: "PReLU" bottom: "Mconv5_stage1_L1_0" top: "Mconv5_stage1_L1_0" } layer { name: "Mconv5_stage1_L1_1" type: "Convolution" bottom: "Mconv5_stage1_L1_0" top: "Mconv5_stage1_L1_1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage1_L1_1" type: "PReLU" bottom: "Mconv5_stage1_L1_1" top: "Mconv5_stage1_L1_1" } layer { name: "Mconv5_stage1_L1_2" type: "Convolution" bottom: "Mconv5_stage1_L1_1" top: "Mconv5_stage1_L1_2" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 128 pad: 1 kernel_size: 3 } } layer { name: "Mprelu5_stage1_L1_2" type: "PReLU" bottom: "Mconv5_stage1_L1_2" top: "Mconv5_stage1_L1_2" } layer { name: "Mconv5_stage1_L1_concat" type: "Concat" bottom: "Mconv5_stage1_L1_0" bottom: "Mconv5_stage1_L1_1" bottom: "Mconv5_stage1_L1_2" top: "Mconv5_stage1_L1_concat" concat_param { axis: 1 } } layer { name: "Mconv6_stage1_L1" type: "Convolution" bottom: "Mconv5_stage1_L1_concat" top: "Mconv6_stage1_L1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 512 pad: 0 kernel_size: 1 } } layer { name: "Mprelu6_stage1_L1" type: "PReLU" bottom: "Mconv6_stage1_L1" top: "Mconv6_stage1_L1" } layer { name: "Mconv7_stage1_L1" type: "Convolution" bottom: "Mconv6_stage1_L1" top: "Mconv7_stage1_L1" param { lr_mult: 4.0 decay_mult: 1 } param { lr_mult: 8.0 decay_mult: 0 } convolution_param { num_output: 21 pad: 0 kernel_size: 1 } } #########loss############## layer { name: "weight_stage1_L1" type: "Eltwise" bottom: "Mconv7_stage1_L1" bottom: "heat_weight" top: "weight_stage1_L1" eltwise_param { operation: PROD } } layer { name: "loss_stage1_L1" type: "EuclideanLoss" bottom: "weight_stage1_L1" bottom: "label_heat" top: "loss_stage1_L1" loss_weight: 1 }

#########loss##############

layer { name: "net_output" type: "Concat" bottom: "Mconv7_stage1_L1" bottom: "Mconv7_stage3_L2" top: "net_output" concat_param { axis: 1 } } layer { name: "silence3" type: "Silence" bottom: "net_output" }

but the loss for different stage is always same ,and loss is around 400~700, cannot get convergence,please help me. I0428 15:09:29.172890 2554 solver.cpp:228] Iteration 1600, loss = 479.462 I0428 15:09:29.172938 2554 solver.cpp:244] Train net output #0: loss_stage0_L1 = 43.9503 (* 1 = 43.9503 loss) I0428 15:09:29.172947 2554 solver.cpp:244] Train net output #1: loss_stage0_L2 = 97.8904 (* 1 = 97.8904 loss) I0428 15:09:29.172953 2554 solver.cpp:244] Train net output #2: loss_stage1_L1 = 43.9503 (* 1 = 43.9503 loss) I0428 15:09:29.172960 2554 solver.cpp:244] Train net output #3: loss_stage1_L2 = 97.8904 (* 1 = 97.8904 loss) I0428 15:09:29.172968 2554 solver.cpp:244] Train net output #4: loss_stage2_L2 = 97.8904 (* 1 = 97.8904 loss) I0428 15:09:29.172976 2554 solver.cpp:244] Train net output #5: loss_stage3_L2 = 97.8904 (* 1 = 97.8904 loss) I0428 15:09:29.492501 2554 sgd_solver.cpp:106] Iteration 1600, lr = 8e-11

oujieww avatar Apr 28 '19 07:04 oujieww

hello, have you solved this question? my architecture is the same as you

SyGoing avatar May 16 '19 01:05 SyGoing

@SyGoing no , my finall loss is too big ,i still try to change lr .but ~~~~~,i have no idea ~~~~, how do u think about this?

oujieww avatar May 16 '19 02:05 oujieww

maybe the real architecture is only one L1 loss and L2 loss. I am trying it again !

SyGoing avatar May 16 '19 02:05 SyGoing

@SyGoing i think should have multi stage , i add normlize for net, my last problem is solved. but ~~~~finall loss is still too big~~~,and result is not good

oujieww avatar May 16 '19 02:05 oujieww

@SyGoing sorry not normlize, should be initialize

oujieww avatar May 16 '19 02:05 oujieww

yean ,like your architecture(4 stages L2 loss and 2 stages L1 loss, I use the vgg19 pretrained model to initialize the pose model , and the loss is changing smaller during training.

SyGoing avatar May 16 '19 07:05 SyGoing

@oujieww, hello. I want to train body_25 on my dataset too. And my question, how did you obtain your train model?

rafuck avatar May 23 '19 10:05 rafuck

Hi, @oujieww I wanna train body 25 model by this rep. I do not need feet keypoints, so I only modify the prototxt file like yours but with the 17-points coco data (download from this rep, 188G lmdb file). However, my new trained model can not detect any points. Can you give me some advice? I set the outputs of 'Mconv7_stage0_L1' and 'Mconv7_stage1_L1' as 19, I wonder why you set them to 21? I will get an error when I set them to 21.

wuxiaomin0110 avatar Jul 10 '19 03:07 wuxiaomin0110

How can I find models and papers about body25?

luqiang-guo avatar Sep 06 '19 11:09 luqiang-guo