├── README.md ├── matlab ├── multi_crop.m ├── places2_384_mean.mat ├── places2_mean.mat ├── test_mit67.m └── test_places2.m ├── models ├── kd_train │ ├── 256_object_kd_inception2_deploy.prototxt │ ├── 256_object_kd_inception2_solver.prototxt │ ├── 256_object_kd_inception2_train_val.prototxt │ ├── 256_scene_kd_inception2_deploy.prototxt │ ├── 256_scene_kd_inception2_solver.prototxt │ ├── 256_scene_kd_inception2_train_val.prototxt │ ├── 384_object_kd_inception2_deploy.prototxt │ ├── 384_object_kd_inception2_solver.prototxt │ ├── 384_object_kd_inception2_train_val.prototxt │ ├── 384_scene_kd_inception2_deploy.prototxt │ ├── 384_scene_kd_inception2_solver.prototxt │ └── 384_scene_kd_inception2_train_val.prototxt └── standard_train │ ├── 256_inception2_deploy.prototxt │ ├── 256_inception2_solver.prototxt │ ├── 256_inception2_train_val.prototxt │ ├── 384_inception2_deploy.prototxt │ ├── 384_inception2_solver.prototxt │ └── 384_inception2_train_val.prototxt └── scripts ├── 256_inception2_train.sh ├── 256_object_kd_inception2_train.sh ├── 256_scene_kd_inception2_train.sh ├── 384_inception2_train.sh ├── 384_object_kd_inception2_train.sh ├── 384_scene_kd_inception2_train.sh ├── get_init_models.sh └── get_reference_models.sh /README.md: -------------------------------------------------------------------------------- 1 | # Multi-Resolution CNNs for Large-Scale Scene Recognition 2 | Here we provide the code and models for the following paper ([Arxiv Preprint](https://arxiv.org/abs/1610.01119)): 3 | 4 | Knowledge Guided Disambiguation for Large-Scale Scene Classification with Multi-Resolution CNNs 5 | Limin Wang, Sheng Guo, Weilin Huang, Yuanjun Xiong, and Yu Qiao 6 | in IEEE Transactions on Image Processing, 2017 7 | 8 | 9 | ### Updates 10 | - February 21st, 2017 11 | * Release the code and models 12 | - January 3rd, 2017 13 | * Initialize the repo 14 | 15 | ### Overview 16 | We have made two efforts to exploit CNNs for large-scale scene recognition: 17 | - We design a modular framework to capture multi-level visual information for scene understanding by training CNNs from different resolutions 18 | - We propose a knowledge disambiguation strategy by using soft labels from extra networks to deal with the label ambiguity issue of scene recognition. 19 | 20 | These two efforts are the core part of team "SIAT_MMLAB" for the following large-scale scene recogntion challenges. 21 | 22 | | Challenge | Rank | Performance | 23 | |:-------------------:|:--------------:|:--------------:| 24 | | Places2 challenge 2015 | 2nd place | 0.1736 top5-error | 25 | | Places2 challenge 2016 | 4th place | 0.1042 top5-error | 26 | | LSUN challenge 2015 | 2nd place | 0.9030 top1-accuracy | 27 | | LSUN challenge 2016 | 1st place | 0.9161 top1-accuracy | 28 | 29 | ### Places365 Models 30 | We first release the learned models on the Places365 dataset. 31 | - Models learned at resolution of 256 * 256 32 | 33 | | Model | Top5 Error Rate | 34 | |:-------------------:|:--------------:| 35 | | (A0) Normal BN-Inception | 0.143 | 36 | | (A1) Normal BN-Inception + object networks | 0.141 | 37 | | (A2) Normal BN-Inception + scene networks | 0.134 | 38 | 39 | - Models learned at resolution of 384 * 384 40 | 41 | | Model | Top5 Error Rate | 42 | |:-------------------:|:--------------:| 43 | | (B0) Deeper BN-Inception | 0.140 | 44 | | (B1) Deeper BN-Inception + object networks | 0.136 | 45 | | (B2) Deeper BN-Inception + scene networks | 0.130 | 46 | 47 | - Download initialization and reference models 48 | 49 | We release the scripts at the directory of `scripts/`. 50 | 51 | Try `bash scripts/get_init_models.sh` to downdload knowldege models. 52 | 53 | Try `bash scripts/get_reference_models.sh` to download reference models. 54 | 55 | ### Testing Code 56 | We release the testing code on the Places365 validation dataset at the directory of `matlab/`. 57 | 58 | We also release a demo code to use our Places365 model as generic feature extraction and perform scene recognition on the MIT Indoor67 dataset at the directory of `matlab/`. 59 | 60 | ### Training Code 61 | We release the models at the directory of `models/` and the training scripts at the directory of `scripts/`. 62 | 63 | Try `bash scripts/256_inception2_train.sh` to train standard CNNs. 64 | 65 | Try `bash scripts/256_kd_object_inception2_train.sh` to train knowledge disambiguation networks (by object network). 66 | 67 | Try `bash scripts/256_kd_scene_inception2_train.sh` to train knowledge disambiguation netowrks (by scene network). 68 | 69 | The training code is based on our modified Caffe toolbox. It is a efficient parallel caffe with MPI implementation. Meanwhile, we implement a new kl-divergence loss layer for our knowledge disambiguation methods; 70 | 71 | https://github.com/yjxiong/caffe/tree/kd 72 | 73 | ### Questions 74 | Contact 75 | - [Limin Wang](http://wanglimin.github.io/) 76 | - [Sheng Guo](http://guoshengcv.github.io/) 77 | - [Weilin Huang](http://www.whuang.org/) 78 | 79 | -------------------------------------------------------------------------------- /matlab/multi_crop.m: -------------------------------------------------------------------------------- 1 | function crop_data = multi_crop(img_data, crop_num, crop_dim, dim) 2 | scale1 = size(img_data, 1); 3 | scale2 = size(img_data, 2); 4 | stride1 = (scale1 - crop_dim)/(crop_num - 1); 5 | stride2 = (scale2 - crop_dim)/(crop_num - 1); 6 | crop_data = zeros(dim, dim, 3, crop_num*crop_num, 'single'); 7 | cnt = 1; 8 | 9 | for i = 1:crop_num 10 | for j = 1:crop_num 11 | start1 = round((i-1)*stride1+1); 12 | if start1 > scale1-crop_dim+1 13 | start1 = scale1-crop_dim+1; 14 | end 15 | start2 = round((j-1)*stride2+1); 16 | if start2 > scale2-crop_dim+1 17 | start2 = scale2-crop_dim+1; 18 | end 19 | if crop_dim == dim 20 | crop_data(:,:,:,cnt) = img_data(start1:start1+crop_dim-1, start2:start2+crop_dim-1,:); 21 | else 22 | crop_data(:,:,:,cnt) = imresize(img_data(start1:start1+crop_dim-1, start2:start2+crop_dim-1,:), [dim, dim], 'bilinear'); 23 | end 24 | cnt = cnt + 1; 25 | end 26 | end 27 | 28 | crop_data = cat(4, crop_data, crop_data(end:-1:1,:,:,:)); 29 | 30 | end 31 | -------------------------------------------------------------------------------- /matlab/places2_384_mean.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanglimin/MRCNN-Scene-Recognition/554605e73b080771ed6d4abbaf2a3e0e509a89e2/matlab/places2_384_mean.mat -------------------------------------------------------------------------------- /matlab/places2_mean.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wanglimin/MRCNN-Scene-Recognition/554605e73b080771ed6d4abbaf2a3e0e509a89e2/matlab/places2_mean.mat -------------------------------------------------------------------------------- /matlab/test_mit67.m: -------------------------------------------------------------------------------- 1 | % demo code of feature extraction on the MIT67 dataset 2 | 3 | addpath ../caffe/matlab % path of matcaffe 4 | ind = 1:6700; 5 | 6 | scale = 256; 7 | crop_num = 3; 8 | crop_dim = 224; 9 | 10 | mkdir('mit67_result/'); 11 | file_name = 'mit67_result/256_inception2_feature.mat'; 12 | feature = zeros(1024, crop_num*crop_num*2*3, length(ind)); 13 | 14 | tmp=load('scene67_imagelist.mat'); 15 | file_list = tmp.imageList; 16 | 17 | d = load('places2_mean.mat'); 18 | IMAGE_MEAN = d.mean_data; 19 | if size(IMAGE_MEAN,1) ~= scale || size(IMAGE_MEAN,2) ~=scale 20 | IMAGE_MEAN = imresize(IMAGE_MEAN,[scale,scale]); 21 | end 22 | 23 | model_def_file = '../models/standard_train/256_inception2_deploy.prototxt'; 24 | model_file = '../models/places2_standard_256_inception2_v5.caffemodel'; 25 | gpu_id = 0; 26 | 27 | caffe.reset_all(); 28 | caffe.set_mode_gpu(); 29 | caffe.set_device(gpu_id); 30 | net = caffe.Net(model_def_file, model_file, 'test'); 31 | 32 | cnt = 1; 33 | for i = ind 34 | tic; 35 | im_data = imread(file_list{i}); % read image 36 | if size(im_data,3) ~=3 37 | im_data = cat(3, im_data, im_data, im_data); 38 | end 39 | im_data = im_data(:, :, [3, 2, 1]); % convert from RGB to BGR 40 | im_data = permute(im_data, [2, 1, 3]); % permute width and height 41 | im_data = single(im_data); % convert to single precision 42 | 43 | if size(im_data,1) ~= scale || size(im_data, 2) ~=scale 44 | im_data = imresize(im_data, [scale, scale], 'bilinear','AntiAliasing',false); 45 | end 46 | im_data = im_data - IMAGE_MEAN; 47 | 48 | 49 | crop_num = 3; crop_dim = scale*1; 50 | crop_data_1 = multi_crop(im_data, crop_num, crop_dim, 224); 51 | crop_num = 3; crop_dim = round(scale*0.9375); 52 | crop_data_2 = multi_crop(im_data, crop_num, crop_dim, 224); 53 | crop_num = 3; crop_dim = round(scale*0.875); 54 | crop_data_3 = multi_crop(im_data, crop_num, crop_dim, 224); 55 | crop_data = cat(4, crop_data_1, crop_data_2, crop_data_3); 56 | 57 | net.blobs('data').set_data(crop_data); 58 | net.forward_prefilled(); 59 | prediction = net.blobs('global_pool').get_data(); 60 | feature(:,:,cnt) = squeeze(prediction); 61 | cnt = cnt + 1; 62 | toc; 63 | end 64 | 65 | save(file_name, 'feature', '-v7.3'); 66 | 67 | -------------------------------------------------------------------------------- /matlab/test_places2.m: -------------------------------------------------------------------------------- 1 | % demo code of test on the Places2 validation set 2 | 3 | addpath ../caffe/matlab 4 | 5 | IMAGE_DIM = 256; 6 | CROPPED_DIM = 224; 7 | 8 | midir('places2_result/') 9 | file_name = 'places2/val_result.mat'; 10 | score = zeros(365, 10, length(ind)); 11 | val_file = 'places365_val.txt'; 12 | val_path = '/nfs_data/share/data/Places365/High_Resolution/val_large/'; 13 | tmp = importdata(val_file); 14 | file_list = tmp.textdata; 15 | ind = 1:36500; 16 | 17 | model_def_file = '../models/standard_train/256_inception2_deploy.prototxt'; 18 | model_file = '../models/places2_standard_256_inception2_v5.caffemodel'; 19 | gpu_id = 0; 20 | caffe.reset_all(); 21 | caffe.set_mode_gpu(); 22 | caffe.set_device(gpu_id); 23 | net = caffe.Net(model_def_file, model_file, 'test'); 24 | 25 | cnt = 1; 26 | for i = ind 27 | tic; 28 | im_data = imread([val_path,file_list{i}]); % read image 29 | if size(im_data,3) ~=3 30 | im_data = cat(3, im_data, im_data, im_data); 31 | end 32 | im_data = im_data(:, :, [3, 2, 1]); % convert from RGB to BGR 33 | im_data = permute(im_data, [2, 1, 3]); % permute width and height 34 | im_data = single(im_data); % convert to single precision 35 | 36 | if size(im_data,1) ~= IMAGE_DIM || size(im_data, 2) ~= IMAGE_DIM 37 | im_data = imresize(im_data, [IMAGE_DIM , IMAGE_DIM ], 'bilinear','AntiAliasing',false); 38 | 39 | end 40 | im_data = bsxfun(@minus, im_data, reshape([105, 113, 116], [1,1,3])); 41 | crops_data = zeros(CROPPED_DIM, CROPPED_DIM, 3, 10, 'single'); 42 | indices = [0 IMAGE_DIM-CROPPED_DIM] + 1; 43 | n = 1; 44 | for k = indices 45 | for j = indices 46 | crops_data(:, :, :, n) = im_data(k:k+CROPPED_DIM-1, j:j+CROPPED_DIM-1, :); 47 | crops_data(:, :, :, n+5) = crops_data(end:-1:1, :, :, n); 48 | n = n + 1; 49 | end 50 | end 51 | center = floor(indices(2) / 2) + 1; 52 | crops_data(:,:,:,5) = ... 53 | im_data(center:center+CROPPED_DIM-1,center:center+CROPPED_DIM-1,:); 54 | crops_data(:,:,:,10) = crops_data(end:-1:1, :, :, 5); 55 | 56 | net.blobs('data').set_data(crops_data); 57 | net.forward_prefilled(); 58 | prediction = net.blobs('fc').get_data(); 59 | score(:,:,cnt) = prediction; 60 | cnt = cnt + 1; 61 | toc; 62 | end 63 | 64 | score = score(:,:,1:cnt-1); 65 | score = exp(score); 66 | score = bsxfun(@rdivide, score, sum(score, 1)); 67 | score = squeeze(mean(score,2)); 68 | save(file_name, 'score', '-v7.3'); 69 | 70 | -------------------------------------------------------------------------------- /models/kd_train/256_object_kd_inception2_deploy.prototxt: -------------------------------------------------------------------------------- 1 | name: "Inception2_256_kd" 2 | input: "data" 3 | input_dim: [1, 3, 224, 224] 4 | 5 | ####################################### s-conv1 ####################################### 6 | layer { name: "s-conv1/7x7_s2" type: "Convolution" bottom: "data" top: "s-conv1/7x7_s2" 7 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 8 | convolution_param { num_output: 64 pad: 3 kernel_size: 7 stride: 2 9 | weight_filler { type: "xavier" } 10 | bias_filler { type: "constant" value: 0.2 } } } 11 | layer { name: "s-conv1/7x7_s2_bn" type: "BN" bottom: "s-conv1/7x7_s2" top: "s-conv1/7x7_s2_bn" 12 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 13 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 14 | layer { name: "s-conv1/relu_7x7" type: "ReLU" bottom: "s-conv1/7x7_s2_bn" top: "s-conv1/7x7_s2_bn" } 15 | layer { name: "s-pool1/3x3_s2" type: "Pooling" bottom: "s-conv1/7x7_s2_bn" top: "s-pool1/3x3_s2" 16 | pooling_param { pool: MAX kernel_size: 3 stride: 2 } } 17 | 18 | ####################################### s-conv2 ####################################### 19 | layer { name: "s-conv2/3x3_reduce" type: "Convolution" bottom: "s-pool1/3x3_s2" top: "s-conv2/3x3_reduce" 20 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 21 | convolution_param { num_output: 64 kernel_size: 1 22 | weight_filler { type: "xavier"} 23 | bias_filler { type: "constant" value: 0.2 } } } 24 | layer { name: "s-conv2/3x3_reduce_bn" type: "BN" bottom: "s-conv2/3x3_reduce" top: "s-conv2/3x3_reduce_bn" 25 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 26 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 27 | layer { name: "s-conv2/relu_3x3_reduce" type: "ReLU" bottom: "s-conv2/3x3_reduce_bn" top: "s-conv2/3x3_reduce_bn" } 28 | layer { name: "s-conv2/3x3" type: "Convolution" bottom: "s-conv2/3x3_reduce_bn" top: "s-conv2/3x3" 29 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 30 | convolution_param { num_output: 192 pad: 1 kernel_size: 3 31 | weight_filler { type: "xavier"} 32 | bias_filler { type: "constant" value: 0.2 } } } 33 | layer { name: "s-conv2/3x3_bn" type: "BN" bottom: "s-conv2/3x3" top: "s-conv2/3x3_bn" 34 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 35 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 36 | layer { name: "s-conv2/relu_3x3" type: "ReLU" bottom: "s-conv2/3x3_bn" top: "s-conv2/3x3_bn" } 37 | layer { name: "s-pool2/3x3_s2" type: "Pooling" bottom: "s-conv2/3x3_bn" top: "s-pool2/3x3_s2" 38 | pooling_param { pool: MAX kernel_size: 3 stride: 2 } } 39 | 40 | ####################################### s-inception_3a ####################################### 41 | layer { name: "s-inception_3a/1x1" type: "Convolution" bottom: "s-pool2/3x3_s2" top: "s-inception_3a/1x1" 42 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 43 | convolution_param { num_output: 64 kernel_size: 1 44 | weight_filler { type: "xavier"} 45 | bias_filler { type: "constant" value: 0.2 } } } 46 | layer { name: "s-inception_3a/1x1_bn" type: "BN" bottom: "s-inception_3a/1x1" top: "s-inception_3a/1x1_bn" 47 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 48 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 49 | layer { name: "s-inception_3a/relu_1x1" type: "ReLU" bottom: "s-inception_3a/1x1_bn" top: "s-inception_3a/1x1_bn" } 50 | layer { name: "s-inception_3a/3x3_reduce" type: "Convolution" bottom: "s-pool2/3x3_s2" top: "s-inception_3a/3x3_reduce" 51 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 52 | convolution_param { num_output: 64 kernel_size: 1 53 | weight_filler { type: "xavier"} 54 | bias_filler { type: "constant" value: 0.2 } } } 55 | layer { name: "s-inception_3a/3x3_reduce_bn" type: "BN" bottom: "s-inception_3a/3x3_reduce" top: "s-inception_3a/3x3_reduce_bn" 56 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 57 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 58 | layer { name: "s-inception_3a/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_3a/3x3_reduce_bn" top: "s-inception_3a/3x3_reduce_bn" } 59 | layer { name: "s-inception_3a/3x3" type: "Convolution" bottom: "s-inception_3a/3x3_reduce_bn" top: "s-inception_3a/3x3" 60 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 61 | convolution_param { num_output: 64 pad: 1 kernel_size: 3 62 | weight_filler { type: "xavier" } 63 | bias_filler { type: "constant" value: 0.2 } } } 64 | layer { name: "s-inception_3a/3x3_bn" type: "BN" bottom: "s-inception_3a/3x3" top: "s-inception_3a/3x3_bn" 65 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 66 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 67 | layer { name: "s-inception_3a/relu_3x3" type: "ReLU" bottom: "s-inception_3a/3x3_bn" top: "s-inception_3a/3x3_bn" } 68 | layer { name: "s-inception_3a/double_3x3_reduce" type: "Convolution" bottom: "s-pool2/3x3_s2" top: "s-inception_3a/double_3x3_reduce" 69 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 70 | convolution_param { num_output: 64 kernel_size: 1 71 | weight_filler { type: "xavier" } 72 | bias_filler { type: "constant" value: 0.2 } } } 73 | layer { name: "s-inception_3a/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_3a/double_3x3_reduce" top: "s-inception_3a/double_3x3_reduce_bn" 74 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 75 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 76 | layer { name: "s-inception_3a/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_3a/double_3x3_reduce_bn" top: "s-inception_3a/double_3x3_reduce_bn" } 77 | layer { name: "s-inception_3a/double_3x3_1" type: "Convolution" bottom: "s-inception_3a/double_3x3_reduce_bn" top: "s-inception_3a/double_3x3_1" 78 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 79 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 80 | weight_filler { type: "xavier"} 81 | bias_filler { type: "constant" value: 0.2 } } } 82 | layer { name: "s-inception_3a/double_3x3_1_bn" type: "BN" bottom: "s-inception_3a/double_3x3_1" top: "s-inception_3a/double_3x3_1_bn" 83 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 84 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 85 | layer { name: "s-inception_3a/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_3a/double_3x3_1_bn" top: "s-inception_3a/double_3x3_1_bn" } 86 | layer { name: "s-inception_3a/double_3x3_2" type: "Convolution" bottom: "s-inception_3a/double_3x3_1_bn" top: "s-inception_3a/double_3x3_2" 87 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 88 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 89 | weight_filler { type: "xavier"} 90 | bias_filler { type: "constant" value: 0.2 } } } 91 | layer { name: "s-inception_3a/double_3x3_2_bn" type: "BN" bottom: "s-inception_3a/double_3x3_2" top: "s-inception_3a/double_3x3_2_bn" 92 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 93 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 94 | layer { name: "s-inception_3a/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_3a/double_3x3_2_bn" top: "s-inception_3a/double_3x3_2_bn" } 95 | layer { name: "s-inception_3a/pool" type: "Pooling" bottom: "s-pool2/3x3_s2" top: "s-inception_3a/pool" 96 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 97 | layer { name: "s-inception_3a/pool_proj" type: "Convolution" bottom: "s-inception_3a/pool" top: "s-inception_3a/pool_proj" 98 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 99 | convolution_param { num_output: 32 kernel_size: 1 100 | weight_filler { type: "xavier" } 101 | bias_filler { type: "constant" value: 0.2 } } } 102 | layer { name: "s-inception_3a/pool_proj_bn" type: "BN" bottom: "s-inception_3a/pool_proj" top: "s-inception_3a/pool_proj_bn" 103 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 104 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 105 | layer { name: "s-inception_3a/relu_pool_proj" type: "ReLU" bottom: "s-inception_3a/pool_proj_bn" top: "s-inception_3a/pool_proj_bn" } 106 | layer { name: "s-inception_3a/output" type: "Concat" 107 | bottom: "s-inception_3a/1x1_bn" 108 | bottom: "s-inception_3a/3x3_bn" 109 | bottom: "s-inception_3a/double_3x3_2_bn" 110 | bottom: "s-inception_3a/pool_proj_bn" 111 | top: "s-inception_3a/output" } 112 | 113 | 114 | ####################################### s-inception_3b ####################################### 115 | layer { name: "s-inception_3b/1x1" type: "Convolution" bottom: "s-inception_3a/output" top: "s-inception_3b/1x1" 116 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 117 | convolution_param { num_output: 64 kernel_size: 1 118 | weight_filler { type: "xavier"} 119 | bias_filler { type: "constant" value: 0.2 } } } 120 | layer { name: "s-inception_3b/1x1_bn" type: "BN" bottom: "s-inception_3b/1x1" top: "s-inception_3b/1x1_bn" 121 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 122 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 123 | layer { name: "s-inception_3b/relu_1x1" type: "ReLU" bottom: "s-inception_3b/1x1_bn" top: "s-inception_3b/1x1_bn" } 124 | layer { name: "s-inception_3b/3x3_reduce" type: "Convolution" bottom: "s-inception_3a/output" top: "s-inception_3b/3x3_reduce" 125 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 126 | convolution_param { num_output: 64 kernel_size: 1 127 | weight_filler { type: "xavier"} 128 | bias_filler { type: "constant" value: 0.2 } } } 129 | layer { name: "s-inception_3b/3x3_reduce_bn" type: "BN" bottom: "s-inception_3b/3x3_reduce" top: "s-inception_3b/3x3_reduce_bn" 130 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 131 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 132 | layer { name: "s-inception_3b/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_3b/3x3_reduce_bn" top: "s-inception_3b/3x3_reduce_bn" } 133 | layer { name: "s-inception_3b/3x3" type: "Convolution" bottom: "s-inception_3b/3x3_reduce_bn" top: "s-inception_3b/3x3" 134 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 135 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 136 | weight_filler { type: "xavier" } 137 | bias_filler { type: "constant" value: 0.2 } } } 138 | layer { name: "s-inception_3b/3x3_bn" type: "BN" bottom: "s-inception_3b/3x3" top: "s-inception_3b/3x3_bn" 139 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 140 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 141 | layer { name: "s-inception_3b/relu_3x3" type: "ReLU" bottom: "s-inception_3b/3x3_bn" top: "s-inception_3b/3x3_bn" } 142 | layer { name: "s-inception_3b/double_3x3_reduce" type: "Convolution" bottom: "s-inception_3a/output" top: "s-inception_3b/double_3x3_reduce" 143 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 144 | convolution_param { num_output: 64 kernel_size: 1 145 | weight_filler { type: "xavier" } 146 | bias_filler { type: "constant" value: 0.2 } } } 147 | layer { name: "s-inception_3b/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_3b/double_3x3_reduce" top: "s-inception_3b/double_3x3_reduce_bn" 148 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 149 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 150 | layer { name: "s-inception_3b/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_3b/double_3x3_reduce_bn" top: "s-inception_3b/double_3x3_reduce_bn" } 151 | layer { name: "s-inception_3b/double_3x3_1" type: "Convolution" bottom: "s-inception_3b/double_3x3_reduce_bn" top: "s-inception_3b/double_3x3_1" 152 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 153 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 154 | weight_filler { type: "xavier"} 155 | bias_filler { type: "constant" value: 0.2 } } } 156 | layer { name: "s-inception_3b/double_3x3_1_bn" type: "BN" bottom: "s-inception_3b/double_3x3_1" top: "s-inception_3b/double_3x3_1_bn" 157 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 158 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 159 | layer { name: "s-inception_3b/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_3b/double_3x3_1_bn" top: "s-inception_3b/double_3x3_1_bn" } 160 | layer { name: "s-inception_3b/double_3x3_2" type: "Convolution" bottom: "s-inception_3b/double_3x3_1_bn" top: "s-inception_3b/double_3x3_2" 161 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 162 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 163 | weight_filler { type: "xavier"} 164 | bias_filler { type: "constant" value: 0.2 } } } 165 | layer { name: "s-inception_3b/double_3x3_2_bn" type: "BN" bottom: "s-inception_3b/double_3x3_2" top: "s-inception_3b/double_3x3_2_bn" 166 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 167 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 168 | layer { name: "s-inception_3b/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_3b/double_3x3_2_bn" top: "s-inception_3b/double_3x3_2_bn" } 169 | layer { name: "s-inception_3b/pool" type: "Pooling" bottom: "s-inception_3a/output" top: "s-inception_3b/pool" 170 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 171 | layer { name: "s-inception_3b/pool_proj" type: "Convolution" bottom: "s-inception_3b/pool" top: "s-inception_3b/pool_proj" 172 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 173 | convolution_param { num_output: 64 kernel_size: 1 174 | weight_filler { type: "xavier" } 175 | bias_filler { type: "constant" value: 0.2 } } } 176 | layer { name: "s-inception_3b/pool_proj_bn" type: "BN" bottom: "s-inception_3b/pool_proj" top: "s-inception_3b/pool_proj_bn" 177 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 178 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 179 | layer { name: "s-inception_3b/relu_pool_proj" type: "ReLU" bottom: "s-inception_3b/pool_proj_bn" top: "s-inception_3b/pool_proj_bn" } 180 | layer { name: "s-inception_3b/output" type: "Concat" 181 | bottom: "s-inception_3b/1x1_bn" 182 | bottom: "s-inception_3b/3x3_bn" 183 | bottom: "s-inception_3b/double_3x3_2_bn" 184 | bottom: "s-inception_3b/pool_proj_bn" 185 | top: "s-inception_3b/output" } 186 | 187 | ####################################### s-inception_3c ####################################### 188 | layer { name: "s-inception_3c/3x3_reduce" type: "Convolution" bottom: "s-inception_3b/output" top: "s-inception_3c/3x3_reduce" 189 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 190 | convolution_param { num_output: 128 kernel_size: 1 191 | weight_filler { type: "xavier"} 192 | bias_filler { type: "constant" value: 0.2 } } } 193 | layer { name: "s-inception_3c/3x3_reduce_bn" type: "BN" bottom: "s-inception_3c/3x3_reduce" top: "s-inception_3c/3x3_reduce_bn" 194 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 195 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 196 | layer { name: "s-inception_3c/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_3c/3x3_reduce_bn" top: "s-inception_3c/3x3_reduce_bn" } 197 | layer { name: "s-inception_3c/3x3" type: "Convolution" bottom: "s-inception_3c/3x3_reduce_bn" top: "s-inception_3c/3x3" 198 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 199 | convolution_param { num_output: 160 pad: 1 kernel_size: 3 stride: 2 200 | weight_filler { type: "xavier" } 201 | bias_filler { type: "constant" value: 0.2 } } } 202 | layer { name: "s-inception_3c/3x3_bn" type: "BN" bottom: "s-inception_3c/3x3" top: "s-inception_3c/3x3_bn" 203 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 204 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 205 | layer { name: "s-inception_3c/relu_3x3" type: "ReLU" bottom: "s-inception_3c/3x3_bn" top: "s-inception_3c/3x3_bn" } 206 | layer { name: "s-inception_3c/double_3x3_reduce" type: "Convolution" bottom: "s-inception_3b/output" top: "s-inception_3c/double_3x3_reduce" 207 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 208 | convolution_param { num_output: 64 kernel_size: 1 209 | weight_filler { type: "xavier" } 210 | bias_filler { type: "constant" value: 0.2 } } } 211 | layer { name: "s-inception_3c/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_3c/double_3x3_reduce" top: "s-inception_3c/double_3x3_reduce_bn" 212 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 213 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 214 | layer { name: "s-inception_3c/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_3c/double_3x3_reduce_bn" top: "s-inception_3c/double_3x3_reduce_bn" } 215 | layer { name: "s-inception_3c/double_3x3_1" type: "Convolution" bottom: "s-inception_3c/double_3x3_reduce_bn" top: "s-inception_3c/double_3x3_1" 216 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 217 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 218 | weight_filler { type: "xavier"} 219 | bias_filler { type: "constant" value: 0.2 } } } 220 | layer { name: "s-inception_3c/double_3x3_1_bn" type: "BN" bottom: "s-inception_3c/double_3x3_1" top: "s-inception_3c/double_3x3_1_bn" 221 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 222 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 223 | layer { name: "s-inception_3c/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_3c/double_3x3_1_bn" top: "s-inception_3c/double_3x3_1_bn" } 224 | layer { name: "s-inception_3c/double_3x3_2" type: "Convolution" bottom: "s-inception_3c/double_3x3_1_bn" top: "s-inception_3c/double_3x3_2" 225 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 226 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 stride: 2 227 | weight_filler { type: "xavier"} 228 | bias_filler { type: "constant" value: 0.2 } } } 229 | layer { name: "s-inception_3c/double_3x3_2_bn" type: "BN" bottom: "s-inception_3c/double_3x3_2" top: "s-inception_3c/double_3x3_2_bn" 230 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 231 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 232 | layer { name: "s-inception_3c/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_3c/double_3x3_2_bn" top: "s-inception_3c/double_3x3_2_bn" } 233 | layer { name: "s-inception_3c/pool" type: "Pooling" bottom: "s-inception_3b/output" top: "s-inception_3c/pool" 234 | pooling_param { pool: MAX kernel_size: 3 stride: 2 } } 235 | layer { name: "s-inception_3c/output" type: "Concat" 236 | bottom: "s-inception_3c/3x3_bn" 237 | bottom: "s-inception_3c/double_3x3_2_bn" 238 | bottom: "s-inception_3c/pool" 239 | top: "s-inception_3c/output" } 240 | 241 | ####################################### s-inception_4a ####################################### 242 | layer { name: "s-inception_4a/1x1" type: "Convolution" bottom: "s-inception_3c/output" top: "s-inception_4a/1x1" 243 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 244 | convolution_param { num_output: 224 kernel_size: 1 245 | weight_filler { type: "xavier"} 246 | bias_filler { type: "constant" value: 0.2 } } } 247 | layer { name: "s-inception_4a/1x1_bn" type: "BN" bottom: "s-inception_4a/1x1" top: "s-inception_4a/1x1_bn" 248 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 249 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 250 | layer { name: "s-inception_4a/relu_1x1" type: "ReLU" bottom: "s-inception_4a/1x1_bn" top: "s-inception_4a/1x1_bn" } 251 | layer { name: "s-inception_4a/3x3_reduce" type: "Convolution" bottom: "s-inception_3c/output" top: "s-inception_4a/3x3_reduce" 252 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 253 | convolution_param { num_output: 64 kernel_size: 1 254 | weight_filler { type: "xavier"} 255 | bias_filler { type: "constant" value: 0.2 } } } 256 | layer { name: "s-inception_4a/3x3_reduce_bn" type: "BN" bottom: "s-inception_4a/3x3_reduce" top: "s-inception_4a/3x3_reduce_bn" 257 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 258 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 259 | layer { name: "s-inception_4a/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_4a/3x3_reduce_bn" top: "s-inception_4a/3x3_reduce_bn" } 260 | layer { name: "s-inception_4a/3x3" type: "Convolution" bottom: "s-inception_4a/3x3_reduce_bn" top: "s-inception_4a/3x3" 261 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 262 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 263 | weight_filler { type: "xavier" } 264 | bias_filler { type: "constant" value: 0.2 } } } 265 | layer { name: "s-inception_4a/3x3_bn" type: "BN" bottom: "s-inception_4a/3x3" top: "s-inception_4a/3x3_bn" 266 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 267 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 268 | layer { name: "s-inception_4a/relu_3x3" type: "ReLU" bottom: "s-inception_4a/3x3_bn" top: "s-inception_4a/3x3_bn" } 269 | layer { name: "s-inception_4a/double_3x3_reduce" type: "Convolution" bottom: "s-inception_3c/output" top: "s-inception_4a/double_3x3_reduce" 270 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 271 | convolution_param { num_output: 96 kernel_size: 1 272 | weight_filler { type: "xavier" } 273 | bias_filler { type: "constant" value: 0.2 } } } 274 | layer { name: "s-inception_4a/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_4a/double_3x3_reduce" top: "s-inception_4a/double_3x3_reduce_bn" 275 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 276 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 277 | layer { name: "s-inception_4a/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_4a/double_3x3_reduce_bn" top: "s-inception_4a/double_3x3_reduce_bn" } 278 | layer { name: "s-inception_4a/double_3x3_1" type: "Convolution" bottom: "s-inception_4a/double_3x3_reduce_bn" top: "s-inception_4a/double_3x3_1" 279 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 280 | convolution_param { num_output: 128 pad: 1 kernel_size: 3 281 | weight_filler { type: "xavier"} 282 | bias_filler { type: "constant" value: 0.2 } } } 283 | layer { name: "s-inception_4a/double_3x3_1_bn" type: "BN" bottom: "s-inception_4a/double_3x3_1" top: "s-inception_4a/double_3x3_1_bn" 284 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 285 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 286 | layer { name: "s-inception_4a/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_4a/double_3x3_1_bn" top: "s-inception_4a/double_3x3_1_bn" } 287 | layer { name: "s-inception_4a/double_3x3_2" type: "Convolution" bottom: "s-inception_4a/double_3x3_1_bn" top: "s-inception_4a/double_3x3_2" 288 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 289 | convolution_param { num_output: 128 pad: 1 kernel_size: 3 290 | weight_filler { type: "xavier"} 291 | bias_filler { type: "constant" value: 0.2 } } } 292 | layer { name: "s-inception_4a/double_3x3_2_bn" type: "BN" bottom: "s-inception_4a/double_3x3_2" top: "s-inception_4a/double_3x3_2_bn" 293 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 294 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 295 | layer { name: "s-inception_4a/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_4a/double_3x3_2_bn" top: "s-inception_4a/double_3x3_2_bn" } 296 | layer { name: "s-inception_4a/pool" type: "Pooling" bottom: "s-inception_3c/output" top: "s-inception_4a/pool" 297 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 298 | layer { name: "s-inception_4a/pool_proj" type: "Convolution" bottom: "s-inception_4a/pool" top: "s-inception_4a/pool_proj" 299 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 300 | convolution_param { num_output: 128 kernel_size: 1 301 | weight_filler { type: "xavier" } 302 | bias_filler { type: "constant" value: 0.2 } } } 303 | layer { name: "s-inception_4a/pool_proj_bn" type: "BN" bottom: "s-inception_4a/pool_proj" top: "s-inception_4a/pool_proj_bn" 304 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 305 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 306 | layer { name: "s-inception_4a/relu_pool_proj" type: "ReLU" bottom: "s-inception_4a/pool_proj_bn" top: "s-inception_4a/pool_proj_bn" } 307 | layer { name: "s-inception_4a/output" type: "Concat" 308 | bottom: "s-inception_4a/1x1_bn" 309 | bottom: "s-inception_4a/3x3_bn" 310 | bottom: "s-inception_4a/double_3x3_2_bn" 311 | bottom: "s-inception_4a/pool_proj_bn" 312 | top: "s-inception_4a/output" } 313 | 314 | ####################################### s-inception_4b ####################################### 315 | layer { name: "s-inception_4b/1x1" type: "Convolution" bottom: "s-inception_4a/output" top: "s-inception_4b/1x1" 316 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 317 | convolution_param { num_output: 192 kernel_size: 1 318 | weight_filler { type: "xavier"} 319 | bias_filler { type: "constant" value: 0.2 } } } 320 | layer { name: "s-inception_4b/1x1_bn" type: "BN" bottom: "s-inception_4b/1x1" top: "s-inception_4b/1x1_bn" 321 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 322 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 323 | layer { name: "s-inception_4b/relu_1x1" type: "ReLU" bottom: "s-inception_4b/1x1_bn" top: "s-inception_4b/1x1_bn" } 324 | layer { name: "s-inception_4b/3x3_reduce" type: "Convolution" bottom: "s-inception_4a/output" top: "s-inception_4b/3x3_reduce" 325 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 326 | convolution_param { num_output: 96 kernel_size: 1 327 | weight_filler { type: "xavier"} 328 | bias_filler { type: "constant" value: 0.2 } } } 329 | layer { name: "s-inception_4b/3x3_reduce_bn" type: "BN" bottom: "s-inception_4b/3x3_reduce" top: "s-inception_4b/3x3_reduce_bn" 330 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 331 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 332 | layer { name: "s-inception_4b/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_4b/3x3_reduce_bn" top: "s-inception_4b/3x3_reduce_bn" } 333 | layer { name: "s-inception_4b/3x3" type: "Convolution" bottom: "s-inception_4b/3x3_reduce_bn" top: "s-inception_4b/3x3" 334 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 335 | convolution_param { num_output: 128 pad: 1 kernel_size: 3 336 | weight_filler { type: "xavier" } 337 | bias_filler { type: "constant" value: 0.2 } } } 338 | layer { name: "s-inception_4b/3x3_bn" type: "BN" bottom: "s-inception_4b/3x3" top: "s-inception_4b/3x3_bn" 339 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 340 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 341 | layer { name: "s-inception_4b/relu_3x3" type: "ReLU" bottom: "s-inception_4b/3x3_bn" top: "s-inception_4b/3x3_bn" } 342 | layer { name: "s-inception_4b/double_3x3_reduce" type: "Convolution" bottom: "s-inception_4a/output" top: "s-inception_4b/double_3x3_reduce" 343 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 344 | convolution_param { num_output: 96 kernel_size: 1 345 | weight_filler { type: "xavier" } 346 | bias_filler { type: "constant" value: 0.2 } } } 347 | layer { name: "s-inception_4b/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_4b/double_3x3_reduce" top: "s-inception_4b/double_3x3_reduce_bn" 348 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 349 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 350 | layer { name: "s-inception_4b/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_4b/double_3x3_reduce_bn" top: "s-inception_4b/double_3x3_reduce_bn" } 351 | layer { name: "s-inception_4b/double_3x3_1" type: "Convolution" bottom: "s-inception_4b/double_3x3_reduce_bn" top: "s-inception_4b/double_3x3_1" 352 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 353 | convolution_param { num_output: 128 pad: 1 kernel_size: 3 354 | weight_filler { type: "xavier"} 355 | bias_filler { type: "constant" value: 0.2 } } } 356 | layer { name: "s-inception_4b/double_3x3_1_bn" type: "BN" bottom: "s-inception_4b/double_3x3_1" top: "s-inception_4b/double_3x3_1_bn" 357 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 358 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 359 | layer { name: "s-inception_4b/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_4b/double_3x3_1_bn" top: "s-inception_4b/double_3x3_1_bn" } 360 | layer { name: "s-inception_4b/double_3x3_2" type: "Convolution" bottom: "s-inception_4b/double_3x3_1_bn" top: "s-inception_4b/double_3x3_2" 361 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 362 | convolution_param { num_output: 128 pad: 1 kernel_size: 3 363 | weight_filler { type: "xavier"} 364 | bias_filler { type: "constant" value: 0.2 } } } 365 | layer { name: "s-inception_4b/double_3x3_2_bn" type: "BN" bottom: "s-inception_4b/double_3x3_2" top: "s-inception_4b/double_3x3_2_bn" 366 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 367 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 368 | layer { name: "s-inception_4b/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_4b/double_3x3_2_bn" top: "s-inception_4b/double_3x3_2_bn" } 369 | layer { name: "s-inception_4b/pool" type: "Pooling" bottom: "s-inception_4a/output" top: "s-inception_4b/pool" 370 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 371 | layer { name: "s-inception_4b/pool_proj" type: "Convolution" bottom: "s-inception_4b/pool" top: "s-inception_4b/pool_proj" 372 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 373 | convolution_param { num_output: 128 kernel_size: 1 374 | weight_filler { type: "xavier" } 375 | bias_filler { type: "constant" value: 0.2 } } } 376 | layer { name: "s-inception_4b/pool_proj_bn" type: "BN" bottom: "s-inception_4b/pool_proj" top: "s-inception_4b/pool_proj_bn" 377 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 378 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 379 | layer { name: "s-inception_4b/relu_pool_proj" type: "ReLU" bottom: "s-inception_4b/pool_proj_bn" top: "s-inception_4b/pool_proj_bn" } 380 | layer { name: "s-inception_4b/output" type: "Concat" 381 | bottom: "s-inception_4b/1x1_bn" 382 | bottom: "s-inception_4b/3x3_bn" 383 | bottom: "s-inception_4b/double_3x3_2_bn" 384 | bottom: "s-inception_4b/pool_proj_bn" 385 | top: "s-inception_4b/output" } 386 | 387 | ####################################### s-inception_4c ####################################### 388 | layer { name: "s-inception_4c/1x1" type: "Convolution" bottom: "s-inception_4b/output" top: "s-inception_4c/1x1" 389 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 390 | convolution_param { num_output: 160 kernel_size: 1 391 | weight_filler { type: "xavier"} 392 | bias_filler { type: "constant" value: 0.2 } } } 393 | layer { name: "s-inception_4c/1x1_bn" type: "BN" bottom: "s-inception_4c/1x1" top: "s-inception_4c/1x1_bn" 394 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 395 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 396 | layer { name: "s-inception_4c/relu_1x1" type: "ReLU" bottom: "s-inception_4c/1x1_bn" top: "s-inception_4c/1x1_bn" } 397 | layer { name: "s-inception_4c/3x3_reduce" type: "Convolution" bottom: "s-inception_4b/output" top: "s-inception_4c/3x3_reduce" 398 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 399 | convolution_param { num_output: 128 kernel_size: 1 400 | weight_filler { type: "xavier"} 401 | bias_filler { type: "constant" value: 0.2 } } } 402 | layer { name: "s-inception_4c/3x3_reduce_bn" type: "BN" bottom: "s-inception_4c/3x3_reduce" top: "s-inception_4c/3x3_reduce_bn" 403 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 404 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 405 | layer { name: "s-inception_4c/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_4c/3x3_reduce_bn" top: "s-inception_4c/3x3_reduce_bn" } 406 | layer { name: "s-inception_4c/3x3" type: "Convolution" bottom: "s-inception_4c/3x3_reduce_bn" top: "s-inception_4c/3x3" 407 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 408 | convolution_param { num_output: 160 pad: 1 kernel_size: 3 409 | weight_filler { type: "xavier" } 410 | bias_filler { type: "constant" value: 0.2 } } } 411 | layer { name: "s-inception_4c/3x3_bn" type: "BN" bottom: "s-inception_4c/3x3" top: "s-inception_4c/3x3_bn" 412 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 413 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 414 | layer { name: "s-inception_4c/relu_3x3" type: "ReLU" bottom: "s-inception_4c/3x3_bn" top: "s-inception_4c/3x3_bn" } 415 | layer { name: "s-inception_4c/double_3x3_reduce" type: "Convolution" bottom: "s-inception_4b/output" top: "s-inception_4c/double_3x3_reduce" 416 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 417 | convolution_param { num_output: 128 kernel_size: 1 418 | weight_filler { type: "xavier" } 419 | bias_filler { type: "constant" value: 0.2 } } } 420 | layer { name: "s-inception_4c/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_4c/double_3x3_reduce" top: "s-inception_4c/double_3x3_reduce_bn" 421 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 422 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 423 | layer { name: "s-inception_4c/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_4c/double_3x3_reduce_bn" top: "s-inception_4c/double_3x3_reduce_bn" } 424 | layer { name: "s-inception_4c/double_3x3_1" type: "Convolution" bottom: "s-inception_4c/double_3x3_reduce_bn" top: "s-inception_4c/double_3x3_1" 425 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 426 | convolution_param { num_output: 160 pad: 1 kernel_size: 3 427 | weight_filler { type: "xavier"} 428 | bias_filler { type: "constant" value: 0.2 } } } 429 | layer { name: "s-inception_4c/double_3x3_1_bn" type: "BN" bottom: "s-inception_4c/double_3x3_1" top: "s-inception_4c/double_3x3_1_bn" 430 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 431 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 432 | layer { name: "s-inception_4c/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_4c/double_3x3_1_bn" top: "s-inception_4c/double_3x3_1_bn" } 433 | layer { name: "s-inception_4c/double_3x3_2" type: "Convolution" bottom: "s-inception_4c/double_3x3_1_bn" top: "s-inception_4c/double_3x3_2" 434 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 435 | convolution_param { num_output: 160 pad: 1 kernel_size: 3 436 | weight_filler { type: "xavier"} 437 | bias_filler { type: "constant" value: 0.2 } } } 438 | layer { name: "s-inception_4c/double_3x3_2_bn" type: "BN" bottom: "s-inception_4c/double_3x3_2" top: "s-inception_4c/double_3x3_2_bn" 439 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 440 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 441 | layer { name: "s-inception_4c/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_4c/double_3x3_2_bn" top: "s-inception_4c/double_3x3_2_bn" } 442 | layer { name: "s-inception_4c/pool" type: "Pooling" bottom: "s-inception_4b/output" top: "s-inception_4c/pool" 443 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 444 | layer { name: "s-inception_4c/pool_proj" type: "Convolution" bottom: "s-inception_4c/pool" top: "s-inception_4c/pool_proj" 445 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 446 | convolution_param { num_output: 128 kernel_size: 1 447 | weight_filler { type: "xavier" } 448 | bias_filler { type: "constant" value: 0.2 } } } 449 | layer { name: "s-inception_4c/pool_proj_bn" type: "BN" bottom: "s-inception_4c/pool_proj" top: "s-inception_4c/pool_proj_bn" 450 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 451 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 452 | layer { name: "s-inception_4c/relu_pool_proj" type: "ReLU" bottom: "s-inception_4c/pool_proj_bn" top: "s-inception_4c/pool_proj_bn" } 453 | layer { name: "s-inception_4c/output" type: "Concat" 454 | bottom: "s-inception_4c/1x1_bn" 455 | bottom: "s-inception_4c/3x3_bn" 456 | bottom: "s-inception_4c/double_3x3_2_bn" 457 | bottom: "s-inception_4c/pool_proj_bn" 458 | top: "s-inception_4c/output" } 459 | 460 | ####################################### s-inception_4d ####################################### 461 | layer { name: "s-inception_4d/1x1" type: "Convolution" bottom: "s-inception_4c/output" top: "s-inception_4d/1x1" 462 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 463 | convolution_param { num_output: 96 kernel_size: 1 464 | weight_filler { type: "xavier"} 465 | bias_filler { type: "constant" value: 0.2 } } } 466 | layer { name: "s-inception_4d/1x1_bn" type: "BN" bottom: "s-inception_4d/1x1" top: "s-inception_4d/1x1_bn" 467 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 468 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 469 | layer { name: "s-inception_4d/relu_1x1" type: "ReLU" bottom: "s-inception_4d/1x1_bn" top: "s-inception_4d/1x1_bn" } 470 | layer { name: "s-inception_4d/3x3_reduce" type: "Convolution" bottom: "s-inception_4c/output" top: "s-inception_4d/3x3_reduce" 471 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 472 | convolution_param { num_output: 128 kernel_size: 1 473 | weight_filler { type: "xavier"} 474 | bias_filler { type: "constant" value: 0.2 } } } 475 | layer { name: "s-inception_4d/3x3_reduce_bn" type: "BN" bottom: "s-inception_4d/3x3_reduce" top: "s-inception_4d/3x3_reduce_bn" 476 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 477 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 478 | layer { name: "s-inception_4d/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_4d/3x3_reduce_bn" top: "s-inception_4d/3x3_reduce_bn" } 479 | layer { name: "s-inception_4d/3x3" type: "Convolution" bottom: "s-inception_4d/3x3_reduce_bn" top: "s-inception_4d/3x3" 480 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 481 | convolution_param { num_output: 192 pad: 1 kernel_size: 3 482 | weight_filler { type: "xavier" } 483 | bias_filler { type: "constant" value: 0.2 } } } 484 | layer { name: "s-inception_4d/3x3_bn" type: "BN" bottom: "s-inception_4d/3x3" top: "s-inception_4d/3x3_bn" 485 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 486 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 487 | layer { name: "s-inception_4d/relu_3x3" type: "ReLU" bottom: "s-inception_4d/3x3_bn" top: "s-inception_4d/3x3_bn" } 488 | layer { name: "s-inception_4d/double_3x3_reduce" type: "Convolution" bottom: "s-inception_4c/output" top: "s-inception_4d/double_3x3_reduce" 489 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 490 | convolution_param { num_output: 160 kernel_size: 1 491 | weight_filler { type: "xavier" } 492 | bias_filler { type: "constant" value: 0.2 } } } 493 | layer { name: "s-inception_4d/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_4d/double_3x3_reduce" top: "s-inception_4d/double_3x3_reduce_bn" 494 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 495 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 496 | layer { name: "s-inception_4d/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_4d/double_3x3_reduce_bn" top: "s-inception_4d/double_3x3_reduce_bn" } 497 | layer { name: "s-inception_4d/double_3x3_1" type: "Convolution" bottom: "s-inception_4d/double_3x3_reduce_bn" top: "s-inception_4d/double_3x3_1" 498 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 499 | convolution_param { num_output: 192 pad: 1 kernel_size: 3 500 | weight_filler { type: "xavier"} 501 | bias_filler { type: "constant" value: 0.2 } } } 502 | layer { name: "s-inception_4d/double_3x3_1_bn" type: "BN" bottom: "s-inception_4d/double_3x3_1" top: "s-inception_4d/double_3x3_1_bn" 503 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 504 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 505 | layer { name: "s-inception_4d/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_4d/double_3x3_1_bn" top: "s-inception_4d/double_3x3_1_bn" } 506 | layer { name: "s-inception_4d/double_3x3_2" type: "Convolution" bottom: "s-inception_4d/double_3x3_1_bn" top: "s-inception_4d/double_3x3_2" 507 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 508 | convolution_param { num_output: 192 pad: 1 kernel_size: 3 509 | weight_filler { type: "xavier"} 510 | bias_filler { type: "constant" value: 0.2 } } } 511 | layer { name: "s-inception_4d/double_3x3_2_bn" type: "BN" bottom: "s-inception_4d/double_3x3_2" top: "s-inception_4d/double_3x3_2_bn" 512 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 513 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 514 | layer { name: "s-inception_4d/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_4d/double_3x3_2_bn" top: "s-inception_4d/double_3x3_2_bn" } 515 | layer { name: "s-inception_4d/pool" type: "Pooling" bottom: "s-inception_4c/output" top: "s-inception_4d/pool" 516 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 517 | layer { name: "s-inception_4d/pool_proj" type: "Convolution" bottom: "s-inception_4d/pool" top: "s-inception_4d/pool_proj" 518 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 519 | convolution_param { num_output: 128 kernel_size: 1 520 | weight_filler { type: "xavier" } 521 | bias_filler { type: "constant" value: 0.2 } } } 522 | layer { name: "s-inception_4d/pool_proj_bn" type: "BN" bottom: "s-inception_4d/pool_proj" top: "s-inception_4d/pool_proj_bn" 523 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 524 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 525 | layer { name: "s-inception_4d/relu_pool_proj" type: "ReLU" bottom: "s-inception_4d/pool_proj_bn" top: "s-inception_4d/pool_proj_bn" } 526 | layer { name: "s-inception_4d/output" type: "Concat" 527 | bottom: "s-inception_4d/1x1_bn" 528 | bottom: "s-inception_4d/3x3_bn" 529 | bottom: "s-inception_4d/double_3x3_2_bn" 530 | bottom: "s-inception_4d/pool_proj_bn" 531 | top: "s-inception_4d/output" } 532 | 533 | ####################################### s-inception_4e ####################################### 534 | layer { name: "s-inception_4e/3x3_reduce" type: "Convolution" bottom: "s-inception_4d/output" top: "s-inception_4e/3x3_reduce" 535 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 536 | convolution_param { num_output: 128 kernel_size: 1 537 | weight_filler { type: "xavier"} 538 | bias_filler { type: "constant" value: 0.2 } } } 539 | layer { name: "s-inception_4e/3x3_reduce_bn" type: "BN" bottom: "s-inception_4e/3x3_reduce" top: "s-inception_4e/3x3_reduce_bn" 540 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 541 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 542 | layer { name: "s-inception_4e/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_4e/3x3_reduce_bn" top: "s-inception_4e/3x3_reduce_bn" } 543 | layer { name: "s-inception_4e/3x3" type: "Convolution" bottom: "s-inception_4e/3x3_reduce_bn" top: "s-inception_4e/3x3" 544 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 545 | convolution_param { num_output: 192 pad: 1 kernel_size: 3 stride: 2 546 | weight_filler { type: "xavier" } 547 | bias_filler { type: "constant" value: 0.2 } } } 548 | layer { name: "s-inception_4e/3x3_bn" type: "BN" bottom: "s-inception_4e/3x3" top: "s-inception_4e/3x3_bn" 549 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 550 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 551 | layer { name: "s-inception_4e/relu_3x3" type: "ReLU" bottom: "s-inception_4e/3x3_bn" top: "s-inception_4e/3x3_bn" } 552 | layer { name: "s-inception_4e/double_3x3_reduce" type: "Convolution" bottom: "s-inception_4d/output" top: "s-inception_4e/double_3x3_reduce" 553 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 554 | convolution_param { num_output: 192 kernel_size: 1 555 | weight_filler { type: "xavier" } 556 | bias_filler { type: "constant" value: 0.2 } } } 557 | layer { name: "s-inception_4e/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_4e/double_3x3_reduce" top: "s-inception_4e/double_3x3_reduce_bn" 558 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 559 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 560 | layer { name: "s-inception_4e/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_4e/double_3x3_reduce_bn" top: "s-inception_4e/double_3x3_reduce_bn" } 561 | layer { name: "s-inception_4e/double_3x3_1" type: "Convolution" bottom: "s-inception_4e/double_3x3_reduce_bn" top: "s-inception_4e/double_3x3_1" 562 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 563 | convolution_param { num_output: 256 pad: 1 kernel_size: 3 564 | weight_filler { type: "xavier"} 565 | bias_filler { type: "constant" value: 0.2 } } } 566 | layer { name: "s-inception_4e/double_3x3_1_bn" type: "BN" bottom: "s-inception_4e/double_3x3_1" top: "s-inception_4e/double_3x3_1_bn" 567 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 568 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 569 | layer { name: "s-inception_4e/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_4e/double_3x3_1_bn" top: "s-inception_4e/double_3x3_1_bn" } 570 | layer { name: "s-inception_4e/double_3x3_2" type: "Convolution" bottom: "s-inception_4e/double_3x3_1_bn" top: "s-inception_4e/double_3x3_2" 571 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 572 | convolution_param { num_output: 256 pad: 1 kernel_size: 3 stride: 2 573 | weight_filler { type: "xavier"} 574 | bias_filler { type: "constant" value: 0.2 } } } 575 | layer { name: "s-inception_4e/double_3x3_2_bn" type: "BN" bottom: "s-inception_4e/double_3x3_2" top: "s-inception_4e/double_3x3_2_bn" 576 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 577 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 578 | layer { name: "s-inception_4e/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_4e/double_3x3_2_bn" top: "s-inception_4e/double_3x3_2_bn" } 579 | layer { name: "s-inception_4e/pool" type: "Pooling" bottom: "s-inception_4d/output" top: "s-inception_4e/pool" 580 | pooling_param { pool: MAX kernel_size: 3 stride: 2 } } 581 | layer { name: "s-inception_4e/output" type: "Concat" 582 | bottom: "s-inception_4e/3x3_bn" 583 | bottom: "s-inception_4e/double_3x3_2_bn" 584 | bottom: "s-inception_4e/pool" 585 | top: "s-inception_4e/output" } 586 | ###################################### s-inception_5a ########################################## 587 | layer { name: "s-inception_5a/1x1" type: "Convolution" bottom: "s-inception_4e/output" top: "s-inception_5a/1x1" 588 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 589 | convolution_param { num_output: 352 kernel_size: 1 590 | weight_filler { type: "xavier"} 591 | bias_filler { type: "constant" value: 0.2 } } } 592 | layer { name: "s-inception_5a/1x1_bn" type: "BN" bottom: "s-inception_5a/1x1" top: "s-inception_5a/1x1_bn" 593 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 594 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 595 | layer { name: "s-inception_5a/relu_1x1" type: "ReLU" bottom: "s-inception_5a/1x1_bn" top: "s-inception_5a/1x1_bn" } 596 | layer { name: "s-inception_5a/3x3_reduce" type: "Convolution" bottom: "s-inception_4e/output" top: "s-inception_5a/3x3_reduce" 597 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 598 | convolution_param { num_output: 192 kernel_size: 1 599 | weight_filler { type: "xavier"} 600 | bias_filler { type: "constant" value: 0.2 } } } 601 | layer { name: "s-inception_5a/3x3_reduce_bn" type: "BN" bottom: "s-inception_5a/3x3_reduce" top: "s-inception_5a/3x3_reduce_bn" 602 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 603 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 604 | layer { name: "s-inception_5a/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_5a/3x3_reduce_bn" top: "s-inception_5a/3x3_reduce_bn" } 605 | layer { name: "s-inception_5a/3x3" type: "Convolution" bottom: "s-inception_5a/3x3_reduce_bn" top: "s-inception_5a/3x3" 606 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 607 | convolution_param { num_output: 320 pad: 1 kernel_size: 3 608 | weight_filler { type: "xavier" } 609 | bias_filler { type: "constant" value: 0.2 } } } 610 | layer { name: "s-inception_5a/3x3_bn" type: "BN" bottom: "s-inception_5a/3x3" top: "s-inception_5a/3x3_bn" 611 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 612 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 613 | layer { name: "s-inception_5a/relu_3x3" type: "ReLU" bottom: "s-inception_5a/3x3_bn" top: "s-inception_5a/3x3_bn" } 614 | layer { name: "s-inception_5a/double_3x3_reduce" type: "Convolution" bottom: "s-inception_4e/output" top: "s-inception_5a/double_3x3_reduce" 615 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 616 | convolution_param { num_output: 160 kernel_size: 1 617 | weight_filler { type: "xavier" } 618 | bias_filler { type: "constant" value: 0.2 } } } 619 | layer { name: "s-inception_5a/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_5a/double_3x3_reduce" top: "s-inception_5a/double_3x3_reduce_bn" 620 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 621 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 622 | layer { name: "s-inception_5a/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_5a/double_3x3_reduce_bn" top: "s-inception_5a/double_3x3_reduce_bn" } 623 | layer { name: "s-inception_5a/double_3x3_1" type: "Convolution" bottom: "s-inception_5a/double_3x3_reduce_bn" top: "s-inception_5a/double_3x3_1" 624 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 625 | convolution_param { num_output: 224 pad: 1 kernel_size: 3 626 | weight_filler { type: "xavier"} 627 | bias_filler { type: "constant" value: 0.2 } } } 628 | layer { name: "s-inception_5a/double_3x3_1_bn" type: "BN" bottom: "s-inception_5a/double_3x3_1" top: "s-inception_5a/double_3x3_1_bn" 629 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 630 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 631 | layer { name: "s-inception_5a/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_5a/double_3x3_1_bn" top: "s-inception_5a/double_3x3_1_bn" } 632 | layer { name: "s-inception_5a/double_3x3_2" type: "Convolution" bottom: "s-inception_5a/double_3x3_1_bn" top: "s-inception_5a/double_3x3_2" 633 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 634 | convolution_param { num_output: 224 pad: 1 kernel_size: 3 635 | weight_filler { type: "xavier"} 636 | bias_filler { type: "constant" value: 0.2 } } } 637 | layer { name: "s-inception_5a/double_3x3_2_bn" type: "BN" bottom: "s-inception_5a/double_3x3_2" top: "s-inception_5a/double_3x3_2_bn" 638 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 639 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 640 | layer { name: "s-inception_5a/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_5a/double_3x3_2_bn" top: "s-inception_5a/double_3x3_2_bn" } 641 | layer { name: "s-inception_5a/pool" type: "Pooling" bottom: "s-inception_4e/output" top: "s-inception_5a/pool" 642 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1} } 643 | layer { name: "s-inception_5a/pool_proj" type: "Convolution" bottom: "s-inception_5a/pool" top: "s-inception_5a/pool_proj" 644 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 645 | convolution_param { num_output: 128 kernel_size: 1 646 | weight_filler { type: "xavier" } 647 | bias_filler { type: "constant" value: 0.2 } } } 648 | layer { name: "s-inception_5a/pool_proj_bn" type: "BN" bottom: "s-inception_5a/pool_proj" top: "s-inception_5a/pool_proj_bn" 649 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 650 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 651 | layer { name: "s-inception_5a/relu_pool_proj" type: "ReLU" bottom: "s-inception_5a/pool_proj_bn" top: "s-inception_5a/pool_proj_bn" } 652 | layer { name: "s-inception_5a/output" type: "Concat" 653 | bottom: "s-inception_5a/1x1_bn" 654 | bottom: "s-inception_5a/3x3_bn" 655 | bottom: "s-inception_5a/double_3x3_2_bn" 656 | bottom: "s-inception_5a/pool_proj_bn" 657 | top: "s-inception_5a/output" } 658 | 659 | ####################################### s-inception_5b ####################################### 660 | layer { name: "s-inception_5b/1x1" type: "Convolution" bottom: "s-inception_5a/output" top: "s-inception_5b/1x1" 661 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 662 | convolution_param { num_output: 352 kernel_size: 1 663 | weight_filler { type: "xavier"} 664 | bias_filler { type: "constant" value: 0.2 } } } 665 | layer { name: "s-inception_5b/1x1_bn" type: "BN" bottom: "s-inception_5b/1x1" top: "s-inception_5b/1x1_bn" 666 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 667 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 668 | layer { name: "s-inception_5b/relu_1x1" type: "ReLU" bottom: "s-inception_5b/1x1_bn" top: "s-inception_5b/1x1_bn" } 669 | layer { name: "s-inception_5b/3x3_reduce" type: "Convolution" bottom: "s-inception_5a/output" top: "s-inception_5b/3x3_reduce" 670 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 671 | convolution_param { num_output: 192 kernel_size: 1 672 | weight_filler { type: "xavier"} 673 | bias_filler { type: "constant" value: 0.2 } } } 674 | layer { name: "s-inception_5b/3x3_reduce_bn" type: "BN" bottom: "s-inception_5b/3x3_reduce" top: "s-inception_5b/3x3_reduce_bn" 675 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 676 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 677 | layer { name: "s-inception_5b/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_5b/3x3_reduce_bn" top: "s-inception_5b/3x3_reduce_bn" } 678 | layer { name: "s-inception_5b/3x3" type: "Convolution" bottom: "s-inception_5b/3x3_reduce_bn" top: "s-inception_5b/3x3" 679 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 680 | convolution_param { num_output: 320 pad: 1 kernel_size: 3 681 | weight_filler { type: "xavier" } 682 | bias_filler { type: "constant" value: 0.2 } } } 683 | layer { name: "s-inception_5b/3x3_bn" type: "BN" bottom: "s-inception_5b/3x3" top: "s-inception_5b/3x3_bn" 684 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 685 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 686 | layer { name: "s-inception_5b/relu_3x3" type: "ReLU" bottom: "s-inception_5b/3x3_bn" top: "s-inception_5b/3x3_bn" } 687 | layer { name: "s-inception_5b/double_3x3_reduce" type: "Convolution" bottom: "s-inception_5a/output" top: "s-inception_5b/double_3x3_reduce" 688 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 689 | convolution_param { num_output: 192 kernel_size: 1 690 | weight_filler { type: "xavier" } 691 | bias_filler { type: "constant" value: 0.2 } } } 692 | layer { name: "s-inception_5b/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_5b/double_3x3_reduce" top: "s-inception_5b/double_3x3_reduce_bn" 693 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 694 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 695 | layer { name: "s-inception_5b/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_5b/double_3x3_reduce_bn" top: "s-inception_5b/double_3x3_reduce_bn" } 696 | layer { name: "s-inception_5b/double_3x3_1" type: "Convolution" bottom: "s-inception_5b/double_3x3_reduce_bn" top: "s-inception_5b/double_3x3_1" 697 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 698 | convolution_param { num_output: 224 pad: 1 kernel_size: 3 699 | weight_filler { type: "xavier"} 700 | bias_filler { type: "constant" value: 0.2 } } } 701 | layer { name: "s-inception_5b/double_3x3_1_bn" type: "BN" bottom: "s-inception_5b/double_3x3_1" top: "s-inception_5b/double_3x3_1_bn" 702 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 703 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 704 | layer { name: "s-inception_5b/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_5b/double_3x3_1_bn" top: "s-inception_5b/double_3x3_1_bn" } 705 | layer { name: "s-inception_5b/double_3x3_2" type: "Convolution" bottom: "s-inception_5b/double_3x3_1_bn" top: "s-inception_5b/double_3x3_2" 706 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 707 | convolution_param { num_output: 224 pad: 1 kernel_size: 3 708 | weight_filler { type: "xavier"} 709 | bias_filler { type: "constant" value: 0.2 } } } 710 | layer { name: "s-inception_5b/double_3x3_2_bn" type: "BN" bottom: "s-inception_5b/double_3x3_2" top: "s-inception_5b/double_3x3_2_bn" 711 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 712 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 713 | layer { name: "s-inception_5b/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_5b/double_3x3_2_bn" top: "s-inception_5b/double_3x3_2_bn" } 714 | layer { name: "s-inception_5b/pool" type: "Pooling" bottom: "s-inception_5a/output" top: "s-inception_5b/pool" 715 | pooling_param { pool: MAX kernel_size: 3 stride: 1 pad: 1 } } 716 | layer { name: "s-inception_5b/pool_proj" type: "Convolution" bottom: "s-inception_5b/pool" top: "s-inception_5b/pool_proj" 717 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 718 | convolution_param { num_output: 128 kernel_size: 1 719 | weight_filler { type: "xavier" } 720 | bias_filler { type: "constant" value: 0.2 } } } 721 | layer { name: "s-inception_5b/pool_proj_bn" type: "BN" bottom: "s-inception_5b/pool_proj" top: "s-inception_5b/pool_proj_bn" 722 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 723 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 724 | layer { name: "s-inception_5b/relu_pool_proj" type: "ReLU" bottom: "s-inception_5b/pool_proj_bn" top: "s-inception_5b/pool_proj_bn" } 725 | layer { name: "s-inception_5b/output" type: "Concat" 726 | bottom: "s-inception_5b/1x1_bn" 727 | bottom: "s-inception_5b/3x3_bn" 728 | bottom: "s-inception_5b/double_3x3_2_bn" 729 | bottom: "s-inception_5b/pool_proj_bn" 730 | top: "s-inception_5b/output" } 731 | 732 | ####################################### s-global pool ####################################### 733 | layer { name: "s-global_pool" top: "s-global_pool" bottom: "s-inception_5b/output" type: "Pooling" 734 | pooling_param { pool: AVE kernel_size: 7 stride: 1 } } 735 | 736 | 737 | layer { name: "fc-scene" type: "InnerProduct" bottom: "s-global_pool" top: "fc" 738 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 739 | inner_product_param { num_output: 365 740 | weight_filler { type: "xavier" } 741 | bias_filler { type: "constant" value: 0 } } } 742 | -------------------------------------------------------------------------------- /models/kd_train/256_object_kd_inception2_solver.prototxt: -------------------------------------------------------------------------------- 1 | net: "models/kd_train/256_object_kd_inception2_train_val.prototxt" 2 | 3 | # testing parameter 4 | test_iter: 912 5 | test_interval: 5000 6 | test_initialization: false 7 | 8 | # output 9 | display: 20 10 | average_loss: 20 11 | snapshot: 10000 12 | snapshot_prefix: "places3_standard_256_kd_object_inception_bn_w_0.25" 13 | 14 | # learning rate 15 | base_lr: 0.1 16 | lr_policy: "step" 17 | gamma: 0.1 18 | stepsize: 150000 19 | max_iter: 600000 20 | iter_size: 1 21 | 22 | # parameter of SGD 23 | momentum: 0.9 24 | weight_decay: 0.0005 25 | 26 | # GPU setting 27 | solver_mode: GPU 28 | device_id: [0,1,2,3,4,5,6,7] 29 | richness: 10 30 | 31 | -------------------------------------------------------------------------------- /models/kd_train/256_scene_kd_inception2_deploy.prototxt: -------------------------------------------------------------------------------- 1 | name: "Inception2_256_kd" 2 | input: "data" 3 | input_dim: [1, 3, 224, 224] 4 | 5 | ####################################### s-conv1 ####################################### 6 | layer { name: "s-conv1/7x7_s2" type: "Convolution" bottom: "data" top: "s-conv1/7x7_s2" 7 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 8 | convolution_param { num_output: 64 pad: 3 kernel_size: 7 stride: 2 9 | weight_filler { type: "xavier" } 10 | bias_filler { type: "constant" value: 0.2 } } } 11 | layer { name: "s-conv1/7x7_s2_bn" type: "BN" bottom: "s-conv1/7x7_s2" top: "s-conv1/7x7_s2_bn" 12 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 13 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 14 | layer { name: "s-conv1/relu_7x7" type: "ReLU" bottom: "s-conv1/7x7_s2_bn" top: "s-conv1/7x7_s2_bn" } 15 | layer { name: "s-pool1/3x3_s2" type: "Pooling" bottom: "s-conv1/7x7_s2_bn" top: "s-pool1/3x3_s2" 16 | pooling_param { pool: MAX kernel_size: 3 stride: 2 } } 17 | 18 | ####################################### s-conv2 ####################################### 19 | layer { name: "s-conv2/3x3_reduce" type: "Convolution" bottom: "s-pool1/3x3_s2" top: "s-conv2/3x3_reduce" 20 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 21 | convolution_param { num_output: 64 kernel_size: 1 22 | weight_filler { type: "xavier"} 23 | bias_filler { type: "constant" value: 0.2 } } } 24 | layer { name: "s-conv2/3x3_reduce_bn" type: "BN" bottom: "s-conv2/3x3_reduce" top: "s-conv2/3x3_reduce_bn" 25 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 26 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 27 | layer { name: "s-conv2/relu_3x3_reduce" type: "ReLU" bottom: "s-conv2/3x3_reduce_bn" top: "s-conv2/3x3_reduce_bn" } 28 | layer { name: "s-conv2/3x3" type: "Convolution" bottom: "s-conv2/3x3_reduce_bn" top: "s-conv2/3x3" 29 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 30 | convolution_param { num_output: 192 pad: 1 kernel_size: 3 31 | weight_filler { type: "xavier"} 32 | bias_filler { type: "constant" value: 0.2 } } } 33 | layer { name: "s-conv2/3x3_bn" type: "BN" bottom: "s-conv2/3x3" top: "s-conv2/3x3_bn" 34 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 35 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 36 | layer { name: "s-conv2/relu_3x3" type: "ReLU" bottom: "s-conv2/3x3_bn" top: "s-conv2/3x3_bn" } 37 | layer { name: "s-pool2/3x3_s2" type: "Pooling" bottom: "s-conv2/3x3_bn" top: "s-pool2/3x3_s2" 38 | pooling_param { pool: MAX kernel_size: 3 stride: 2 } } 39 | 40 | ####################################### s-inception_3a ####################################### 41 | layer { name: "s-inception_3a/1x1" type: "Convolution" bottom: "s-pool2/3x3_s2" top: "s-inception_3a/1x1" 42 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 43 | convolution_param { num_output: 64 kernel_size: 1 44 | weight_filler { type: "xavier"} 45 | bias_filler { type: "constant" value: 0.2 } } } 46 | layer { name: "s-inception_3a/1x1_bn" type: "BN" bottom: "s-inception_3a/1x1" top: "s-inception_3a/1x1_bn" 47 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 48 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 49 | layer { name: "s-inception_3a/relu_1x1" type: "ReLU" bottom: "s-inception_3a/1x1_bn" top: "s-inception_3a/1x1_bn" } 50 | layer { name: "s-inception_3a/3x3_reduce" type: "Convolution" bottom: "s-pool2/3x3_s2" top: "s-inception_3a/3x3_reduce" 51 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 52 | convolution_param { num_output: 64 kernel_size: 1 53 | weight_filler { type: "xavier"} 54 | bias_filler { type: "constant" value: 0.2 } } } 55 | layer { name: "s-inception_3a/3x3_reduce_bn" type: "BN" bottom: "s-inception_3a/3x3_reduce" top: "s-inception_3a/3x3_reduce_bn" 56 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 57 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 58 | layer { name: "s-inception_3a/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_3a/3x3_reduce_bn" top: "s-inception_3a/3x3_reduce_bn" } 59 | layer { name: "s-inception_3a/3x3" type: "Convolution" bottom: "s-inception_3a/3x3_reduce_bn" top: "s-inception_3a/3x3" 60 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 61 | convolution_param { num_output: 64 pad: 1 kernel_size: 3 62 | weight_filler { type: "xavier" } 63 | bias_filler { type: "constant" value: 0.2 } } } 64 | layer { name: "s-inception_3a/3x3_bn" type: "BN" bottom: "s-inception_3a/3x3" top: "s-inception_3a/3x3_bn" 65 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 66 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 67 | layer { name: "s-inception_3a/relu_3x3" type: "ReLU" bottom: "s-inception_3a/3x3_bn" top: "s-inception_3a/3x3_bn" } 68 | layer { name: "s-inception_3a/double_3x3_reduce" type: "Convolution" bottom: "s-pool2/3x3_s2" top: "s-inception_3a/double_3x3_reduce" 69 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 70 | convolution_param { num_output: 64 kernel_size: 1 71 | weight_filler { type: "xavier" } 72 | bias_filler { type: "constant" value: 0.2 } } } 73 | layer { name: "s-inception_3a/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_3a/double_3x3_reduce" top: "s-inception_3a/double_3x3_reduce_bn" 74 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 75 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 76 | layer { name: "s-inception_3a/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_3a/double_3x3_reduce_bn" top: "s-inception_3a/double_3x3_reduce_bn" } 77 | layer { name: "s-inception_3a/double_3x3_1" type: "Convolution" bottom: "s-inception_3a/double_3x3_reduce_bn" top: "s-inception_3a/double_3x3_1" 78 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 79 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 80 | weight_filler { type: "xavier"} 81 | bias_filler { type: "constant" value: 0.2 } } } 82 | layer { name: "s-inception_3a/double_3x3_1_bn" type: "BN" bottom: "s-inception_3a/double_3x3_1" top: "s-inception_3a/double_3x3_1_bn" 83 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 84 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 85 | layer { name: "s-inception_3a/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_3a/double_3x3_1_bn" top: "s-inception_3a/double_3x3_1_bn" } 86 | layer { name: "s-inception_3a/double_3x3_2" type: "Convolution" bottom: "s-inception_3a/double_3x3_1_bn" top: "s-inception_3a/double_3x3_2" 87 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 88 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 89 | weight_filler { type: "xavier"} 90 | bias_filler { type: "constant" value: 0.2 } } } 91 | layer { name: "s-inception_3a/double_3x3_2_bn" type: "BN" bottom: "s-inception_3a/double_3x3_2" top: "s-inception_3a/double_3x3_2_bn" 92 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 93 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 94 | layer { name: "s-inception_3a/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_3a/double_3x3_2_bn" top: "s-inception_3a/double_3x3_2_bn" } 95 | layer { name: "s-inception_3a/pool" type: "Pooling" bottom: "s-pool2/3x3_s2" top: "s-inception_3a/pool" 96 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 97 | layer { name: "s-inception_3a/pool_proj" type: "Convolution" bottom: "s-inception_3a/pool" top: "s-inception_3a/pool_proj" 98 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 99 | convolution_param { num_output: 32 kernel_size: 1 100 | weight_filler { type: "xavier" } 101 | bias_filler { type: "constant" value: 0.2 } } } 102 | layer { name: "s-inception_3a/pool_proj_bn" type: "BN" bottom: "s-inception_3a/pool_proj" top: "s-inception_3a/pool_proj_bn" 103 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 104 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 105 | layer { name: "s-inception_3a/relu_pool_proj" type: "ReLU" bottom: "s-inception_3a/pool_proj_bn" top: "s-inception_3a/pool_proj_bn" } 106 | layer { name: "s-inception_3a/output" type: "Concat" 107 | bottom: "s-inception_3a/1x1_bn" 108 | bottom: "s-inception_3a/3x3_bn" 109 | bottom: "s-inception_3a/double_3x3_2_bn" 110 | bottom: "s-inception_3a/pool_proj_bn" 111 | top: "s-inception_3a/output" } 112 | 113 | 114 | ####################################### s-inception_3b ####################################### 115 | layer { name: "s-inception_3b/1x1" type: "Convolution" bottom: "s-inception_3a/output" top: "s-inception_3b/1x1" 116 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 117 | convolution_param { num_output: 64 kernel_size: 1 118 | weight_filler { type: "xavier"} 119 | bias_filler { type: "constant" value: 0.2 } } } 120 | layer { name: "s-inception_3b/1x1_bn" type: "BN" bottom: "s-inception_3b/1x1" top: "s-inception_3b/1x1_bn" 121 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 122 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 123 | layer { name: "s-inception_3b/relu_1x1" type: "ReLU" bottom: "s-inception_3b/1x1_bn" top: "s-inception_3b/1x1_bn" } 124 | layer { name: "s-inception_3b/3x3_reduce" type: "Convolution" bottom: "s-inception_3a/output" top: "s-inception_3b/3x3_reduce" 125 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 126 | convolution_param { num_output: 64 kernel_size: 1 127 | weight_filler { type: "xavier"} 128 | bias_filler { type: "constant" value: 0.2 } } } 129 | layer { name: "s-inception_3b/3x3_reduce_bn" type: "BN" bottom: "s-inception_3b/3x3_reduce" top: "s-inception_3b/3x3_reduce_bn" 130 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 131 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 132 | layer { name: "s-inception_3b/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_3b/3x3_reduce_bn" top: "s-inception_3b/3x3_reduce_bn" } 133 | layer { name: "s-inception_3b/3x3" type: "Convolution" bottom: "s-inception_3b/3x3_reduce_bn" top: "s-inception_3b/3x3" 134 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 135 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 136 | weight_filler { type: "xavier" } 137 | bias_filler { type: "constant" value: 0.2 } } } 138 | layer { name: "s-inception_3b/3x3_bn" type: "BN" bottom: "s-inception_3b/3x3" top: "s-inception_3b/3x3_bn" 139 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 140 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 141 | layer { name: "s-inception_3b/relu_3x3" type: "ReLU" bottom: "s-inception_3b/3x3_bn" top: "s-inception_3b/3x3_bn" } 142 | layer { name: "s-inception_3b/double_3x3_reduce" type: "Convolution" bottom: "s-inception_3a/output" top: "s-inception_3b/double_3x3_reduce" 143 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 144 | convolution_param { num_output: 64 kernel_size: 1 145 | weight_filler { type: "xavier" } 146 | bias_filler { type: "constant" value: 0.2 } } } 147 | layer { name: "s-inception_3b/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_3b/double_3x3_reduce" top: "s-inception_3b/double_3x3_reduce_bn" 148 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 149 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 150 | layer { name: "s-inception_3b/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_3b/double_3x3_reduce_bn" top: "s-inception_3b/double_3x3_reduce_bn" } 151 | layer { name: "s-inception_3b/double_3x3_1" type: "Convolution" bottom: "s-inception_3b/double_3x3_reduce_bn" top: "s-inception_3b/double_3x3_1" 152 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 153 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 154 | weight_filler { type: "xavier"} 155 | bias_filler { type: "constant" value: 0.2 } } } 156 | layer { name: "s-inception_3b/double_3x3_1_bn" type: "BN" bottom: "s-inception_3b/double_3x3_1" top: "s-inception_3b/double_3x3_1_bn" 157 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 158 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 159 | layer { name: "s-inception_3b/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_3b/double_3x3_1_bn" top: "s-inception_3b/double_3x3_1_bn" } 160 | layer { name: "s-inception_3b/double_3x3_2" type: "Convolution" bottom: "s-inception_3b/double_3x3_1_bn" top: "s-inception_3b/double_3x3_2" 161 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 162 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 163 | weight_filler { type: "xavier"} 164 | bias_filler { type: "constant" value: 0.2 } } } 165 | layer { name: "s-inception_3b/double_3x3_2_bn" type: "BN" bottom: "s-inception_3b/double_3x3_2" top: "s-inception_3b/double_3x3_2_bn" 166 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 167 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 168 | layer { name: "s-inception_3b/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_3b/double_3x3_2_bn" top: "s-inception_3b/double_3x3_2_bn" } 169 | layer { name: "s-inception_3b/pool" type: "Pooling" bottom: "s-inception_3a/output" top: "s-inception_3b/pool" 170 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 171 | layer { name: "s-inception_3b/pool_proj" type: "Convolution" bottom: "s-inception_3b/pool" top: "s-inception_3b/pool_proj" 172 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 173 | convolution_param { num_output: 64 kernel_size: 1 174 | weight_filler { type: "xavier" } 175 | bias_filler { type: "constant" value: 0.2 } } } 176 | layer { name: "s-inception_3b/pool_proj_bn" type: "BN" bottom: "s-inception_3b/pool_proj" top: "s-inception_3b/pool_proj_bn" 177 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 178 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 179 | layer { name: "s-inception_3b/relu_pool_proj" type: "ReLU" bottom: "s-inception_3b/pool_proj_bn" top: "s-inception_3b/pool_proj_bn" } 180 | layer { name: "s-inception_3b/output" type: "Concat" 181 | bottom: "s-inception_3b/1x1_bn" 182 | bottom: "s-inception_3b/3x3_bn" 183 | bottom: "s-inception_3b/double_3x3_2_bn" 184 | bottom: "s-inception_3b/pool_proj_bn" 185 | top: "s-inception_3b/output" } 186 | 187 | ####################################### s-inception_3c ####################################### 188 | layer { name: "s-inception_3c/3x3_reduce" type: "Convolution" bottom: "s-inception_3b/output" top: "s-inception_3c/3x3_reduce" 189 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 190 | convolution_param { num_output: 128 kernel_size: 1 191 | weight_filler { type: "xavier"} 192 | bias_filler { type: "constant" value: 0.2 } } } 193 | layer { name: "s-inception_3c/3x3_reduce_bn" type: "BN" bottom: "s-inception_3c/3x3_reduce" top: "s-inception_3c/3x3_reduce_bn" 194 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 195 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 196 | layer { name: "s-inception_3c/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_3c/3x3_reduce_bn" top: "s-inception_3c/3x3_reduce_bn" } 197 | layer { name: "s-inception_3c/3x3" type: "Convolution" bottom: "s-inception_3c/3x3_reduce_bn" top: "s-inception_3c/3x3" 198 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 199 | convolution_param { num_output: 160 pad: 1 kernel_size: 3 stride: 2 200 | weight_filler { type: "xavier" } 201 | bias_filler { type: "constant" value: 0.2 } } } 202 | layer { name: "s-inception_3c/3x3_bn" type: "BN" bottom: "s-inception_3c/3x3" top: "s-inception_3c/3x3_bn" 203 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 204 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 205 | layer { name: "s-inception_3c/relu_3x3" type: "ReLU" bottom: "s-inception_3c/3x3_bn" top: "s-inception_3c/3x3_bn" } 206 | layer { name: "s-inception_3c/double_3x3_reduce" type: "Convolution" bottom: "s-inception_3b/output" top: "s-inception_3c/double_3x3_reduce" 207 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 208 | convolution_param { num_output: 64 kernel_size: 1 209 | weight_filler { type: "xavier" } 210 | bias_filler { type: "constant" value: 0.2 } } } 211 | layer { name: "s-inception_3c/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_3c/double_3x3_reduce" top: "s-inception_3c/double_3x3_reduce_bn" 212 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 213 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 214 | layer { name: "s-inception_3c/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_3c/double_3x3_reduce_bn" top: "s-inception_3c/double_3x3_reduce_bn" } 215 | layer { name: "s-inception_3c/double_3x3_1" type: "Convolution" bottom: "s-inception_3c/double_3x3_reduce_bn" top: "s-inception_3c/double_3x3_1" 216 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 217 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 218 | weight_filler { type: "xavier"} 219 | bias_filler { type: "constant" value: 0.2 } } } 220 | layer { name: "s-inception_3c/double_3x3_1_bn" type: "BN" bottom: "s-inception_3c/double_3x3_1" top: "s-inception_3c/double_3x3_1_bn" 221 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 222 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 223 | layer { name: "s-inception_3c/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_3c/double_3x3_1_bn" top: "s-inception_3c/double_3x3_1_bn" } 224 | layer { name: "s-inception_3c/double_3x3_2" type: "Convolution" bottom: "s-inception_3c/double_3x3_1_bn" top: "s-inception_3c/double_3x3_2" 225 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 226 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 stride: 2 227 | weight_filler { type: "xavier"} 228 | bias_filler { type: "constant" value: 0.2 } } } 229 | layer { name: "s-inception_3c/double_3x3_2_bn" type: "BN" bottom: "s-inception_3c/double_3x3_2" top: "s-inception_3c/double_3x3_2_bn" 230 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 231 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 232 | layer { name: "s-inception_3c/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_3c/double_3x3_2_bn" top: "s-inception_3c/double_3x3_2_bn" } 233 | layer { name: "s-inception_3c/pool" type: "Pooling" bottom: "s-inception_3b/output" top: "s-inception_3c/pool" 234 | pooling_param { pool: MAX kernel_size: 3 stride: 2 } } 235 | layer { name: "s-inception_3c/output" type: "Concat" 236 | bottom: "s-inception_3c/3x3_bn" 237 | bottom: "s-inception_3c/double_3x3_2_bn" 238 | bottom: "s-inception_3c/pool" 239 | top: "s-inception_3c/output" } 240 | 241 | ####################################### s-inception_4a ####################################### 242 | layer { name: "s-inception_4a/1x1" type: "Convolution" bottom: "s-inception_3c/output" top: "s-inception_4a/1x1" 243 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 244 | convolution_param { num_output: 224 kernel_size: 1 245 | weight_filler { type: "xavier"} 246 | bias_filler { type: "constant" value: 0.2 } } } 247 | layer { name: "s-inception_4a/1x1_bn" type: "BN" bottom: "s-inception_4a/1x1" top: "s-inception_4a/1x1_bn" 248 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 249 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 250 | layer { name: "s-inception_4a/relu_1x1" type: "ReLU" bottom: "s-inception_4a/1x1_bn" top: "s-inception_4a/1x1_bn" } 251 | layer { name: "s-inception_4a/3x3_reduce" type: "Convolution" bottom: "s-inception_3c/output" top: "s-inception_4a/3x3_reduce" 252 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 253 | convolution_param { num_output: 64 kernel_size: 1 254 | weight_filler { type: "xavier"} 255 | bias_filler { type: "constant" value: 0.2 } } } 256 | layer { name: "s-inception_4a/3x3_reduce_bn" type: "BN" bottom: "s-inception_4a/3x3_reduce" top: "s-inception_4a/3x3_reduce_bn" 257 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 258 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 259 | layer { name: "s-inception_4a/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_4a/3x3_reduce_bn" top: "s-inception_4a/3x3_reduce_bn" } 260 | layer { name: "s-inception_4a/3x3" type: "Convolution" bottom: "s-inception_4a/3x3_reduce_bn" top: "s-inception_4a/3x3" 261 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 262 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 263 | weight_filler { type: "xavier" } 264 | bias_filler { type: "constant" value: 0.2 } } } 265 | layer { name: "s-inception_4a/3x3_bn" type: "BN" bottom: "s-inception_4a/3x3" top: "s-inception_4a/3x3_bn" 266 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 267 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 268 | layer { name: "s-inception_4a/relu_3x3" type: "ReLU" bottom: "s-inception_4a/3x3_bn" top: "s-inception_4a/3x3_bn" } 269 | layer { name: "s-inception_4a/double_3x3_reduce" type: "Convolution" bottom: "s-inception_3c/output" top: "s-inception_4a/double_3x3_reduce" 270 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 271 | convolution_param { num_output: 96 kernel_size: 1 272 | weight_filler { type: "xavier" } 273 | bias_filler { type: "constant" value: 0.2 } } } 274 | layer { name: "s-inception_4a/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_4a/double_3x3_reduce" top: "s-inception_4a/double_3x3_reduce_bn" 275 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 276 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 277 | layer { name: "s-inception_4a/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_4a/double_3x3_reduce_bn" top: "s-inception_4a/double_3x3_reduce_bn" } 278 | layer { name: "s-inception_4a/double_3x3_1" type: "Convolution" bottom: "s-inception_4a/double_3x3_reduce_bn" top: "s-inception_4a/double_3x3_1" 279 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 280 | convolution_param { num_output: 128 pad: 1 kernel_size: 3 281 | weight_filler { type: "xavier"} 282 | bias_filler { type: "constant" value: 0.2 } } } 283 | layer { name: "s-inception_4a/double_3x3_1_bn" type: "BN" bottom: "s-inception_4a/double_3x3_1" top: "s-inception_4a/double_3x3_1_bn" 284 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 285 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 286 | layer { name: "s-inception_4a/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_4a/double_3x3_1_bn" top: "s-inception_4a/double_3x3_1_bn" } 287 | layer { name: "s-inception_4a/double_3x3_2" type: "Convolution" bottom: "s-inception_4a/double_3x3_1_bn" top: "s-inception_4a/double_3x3_2" 288 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 289 | convolution_param { num_output: 128 pad: 1 kernel_size: 3 290 | weight_filler { type: "xavier"} 291 | bias_filler { type: "constant" value: 0.2 } } } 292 | layer { name: "s-inception_4a/double_3x3_2_bn" type: "BN" bottom: "s-inception_4a/double_3x3_2" top: "s-inception_4a/double_3x3_2_bn" 293 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 294 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 295 | layer { name: "s-inception_4a/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_4a/double_3x3_2_bn" top: "s-inception_4a/double_3x3_2_bn" } 296 | layer { name: "s-inception_4a/pool" type: "Pooling" bottom: "s-inception_3c/output" top: "s-inception_4a/pool" 297 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 298 | layer { name: "s-inception_4a/pool_proj" type: "Convolution" bottom: "s-inception_4a/pool" top: "s-inception_4a/pool_proj" 299 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 300 | convolution_param { num_output: 128 kernel_size: 1 301 | weight_filler { type: "xavier" } 302 | bias_filler { type: "constant" value: 0.2 } } } 303 | layer { name: "s-inception_4a/pool_proj_bn" type: "BN" bottom: "s-inception_4a/pool_proj" top: "s-inception_4a/pool_proj_bn" 304 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 305 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 306 | layer { name: "s-inception_4a/relu_pool_proj" type: "ReLU" bottom: "s-inception_4a/pool_proj_bn" top: "s-inception_4a/pool_proj_bn" } 307 | layer { name: "s-inception_4a/output" type: "Concat" 308 | bottom: "s-inception_4a/1x1_bn" 309 | bottom: "s-inception_4a/3x3_bn" 310 | bottom: "s-inception_4a/double_3x3_2_bn" 311 | bottom: "s-inception_4a/pool_proj_bn" 312 | top: "s-inception_4a/output" } 313 | 314 | ####################################### s-inception_4b ####################################### 315 | layer { name: "s-inception_4b/1x1" type: "Convolution" bottom: "s-inception_4a/output" top: "s-inception_4b/1x1" 316 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 317 | convolution_param { num_output: 192 kernel_size: 1 318 | weight_filler { type: "xavier"} 319 | bias_filler { type: "constant" value: 0.2 } } } 320 | layer { name: "s-inception_4b/1x1_bn" type: "BN" bottom: "s-inception_4b/1x1" top: "s-inception_4b/1x1_bn" 321 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 322 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 323 | layer { name: "s-inception_4b/relu_1x1" type: "ReLU" bottom: "s-inception_4b/1x1_bn" top: "s-inception_4b/1x1_bn" } 324 | layer { name: "s-inception_4b/3x3_reduce" type: "Convolution" bottom: "s-inception_4a/output" top: "s-inception_4b/3x3_reduce" 325 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 326 | convolution_param { num_output: 96 kernel_size: 1 327 | weight_filler { type: "xavier"} 328 | bias_filler { type: "constant" value: 0.2 } } } 329 | layer { name: "s-inception_4b/3x3_reduce_bn" type: "BN" bottom: "s-inception_4b/3x3_reduce" top: "s-inception_4b/3x3_reduce_bn" 330 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 331 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 332 | layer { name: "s-inception_4b/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_4b/3x3_reduce_bn" top: "s-inception_4b/3x3_reduce_bn" } 333 | layer { name: "s-inception_4b/3x3" type: "Convolution" bottom: "s-inception_4b/3x3_reduce_bn" top: "s-inception_4b/3x3" 334 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 335 | convolution_param { num_output: 128 pad: 1 kernel_size: 3 336 | weight_filler { type: "xavier" } 337 | bias_filler { type: "constant" value: 0.2 } } } 338 | layer { name: "s-inception_4b/3x3_bn" type: "BN" bottom: "s-inception_4b/3x3" top: "s-inception_4b/3x3_bn" 339 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 340 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 341 | layer { name: "s-inception_4b/relu_3x3" type: "ReLU" bottom: "s-inception_4b/3x3_bn" top: "s-inception_4b/3x3_bn" } 342 | layer { name: "s-inception_4b/double_3x3_reduce" type: "Convolution" bottom: "s-inception_4a/output" top: "s-inception_4b/double_3x3_reduce" 343 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 344 | convolution_param { num_output: 96 kernel_size: 1 345 | weight_filler { type: "xavier" } 346 | bias_filler { type: "constant" value: 0.2 } } } 347 | layer { name: "s-inception_4b/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_4b/double_3x3_reduce" top: "s-inception_4b/double_3x3_reduce_bn" 348 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 349 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 350 | layer { name: "s-inception_4b/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_4b/double_3x3_reduce_bn" top: "s-inception_4b/double_3x3_reduce_bn" } 351 | layer { name: "s-inception_4b/double_3x3_1" type: "Convolution" bottom: "s-inception_4b/double_3x3_reduce_bn" top: "s-inception_4b/double_3x3_1" 352 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 353 | convolution_param { num_output: 128 pad: 1 kernel_size: 3 354 | weight_filler { type: "xavier"} 355 | bias_filler { type: "constant" value: 0.2 } } } 356 | layer { name: "s-inception_4b/double_3x3_1_bn" type: "BN" bottom: "s-inception_4b/double_3x3_1" top: "s-inception_4b/double_3x3_1_bn" 357 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 358 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 359 | layer { name: "s-inception_4b/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_4b/double_3x3_1_bn" top: "s-inception_4b/double_3x3_1_bn" } 360 | layer { name: "s-inception_4b/double_3x3_2" type: "Convolution" bottom: "s-inception_4b/double_3x3_1_bn" top: "s-inception_4b/double_3x3_2" 361 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 362 | convolution_param { num_output: 128 pad: 1 kernel_size: 3 363 | weight_filler { type: "xavier"} 364 | bias_filler { type: "constant" value: 0.2 } } } 365 | layer { name: "s-inception_4b/double_3x3_2_bn" type: "BN" bottom: "s-inception_4b/double_3x3_2" top: "s-inception_4b/double_3x3_2_bn" 366 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 367 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 368 | layer { name: "s-inception_4b/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_4b/double_3x3_2_bn" top: "s-inception_4b/double_3x3_2_bn" } 369 | layer { name: "s-inception_4b/pool" type: "Pooling" bottom: "s-inception_4a/output" top: "s-inception_4b/pool" 370 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 371 | layer { name: "s-inception_4b/pool_proj" type: "Convolution" bottom: "s-inception_4b/pool" top: "s-inception_4b/pool_proj" 372 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 373 | convolution_param { num_output: 128 kernel_size: 1 374 | weight_filler { type: "xavier" } 375 | bias_filler { type: "constant" value: 0.2 } } } 376 | layer { name: "s-inception_4b/pool_proj_bn" type: "BN" bottom: "s-inception_4b/pool_proj" top: "s-inception_4b/pool_proj_bn" 377 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 378 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 379 | layer { name: "s-inception_4b/relu_pool_proj" type: "ReLU" bottom: "s-inception_4b/pool_proj_bn" top: "s-inception_4b/pool_proj_bn" } 380 | layer { name: "s-inception_4b/output" type: "Concat" 381 | bottom: "s-inception_4b/1x1_bn" 382 | bottom: "s-inception_4b/3x3_bn" 383 | bottom: "s-inception_4b/double_3x3_2_bn" 384 | bottom: "s-inception_4b/pool_proj_bn" 385 | top: "s-inception_4b/output" } 386 | 387 | ####################################### s-inception_4c ####################################### 388 | layer { name: "s-inception_4c/1x1" type: "Convolution" bottom: "s-inception_4b/output" top: "s-inception_4c/1x1" 389 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 390 | convolution_param { num_output: 160 kernel_size: 1 391 | weight_filler { type: "xavier"} 392 | bias_filler { type: "constant" value: 0.2 } } } 393 | layer { name: "s-inception_4c/1x1_bn" type: "BN" bottom: "s-inception_4c/1x1" top: "s-inception_4c/1x1_bn" 394 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 395 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 396 | layer { name: "s-inception_4c/relu_1x1" type: "ReLU" bottom: "s-inception_4c/1x1_bn" top: "s-inception_4c/1x1_bn" } 397 | layer { name: "s-inception_4c/3x3_reduce" type: "Convolution" bottom: "s-inception_4b/output" top: "s-inception_4c/3x3_reduce" 398 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 399 | convolution_param { num_output: 128 kernel_size: 1 400 | weight_filler { type: "xavier"} 401 | bias_filler { type: "constant" value: 0.2 } } } 402 | layer { name: "s-inception_4c/3x3_reduce_bn" type: "BN" bottom: "s-inception_4c/3x3_reduce" top: "s-inception_4c/3x3_reduce_bn" 403 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 404 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 405 | layer { name: "s-inception_4c/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_4c/3x3_reduce_bn" top: "s-inception_4c/3x3_reduce_bn" } 406 | layer { name: "s-inception_4c/3x3" type: "Convolution" bottom: "s-inception_4c/3x3_reduce_bn" top: "s-inception_4c/3x3" 407 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 408 | convolution_param { num_output: 160 pad: 1 kernel_size: 3 409 | weight_filler { type: "xavier" } 410 | bias_filler { type: "constant" value: 0.2 } } } 411 | layer { name: "s-inception_4c/3x3_bn" type: "BN" bottom: "s-inception_4c/3x3" top: "s-inception_4c/3x3_bn" 412 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 413 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 414 | layer { name: "s-inception_4c/relu_3x3" type: "ReLU" bottom: "s-inception_4c/3x3_bn" top: "s-inception_4c/3x3_bn" } 415 | layer { name: "s-inception_4c/double_3x3_reduce" type: "Convolution" bottom: "s-inception_4b/output" top: "s-inception_4c/double_3x3_reduce" 416 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 417 | convolution_param { num_output: 128 kernel_size: 1 418 | weight_filler { type: "xavier" } 419 | bias_filler { type: "constant" value: 0.2 } } } 420 | layer { name: "s-inception_4c/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_4c/double_3x3_reduce" top: "s-inception_4c/double_3x3_reduce_bn" 421 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 422 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 423 | layer { name: "s-inception_4c/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_4c/double_3x3_reduce_bn" top: "s-inception_4c/double_3x3_reduce_bn" } 424 | layer { name: "s-inception_4c/double_3x3_1" type: "Convolution" bottom: "s-inception_4c/double_3x3_reduce_bn" top: "s-inception_4c/double_3x3_1" 425 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 426 | convolution_param { num_output: 160 pad: 1 kernel_size: 3 427 | weight_filler { type: "xavier"} 428 | bias_filler { type: "constant" value: 0.2 } } } 429 | layer { name: "s-inception_4c/double_3x3_1_bn" type: "BN" bottom: "s-inception_4c/double_3x3_1" top: "s-inception_4c/double_3x3_1_bn" 430 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 431 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 432 | layer { name: "s-inception_4c/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_4c/double_3x3_1_bn" top: "s-inception_4c/double_3x3_1_bn" } 433 | layer { name: "s-inception_4c/double_3x3_2" type: "Convolution" bottom: "s-inception_4c/double_3x3_1_bn" top: "s-inception_4c/double_3x3_2" 434 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 435 | convolution_param { num_output: 160 pad: 1 kernel_size: 3 436 | weight_filler { type: "xavier"} 437 | bias_filler { type: "constant" value: 0.2 } } } 438 | layer { name: "s-inception_4c/double_3x3_2_bn" type: "BN" bottom: "s-inception_4c/double_3x3_2" top: "s-inception_4c/double_3x3_2_bn" 439 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 440 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 441 | layer { name: "s-inception_4c/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_4c/double_3x3_2_bn" top: "s-inception_4c/double_3x3_2_bn" } 442 | layer { name: "s-inception_4c/pool" type: "Pooling" bottom: "s-inception_4b/output" top: "s-inception_4c/pool" 443 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 444 | layer { name: "s-inception_4c/pool_proj" type: "Convolution" bottom: "s-inception_4c/pool" top: "s-inception_4c/pool_proj" 445 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 446 | convolution_param { num_output: 128 kernel_size: 1 447 | weight_filler { type: "xavier" } 448 | bias_filler { type: "constant" value: 0.2 } } } 449 | layer { name: "s-inception_4c/pool_proj_bn" type: "BN" bottom: "s-inception_4c/pool_proj" top: "s-inception_4c/pool_proj_bn" 450 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 451 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 452 | layer { name: "s-inception_4c/relu_pool_proj" type: "ReLU" bottom: "s-inception_4c/pool_proj_bn" top: "s-inception_4c/pool_proj_bn" } 453 | layer { name: "s-inception_4c/output" type: "Concat" 454 | bottom: "s-inception_4c/1x1_bn" 455 | bottom: "s-inception_4c/3x3_bn" 456 | bottom: "s-inception_4c/double_3x3_2_bn" 457 | bottom: "s-inception_4c/pool_proj_bn" 458 | top: "s-inception_4c/output" } 459 | 460 | ####################################### s-inception_4d ####################################### 461 | layer { name: "s-inception_4d/1x1" type: "Convolution" bottom: "s-inception_4c/output" top: "s-inception_4d/1x1" 462 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 463 | convolution_param { num_output: 96 kernel_size: 1 464 | weight_filler { type: "xavier"} 465 | bias_filler { type: "constant" value: 0.2 } } } 466 | layer { name: "s-inception_4d/1x1_bn" type: "BN" bottom: "s-inception_4d/1x1" top: "s-inception_4d/1x1_bn" 467 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 468 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 469 | layer { name: "s-inception_4d/relu_1x1" type: "ReLU" bottom: "s-inception_4d/1x1_bn" top: "s-inception_4d/1x1_bn" } 470 | layer { name: "s-inception_4d/3x3_reduce" type: "Convolution" bottom: "s-inception_4c/output" top: "s-inception_4d/3x3_reduce" 471 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 472 | convolution_param { num_output: 128 kernel_size: 1 473 | weight_filler { type: "xavier"} 474 | bias_filler { type: "constant" value: 0.2 } } } 475 | layer { name: "s-inception_4d/3x3_reduce_bn" type: "BN" bottom: "s-inception_4d/3x3_reduce" top: "s-inception_4d/3x3_reduce_bn" 476 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 477 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 478 | layer { name: "s-inception_4d/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_4d/3x3_reduce_bn" top: "s-inception_4d/3x3_reduce_bn" } 479 | layer { name: "s-inception_4d/3x3" type: "Convolution" bottom: "s-inception_4d/3x3_reduce_bn" top: "s-inception_4d/3x3" 480 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 481 | convolution_param { num_output: 192 pad: 1 kernel_size: 3 482 | weight_filler { type: "xavier" } 483 | bias_filler { type: "constant" value: 0.2 } } } 484 | layer { name: "s-inception_4d/3x3_bn" type: "BN" bottom: "s-inception_4d/3x3" top: "s-inception_4d/3x3_bn" 485 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 486 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 487 | layer { name: "s-inception_4d/relu_3x3" type: "ReLU" bottom: "s-inception_4d/3x3_bn" top: "s-inception_4d/3x3_bn" } 488 | layer { name: "s-inception_4d/double_3x3_reduce" type: "Convolution" bottom: "s-inception_4c/output" top: "s-inception_4d/double_3x3_reduce" 489 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 490 | convolution_param { num_output: 160 kernel_size: 1 491 | weight_filler { type: "xavier" } 492 | bias_filler { type: "constant" value: 0.2 } } } 493 | layer { name: "s-inception_4d/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_4d/double_3x3_reduce" top: "s-inception_4d/double_3x3_reduce_bn" 494 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 495 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 496 | layer { name: "s-inception_4d/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_4d/double_3x3_reduce_bn" top: "s-inception_4d/double_3x3_reduce_bn" } 497 | layer { name: "s-inception_4d/double_3x3_1" type: "Convolution" bottom: "s-inception_4d/double_3x3_reduce_bn" top: "s-inception_4d/double_3x3_1" 498 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 499 | convolution_param { num_output: 192 pad: 1 kernel_size: 3 500 | weight_filler { type: "xavier"} 501 | bias_filler { type: "constant" value: 0.2 } } } 502 | layer { name: "s-inception_4d/double_3x3_1_bn" type: "BN" bottom: "s-inception_4d/double_3x3_1" top: "s-inception_4d/double_3x3_1_bn" 503 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 504 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 505 | layer { name: "s-inception_4d/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_4d/double_3x3_1_bn" top: "s-inception_4d/double_3x3_1_bn" } 506 | layer { name: "s-inception_4d/double_3x3_2" type: "Convolution" bottom: "s-inception_4d/double_3x3_1_bn" top: "s-inception_4d/double_3x3_2" 507 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 508 | convolution_param { num_output: 192 pad: 1 kernel_size: 3 509 | weight_filler { type: "xavier"} 510 | bias_filler { type: "constant" value: 0.2 } } } 511 | layer { name: "s-inception_4d/double_3x3_2_bn" type: "BN" bottom: "s-inception_4d/double_3x3_2" top: "s-inception_4d/double_3x3_2_bn" 512 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 513 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 514 | layer { name: "s-inception_4d/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_4d/double_3x3_2_bn" top: "s-inception_4d/double_3x3_2_bn" } 515 | layer { name: "s-inception_4d/pool" type: "Pooling" bottom: "s-inception_4c/output" top: "s-inception_4d/pool" 516 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 517 | layer { name: "s-inception_4d/pool_proj" type: "Convolution" bottom: "s-inception_4d/pool" top: "s-inception_4d/pool_proj" 518 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 519 | convolution_param { num_output: 128 kernel_size: 1 520 | weight_filler { type: "xavier" } 521 | bias_filler { type: "constant" value: 0.2 } } } 522 | layer { name: "s-inception_4d/pool_proj_bn" type: "BN" bottom: "s-inception_4d/pool_proj" top: "s-inception_4d/pool_proj_bn" 523 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 524 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 525 | layer { name: "s-inception_4d/relu_pool_proj" type: "ReLU" bottom: "s-inception_4d/pool_proj_bn" top: "s-inception_4d/pool_proj_bn" } 526 | layer { name: "s-inception_4d/output" type: "Concat" 527 | bottom: "s-inception_4d/1x1_bn" 528 | bottom: "s-inception_4d/3x3_bn" 529 | bottom: "s-inception_4d/double_3x3_2_bn" 530 | bottom: "s-inception_4d/pool_proj_bn" 531 | top: "s-inception_4d/output" } 532 | 533 | ####################################### s-inception_4e ####################################### 534 | layer { name: "s-inception_4e/3x3_reduce" type: "Convolution" bottom: "s-inception_4d/output" top: "s-inception_4e/3x3_reduce" 535 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 536 | convolution_param { num_output: 128 kernel_size: 1 537 | weight_filler { type: "xavier"} 538 | bias_filler { type: "constant" value: 0.2 } } } 539 | layer { name: "s-inception_4e/3x3_reduce_bn" type: "BN" bottom: "s-inception_4e/3x3_reduce" top: "s-inception_4e/3x3_reduce_bn" 540 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 541 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 542 | layer { name: "s-inception_4e/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_4e/3x3_reduce_bn" top: "s-inception_4e/3x3_reduce_bn" } 543 | layer { name: "s-inception_4e/3x3" type: "Convolution" bottom: "s-inception_4e/3x3_reduce_bn" top: "s-inception_4e/3x3" 544 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 545 | convolution_param { num_output: 192 pad: 1 kernel_size: 3 stride: 2 546 | weight_filler { type: "xavier" } 547 | bias_filler { type: "constant" value: 0.2 } } } 548 | layer { name: "s-inception_4e/3x3_bn" type: "BN" bottom: "s-inception_4e/3x3" top: "s-inception_4e/3x3_bn" 549 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 550 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 551 | layer { name: "s-inception_4e/relu_3x3" type: "ReLU" bottom: "s-inception_4e/3x3_bn" top: "s-inception_4e/3x3_bn" } 552 | layer { name: "s-inception_4e/double_3x3_reduce" type: "Convolution" bottom: "s-inception_4d/output" top: "s-inception_4e/double_3x3_reduce" 553 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 554 | convolution_param { num_output: 192 kernel_size: 1 555 | weight_filler { type: "xavier" } 556 | bias_filler { type: "constant" value: 0.2 } } } 557 | layer { name: "s-inception_4e/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_4e/double_3x3_reduce" top: "s-inception_4e/double_3x3_reduce_bn" 558 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 559 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 560 | layer { name: "s-inception_4e/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_4e/double_3x3_reduce_bn" top: "s-inception_4e/double_3x3_reduce_bn" } 561 | layer { name: "s-inception_4e/double_3x3_1" type: "Convolution" bottom: "s-inception_4e/double_3x3_reduce_bn" top: "s-inception_4e/double_3x3_1" 562 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 563 | convolution_param { num_output: 256 pad: 1 kernel_size: 3 564 | weight_filler { type: "xavier"} 565 | bias_filler { type: "constant" value: 0.2 } } } 566 | layer { name: "s-inception_4e/double_3x3_1_bn" type: "BN" bottom: "s-inception_4e/double_3x3_1" top: "s-inception_4e/double_3x3_1_bn" 567 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 568 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 569 | layer { name: "s-inception_4e/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_4e/double_3x3_1_bn" top: "s-inception_4e/double_3x3_1_bn" } 570 | layer { name: "s-inception_4e/double_3x3_2" type: "Convolution" bottom: "s-inception_4e/double_3x3_1_bn" top: "s-inception_4e/double_3x3_2" 571 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 572 | convolution_param { num_output: 256 pad: 1 kernel_size: 3 stride: 2 573 | weight_filler { type: "xavier"} 574 | bias_filler { type: "constant" value: 0.2 } } } 575 | layer { name: "s-inception_4e/double_3x3_2_bn" type: "BN" bottom: "s-inception_4e/double_3x3_2" top: "s-inception_4e/double_3x3_2_bn" 576 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 577 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 578 | layer { name: "s-inception_4e/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_4e/double_3x3_2_bn" top: "s-inception_4e/double_3x3_2_bn" } 579 | layer { name: "s-inception_4e/pool" type: "Pooling" bottom: "s-inception_4d/output" top: "s-inception_4e/pool" 580 | pooling_param { pool: MAX kernel_size: 3 stride: 2 } } 581 | layer { name: "s-inception_4e/output" type: "Concat" 582 | bottom: "s-inception_4e/3x3_bn" 583 | bottom: "s-inception_4e/double_3x3_2_bn" 584 | bottom: "s-inception_4e/pool" 585 | top: "s-inception_4e/output" } 586 | ###################################### s-inception_5a ########################################## 587 | layer { name: "s-inception_5a/1x1" type: "Convolution" bottom: "s-inception_4e/output" top: "s-inception_5a/1x1" 588 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 589 | convolution_param { num_output: 352 kernel_size: 1 590 | weight_filler { type: "xavier"} 591 | bias_filler { type: "constant" value: 0.2 } } } 592 | layer { name: "s-inception_5a/1x1_bn" type: "BN" bottom: "s-inception_5a/1x1" top: "s-inception_5a/1x1_bn" 593 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 594 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 595 | layer { name: "s-inception_5a/relu_1x1" type: "ReLU" bottom: "s-inception_5a/1x1_bn" top: "s-inception_5a/1x1_bn" } 596 | layer { name: "s-inception_5a/3x3_reduce" type: "Convolution" bottom: "s-inception_4e/output" top: "s-inception_5a/3x3_reduce" 597 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 598 | convolution_param { num_output: 192 kernel_size: 1 599 | weight_filler { type: "xavier"} 600 | bias_filler { type: "constant" value: 0.2 } } } 601 | layer { name: "s-inception_5a/3x3_reduce_bn" type: "BN" bottom: "s-inception_5a/3x3_reduce" top: "s-inception_5a/3x3_reduce_bn" 602 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 603 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 604 | layer { name: "s-inception_5a/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_5a/3x3_reduce_bn" top: "s-inception_5a/3x3_reduce_bn" } 605 | layer { name: "s-inception_5a/3x3" type: "Convolution" bottom: "s-inception_5a/3x3_reduce_bn" top: "s-inception_5a/3x3" 606 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 607 | convolution_param { num_output: 320 pad: 1 kernel_size: 3 608 | weight_filler { type: "xavier" } 609 | bias_filler { type: "constant" value: 0.2 } } } 610 | layer { name: "s-inception_5a/3x3_bn" type: "BN" bottom: "s-inception_5a/3x3" top: "s-inception_5a/3x3_bn" 611 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 612 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 613 | layer { name: "s-inception_5a/relu_3x3" type: "ReLU" bottom: "s-inception_5a/3x3_bn" top: "s-inception_5a/3x3_bn" } 614 | layer { name: "s-inception_5a/double_3x3_reduce" type: "Convolution" bottom: "s-inception_4e/output" top: "s-inception_5a/double_3x3_reduce" 615 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 616 | convolution_param { num_output: 160 kernel_size: 1 617 | weight_filler { type: "xavier" } 618 | bias_filler { type: "constant" value: 0.2 } } } 619 | layer { name: "s-inception_5a/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_5a/double_3x3_reduce" top: "s-inception_5a/double_3x3_reduce_bn" 620 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 621 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 622 | layer { name: "s-inception_5a/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_5a/double_3x3_reduce_bn" top: "s-inception_5a/double_3x3_reduce_bn" } 623 | layer { name: "s-inception_5a/double_3x3_1" type: "Convolution" bottom: "s-inception_5a/double_3x3_reduce_bn" top: "s-inception_5a/double_3x3_1" 624 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 625 | convolution_param { num_output: 224 pad: 1 kernel_size: 3 626 | weight_filler { type: "xavier"} 627 | bias_filler { type: "constant" value: 0.2 } } } 628 | layer { name: "s-inception_5a/double_3x3_1_bn" type: "BN" bottom: "s-inception_5a/double_3x3_1" top: "s-inception_5a/double_3x3_1_bn" 629 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 630 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 631 | layer { name: "s-inception_5a/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_5a/double_3x3_1_bn" top: "s-inception_5a/double_3x3_1_bn" } 632 | layer { name: "s-inception_5a/double_3x3_2" type: "Convolution" bottom: "s-inception_5a/double_3x3_1_bn" top: "s-inception_5a/double_3x3_2" 633 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 634 | convolution_param { num_output: 224 pad: 1 kernel_size: 3 635 | weight_filler { type: "xavier"} 636 | bias_filler { type: "constant" value: 0.2 } } } 637 | layer { name: "s-inception_5a/double_3x3_2_bn" type: "BN" bottom: "s-inception_5a/double_3x3_2" top: "s-inception_5a/double_3x3_2_bn" 638 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 639 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 640 | layer { name: "s-inception_5a/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_5a/double_3x3_2_bn" top: "s-inception_5a/double_3x3_2_bn" } 641 | layer { name: "s-inception_5a/pool" type: "Pooling" bottom: "s-inception_4e/output" top: "s-inception_5a/pool" 642 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1} } 643 | layer { name: "s-inception_5a/pool_proj" type: "Convolution" bottom: "s-inception_5a/pool" top: "s-inception_5a/pool_proj" 644 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 645 | convolution_param { num_output: 128 kernel_size: 1 646 | weight_filler { type: "xavier" } 647 | bias_filler { type: "constant" value: 0.2 } } } 648 | layer { name: "s-inception_5a/pool_proj_bn" type: "BN" bottom: "s-inception_5a/pool_proj" top: "s-inception_5a/pool_proj_bn" 649 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 650 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 651 | layer { name: "s-inception_5a/relu_pool_proj" type: "ReLU" bottom: "s-inception_5a/pool_proj_bn" top: "s-inception_5a/pool_proj_bn" } 652 | layer { name: "s-inception_5a/output" type: "Concat" 653 | bottom: "s-inception_5a/1x1_bn" 654 | bottom: "s-inception_5a/3x3_bn" 655 | bottom: "s-inception_5a/double_3x3_2_bn" 656 | bottom: "s-inception_5a/pool_proj_bn" 657 | top: "s-inception_5a/output" } 658 | 659 | ####################################### s-inception_5b ####################################### 660 | layer { name: "s-inception_5b/1x1" type: "Convolution" bottom: "s-inception_5a/output" top: "s-inception_5b/1x1" 661 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 662 | convolution_param { num_output: 352 kernel_size: 1 663 | weight_filler { type: "xavier"} 664 | bias_filler { type: "constant" value: 0.2 } } } 665 | layer { name: "s-inception_5b/1x1_bn" type: "BN" bottom: "s-inception_5b/1x1" top: "s-inception_5b/1x1_bn" 666 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 667 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 668 | layer { name: "s-inception_5b/relu_1x1" type: "ReLU" bottom: "s-inception_5b/1x1_bn" top: "s-inception_5b/1x1_bn" } 669 | layer { name: "s-inception_5b/3x3_reduce" type: "Convolution" bottom: "s-inception_5a/output" top: "s-inception_5b/3x3_reduce" 670 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 671 | convolution_param { num_output: 192 kernel_size: 1 672 | weight_filler { type: "xavier"} 673 | bias_filler { type: "constant" value: 0.2 } } } 674 | layer { name: "s-inception_5b/3x3_reduce_bn" type: "BN" bottom: "s-inception_5b/3x3_reduce" top: "s-inception_5b/3x3_reduce_bn" 675 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 676 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 677 | layer { name: "s-inception_5b/relu_3x3_reduce" type: "ReLU" bottom: "s-inception_5b/3x3_reduce_bn" top: "s-inception_5b/3x3_reduce_bn" } 678 | layer { name: "s-inception_5b/3x3" type: "Convolution" bottom: "s-inception_5b/3x3_reduce_bn" top: "s-inception_5b/3x3" 679 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 680 | convolution_param { num_output: 320 pad: 1 kernel_size: 3 681 | weight_filler { type: "xavier" } 682 | bias_filler { type: "constant" value: 0.2 } } } 683 | layer { name: "s-inception_5b/3x3_bn" type: "BN" bottom: "s-inception_5b/3x3" top: "s-inception_5b/3x3_bn" 684 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 685 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 686 | layer { name: "s-inception_5b/relu_3x3" type: "ReLU" bottom: "s-inception_5b/3x3_bn" top: "s-inception_5b/3x3_bn" } 687 | layer { name: "s-inception_5b/double_3x3_reduce" type: "Convolution" bottom: "s-inception_5a/output" top: "s-inception_5b/double_3x3_reduce" 688 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 689 | convolution_param { num_output: 192 kernel_size: 1 690 | weight_filler { type: "xavier" } 691 | bias_filler { type: "constant" value: 0.2 } } } 692 | layer { name: "s-inception_5b/double_3x3_reduce_bn" type: "BN" bottom: "s-inception_5b/double_3x3_reduce" top: "s-inception_5b/double_3x3_reduce_bn" 693 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 694 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 695 | layer { name: "s-inception_5b/relu_double_3x3_reduce" type: "ReLU" bottom: "s-inception_5b/double_3x3_reduce_bn" top: "s-inception_5b/double_3x3_reduce_bn" } 696 | layer { name: "s-inception_5b/double_3x3_1" type: "Convolution" bottom: "s-inception_5b/double_3x3_reduce_bn" top: "s-inception_5b/double_3x3_1" 697 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 698 | convolution_param { num_output: 224 pad: 1 kernel_size: 3 699 | weight_filler { type: "xavier"} 700 | bias_filler { type: "constant" value: 0.2 } } } 701 | layer { name: "s-inception_5b/double_3x3_1_bn" type: "BN" bottom: "s-inception_5b/double_3x3_1" top: "s-inception_5b/double_3x3_1_bn" 702 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 703 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 704 | layer { name: "s-inception_5b/relu_double_3x3_1" type: "ReLU" bottom: "s-inception_5b/double_3x3_1_bn" top: "s-inception_5b/double_3x3_1_bn" } 705 | layer { name: "s-inception_5b/double_3x3_2" type: "Convolution" bottom: "s-inception_5b/double_3x3_1_bn" top: "s-inception_5b/double_3x3_2" 706 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 707 | convolution_param { num_output: 224 pad: 1 kernel_size: 3 708 | weight_filler { type: "xavier"} 709 | bias_filler { type: "constant" value: 0.2 } } } 710 | layer { name: "s-inception_5b/double_3x3_2_bn" type: "BN" bottom: "s-inception_5b/double_3x3_2" top: "s-inception_5b/double_3x3_2_bn" 711 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 712 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 713 | layer { name: "s-inception_5b/relu_double_3x3_2" type: "ReLU" bottom: "s-inception_5b/double_3x3_2_bn" top: "s-inception_5b/double_3x3_2_bn" } 714 | layer { name: "s-inception_5b/pool" type: "Pooling" bottom: "s-inception_5a/output" top: "s-inception_5b/pool" 715 | pooling_param { pool: MAX kernel_size: 3 stride: 1 pad: 1 } } 716 | layer { name: "s-inception_5b/pool_proj" type: "Convolution" bottom: "s-inception_5b/pool" top: "s-inception_5b/pool_proj" 717 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 718 | convolution_param { num_output: 128 kernel_size: 1 719 | weight_filler { type: "xavier" } 720 | bias_filler { type: "constant" value: 0.2 } } } 721 | layer { name: "s-inception_5b/pool_proj_bn" type: "BN" bottom: "s-inception_5b/pool_proj" top: "s-inception_5b/pool_proj_bn" 722 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 723 | bn_param { slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 724 | layer { name: "s-inception_5b/relu_pool_proj" type: "ReLU" bottom: "s-inception_5b/pool_proj_bn" top: "s-inception_5b/pool_proj_bn" } 725 | layer { name: "s-inception_5b/output" type: "Concat" 726 | bottom: "s-inception_5b/1x1_bn" 727 | bottom: "s-inception_5b/3x3_bn" 728 | bottom: "s-inception_5b/double_3x3_2_bn" 729 | bottom: "s-inception_5b/pool_proj_bn" 730 | top: "s-inception_5b/output" } 731 | 732 | ####################################### s-global pool ####################################### 733 | layer { name: "s-global_pool" top: "s-global_pool" bottom: "s-inception_5b/output" type: "Pooling" 734 | pooling_param { pool: AVE kernel_size: 7 stride: 1 } } 735 | 736 | 737 | layer { name: "fc-scene" type: "InnerProduct" bottom: "s-global_pool" top: "fc" 738 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 739 | inner_product_param { num_output: 365 740 | weight_filler { type: "xavier" } 741 | bias_filler { type: "constant" value: 0 } } } 742 | -------------------------------------------------------------------------------- /models/kd_train/256_scene_kd_inception2_solver.prototxt: -------------------------------------------------------------------------------- 1 | net: "models/kd_train/256_scene_kd_inception2_train_val.prototxt" 2 | 3 | # testing parameter 4 | test_iter: 912 5 | test_interval: 5000 6 | test_initialization: false 7 | 8 | # output 9 | display: 20 10 | average_loss: 20 11 | snapshot: 10000 12 | snapshot_prefix: "places3_standard_256_kd_scene_inception_bn_w_0.25" 13 | 14 | # learning rate 15 | base_lr: 0.1 16 | lr_policy: "step" 17 | gamma: 0.1 18 | stepsize: 150000 19 | max_iter: 600000 20 | iter_size: 1 21 | 22 | # parameter of SGD 23 | momentum: 0.9 24 | weight_decay: 0.0005 25 | 26 | # GPU setting 27 | solver_mode: GPU 28 | device_id: [0,1,2,3,4,5,6,7] 29 | richness: 10 30 | 31 | -------------------------------------------------------------------------------- /models/kd_train/384_object_kd_inception2_solver.prototxt: -------------------------------------------------------------------------------- 1 | net: "models/kd_train/384_object_kd_inception2_train_val.prototxt" 2 | 3 | # testing parameter 4 | test_iter: 912 5 | test_interval: 5000 6 | test_initialization: false 7 | 8 | # output 9 | display: 20 10 | average_loss: 20 11 | snapshot: 10000 12 | snapshot_prefix: "places3_standard_384_kd_object_inception_bn_w_0.25" 13 | 14 | # learning rate 15 | base_lr: 0.1 16 | lr_policy: "step" 17 | gamma: 0.1 18 | stepsize: 150000 19 | max_iter: 600000 20 | iter_size: 1 21 | 22 | # parameter of SGD 23 | momentum: 0.9 24 | weight_decay: 0.0005 25 | 26 | # GPU setting 27 | solver_mode: GPU 28 | device_id: [0,1,2,3,4,5,6,7] 29 | richness: 10 30 | 31 | -------------------------------------------------------------------------------- /models/kd_train/384_scene_kd_inception2_solver.prototxt: -------------------------------------------------------------------------------- 1 | net: "models/kd_train/384_scene_kd_inception2_train_val.prototxt" 2 | 3 | # testing parameter 4 | test_iter: 912 5 | test_interval: 5000 6 | test_initialization: false 7 | 8 | # output 9 | display: 20 10 | average_loss: 20 11 | snapshot: 10000 12 | snapshot_prefix: "places3_standard_384_kd_scene_inception_bn_w_0.25" 13 | 14 | # learning rate 15 | base_lr: 0.1 16 | lr_policy: "step" 17 | gamma: 0.1 18 | stepsize: 150000 19 | max_iter: 600000 20 | iter_size: 1 21 | 22 | # parameter of SGD 23 | momentum: 0.9 24 | weight_decay: 0.0005 25 | 26 | # GPU setting 27 | solver_mode: GPU 28 | device_id: [0,1,2,3,4,5,6,7] 29 | richness: 10 30 | 31 | -------------------------------------------------------------------------------- /models/standard_train/256_inception2_deploy.prototxt: -------------------------------------------------------------------------------- 1 | name: "Inception2_256" 2 | input: "data" 3 | input_dim: [10, 3, 224, 224] 4 | 5 | ####################################### conv1 ####################################### 6 | layer { name: "conv1/7x7_s2" type: "Convolution" bottom: "data" top: "conv1/7x7_s2" 7 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 8 | convolution_param { num_output: 64 pad: 3 kernel_size: 7 stride: 2 9 | weight_filler { type: "xavier" } 10 | bias_filler { type: "constant" value: 0.2 } } } 11 | layer { name: "conv1/7x7_s2_bn" type: "BN" bottom: "conv1/7x7_s2" top: "conv1/7x7_s2_bn" 12 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 13 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 14 | layer { name: "conv1/relu_7x7" type: "ReLU" bottom: "conv1/7x7_s2_bn" top: "conv1/7x7_s2_bn" } 15 | layer { name: "pool1/3x3_s2" type: "Pooling" bottom: "conv1/7x7_s2_bn" top: "pool1/3x3_s2" 16 | pooling_param { pool: MAX kernel_size: 3 stride: 2 } } 17 | 18 | ####################################### conv2 ####################################### 19 | layer { name: "conv2/3x3_reduce" type: "Convolution" bottom: "pool1/3x3_s2" top: "conv2/3x3_reduce" 20 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 21 | convolution_param { num_output: 64 kernel_size: 1 22 | weight_filler { type: "xavier"} 23 | bias_filler { type: "constant" value: 0.2 } } } 24 | layer { name: "conv2/3x3_reduce_bn" type: "BN" bottom: "conv2/3x3_reduce" top: "conv2/3x3_reduce_bn" 25 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 26 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 27 | layer { name: "conv2/relu_3x3_reduce" type: "ReLU" bottom: "conv2/3x3_reduce_bn" top: "conv2/3x3_reduce_bn" } 28 | layer { name: "conv2/3x3" type: "Convolution" bottom: "conv2/3x3_reduce_bn" top: "conv2/3x3" 29 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 30 | convolution_param { num_output: 192 pad: 1 kernel_size: 3 31 | weight_filler { type: "xavier"} 32 | bias_filler { type: "constant" value: 0.2 } } } 33 | layer { name: "conv2/3x3_bn" type: "BN" bottom: "conv2/3x3" top: "conv2/3x3_bn" 34 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 35 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 36 | layer { name: "conv2/relu_3x3" type: "ReLU" bottom: "conv2/3x3_bn" top: "conv2/3x3_bn" } 37 | layer { name: "pool2/3x3_s2" type: "Pooling" bottom: "conv2/3x3_bn" top: "pool2/3x3_s2" 38 | pooling_param { pool: MAX kernel_size: 3 stride: 2 } } 39 | 40 | ####################################### inception_3a ####################################### 41 | layer { name: "inception_3a/1x1" type: "Convolution" bottom: "pool2/3x3_s2" top: "inception_3a/1x1" 42 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 43 | convolution_param { num_output: 64 kernel_size: 1 44 | weight_filler { type: "xavier"} 45 | bias_filler { type: "constant" value: 0.2 } } } 46 | layer { name: "inception_3a/1x1_bn" type: "BN" bottom: "inception_3a/1x1" top: "inception_3a/1x1_bn" 47 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 48 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 49 | layer { name: "inception_3a/relu_1x1" type: "ReLU" bottom: "inception_3a/1x1_bn" top: "inception_3a/1x1_bn" } 50 | layer { name: "inception_3a/3x3_reduce" type: "Convolution" bottom: "pool2/3x3_s2" top: "inception_3a/3x3_reduce" 51 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 52 | convolution_param { num_output: 64 kernel_size: 1 53 | weight_filler { type: "xavier"} 54 | bias_filler { type: "constant" value: 0.2 } } } 55 | layer { name: "inception_3a/3x3_reduce_bn" type: "BN" bottom: "inception_3a/3x3_reduce" top: "inception_3a/3x3_reduce_bn" 56 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 57 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 58 | layer { name: "inception_3a/relu_3x3_reduce" type: "ReLU" bottom: "inception_3a/3x3_reduce_bn" top: "inception_3a/3x3_reduce_bn" } 59 | layer { name: "inception_3a/3x3" type: "Convolution" bottom: "inception_3a/3x3_reduce_bn" top: "inception_3a/3x3" 60 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 61 | convolution_param { num_output: 64 pad: 1 kernel_size: 3 62 | weight_filler { type: "xavier" } 63 | bias_filler { type: "constant" value: 0.2 } } } 64 | layer { name: "inception_3a/3x3_bn" type: "BN" bottom: "inception_3a/3x3" top: "inception_3a/3x3_bn" 65 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 66 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 67 | layer { name: "inception_3a/relu_3x3" type: "ReLU" bottom: "inception_3a/3x3_bn" top: "inception_3a/3x3_bn" } 68 | layer { name: "inception_3a/double_3x3_reduce" type: "Convolution" bottom: "pool2/3x3_s2" top: "inception_3a/double_3x3_reduce" 69 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 70 | convolution_param { num_output: 64 kernel_size: 1 71 | weight_filler { type: "xavier" } 72 | bias_filler { type: "constant" value: 0.2 } } } 73 | layer { name: "inception_3a/double_3x3_reduce_bn" type: "BN" bottom: "inception_3a/double_3x3_reduce" top: "inception_3a/double_3x3_reduce_bn" 74 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 75 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 76 | layer { name: "inception_3a/relu_double_3x3_reduce" type: "ReLU" bottom: "inception_3a/double_3x3_reduce_bn" top: "inception_3a/double_3x3_reduce_bn" } 77 | layer { name: "inception_3a/double_3x3_1" type: "Convolution" bottom: "inception_3a/double_3x3_reduce_bn" top: "inception_3a/double_3x3_1" 78 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 79 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 80 | weight_filler { type: "xavier"} 81 | bias_filler { type: "constant" value: 0.2 } } } 82 | layer { name: "inception_3a/double_3x3_1_bn" type: "BN" bottom: "inception_3a/double_3x3_1" top: "inception_3a/double_3x3_1_bn" 83 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 84 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 85 | layer { name: "inception_3a/relu_double_3x3_1" type: "ReLU" bottom: "inception_3a/double_3x3_1_bn" top: "inception_3a/double_3x3_1_bn" } 86 | layer { name: "inception_3a/double_3x3_2" type: "Convolution" bottom: "inception_3a/double_3x3_1_bn" top: "inception_3a/double_3x3_2" 87 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 88 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 89 | weight_filler { type: "xavier"} 90 | bias_filler { type: "constant" value: 0.2 } } } 91 | layer { name: "inception_3a/double_3x3_2_bn" type: "BN" bottom: "inception_3a/double_3x3_2" top: "inception_3a/double_3x3_2_bn" 92 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 93 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 94 | layer { name: "inception_3a/relu_double_3x3_2" type: "ReLU" bottom: "inception_3a/double_3x3_2_bn" top: "inception_3a/double_3x3_2_bn" } 95 | layer { name: "inception_3a/pool" type: "Pooling" bottom: "pool2/3x3_s2" top: "inception_3a/pool" 96 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 97 | layer { name: "inception_3a/pool_proj" type: "Convolution" bottom: "inception_3a/pool" top: "inception_3a/pool_proj" 98 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 99 | convolution_param { num_output: 32 kernel_size: 1 100 | weight_filler { type: "xavier" } 101 | bias_filler { type: "constant" value: 0.2 } } } 102 | layer { name: "inception_3a/pool_proj_bn" type: "BN" bottom: "inception_3a/pool_proj" top: "inception_3a/pool_proj_bn" 103 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 104 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 105 | layer { name: "inception_3a/relu_pool_proj" type: "ReLU" bottom: "inception_3a/pool_proj_bn" top: "inception_3a/pool_proj_bn" } 106 | layer { name: "inception_3a/output" type: "Concat" 107 | bottom: "inception_3a/1x1_bn" 108 | bottom: "inception_3a/3x3_bn" 109 | bottom: "inception_3a/double_3x3_2_bn" 110 | bottom: "inception_3a/pool_proj_bn" 111 | top: "inception_3a/output" } 112 | 113 | ####################################### inception_3b ####################################### 114 | layer { name: "inception_3b/1x1" type: "Convolution" bottom: "inception_3a/output" top: "inception_3b/1x1" 115 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 116 | convolution_param { num_output: 64 kernel_size: 1 117 | weight_filler { type: "xavier"} 118 | bias_filler { type: "constant" value: 0.2 } } } 119 | layer { name: "inception_3b/1x1_bn" type: "BN" bottom: "inception_3b/1x1" top: "inception_3b/1x1_bn" 120 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 121 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 122 | layer { name: "inception_3b/relu_1x1" type: "ReLU" bottom: "inception_3b/1x1_bn" top: "inception_3b/1x1_bn" } 123 | layer { name: "inception_3b/3x3_reduce" type: "Convolution" bottom: "inception_3a/output" top: "inception_3b/3x3_reduce" 124 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 125 | convolution_param { num_output: 64 kernel_size: 1 126 | weight_filler { type: "xavier"} 127 | bias_filler { type: "constant" value: 0.2 } } } 128 | layer { name: "inception_3b/3x3_reduce_bn" type: "BN" bottom: "inception_3b/3x3_reduce" top: "inception_3b/3x3_reduce_bn" 129 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 130 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 131 | layer { name: "inception_3b/relu_3x3_reduce" type: "ReLU" bottom: "inception_3b/3x3_reduce_bn" top: "inception_3b/3x3_reduce_bn" } 132 | layer { name: "inception_3b/3x3" type: "Convolution" bottom: "inception_3b/3x3_reduce_bn" top: "inception_3b/3x3" 133 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 134 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 135 | weight_filler { type: "xavier" } 136 | bias_filler { type: "constant" value: 0.2 } } } 137 | layer { name: "inception_3b/3x3_bn" type: "BN" bottom: "inception_3b/3x3" top: "inception_3b/3x3_bn" 138 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 139 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 140 | layer { name: "inception_3b/relu_3x3" type: "ReLU" bottom: "inception_3b/3x3_bn" top: "inception_3b/3x3_bn" } 141 | layer { name: "inception_3b/double_3x3_reduce" type: "Convolution" bottom: "inception_3a/output" top: "inception_3b/double_3x3_reduce" 142 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 143 | convolution_param { num_output: 64 kernel_size: 1 144 | weight_filler { type: "xavier" } 145 | bias_filler { type: "constant" value: 0.2 } } } 146 | layer { name: "inception_3b/double_3x3_reduce_bn" type: "BN" bottom: "inception_3b/double_3x3_reduce" top: "inception_3b/double_3x3_reduce_bn" 147 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 148 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 149 | layer { name: "inception_3b/relu_double_3x3_reduce" type: "ReLU" bottom: "inception_3b/double_3x3_reduce_bn" top: "inception_3b/double_3x3_reduce_bn" } 150 | layer { name: "inception_3b/double_3x3_1" type: "Convolution" bottom: "inception_3b/double_3x3_reduce_bn" top: "inception_3b/double_3x3_1" 151 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 152 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 153 | weight_filler { type: "xavier"} 154 | bias_filler { type: "constant" value: 0.2 } } } 155 | layer { name: "inception_3b/double_3x3_1_bn" type: "BN" bottom: "inception_3b/double_3x3_1" top: "inception_3b/double_3x3_1_bn" 156 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 157 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 158 | layer { name: "inception_3b/relu_double_3x3_1" type: "ReLU" bottom: "inception_3b/double_3x3_1_bn" top: "inception_3b/double_3x3_1_bn" } 159 | layer { name: "inception_3b/double_3x3_2" type: "Convolution" bottom: "inception_3b/double_3x3_1_bn" top: "inception_3b/double_3x3_2" 160 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 161 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 162 | weight_filler { type: "xavier"} 163 | bias_filler { type: "constant" value: 0.2 } } } 164 | layer { name: "inception_3b/double_3x3_2_bn" type: "BN" bottom: "inception_3b/double_3x3_2" top: "inception_3b/double_3x3_2_bn" 165 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 166 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 167 | layer { name: "inception_3b/relu_double_3x3_2" type: "ReLU" bottom: "inception_3b/double_3x3_2_bn" top: "inception_3b/double_3x3_2_bn" } 168 | layer { name: "inception_3b/pool" type: "Pooling" bottom: "inception_3a/output" top: "inception_3b/pool" 169 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 170 | layer { name: "inception_3b/pool_proj" type: "Convolution" bottom: "inception_3b/pool" top: "inception_3b/pool_proj" 171 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 172 | convolution_param { num_output: 64 kernel_size: 1 173 | weight_filler { type: "xavier" } 174 | bias_filler { type: "constant" value: 0.2 } } } 175 | layer { name: "inception_3b/pool_proj_bn" type: "BN" bottom: "inception_3b/pool_proj" top: "inception_3b/pool_proj_bn" 176 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 177 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 178 | layer { name: "inception_3b/relu_pool_proj" type: "ReLU" bottom: "inception_3b/pool_proj_bn" top: "inception_3b/pool_proj_bn" } 179 | layer { name: "inception_3b/output" type: "Concat" 180 | bottom: "inception_3b/1x1_bn" 181 | bottom: "inception_3b/3x3_bn" 182 | bottom: "inception_3b/double_3x3_2_bn" 183 | bottom: "inception_3b/pool_proj_bn" 184 | top: "inception_3b/output" } 185 | 186 | ####################################### inception_3c ####################################### 187 | layer { name: "inception_3c/3x3_reduce" type: "Convolution" bottom: "inception_3b/output" top: "inception_3c/3x3_reduce" 188 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 189 | convolution_param { num_output: 128 kernel_size: 1 190 | weight_filler { type: "xavier"} 191 | bias_filler { type: "constant" value: 0.2 } } } 192 | layer { name: "inception_3c/3x3_reduce_bn" type: "BN" bottom: "inception_3c/3x3_reduce" top: "inception_3c/3x3_reduce_bn" 193 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 194 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 195 | layer { name: "inception_3c/relu_3x3_reduce" type: "ReLU" bottom: "inception_3c/3x3_reduce_bn" top: "inception_3c/3x3_reduce_bn" } 196 | layer { name: "inception_3c/3x3" type: "Convolution" bottom: "inception_3c/3x3_reduce_bn" top: "inception_3c/3x3" 197 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 198 | convolution_param { num_output: 160 pad: 1 kernel_size: 3 stride: 2 199 | weight_filler { type: "xavier" } 200 | bias_filler { type: "constant" value: 0.2 } } } 201 | layer { name: "inception_3c/3x3_bn" type: "BN" bottom: "inception_3c/3x3" top: "inception_3c/3x3_bn" 202 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 203 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 204 | layer { name: "inception_3c/relu_3x3" type: "ReLU" bottom: "inception_3c/3x3_bn" top: "inception_3c/3x3_bn" } 205 | layer { name: "inception_3c/double_3x3_reduce" type: "Convolution" bottom: "inception_3b/output" top: "inception_3c/double_3x3_reduce" 206 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 207 | convolution_param { num_output: 64 kernel_size: 1 208 | weight_filler { type: "xavier" } 209 | bias_filler { type: "constant" value: 0.2 } } } 210 | layer { name: "inception_3c/double_3x3_reduce_bn" type: "BN" bottom: "inception_3c/double_3x3_reduce" top: "inception_3c/double_3x3_reduce_bn" 211 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 212 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 213 | layer { name: "inception_3c/relu_double_3x3_reduce" type: "ReLU" bottom: "inception_3c/double_3x3_reduce_bn" top: "inception_3c/double_3x3_reduce_bn" } 214 | layer { name: "inception_3c/double_3x3_1" type: "Convolution" bottom: "inception_3c/double_3x3_reduce_bn" top: "inception_3c/double_3x3_1" 215 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 216 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 217 | weight_filler { type: "xavier"} 218 | bias_filler { type: "constant" value: 0.2 } } } 219 | layer { name: "inception_3c/double_3x3_1_bn" type: "BN" bottom: "inception_3c/double_3x3_1" top: "inception_3c/double_3x3_1_bn" 220 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 221 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 222 | layer { name: "inception_3c/relu_double_3x3_1" type: "ReLU" bottom: "inception_3c/double_3x3_1_bn" top: "inception_3c/double_3x3_1_bn" } 223 | layer { name: "inception_3c/double_3x3_2" type: "Convolution" bottom: "inception_3c/double_3x3_1_bn" top: "inception_3c/double_3x3_2" 224 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 225 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 stride: 2 226 | weight_filler { type: "xavier"} 227 | bias_filler { type: "constant" value: 0.2 } } } 228 | layer { name: "inception_3c/double_3x3_2_bn" type: "BN" bottom: "inception_3c/double_3x3_2" top: "inception_3c/double_3x3_2_bn" 229 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 230 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 231 | layer { name: "inception_3c/relu_double_3x3_2" type: "ReLU" bottom: "inception_3c/double_3x3_2_bn" top: "inception_3c/double_3x3_2_bn" } 232 | layer { name: "inception_3c/pool" type: "Pooling" bottom: "inception_3b/output" top: "inception_3c/pool" 233 | pooling_param { pool: MAX kernel_size: 3 stride: 2 } } 234 | layer { name: "inception_3c/output" type: "Concat" 235 | bottom: "inception_3c/3x3_bn" 236 | bottom: "inception_3c/double_3x3_2_bn" 237 | bottom: "inception_3c/pool" 238 | top: "inception_3c/output" } 239 | 240 | ####################################### inception_4a ####################################### 241 | layer { name: "inception_4a/1x1" type: "Convolution" bottom: "inception_3c/output" top: "inception_4a/1x1" 242 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 243 | convolution_param { num_output: 224 kernel_size: 1 244 | weight_filler { type: "xavier"} 245 | bias_filler { type: "constant" value: 0.2 } } } 246 | layer { name: "inception_4a/1x1_bn" type: "BN" bottom: "inception_4a/1x1" top: "inception_4a/1x1_bn" 247 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 248 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 249 | layer { name: "inception_4a/relu_1x1" type: "ReLU" bottom: "inception_4a/1x1_bn" top: "inception_4a/1x1_bn" } 250 | layer { name: "inception_4a/3x3_reduce" type: "Convolution" bottom: "inception_3c/output" top: "inception_4a/3x3_reduce" 251 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 252 | convolution_param { num_output: 64 kernel_size: 1 253 | weight_filler { type: "xavier"} 254 | bias_filler { type: "constant" value: 0.2 } } } 255 | layer { name: "inception_4a/3x3_reduce_bn" type: "BN" bottom: "inception_4a/3x3_reduce" top: "inception_4a/3x3_reduce_bn" 256 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 257 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 258 | layer { name: "inception_4a/relu_3x3_reduce" type: "ReLU" bottom: "inception_4a/3x3_reduce_bn" top: "inception_4a/3x3_reduce_bn" } 259 | layer { name: "inception_4a/3x3" type: "Convolution" bottom: "inception_4a/3x3_reduce_bn" top: "inception_4a/3x3" 260 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 261 | convolution_param { num_output: 96 pad: 1 kernel_size: 3 262 | weight_filler { type: "xavier" } 263 | bias_filler { type: "constant" value: 0.2 } } } 264 | layer { name: "inception_4a/3x3_bn" type: "BN" bottom: "inception_4a/3x3" top: "inception_4a/3x3_bn" 265 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 266 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 267 | layer { name: "inception_4a/relu_3x3" type: "ReLU" bottom: "inception_4a/3x3_bn" top: "inception_4a/3x3_bn" } 268 | layer { name: "inception_4a/double_3x3_reduce" type: "Convolution" bottom: "inception_3c/output" top: "inception_4a/double_3x3_reduce" 269 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 270 | convolution_param { num_output: 96 kernel_size: 1 271 | weight_filler { type: "xavier" } 272 | bias_filler { type: "constant" value: 0.2 } } } 273 | layer { name: "inception_4a/double_3x3_reduce_bn" type: "BN" bottom: "inception_4a/double_3x3_reduce" top: "inception_4a/double_3x3_reduce_bn" 274 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 275 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 276 | layer { name: "inception_4a/relu_double_3x3_reduce" type: "ReLU" bottom: "inception_4a/double_3x3_reduce_bn" top: "inception_4a/double_3x3_reduce_bn" } 277 | layer { name: "inception_4a/double_3x3_1" type: "Convolution" bottom: "inception_4a/double_3x3_reduce_bn" top: "inception_4a/double_3x3_1" 278 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 279 | convolution_param { num_output: 128 pad: 1 kernel_size: 3 280 | weight_filler { type: "xavier"} 281 | bias_filler { type: "constant" value: 0.2 } } } 282 | layer { name: "inception_4a/double_3x3_1_bn" type: "BN" bottom: "inception_4a/double_3x3_1" top: "inception_4a/double_3x3_1_bn" 283 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 284 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 285 | layer { name: "inception_4a/relu_double_3x3_1" type: "ReLU" bottom: "inception_4a/double_3x3_1_bn" top: "inception_4a/double_3x3_1_bn" } 286 | layer { name: "inception_4a/double_3x3_2" type: "Convolution" bottom: "inception_4a/double_3x3_1_bn" top: "inception_4a/double_3x3_2" 287 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 288 | convolution_param { num_output: 128 pad: 1 kernel_size: 3 289 | weight_filler { type: "xavier"} 290 | bias_filler { type: "constant" value: 0.2 } } } 291 | layer { name: "inception_4a/double_3x3_2_bn" type: "BN" bottom: "inception_4a/double_3x3_2" top: "inception_4a/double_3x3_2_bn" 292 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 293 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 294 | layer { name: "inception_4a/relu_double_3x3_2" type: "ReLU" bottom: "inception_4a/double_3x3_2_bn" top: "inception_4a/double_3x3_2_bn" } 295 | layer { name: "inception_4a/pool" type: "Pooling" bottom: "inception_3c/output" top: "inception_4a/pool" 296 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 297 | layer { name: "inception_4a/pool_proj" type: "Convolution" bottom: "inception_4a/pool" top: "inception_4a/pool_proj" 298 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 299 | convolution_param { num_output: 128 kernel_size: 1 300 | weight_filler { type: "xavier" } 301 | bias_filler { type: "constant" value: 0.2 } } } 302 | layer { name: "inception_4a/pool_proj_bn" type: "BN" bottom: "inception_4a/pool_proj" top: "inception_4a/pool_proj_bn" 303 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 304 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 305 | layer { name: "inception_4a/relu_pool_proj" type: "ReLU" bottom: "inception_4a/pool_proj_bn" top: "inception_4a/pool_proj_bn" } 306 | layer { name: "inception_4a/output" type: "Concat" 307 | bottom: "inception_4a/1x1_bn" 308 | bottom: "inception_4a/3x3_bn" 309 | bottom: "inception_4a/double_3x3_2_bn" 310 | bottom: "inception_4a/pool_proj_bn" 311 | top: "inception_4a/output" } 312 | 313 | ####################################### inception_4b ####################################### 314 | layer { name: "inception_4b/1x1" type: "Convolution" bottom: "inception_4a/output" top: "inception_4b/1x1" 315 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 316 | convolution_param { num_output: 192 kernel_size: 1 317 | weight_filler { type: "xavier"} 318 | bias_filler { type: "constant" value: 0.2 } } } 319 | layer { name: "inception_4b/1x1_bn" type: "BN" bottom: "inception_4b/1x1" top: "inception_4b/1x1_bn" 320 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 321 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 322 | layer { name: "inception_4b/relu_1x1" type: "ReLU" bottom: "inception_4b/1x1_bn" top: "inception_4b/1x1_bn" } 323 | layer { name: "inception_4b/3x3_reduce" type: "Convolution" bottom: "inception_4a/output" top: "inception_4b/3x3_reduce" 324 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 325 | convolution_param { num_output: 96 kernel_size: 1 326 | weight_filler { type: "xavier"} 327 | bias_filler { type: "constant" value: 0.2 } } } 328 | layer { name: "inception_4b/3x3_reduce_bn" type: "BN" bottom: "inception_4b/3x3_reduce" top: "inception_4b/3x3_reduce_bn" 329 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 330 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 331 | layer { name: "inception_4b/relu_3x3_reduce" type: "ReLU" bottom: "inception_4b/3x3_reduce_bn" top: "inception_4b/3x3_reduce_bn" } 332 | layer { name: "inception_4b/3x3" type: "Convolution" bottom: "inception_4b/3x3_reduce_bn" top: "inception_4b/3x3" 333 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 334 | convolution_param { num_output: 128 pad: 1 kernel_size: 3 335 | weight_filler { type: "xavier" } 336 | bias_filler { type: "constant" value: 0.2 } } } 337 | layer { name: "inception_4b/3x3_bn" type: "BN" bottom: "inception_4b/3x3" top: "inception_4b/3x3_bn" 338 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 339 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 340 | layer { name: "inception_4b/relu_3x3" type: "ReLU" bottom: "inception_4b/3x3_bn" top: "inception_4b/3x3_bn" } 341 | layer { name: "inception_4b/double_3x3_reduce" type: "Convolution" bottom: "inception_4a/output" top: "inception_4b/double_3x3_reduce" 342 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 343 | convolution_param { num_output: 96 kernel_size: 1 344 | weight_filler { type: "xavier" } 345 | bias_filler { type: "constant" value: 0.2 } } } 346 | layer { name: "inception_4b/double_3x3_reduce_bn" type: "BN" bottom: "inception_4b/double_3x3_reduce" top: "inception_4b/double_3x3_reduce_bn" 347 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 348 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 349 | layer { name: "inception_4b/relu_double_3x3_reduce" type: "ReLU" bottom: "inception_4b/double_3x3_reduce_bn" top: "inception_4b/double_3x3_reduce_bn" } 350 | layer { name: "inception_4b/double_3x3_1" type: "Convolution" bottom: "inception_4b/double_3x3_reduce_bn" top: "inception_4b/double_3x3_1" 351 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 352 | convolution_param { num_output: 128 pad: 1 kernel_size: 3 353 | weight_filler { type: "xavier"} 354 | bias_filler { type: "constant" value: 0.2 } } } 355 | layer { name: "inception_4b/double_3x3_1_bn" type: "BN" bottom: "inception_4b/double_3x3_1" top: "inception_4b/double_3x3_1_bn" 356 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 357 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 358 | layer { name: "inception_4b/relu_double_3x3_1" type: "ReLU" bottom: "inception_4b/double_3x3_1_bn" top: "inception_4b/double_3x3_1_bn" } 359 | layer { name: "inception_4b/double_3x3_2" type: "Convolution" bottom: "inception_4b/double_3x3_1_bn" top: "inception_4b/double_3x3_2" 360 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 361 | convolution_param { num_output: 128 pad: 1 kernel_size: 3 362 | weight_filler { type: "xavier"} 363 | bias_filler { type: "constant" value: 0.2 } } } 364 | layer { name: "inception_4b/double_3x3_2_bn" type: "BN" bottom: "inception_4b/double_3x3_2" top: "inception_4b/double_3x3_2_bn" 365 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 366 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 367 | layer { name: "inception_4b/relu_double_3x3_2" type: "ReLU" bottom: "inception_4b/double_3x3_2_bn" top: "inception_4b/double_3x3_2_bn" } 368 | layer { name: "inception_4b/pool" type: "Pooling" bottom: "inception_4a/output" top: "inception_4b/pool" 369 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 370 | layer { name: "inception_4b/pool_proj" type: "Convolution" bottom: "inception_4b/pool" top: "inception_4b/pool_proj" 371 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 372 | convolution_param { num_output: 128 kernel_size: 1 373 | weight_filler { type: "xavier" } 374 | bias_filler { type: "constant" value: 0.2 } } } 375 | layer { name: "inception_4b/pool_proj_bn" type: "BN" bottom: "inception_4b/pool_proj" top: "inception_4b/pool_proj_bn" 376 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 377 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 378 | layer { name: "inception_4b/relu_pool_proj" type: "ReLU" bottom: "inception_4b/pool_proj_bn" top: "inception_4b/pool_proj_bn" } 379 | layer { name: "inception_4b/output" type: "Concat" 380 | bottom: "inception_4b/1x1_bn" 381 | bottom: "inception_4b/3x3_bn" 382 | bottom: "inception_4b/double_3x3_2_bn" 383 | bottom: "inception_4b/pool_proj_bn" 384 | top: "inception_4b/output" } 385 | 386 | ####################################### inception_4c ####################################### 387 | layer { name: "inception_4c/1x1" type: "Convolution" bottom: "inception_4b/output" top: "inception_4c/1x1" 388 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 389 | convolution_param { num_output: 160 kernel_size: 1 390 | weight_filler { type: "xavier"} 391 | bias_filler { type: "constant" value: 0.2 } } } 392 | layer { name: "inception_4c/1x1_bn" type: "BN" bottom: "inception_4c/1x1" top: "inception_4c/1x1_bn" 393 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 394 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 395 | layer { name: "inception_4c/relu_1x1" type: "ReLU" bottom: "inception_4c/1x1_bn" top: "inception_4c/1x1_bn" } 396 | layer { name: "inception_4c/3x3_reduce" type: "Convolution" bottom: "inception_4b/output" top: "inception_4c/3x3_reduce" 397 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 398 | convolution_param { num_output: 128 kernel_size: 1 399 | weight_filler { type: "xavier"} 400 | bias_filler { type: "constant" value: 0.2 } } } 401 | layer { name: "inception_4c/3x3_reduce_bn" type: "BN" bottom: "inception_4c/3x3_reduce" top: "inception_4c/3x3_reduce_bn" 402 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 403 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 404 | layer { name: "inception_4c/relu_3x3_reduce" type: "ReLU" bottom: "inception_4c/3x3_reduce_bn" top: "inception_4c/3x3_reduce_bn" } 405 | layer { name: "inception_4c/3x3" type: "Convolution" bottom: "inception_4c/3x3_reduce_bn" top: "inception_4c/3x3" 406 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 407 | convolution_param { num_output: 160 pad: 1 kernel_size: 3 408 | weight_filler { type: "xavier" } 409 | bias_filler { type: "constant" value: 0.2 } } } 410 | layer { name: "inception_4c/3x3_bn" type: "BN" bottom: "inception_4c/3x3" top: "inception_4c/3x3_bn" 411 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 412 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 413 | layer { name: "inception_4c/relu_3x3" type: "ReLU" bottom: "inception_4c/3x3_bn" top: "inception_4c/3x3_bn" } 414 | layer { name: "inception_4c/double_3x3_reduce" type: "Convolution" bottom: "inception_4b/output" top: "inception_4c/double_3x3_reduce" 415 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 416 | convolution_param { num_output: 128 kernel_size: 1 417 | weight_filler { type: "xavier" } 418 | bias_filler { type: "constant" value: 0.2 } } } 419 | layer { name: "inception_4c/double_3x3_reduce_bn" type: "BN" bottom: "inception_4c/double_3x3_reduce" top: "inception_4c/double_3x3_reduce_bn" 420 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 421 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 422 | layer { name: "inception_4c/relu_double_3x3_reduce" type: "ReLU" bottom: "inception_4c/double_3x3_reduce_bn" top: "inception_4c/double_3x3_reduce_bn" } 423 | layer { name: "inception_4c/double_3x3_1" type: "Convolution" bottom: "inception_4c/double_3x3_reduce_bn" top: "inception_4c/double_3x3_1" 424 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 425 | convolution_param { num_output: 160 pad: 1 kernel_size: 3 426 | weight_filler { type: "xavier"} 427 | bias_filler { type: "constant" value: 0.2 } } } 428 | layer { name: "inception_4c/double_3x3_1_bn" type: "BN" bottom: "inception_4c/double_3x3_1" top: "inception_4c/double_3x3_1_bn" 429 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 430 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 431 | layer { name: "inception_4c/relu_double_3x3_1" type: "ReLU" bottom: "inception_4c/double_3x3_1_bn" top: "inception_4c/double_3x3_1_bn" } 432 | layer { name: "inception_4c/double_3x3_2" type: "Convolution" bottom: "inception_4c/double_3x3_1_bn" top: "inception_4c/double_3x3_2" 433 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 434 | convolution_param { num_output: 160 pad: 1 kernel_size: 3 435 | weight_filler { type: "xavier"} 436 | bias_filler { type: "constant" value: 0.2 } } } 437 | layer { name: "inception_4c/double_3x3_2_bn" type: "BN" bottom: "inception_4c/double_3x3_2" top: "inception_4c/double_3x3_2_bn" 438 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 439 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 440 | layer { name: "inception_4c/relu_double_3x3_2" type: "ReLU" bottom: "inception_4c/double_3x3_2_bn" top: "inception_4c/double_3x3_2_bn" } 441 | layer { name: "inception_4c/pool" type: "Pooling" bottom: "inception_4b/output" top: "inception_4c/pool" 442 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 443 | layer { name: "inception_4c/pool_proj" type: "Convolution" bottom: "inception_4c/pool" top: "inception_4c/pool_proj" 444 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 445 | convolution_param { num_output: 128 kernel_size: 1 446 | weight_filler { type: "xavier" } 447 | bias_filler { type: "constant" value: 0.2 } } } 448 | layer { name: "inception_4c/pool_proj_bn" type: "BN" bottom: "inception_4c/pool_proj" top: "inception_4c/pool_proj_bn" 449 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 450 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 451 | layer { name: "inception_4c/relu_pool_proj" type: "ReLU" bottom: "inception_4c/pool_proj_bn" top: "inception_4c/pool_proj_bn" } 452 | layer { name: "inception_4c/output" type: "Concat" 453 | bottom: "inception_4c/1x1_bn" 454 | bottom: "inception_4c/3x3_bn" 455 | bottom: "inception_4c/double_3x3_2_bn" 456 | bottom: "inception_4c/pool_proj_bn" 457 | top: "inception_4c/output" } 458 | 459 | ####################################### inception_4d ####################################### 460 | layer { name: "inception_4d/1x1" type: "Convolution" bottom: "inception_4c/output" top: "inception_4d/1x1" 461 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 462 | convolution_param { num_output: 96 kernel_size: 1 463 | weight_filler { type: "xavier"} 464 | bias_filler { type: "constant" value: 0.2 } } } 465 | layer { name: "inception_4d/1x1_bn" type: "BN" bottom: "inception_4d/1x1" top: "inception_4d/1x1_bn" 466 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 467 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 468 | layer { name: "inception_4d/relu_1x1" type: "ReLU" bottom: "inception_4d/1x1_bn" top: "inception_4d/1x1_bn" } 469 | layer { name: "inception_4d/3x3_reduce" type: "Convolution" bottom: "inception_4c/output" top: "inception_4d/3x3_reduce" 470 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 471 | convolution_param { num_output: 128 kernel_size: 1 472 | weight_filler { type: "xavier"} 473 | bias_filler { type: "constant" value: 0.2 } } } 474 | layer { name: "inception_4d/3x3_reduce_bn" type: "BN" bottom: "inception_4d/3x3_reduce" top: "inception_4d/3x3_reduce_bn" 475 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 476 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 477 | layer { name: "inception_4d/relu_3x3_reduce" type: "ReLU" bottom: "inception_4d/3x3_reduce_bn" top: "inception_4d/3x3_reduce_bn" } 478 | layer { name: "inception_4d/3x3" type: "Convolution" bottom: "inception_4d/3x3_reduce_bn" top: "inception_4d/3x3" 479 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 480 | convolution_param { num_output: 192 pad: 1 kernel_size: 3 481 | weight_filler { type: "xavier" } 482 | bias_filler { type: "constant" value: 0.2 } } } 483 | layer { name: "inception_4d/3x3_bn" type: "BN" bottom: "inception_4d/3x3" top: "inception_4d/3x3_bn" 484 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 485 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 486 | layer { name: "inception_4d/relu_3x3" type: "ReLU" bottom: "inception_4d/3x3_bn" top: "inception_4d/3x3_bn" } 487 | layer { name: "inception_4d/double_3x3_reduce" type: "Convolution" bottom: "inception_4c/output" top: "inception_4d/double_3x3_reduce" 488 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 489 | convolution_param { num_output: 160 kernel_size: 1 490 | weight_filler { type: "xavier" } 491 | bias_filler { type: "constant" value: 0.2 } } } 492 | layer { name: "inception_4d/double_3x3_reduce_bn" type: "BN" bottom: "inception_4d/double_3x3_reduce" top: "inception_4d/double_3x3_reduce_bn" 493 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 494 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 495 | layer { name: "inception_4d/relu_double_3x3_reduce" type: "ReLU" bottom: "inception_4d/double_3x3_reduce_bn" top: "inception_4d/double_3x3_reduce_bn" } 496 | layer { name: "inception_4d/double_3x3_1" type: "Convolution" bottom: "inception_4d/double_3x3_reduce_bn" top: "inception_4d/double_3x3_1" 497 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 498 | convolution_param { num_output: 192 pad: 1 kernel_size: 3 499 | weight_filler { type: "xavier"} 500 | bias_filler { type: "constant" value: 0.2 } } } 501 | layer { name: "inception_4d/double_3x3_1_bn" type: "BN" bottom: "inception_4d/double_3x3_1" top: "inception_4d/double_3x3_1_bn" 502 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 503 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 504 | layer { name: "inception_4d/relu_double_3x3_1" type: "ReLU" bottom: "inception_4d/double_3x3_1_bn" top: "inception_4d/double_3x3_1_bn" } 505 | layer { name: "inception_4d/double_3x3_2" type: "Convolution" bottom: "inception_4d/double_3x3_1_bn" top: "inception_4d/double_3x3_2" 506 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 507 | convolution_param { num_output: 192 pad: 1 kernel_size: 3 508 | weight_filler { type: "xavier"} 509 | bias_filler { type: "constant" value: 0.2 } } } 510 | layer { name: "inception_4d/double_3x3_2_bn" type: "BN" bottom: "inception_4d/double_3x3_2" top: "inception_4d/double_3x3_2_bn" 511 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 512 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 513 | layer { name: "inception_4d/relu_double_3x3_2" type: "ReLU" bottom: "inception_4d/double_3x3_2_bn" top: "inception_4d/double_3x3_2_bn" } 514 | layer { name: "inception_4d/pool" type: "Pooling" bottom: "inception_4c/output" top: "inception_4d/pool" 515 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 516 | layer { name: "inception_4d/pool_proj" type: "Convolution" bottom: "inception_4d/pool" top: "inception_4d/pool_proj" 517 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 518 | convolution_param { num_output: 128 kernel_size: 1 519 | weight_filler { type: "xavier" } 520 | bias_filler { type: "constant" value: 0.2 } } } 521 | layer { name: "inception_4d/pool_proj_bn" type: "BN" bottom: "inception_4d/pool_proj" top: "inception_4d/pool_proj_bn" 522 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 523 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 524 | layer { name: "inception_4d/relu_pool_proj" type: "ReLU" bottom: "inception_4d/pool_proj_bn" top: "inception_4d/pool_proj_bn" } 525 | layer { name: "inception_4d/output" type: "Concat" 526 | bottom: "inception_4d/1x1_bn" 527 | bottom: "inception_4d/3x3_bn" 528 | bottom: "inception_4d/double_3x3_2_bn" 529 | bottom: "inception_4d/pool_proj_bn" 530 | top: "inception_4d/output" } 531 | 532 | ####################################### inception_4e ####################################### 533 | layer { name: "inception_4e/3x3_reduce" type: "Convolution" bottom: "inception_4d/output" top: "inception_4e/3x3_reduce" 534 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 535 | convolution_param { num_output: 128 kernel_size: 1 536 | weight_filler { type: "xavier"} 537 | bias_filler { type: "constant" value: 0.2 } } } 538 | layer { name: "inception_4e/3x3_reduce_bn" type: "BN" bottom: "inception_4e/3x3_reduce" top: "inception_4e/3x3_reduce_bn" 539 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 540 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 541 | layer { name: "inception_4e/relu_3x3_reduce" type: "ReLU" bottom: "inception_4e/3x3_reduce_bn" top: "inception_4e/3x3_reduce_bn" } 542 | layer { name: "inception_4e/3x3" type: "Convolution" bottom: "inception_4e/3x3_reduce_bn" top: "inception_4e/3x3" 543 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 544 | convolution_param { num_output: 192 pad: 1 kernel_size: 3 stride: 2 545 | weight_filler { type: "xavier" } 546 | bias_filler { type: "constant" value: 0.2 } } } 547 | layer { name: "inception_4e/3x3_bn" type: "BN" bottom: "inception_4e/3x3" top: "inception_4e/3x3_bn" 548 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 549 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 550 | layer { name: "inception_4e/relu_3x3" type: "ReLU" bottom: "inception_4e/3x3_bn" top: "inception_4e/3x3_bn" } 551 | layer { name: "inception_4e/double_3x3_reduce" type: "Convolution" bottom: "inception_4d/output" top: "inception_4e/double_3x3_reduce" 552 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 553 | convolution_param { num_output: 192 kernel_size: 1 554 | weight_filler { type: "xavier" } 555 | bias_filler { type: "constant" value: 0.2 } } } 556 | layer { name: "inception_4e/double_3x3_reduce_bn" type: "BN" bottom: "inception_4e/double_3x3_reduce" top: "inception_4e/double_3x3_reduce_bn" 557 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 558 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 559 | layer { name: "inception_4e/relu_double_3x3_reduce" type: "ReLU" bottom: "inception_4e/double_3x3_reduce_bn" top: "inception_4e/double_3x3_reduce_bn" } 560 | layer { name: "inception_4e/double_3x3_1" type: "Convolution" bottom: "inception_4e/double_3x3_reduce_bn" top: "inception_4e/double_3x3_1" 561 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 562 | convolution_param { num_output: 256 pad: 1 kernel_size: 3 563 | weight_filler { type: "xavier"} 564 | bias_filler { type: "constant" value: 0.2 } } } 565 | layer { name: "inception_4e/double_3x3_1_bn" type: "BN" bottom: "inception_4e/double_3x3_1" top: "inception_4e/double_3x3_1_bn" 566 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 567 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 568 | layer { name: "inception_4e/relu_double_3x3_1" type: "ReLU" bottom: "inception_4e/double_3x3_1_bn" top: "inception_4e/double_3x3_1_bn" } 569 | layer { name: "inception_4e/double_3x3_2" type: "Convolution" bottom: "inception_4e/double_3x3_1_bn" top: "inception_4e/double_3x3_2" 570 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 571 | convolution_param { num_output: 256 pad: 1 kernel_size: 3 stride: 2 572 | weight_filler { type: "xavier"} 573 | bias_filler { type: "constant" value: 0.2 } } } 574 | layer { name: "inception_4e/double_3x3_2_bn" type: "BN" bottom: "inception_4e/double_3x3_2" top: "inception_4e/double_3x3_2_bn" 575 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 576 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 577 | layer { name: "inception_4e/relu_double_3x3_2" type: "ReLU" bottom: "inception_4e/double_3x3_2_bn" top: "inception_4e/double_3x3_2_bn" } 578 | layer { name: "inception_4e/pool" type: "Pooling" bottom: "inception_4d/output" top: "inception_4e/pool" 579 | pooling_param { pool: MAX kernel_size: 3 stride: 2} } 580 | layer { name: "inception_4e/output" type: "Concat" 581 | bottom: "inception_4e/3x3_bn" 582 | bottom: "inception_4e/double_3x3_2_bn" 583 | bottom: "inception_4e/pool" 584 | top: "inception_4e/output" } 585 | 586 | ####################################### inception_5a ####################################### 587 | layer { name: "inception_5a/1x1" type: "Convolution" bottom: "inception_4e/output" top: "inception_5a/1x1" 588 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 589 | convolution_param { num_output: 352 kernel_size: 1 590 | weight_filler { type: "xavier"} 591 | bias_filler { type: "constant" value: 0.2 } } } 592 | layer { name: "inception_5a/1x1_bn" type: "BN" bottom: "inception_5a/1x1" top: "inception_5a/1x1_bn" 593 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 594 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 595 | layer { name: "inception_5a/relu_1x1" type: "ReLU" bottom: "inception_5a/1x1_bn" top: "inception_5a/1x1_bn" } 596 | layer { name: "inception_5a/3x3_reduce" type: "Convolution" bottom: "inception_4e/output" top: "inception_5a/3x3_reduce" 597 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 598 | convolution_param { num_output: 192 kernel_size: 1 599 | weight_filler { type: "xavier"} 600 | bias_filler { type: "constant" value: 0.2 } } } 601 | layer { name: "inception_5a/3x3_reduce_bn" type: "BN" bottom: "inception_5a/3x3_reduce" top: "inception_5a/3x3_reduce_bn" 602 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 603 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 604 | layer { name: "inception_5a/relu_3x3_reduce" type: "ReLU" bottom: "inception_5a/3x3_reduce_bn" top: "inception_5a/3x3_reduce_bn" } 605 | layer { name: "inception_5a/3x3" type: "Convolution" bottom: "inception_5a/3x3_reduce_bn" top: "inception_5a/3x3" 606 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 607 | convolution_param { num_output: 320 pad: 1 kernel_size: 3 608 | weight_filler { type: "xavier" } 609 | bias_filler { type: "constant" value: 0.2 } } } 610 | layer { name: "inception_5a/3x3_bn" type: "BN" bottom: "inception_5a/3x3" top: "inception_5a/3x3_bn" 611 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 612 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 613 | layer { name: "inception_5a/relu_3x3" type: "ReLU" bottom: "inception_5a/3x3_bn" top: "inception_5a/3x3_bn" } 614 | layer { name: "inception_5a/double_3x3_reduce" type: "Convolution" bottom: "inception_4e/output" top: "inception_5a/double_3x3_reduce" 615 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 616 | convolution_param { num_output: 160 kernel_size: 1 617 | weight_filler { type: "xavier" } 618 | bias_filler { type: "constant" value: 0.2 } } } 619 | layer { name: "inception_5a/double_3x3_reduce_bn" type: "BN" bottom: "inception_5a/double_3x3_reduce" top: "inception_5a/double_3x3_reduce_bn" 620 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 621 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 622 | layer { name: "inception_5a/relu_double_3x3_reduce" type: "ReLU" bottom: "inception_5a/double_3x3_reduce_bn" top: "inception_5a/double_3x3_reduce_bn" } 623 | layer { name: "inception_5a/double_3x3_1" type: "Convolution" bottom: "inception_5a/double_3x3_reduce_bn" top: "inception_5a/double_3x3_1" 624 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 625 | convolution_param { num_output: 224 pad: 1 kernel_size: 3 626 | weight_filler { type: "xavier"} 627 | bias_filler { type: "constant" value: 0.2 } } } 628 | layer { name: "inception_5a/double_3x3_1_bn" type: "BN" bottom: "inception_5a/double_3x3_1" top: "inception_5a/double_3x3_1_bn" 629 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 630 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 631 | layer { name: "inception_5a/relu_double_3x3_1" type: "ReLU" bottom: "inception_5a/double_3x3_1_bn" top: "inception_5a/double_3x3_1_bn" } 632 | layer { name: "inception_5a/double_3x3_2" type: "Convolution" bottom: "inception_5a/double_3x3_1_bn" top: "inception_5a/double_3x3_2" 633 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 634 | convolution_param { num_output: 224 pad: 1 kernel_size: 3 635 | weight_filler { type: "xavier"} 636 | bias_filler { type: "constant" value: 0.2 } } } 637 | layer { name: "inception_5a/double_3x3_2_bn" type: "BN" bottom: "inception_5a/double_3x3_2" top: "inception_5a/double_3x3_2_bn" 638 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 639 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 640 | layer { name: "inception_5a/relu_double_3x3_2" type: "ReLU" bottom: "inception_5a/double_3x3_2_bn" top: "inception_5a/double_3x3_2_bn" } 641 | layer { name: "inception_5a/pool" type: "Pooling" bottom: "inception_4e/output" top: "inception_5a/pool" 642 | pooling_param { pool: AVE kernel_size: 3 stride: 1 pad: 1 } } 643 | layer { name: "inception_5a/pool_proj" type: "Convolution" bottom: "inception_5a/pool" top: "inception_5a/pool_proj" 644 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 645 | convolution_param { num_output: 128 kernel_size: 1 646 | weight_filler { type: "xavier" } 647 | bias_filler { type: "constant" value: 0.2 } } } 648 | layer { name: "inception_5a/pool_proj_bn" type: "BN" bottom: "inception_5a/pool_proj" top: "inception_5a/pool_proj_bn" 649 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 650 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 651 | layer { name: "inception_5a/relu_pool_proj" type: "ReLU" bottom: "inception_5a/pool_proj_bn" top: "inception_5a/pool_proj_bn" } 652 | layer { name: "inception_5a/output" type: "Concat" 653 | bottom: "inception_5a/1x1_bn" 654 | bottom: "inception_5a/3x3_bn" 655 | bottom: "inception_5a/double_3x3_2_bn" 656 | bottom: "inception_5a/pool_proj_bn" 657 | top: "inception_5a/output" } 658 | 659 | ####################################### inception_5b ####################################### 660 | layer { name: "inception_5b/1x1" type: "Convolution" bottom: "inception_5a/output" top: "inception_5b/1x1" 661 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 662 | convolution_param { num_output: 352 kernel_size: 1 663 | weight_filler { type: "xavier"} 664 | bias_filler { type: "constant" value: 0.2 } } } 665 | layer { name: "inception_5b/1x1_bn" type: "BN" bottom: "inception_5b/1x1" top: "inception_5b/1x1_bn" 666 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 667 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 668 | layer { name: "inception_5b/relu_1x1" type: "ReLU" bottom: "inception_5b/1x1_bn" top: "inception_5b/1x1_bn" } 669 | layer { name: "inception_5b/3x3_reduce" type: "Convolution" bottom: "inception_5a/output" top: "inception_5b/3x3_reduce" 670 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 671 | convolution_param { num_output: 192 kernel_size: 1 672 | weight_filler { type: "xavier"} 673 | bias_filler { type: "constant" value: 0.2 } } } 674 | layer { name: "inception_5b/3x3_reduce_bn" type: "BN" bottom: "inception_5b/3x3_reduce" top: "inception_5b/3x3_reduce_bn" 675 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 676 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 677 | layer { name: "inception_5b/relu_3x3_reduce" type: "ReLU" bottom: "inception_5b/3x3_reduce_bn" top: "inception_5b/3x3_reduce_bn" } 678 | layer { name: "inception_5b/3x3" type: "Convolution" bottom: "inception_5b/3x3_reduce_bn" top: "inception_5b/3x3" 679 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 680 | convolution_param { num_output: 320 pad: 1 kernel_size: 3 681 | weight_filler { type: "xavier" } 682 | bias_filler { type: "constant" value: 0.2 } } } 683 | layer { name: "inception_5b/3x3_bn" type: "BN" bottom: "inception_5b/3x3" top: "inception_5b/3x3_bn" 684 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 685 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 686 | layer { name: "inception_5b/relu_3x3" type: "ReLU" bottom: "inception_5b/3x3_bn" top: "inception_5b/3x3_bn" } 687 | layer { name: "inception_5b/double_3x3_reduce" type: "Convolution" bottom: "inception_5a/output" top: "inception_5b/double_3x3_reduce" 688 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 689 | convolution_param { num_output: 192 kernel_size: 1 690 | weight_filler { type: "xavier" } 691 | bias_filler { type: "constant" value: 0.2 } } } 692 | layer { name: "inception_5b/double_3x3_reduce_bn" type: "BN" bottom: "inception_5b/double_3x3_reduce" top: "inception_5b/double_3x3_reduce_bn" 693 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 694 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 695 | layer { name: "inception_5b/relu_double_3x3_reduce" type: "ReLU" bottom: "inception_5b/double_3x3_reduce_bn" top: "inception_5b/double_3x3_reduce_bn" } 696 | layer { name: "inception_5b/double_3x3_1" type: "Convolution" bottom: "inception_5b/double_3x3_reduce_bn" top: "inception_5b/double_3x3_1" 697 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 698 | convolution_param { num_output: 224 pad: 1 kernel_size: 3 699 | weight_filler { type: "xavier"} 700 | bias_filler { type: "constant" value: 0.2 } } } 701 | layer { name: "inception_5b/double_3x3_1_bn" type: "BN" bottom: "inception_5b/double_3x3_1" top: "inception_5b/double_3x3_1_bn" 702 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 703 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 704 | layer { name: "inception_5b/relu_double_3x3_1" type: "ReLU" bottom: "inception_5b/double_3x3_1_bn" top: "inception_5b/double_3x3_1_bn" } 705 | layer { name: "inception_5b/double_3x3_2" type: "Convolution" bottom: "inception_5b/double_3x3_1_bn" top: "inception_5b/double_3x3_2" 706 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 707 | convolution_param { num_output: 224 pad: 1 kernel_size: 3 708 | weight_filler { type: "xavier"} 709 | bias_filler { type: "constant" value: 0.2 } } } 710 | layer { name: "inception_5b/double_3x3_2_bn" type: "BN" bottom: "inception_5b/double_3x3_2" top: "inception_5b/double_3x3_2_bn" 711 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 712 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 713 | layer { name: "inception_5b/relu_double_3x3_2" type: "ReLU" bottom: "inception_5b/double_3x3_2_bn" top: "inception_5b/double_3x3_2_bn" } 714 | layer { name: "inception_5b/pool" type: "Pooling" bottom: "inception_5a/output" top: "inception_5b/pool" 715 | pooling_param { pool: MAX kernel_size: 3 stride: 1 pad: 1 } } 716 | layer { name: "inception_5b/pool_proj" type: "Convolution" bottom: "inception_5b/pool" top: "inception_5b/pool_proj" 717 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 718 | convolution_param { num_output: 128 kernel_size: 1 719 | weight_filler { type: "xavier" } 720 | bias_filler { type: "constant" value: 0.2 } } } 721 | layer { name: "inception_5b/pool_proj_bn" type: "BN" bottom: "inception_5b/pool_proj" top: "inception_5b/pool_proj_bn" 722 | param { lr_mult: 1 decay_mult: 0 } param { lr_mult: 1 decay_mult: 0 } 723 | bn_param { engine: CAFFE slope_filler { type: "constant" value: 1 } bias_filler { type: "constant" value: 0 } } } 724 | layer { name: "inception_5b/relu_pool_proj" type: "ReLU" bottom: "inception_5b/pool_proj_bn" top: "inception_5b/pool_proj_bn" } 725 | layer { name: "inception_5b/output" type: "Concat" 726 | bottom: "inception_5b/1x1_bn" 727 | bottom: "inception_5b/3x3_bn" 728 | bottom: "inception_5b/double_3x3_2_bn" 729 | bottom: "inception_5b/pool_proj_bn" 730 | top: "inception_5b/output" } 731 | 732 | 733 | ####################################### global pool ####################################### 734 | layer { name: "global_pool" top: "global_pool" bottom: "inception_5b/output" type: "Pooling" 735 | pooling_param { pool: AVE kernel_size: 7 stride: 1 } } 736 | 737 | layer { name: "fc" type: "InnerProduct" bottom: "global_pool" top: "fc" 738 | param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } 739 | inner_product_param { num_output: 365 740 | weight_filler { type: "xavier" } 741 | bias_filler { type: "constant" value: 0 } } } 742 | 743 | -------------------------------------------------------------------------------- /models/standard_train/256_inception2_solver.prototxt: -------------------------------------------------------------------------------- 1 | net: "models/standard_train/256_inception2_train_val.prototxt" 2 | 3 | # testing parameter 4 | test_iter: 1105 5 | test_interval: 5000 6 | test_initialization:false 7 | 8 | # output 9 | display: 20 10 | average_loss: 20 11 | snapshot: 5000 12 | snapshot_prefix: "256_inception2_places2_standard" 13 | debug_info: false 14 | 15 | # learning rate 16 | base_lr: 0.1 17 | lr_policy: "step" 18 | gamma: 0.1 19 | stepsize: 150000 20 | max_iter: 600000 21 | 22 | # parameter of RMSPROP 23 | momentum: 0.9 24 | weight_decay: 0.0005 25 | 26 | # GPU setting 27 | solver_mode: GPU 28 | device_id: [0,1,2,3,4,5,6,7] 29 | richness: 200 30 | -------------------------------------------------------------------------------- /models/standard_train/384_inception2_solver.prototxt: -------------------------------------------------------------------------------- 1 | net: "models/standard_train/384_inception2_train_val.prototxt" 2 | 3 | # testing parameter 4 | test_iter: 1105 5 | test_interval: 5000 6 | test_initialization:false 7 | 8 | # output 9 | display: 20 10 | average_loss: 20 11 | snapshot: 5000 12 | snapshot_prefix: "384_inception2_places2_standard" 13 | debug_info: false 14 | 15 | # learning rate 16 | base_lr: 0.1 17 | lr_policy: "step" 18 | gamma: 0.1 19 | stepsize: 150000 20 | max_iter: 600000 21 | 22 | # parameter of RMSPROP 23 | momentum: 0.9 24 | weight_decay: 0.0005 25 | 26 | # GPU setting 27 | solver_mode: GPU 28 | device_id: [0,1,2,3,4,5,6,7] 29 | richness: 200 30 | -------------------------------------------------------------------------------- /scripts/256_inception2_train.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | TOOLS=/home/lmwang/code/caffe/cmake_build_kd/install/bin 4 | 5 | /usr/local/openmpi/bin/mpirun -n 8 \ 6 | $TOOLS/caffe train --solver=models/standard_train/256_inception2_solver.prototxt 7 | 8 | echo "Done." 9 | 10 | -------------------------------------------------------------------------------- /scripts/256_object_kd_inception2_train.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | TOOLS=/home/lmwang/code/caffe/cmake_build_kd/install/bin 4 | 5 | /usr/local/openmpi/bin/mpirun -n 8 \ 6 | $TOOLS/caffe train --solver=models/kd_train/256_object_kd_inception2_solver.prototxt --weights=models/imagenet_256_inception2_v5.caffemodel 7 | 8 | echo "Done." 9 | 10 | -------------------------------------------------------------------------------- /scripts/256_scene_kd_inception2_train.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | TOOLS=/home/lmwang/code/caffe/cmake_build_kd/install/bin 4 | 5 | /usr/local/openmpi/bin/mpirun -n 8 \ 6 | $TOOLS/caffe train --solver=models/kd_train/256_scene_kd_inception2_solver.prototxt --weights=models/places_256_inception2_v5.caffemodel 7 | 8 | echo "Done." 9 | 10 | -------------------------------------------------------------------------------- /scripts/384_inception2_train.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | TOOLS=/home/lmwang/code/caffe/cmake_build_kd/install/bin 4 | 5 | /usr/local/openmpi/bin/mpirun -n 8 \ 6 | $TOOLS/caffe train --solver=models/kd_train/384_inception2_solver.prototxt 7 | 8 | echo "Done." 9 | 10 | -------------------------------------------------------------------------------- /scripts/384_object_kd_inception2_train.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | TOOLS=/home/lmwang/code/caffe/cmake_build_kd/install/bin 4 | 5 | /usr/local/openmpi/bin/mpirun -n 8 \ 6 | $TOOLS/caffe train --solver=models/kd_train/384_object_kd_inception2_solver.prototxt --weights=models/imagenet_384_inception2_v5.caffemodel 7 | 8 | echo "Done." 9 | 10 | -------------------------------------------------------------------------------- /scripts/384_scene_kd_inception2_train.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | TOOLS=/home/lmwang/code/caffe/cmake_build_kd/install/bin 4 | 5 | /usr/local/openmpi/bin/mpirun -n 8 \ 6 | $TOOLS/caffe train --solver=models/kd_train/384_scene_kd_inception2_solver.prototxt --weights=models/places_384_inception2_v5.caffemodel 7 | 8 | echo "Done." 9 | 10 | -------------------------------------------------------------------------------- /scripts/get_init_models.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wget -O models/imagenet_256_inception2_v5.caffemodel http://mmlab.siat.ac.cn/MRCNN_model/imagenet_256_inception2_v5.caffemodel 4 | wget -O models/imagenet_384_inception2_v5.caffemodel http://mmlab.siat.ac.cn/MRCNN_model/imagenet_384_inception2_v5.caffemodel 5 | wget -O models/places_256_inception2_v5.caffemodel http://mmlab.siat.ac.cn/MRCNN_model/places_256_inception2_v5.caffemodel 6 | wget -O models/places_384_inception2_v5.caffemodel http://mmlab.siat.ac.cn/MRCNN_model/places_384_inception2_v5.caffemodel 7 | -------------------------------------------------------------------------------- /scripts/get_reference_models.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # standard trained models, 2 resolutions 4 | wget -O models/places2_standard_256_inception2_v5.caffemodel http://mmlab.siat.ac.cn/MRCNN_model/places2_standard_256_inception2_v5.caffemodel 5 | wget -O models/places2_standard_384_inception2_v5.caffemodel http://mmlab.siat.ac.cn/MRCNN_model/places2_standard_384_inception2_v5.caffemodel 6 | 7 | # object kd trained models, 2 resolutions 8 | wget -O models/places2_standard_256_object_kd_inception2_v5.caffemodel http://mmlab.siat.ac.cn/MRCNN_model/places2_standard_256_object_kd_inception2_v5.caffemodel 9 | wget -O models/places2_standard_384_object_kd_inception2_v5.caffemodel http://mmlab.siat.ac.cn/MRCNN_model/places2_standard_384_object_kd_inception2_v5.caffemodel 10 | 11 | # scene kd trained models, 2 resolutions 12 | wget -O models/places2_standard_256_scene_kd_inception2_v5.caffemodel http://mmlab.siat.ac.cn/MRCNN_model/places2_standard_256_scene_kd_inception2_v5.caffemodel 13 | wget -O models/places2_standard_384_scene_kd_inception2_v5.caffemodel http://mmlab.siat.ac.cn/MRCNN_model/places2_standard_384_scene_kd_inception2_v5.caffemodel 14 | 15 | --------------------------------------------------------------------------------