From 0d109f0450e2d7f7a0e427b16dfb0ece5dcd8838 Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Wed, 31 Aug 2016 14:40:33 +0900 Subject: [PATCH 01/36] Add config vars. to resize images - Add `SCALE_MUTIPLES_OF` to make image sizes be multiples of a given number --- lib/fast_rcnn/config.py | 6 ++++++ lib/fast_rcnn/test.py | 10 +++++++--- lib/roi_data_layer/minibatch.py | 4 ++-- lib/rpn/generate.py | 8 +++++--- lib/utils/blob.py | 8 +++++--- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/lib/fast_rcnn/config.py b/lib/fast_rcnn/config.py index 253017369..2ecd826ee 100644 --- a/lib/fast_rcnn/config.py +++ b/lib/fast_rcnn/config.py @@ -37,6 +37,9 @@ # Each scale is the pixel size of an image's shortest side __C.TRAIN.SCALES = (600,) +# Resize test images so that its width and height are multiples of ... +__C.TRAIN.SCALE_MULTIPLE_OF = 1 + # Max pixel size of the longest side of a scaled input image __C.TRAIN.MAX_SIZE = 1000 @@ -134,6 +137,9 @@ # Each scale is the pixel size of an image's shortest side __C.TEST.SCALES = (600,) +# Resize test images so that its width and height are multiples of ... +__C.TEST.SCALE_MULTIPLE_OF = 1 + # Max pixel size of the longest side of a scaled input image __C.TEST.MAX_SIZE = 1000 diff --git a/lib/fast_rcnn/test.py b/lib/fast_rcnn/test.py index f889d0977..dcac254d5 100644 --- a/lib/fast_rcnn/test.py +++ b/lib/fast_rcnn/test.py @@ -45,9 +45,13 @@ def _get_image_blob(im): # Prevent the biggest axis from being more than MAX_SIZE if np.round(im_scale * im_size_max) > cfg.TEST.MAX_SIZE: im_scale = float(cfg.TEST.MAX_SIZE) / float(im_size_max) - im = cv2.resize(im_orig, None, None, fx=im_scale, fy=im_scale, + + # Make width and height be multiples of a specified number + im_scale_x = np.floor(im.shape[1] * im_scale / cfg.TEST.SCALE_MULTIPLE_OF) * cfg.TEST.SCALE_MULTIPLE_OF / im.shape[1] + im_scale_y = np.floor(im.shape[0] * im_scale / cfg.TEST.SCALE_MULTIPLE_OF) * cfg.TEST.SCALE_MULTIPLE_OF / im.shape[0] + im = cv2.resize(im_orig, None, None, fx=im_scale_x, fy=im_scale_y, interpolation=cv2.INTER_LINEAR) - im_scale_factors.append(im_scale) + im_scale_factors.append(np.array([im_scale_x, im_scale_y, im_scale_x, im_scale_y])) processed_ims.append(im) # Create a blob to hold the input images @@ -135,7 +139,7 @@ def im_detect(net, im, boxes=None): if cfg.TEST.HAS_RPN: im_blob = blobs['data'] blobs['im_info'] = np.array( - [[im_blob.shape[2], im_blob.shape[3], im_scales[0]]], + [np.hstack((im_blob.shape[2], im_blob.shape[3], im_scales[0]))], dtype=np.float32) # reshape network inputs diff --git a/lib/roi_data_layer/minibatch.py b/lib/roi_data_layer/minibatch.py index f4535b022..3ae496356 100644 --- a/lib/roi_data_layer/minibatch.py +++ b/lib/roi_data_layer/minibatch.py @@ -40,7 +40,7 @@ def get_minibatch(roidb, num_classes): gt_boxes[:, 4] = roidb[0]['gt_classes'][gt_inds] blobs['gt_boxes'] = gt_boxes blobs['im_info'] = np.array( - [[im_blob.shape[2], im_blob.shape[3], im_scales[0]]], + [np.hstack((im_blob.shape[2], im_blob.shape[3], im_scales[0]))], dtype=np.float32) else: # not using RPN # Now, build the region of interest and label blobs @@ -139,7 +139,7 @@ def _get_image_blob(roidb, scale_inds): im = im[:, ::-1, :] target_size = cfg.TRAIN.SCALES[scale_inds[i]] im, im_scale = prep_im_for_blob(im, cfg.PIXEL_MEANS, target_size, - cfg.TRAIN.MAX_SIZE) + cfg.TRAIN.MAX_SIZE, cfg.TRAIN.SCALE_MULTIPLE_OF) im_scales.append(im_scale) processed_ims.append(im) diff --git a/lib/rpn/generate.py b/lib/rpn/generate.py index 060daf434..d805580f0 100644 --- a/lib/rpn/generate.py +++ b/lib/rpn/generate.py @@ -71,9 +71,11 @@ def _get_image_blob(im): # Prevent the biggest axis from being more than MAX_SIZE if np.round(im_scale * im_size_max) > cfg.TEST.MAX_SIZE: im_scale = float(cfg.TEST.MAX_SIZE) / float(im_size_max) - im = cv2.resize(im_orig, None, None, fx=im_scale, fy=im_scale, + im_scale_x = np.floor(im.shape[1] * im_scale / cfg.TEST.SCALE_MULTIPLE_OF) * cfg.TEST.SCALE_MULTIPLE_OF / im.shape[1] + im_scale_y = np.floor(im.shape[0] * im_scale / cfg.TEST.SCALE_MULTIPLE_OF) * cfg.TEST.SCALE_MULTIPLE_OF / im.shape[0] + im = cv2.resize(im_orig, None, None, fx=im_scale_x, fy=im_scale_y, interpolation=cv2.INTER_LINEAR) - im_info = np.hstack((im.shape[:2], im_scale))[np.newaxis, :] + im_info = np.hstack((im.shape[:2], np.array([im_scale_x, im_scale_y, im_scale_x, im_scale_y])))[np.newaxis, :] processed_ims.append(im) # Create a blob to hold the input images @@ -91,7 +93,7 @@ def im_proposals(net, im): data=blobs['data'].astype(np.float32, copy=False), im_info=blobs['im_info'].astype(np.float32, copy=False)) - scale = blobs['im_info'][0, 2] + scale = blobs['im_info'][0, 2:] boxes = blobs_out['rois'][:, 1:].copy() / scale scores = blobs_out['scores'].copy() return boxes, scores diff --git a/lib/utils/blob.py b/lib/utils/blob.py index 1c316427a..034e0cb2a 100644 --- a/lib/utils/blob.py +++ b/lib/utils/blob.py @@ -28,7 +28,7 @@ def im_list_to_blob(ims): blob = blob.transpose(channel_swap) return blob -def prep_im_for_blob(im, pixel_means, target_size, max_size): +def prep_im_for_blob(im, pixel_means, target_size, max_size, multiple): """Mean subtract and scale an image for use in a blob.""" im = im.astype(np.float32, copy=False) im -= pixel_means @@ -39,7 +39,9 @@ def prep_im_for_blob(im, pixel_means, target_size, max_size): # Prevent the biggest axis from being more than MAX_SIZE if np.round(im_scale * im_size_max) > max_size: im_scale = float(max_size) / float(im_size_max) - im = cv2.resize(im, None, None, fx=im_scale, fy=im_scale, + im_scale_x = np.floor(im.shape[1] * im_scale / multiple) * multiple / im.shape[1] + im_scale_y = np.floor(im.shape[0] * im_scale / multiple) * multiple / im.shape[0] + im = cv2.resize(im, None, None, fx=im_scale_x, fy=im_scale_y, interpolation=cv2.INTER_LINEAR) - return im, im_scale + return im, np.array([im_scale_x, im_scale_y, im_scale_x, im_scale_y]) From 0b7439a11671ef41ebfa3603eb1f73514f70dcef Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Wed, 31 Aug 2016 15:03:48 +0900 Subject: [PATCH 02/36] Make anchor ratio to be configurable in a prototxt --- lib/rpn/anchor_target_layer.py | 3 ++- lib/rpn/proposal_layer.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/rpn/anchor_target_layer.py b/lib/rpn/anchor_target_layer.py index 4563df1d2..555e2fd44 100644 --- a/lib/rpn/anchor_target_layer.py +++ b/lib/rpn/anchor_target_layer.py @@ -26,7 +26,8 @@ class AnchorTargetLayer(caffe.Layer): def setup(self, bottom, top): layer_params = yaml.load(self.param_str_) anchor_scales = layer_params.get('scales', (8, 16, 32)) - self._anchors = generate_anchors(scales=np.array(anchor_scales)) + anchor_ratios = layer_params.get('ratios', ((0.5, 1, 2))) + self._anchors = generate_anchors(ratios=anchor_ratios, scales=np.array(anchor_scales)) self._num_anchors = self._anchors.shape[0] self._feat_stride = layer_params['feat_stride'] diff --git a/lib/rpn/proposal_layer.py b/lib/rpn/proposal_layer.py index b157160b3..6a78cf668 100644 --- a/lib/rpn/proposal_layer.py +++ b/lib/rpn/proposal_layer.py @@ -27,7 +27,8 @@ def setup(self, bottom, top): self._feat_stride = layer_params['feat_stride'] anchor_scales = layer_params.get('scales', (8, 16, 32)) - self._anchors = generate_anchors(scales=np.array(anchor_scales)) + anchor_ratios = layer_params.get('ratios', ((0.5, 1, 2))) + self._anchors = generate_anchors(ratios=anchor_ratios, scales=np.array(anchor_scales)) self._num_anchors = self._anchors.shape[0] if DEBUG: From 46405a1fb4384d3100156cac62f0b0c7af9e1196 Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Thu, 1 Sep 2016 15:00:25 +0900 Subject: [PATCH 03/36] Add bounding box voting --- lib/fast_rcnn/config.py | 3 +++ lib/fast_rcnn/test.py | 9 +++++++- lib/utils/bbox.pyx | 51 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/lib/fast_rcnn/config.py b/lib/fast_rcnn/config.py index 2ecd826ee..513576832 100644 --- a/lib/fast_rcnn/config.py +++ b/lib/fast_rcnn/config.py @@ -169,6 +169,9 @@ # Proposal height and width both need to be greater than RPN_MIN_SIZE (at orig image scale) __C.TEST.RPN_MIN_SIZE = 16 +# Apply bounding box voting +__C.TEST.BBOX_VOTE = False + # # MISC diff --git a/lib/fast_rcnn/test.py b/lib/fast_rcnn/test.py index dcac254d5..29b393a65 100644 --- a/lib/fast_rcnn/test.py +++ b/lib/fast_rcnn/test.py @@ -18,6 +18,7 @@ import cPickle from utils.blob import im_list_to_blob import os +from utils.cython_bbox import bbox_vote def _get_image_blob(im): """Converts an image into a network input. @@ -271,7 +272,13 @@ def test_net(net, imdb, max_per_image=100, thresh=0.05, vis=False): cls_dets = np.hstack((cls_boxes, cls_scores[:, np.newaxis])) \ .astype(np.float32, copy=False) keep = nms(cls_dets, cfg.TEST.NMS) - cls_dets = cls_dets[keep, :] + + dets_NMSed = cls_dets[keep, :] + if cfg.TEST.BBOX_VOTE: + cls_dets = bbox_vote(dets_NMSed, cls_dets) + else: + cls_dets = dets_NMSed + if vis: vis_detections(im, imdb.classes[j], cls_dets) all_boxes[j][i] = cls_dets diff --git a/lib/utils/bbox.pyx b/lib/utils/bbox.pyx index e14780ddd..2e6e98289 100644 --- a/lib/utils/bbox.pyx +++ b/lib/utils/bbox.pyx @@ -53,3 +53,54 @@ def bbox_overlaps( ) overlaps[n, k] = iw * ih / ua return overlaps + +# Compute bounding box voting +def bbox_vote( + np.ndarray[float, ndim=2] dets_NMS, + np.ndarray[float, ndim=2] dets_all): + cdef np.ndarray[float, ndim=2] dets_voted = np.zeros((dets_NMS.shape[0], dets_NMS.shape[1]), dtype=np.float32) + cdef unsigned int N = dets_NMS.shape[0] + cdef unsigned int M = dets_all.shape[0] + + cdef np.ndarray[float, ndim=1] det + cdef np.ndarray[float, ndim=1] acc_box + cdef float acc_score + + cdef np.ndarray[float, ndim=1] det2 + cdef float bi0, bi1, bit2, bi3 + cdef float iw, ih, ua + + cdef float thresh=0.5 + + for i in range(N): + det = dets_NMS[i, :] + acc_box = np.zeros((4), dtype=np.float32) + acc_score = 0.0 + + for m in range(M): + det2 = dets_all[m, :] + + bi0 = max(det[0], det2[0]) + bi1 = max(det[1], det2[1]) + bi2 = min(det[2], det2[2]) + bi3 = min(det[3], det2[3]) + + iw = bi2 - bi0 + 1 + ih = bi3 - bi1 + 1 + + if not (iw > 0 and ih > 0): + continue + + ua = (det[2] - det[0] + 1) * (det[3] - det[1] + 1) + (det2[2] - det2[0] + 1) * (det2[3] - det2[1] + 1) - iw * ih + ov = iw * ih / ua + + if (ov < thresh): + continue + + acc_box += det2[4] * det2[0:4] + acc_score += det2[4] + + dets_voted[i][0:4] = acc_box / acc_score + dets_voted[i][4] = det[4] # Keep the original score + + return dets_voted \ No newline at end of file From 450cc1d09b662548129af808261809a827abedbc Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Thu, 1 Sep 2016 15:11:40 +0900 Subject: [PATCH 04/36] Update README.md --- README.md | 226 +++++------------------------------------------------- 1 file changed, 18 insertions(+), 208 deletions(-) diff --git a/README.md b/README.md index 0276a3ad2..c28ceb9af 100644 --- a/README.md +++ b/README.md @@ -1,217 +1,27 @@ -### Disclaimer +## PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection +by Kye-Hyeon Kim, Yeongjae Cheon, Sanghoon Hong, Byungseok Roh, Minje Park -The official Faster R-CNN code (written in MATLAB) is available [here](https://github.com/ShaoqingRen/faster_rcnn). -If your goal is to reproduce the results in our NIPS 2015 paper, please use the [official code](https://github.com/ShaoqingRen/faster_rcnn). +### Introduction +This repository is a fork from [py-faster-rcnn](https://github.com/rbgirshick/py-faster-rcnn) and demonstrates the performance of PVANET. -This repository contains a Python *reimplementation* of the MATLAB code. -This Python implementation is built on a fork of [Fast R-CNN](https://github.com/rbgirshick/fast-rcnn). -There are slight differences between the two implementations. -In particular, this Python port - - is ~10% slower at test-time, because some operations execute on the CPU in Python layers (e.g., 220ms / image vs. 200ms / image for VGG16) - - gives similar, but not exactly the same, mAP as the MATLAB version - - is *not compatible* with models trained using the MATLAB code due to the minor implementation differences - - **includes approximate joint training** that is 1.5x faster than alternating optimization (for VGG16) -- see these [slides](https://www.dropbox.com/s/xtr4yd4i5e0vw8g/iccv15_tutorial_training_rbg.pdf?dl=0) for more information +You can refer to [py-faster-rcnn README.md](https://github.com/rbgirshick/py-faster-rcnn/blob/master/README.md) and [faster-rcnn README.md](https://github.com/ShaoqingRen/faster_rcnn/blob/master/README.md) for more information. -# *Faster* R-CNN: Towards Real-Time Object Detection with Region Proposal Networks +### Desclaimer -By Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun (Microsoft Research) +Please note that this repository doesn't contain our in-house runtime code used in the published article. +- Current implementation is slower at test-time than the reported version because py-faster-rcnn uses an older version of CuDNN and some parts are written in Python. +- If testing parameters in py-faster-rcnn codes have been changed, there might be a tiny difference in VOC2012 test results as well. +- The training of the reported model wasn't done with this implementation. -This Python implementation contains contributions from Sean Bell (Cornell) written during an MSR internship. +### Installation (for the demo) +TBA -Please see the official [README.md](https://github.com/ShaoqingRen/faster_rcnn/blob/master/README.md) for more details. +### How to run the demo +TBA -Faster R-CNN was initially described in an [arXiv tech report](http://arxiv.org/abs/1506.01497) and was subsequently published in NIPS 2015. +### Expected results +TBA -### License +### Models +TBA -Faster R-CNN is released under the MIT License (refer to the LICENSE file for details). - -### Citing Faster R-CNN - -If you find Faster R-CNN useful in your research, please consider citing: - - @inproceedings{renNIPS15fasterrcnn, - Author = {Shaoqing Ren and Kaiming He and Ross Girshick and Jian Sun}, - Title = {Faster {R-CNN}: Towards Real-Time Object Detection - with Region Proposal Networks}, - Booktitle = {Advances in Neural Information Processing Systems ({NIPS})}, - Year = {2015} - } - -### Contents -1. [Requirements: software](#requirements-software) -2. [Requirements: hardware](#requirements-hardware) -3. [Basic installation](#installation-sufficient-for-the-demo) -4. [Demo](#demo) -5. [Beyond the demo: training and testing](#beyond-the-demo-installation-for-training-and-testing-models) -6. [Usage](#usage) - -### Requirements: software - -1. Requirements for `Caffe` and `pycaffe` (see: [Caffe installation instructions](http://caffe.berkeleyvision.org/installation.html)) - - **Note:** Caffe *must* be built with support for Python layers! - - ```make - # In your Makefile.config, make sure to have this line uncommented - WITH_PYTHON_LAYER := 1 - # Unrelatedly, it's also recommended that you use CUDNN - USE_CUDNN := 1 - ``` - - You can download my [Makefile.config](http://www.cs.berkeley.edu/~rbg/fast-rcnn-data/Makefile.config) for reference. -2. Python packages you might not have: `cython`, `python-opencv`, `easydict` -3. [Optional] MATLAB is required for **official** PASCAL VOC evaluation only. The code now includes unofficial Python evaluation code. - -### Requirements: hardware - -1. For training smaller networks (ZF, VGG_CNN_M_1024) a good GPU (e.g., Titan, K20, K40, ...) with at least 3G of memory suffices -2. For training Fast R-CNN with VGG16, you'll need a K40 (~11G of memory) -3. For training the end-to-end version of Faster R-CNN with VGG16, 3G of GPU memory is sufficient (using CUDNN) - -### Installation (sufficient for the demo) - -1. Clone the Faster R-CNN repository - ```Shell - # Make sure to clone with --recursive - git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git - ``` - -2. We'll call the directory that you cloned Faster R-CNN into `FRCN_ROOT` - - *Ignore notes 1 and 2 if you followed step 1 above.* - - **Note 1:** If you didn't clone Faster R-CNN with the `--recursive` flag, then you'll need to manually clone the `caffe-fast-rcnn` submodule: - ```Shell - git submodule update --init --recursive - ``` - **Note 2:** The `caffe-fast-rcnn` submodule needs to be on the `faster-rcnn` branch (or equivalent detached state). This will happen automatically *if you followed step 1 instructions*. - -3. Build the Cython modules - ```Shell - cd $FRCN_ROOT/lib - make - ``` - -4. Build Caffe and pycaffe - ```Shell - cd $FRCN_ROOT/caffe-fast-rcnn - # Now follow the Caffe installation instructions here: - # http://caffe.berkeleyvision.org/installation.html - - # If you're experienced with Caffe and have all of the requirements installed - # and your Makefile.config in place, then simply do: - make -j8 && make pycaffe - ``` - -5. Download pre-computed Faster R-CNN detectors - ```Shell - cd $FRCN_ROOT - ./data/scripts/fetch_faster_rcnn_models.sh - ``` - - This will populate the `$FRCN_ROOT/data` folder with `faster_rcnn_models`. See `data/README.md` for details. - These models were trained on VOC 2007 trainval. - -### Demo - -*After successfully completing [basic installation](#installation-sufficient-for-the-demo)*, you'll be ready to run the demo. - -To run the demo -```Shell -cd $FRCN_ROOT -./tools/demo.py -``` -The demo performs detection using a VGG16 network trained for detection on PASCAL VOC 2007. - -### Beyond the demo: installation for training and testing models -1. Download the training, validation, test data and VOCdevkit - - ```Shell - wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar - wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar - wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar - ``` - -2. Extract all of these tars into one directory named `VOCdevkit` - - ```Shell - tar xvf VOCtrainval_06-Nov-2007.tar - tar xvf VOCtest_06-Nov-2007.tar - tar xvf VOCdevkit_08-Jun-2007.tar - ``` - -3. It should have this basic structure - - ```Shell - $VOCdevkit/ # development kit - $VOCdevkit/VOCcode/ # VOC utility code - $VOCdevkit/VOC2007 # image sets, annotations, etc. - # ... and several other directories ... - ``` - -4. Create symlinks for the PASCAL VOC dataset - - ```Shell - cd $FRCN_ROOT/data - ln -s $VOCdevkit VOCdevkit2007 - ``` - Using symlinks is a good idea because you will likely want to share the same PASCAL dataset installation between multiple projects. -5. [Optional] follow similar steps to get PASCAL VOC 2010 and 2012 -6. [Optional] If you want to use COCO, please see some notes under `data/README.md` -7. Follow the next sections to download pre-trained ImageNet models - -### Download pre-trained ImageNet models - -Pre-trained ImageNet models can be downloaded for the three networks described in the paper: ZF and VGG16. - -```Shell -cd $FRCN_ROOT -./data/scripts/fetch_imagenet_models.sh -``` -VGG16 comes from the [Caffe Model Zoo](https://github.com/BVLC/caffe/wiki/Model-Zoo), but is provided here for your convenience. -ZF was trained at MSRA. - -### Usage - -To train and test a Faster R-CNN detector using the **alternating optimization** algorithm from our NIPS 2015 paper, use `experiments/scripts/faster_rcnn_alt_opt.sh`. -Output is written underneath `$FRCN_ROOT/output`. - -```Shell -cd $FRCN_ROOT -./experiments/scripts/faster_rcnn_alt_opt.sh [GPU_ID] [NET] [--set ...] -# GPU_ID is the GPU you want to train on -# NET in {ZF, VGG_CNN_M_1024, VGG16} is the network arch to use -# --set ... allows you to specify fast_rcnn.config options, e.g. -# --set EXP_DIR seed_rng1701 RNG_SEED 1701 -``` - -("alt opt" refers to the alternating optimization training algorithm described in the NIPS paper.) - -To train and test a Faster R-CNN detector using the **approximate joint training** method, use `experiments/scripts/faster_rcnn_end2end.sh`. -Output is written underneath `$FRCN_ROOT/output`. - -```Shell -cd $FRCN_ROOT -./experiments/scripts/faster_rcnn_end2end.sh [GPU_ID] [NET] [--set ...] -# GPU_ID is the GPU you want to train on -# NET in {ZF, VGG_CNN_M_1024, VGG16} is the network arch to use -# --set ... allows you to specify fast_rcnn.config options, e.g. -# --set EXP_DIR seed_rng1701 RNG_SEED 1701 -``` - -This method trains the RPN module jointly with the Fast R-CNN network, rather than alternating between training the two. It results in faster (~ 1.5x speedup) training times and similar detection accuracy. See these [slides](https://www.dropbox.com/s/xtr4yd4i5e0vw8g/iccv15_tutorial_training_rbg.pdf?dl=0) for more details. - -Artifacts generated by the scripts in `tools` are written in this directory. - -Trained Fast R-CNN networks are saved under: - -``` -output/// -``` - -Test outputs are saved under: - -``` -output//// -``` From 6b76263d8012a60d73c814b81fcdfd35dba241c0 Mon Sep 17 00:00:00 2001 From: Kye-Hyeon Kim Date: Fri, 2 Sep 2016 15:48:06 +0900 Subject: [PATCH 05/36] Update the link to Caffe submodule --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 28e6d5be2..52460e0ee 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "caffe-fast-rcnn"] path = caffe-fast-rcnn - url = https://github.com/rbgirshick/caffe-fast-rcnn.git - branch = fast-rcnn + url = https://github.com/sanghoon/caffe.git + branch = dev_pvanet From df5cce8e104da41ea2d4467b5d2e353e2776efea Mon Sep 17 00:00:00 2001 From: Kye-Hyeon Kim Date: Fri, 2 Sep 2016 15:48:50 +0900 Subject: [PATCH 06/36] Correct deprecated variables (param_str_ -> param_str) --- lib/fast_rcnn/test.py | 32 +++++++++++++++++++++----------- lib/roi_data_layer/layer.py | 2 +- lib/rpn/anchor_target_layer.py | 2 +- lib/rpn/proposal_layer.py | 16 ++++++++++------ lib/rpn/proposal_target_layer.py | 2 +- 5 files changed, 34 insertions(+), 20 deletions(-) diff --git a/lib/fast_rcnn/test.py b/lib/fast_rcnn/test.py index 29b393a65..e80bee8ed 100644 --- a/lib/fast_rcnn/test.py +++ b/lib/fast_rcnn/test.py @@ -110,7 +110,7 @@ def _get_blobs(im, rois): blobs['rois'] = _get_rois_blob(rois, im_scale_factors) return blobs, im_scale_factors -def im_detect(net, im, boxes=None): +def im_detect(net, im, _t, boxes=None): """Detect object classes in an image given object proposals. Arguments: @@ -123,6 +123,7 @@ def im_detect(net, im, boxes=None): background as object category 0) boxes (ndarray): R x (4*K) array of predicted bounding boxes """ + _t['im_preproc'].tic() blobs, im_scales = _get_blobs(im, boxes) # When mapping from image ROIs to feature map ROIs, there's some aliasing @@ -151,13 +152,22 @@ def im_detect(net, im, boxes=None): net.blobs['rois'].reshape(*(blobs['rois'].shape)) # do forward - forward_kwargs = {'data': blobs['data'].astype(np.float32, copy=False)} + net.blobs['data'].data[...] = blobs['data'] + #forward_kwargs = {'data': blobs['data'].astype(np.float32, copy=False)} if cfg.TEST.HAS_RPN: - forward_kwargs['im_info'] = blobs['im_info'].astype(np.float32, copy=False) + net.blobs['im_info'].data[...] = blobs['im_info'] + #forward_kwargs['im_info'] = blobs['im_info'].astype(np.float32, copy=False) else: - forward_kwargs['rois'] = blobs['rois'].astype(np.float32, copy=False) - blobs_out = net.forward(**forward_kwargs) + net.blobs['rois'].data[...] = blobs['rois'] + #forward_kwargs['rois'] = blobs['rois'].astype(np.float32, copy=False) + _t['im_preproc'].toc() + _t['im_net'].tic() + blobs_out = net.forward() + _t['im_net'].toc() + #blobs_out = net.forward(**forward_kwargs) + + _t['im_postproc'].tic() if cfg.TEST.HAS_RPN: assert len(im_scales) == 1, "Only single-image batch implemented" rois = net.blobs['rois'].data.copy() @@ -185,6 +195,7 @@ def im_detect(net, im, boxes=None): # Map scores and predictions back to the original set of boxes scores = scores[inv_index, :] pred_boxes = pred_boxes[inv_index, :] + _t['im_postproc'].toc() return scores, pred_boxes @@ -241,7 +252,7 @@ def test_net(net, imdb, max_per_image=100, thresh=0.05, vis=False): output_dir = get_output_dir(imdb, net) # timers - _t = {'im_detect' : Timer(), 'misc' : Timer()} + _t = {'im_preproc': Timer(), 'im_net' : Timer(), 'im_postproc': Timer(), 'misc' : Timer()} if not cfg.TEST.HAS_RPN: roidb = imdb.roidb @@ -259,9 +270,7 @@ def test_net(net, imdb, max_per_image=100, thresh=0.05, vis=False): box_proposals = roidb[i]['boxes'][roidb[i]['gt_classes'] == 0] im = cv2.imread(imdb.image_path_at(i)) - _t['im_detect'].tic() - scores, boxes = im_detect(net, im, box_proposals) - _t['im_detect'].toc() + scores, boxes = im_detect(net, im, _t, box_proposals) _t['misc'].tic() # skip j = 0, because it's the background class @@ -294,8 +303,9 @@ def test_net(net, imdb, max_per_image=100, thresh=0.05, vis=False): all_boxes[j][i] = all_boxes[j][i][keep, :] _t['misc'].toc() - print 'im_detect: {:d}/{:d} {:.3f}s {:.3f}s' \ - .format(i + 1, num_images, _t['im_detect'].average_time, + print 'im_detect: {:d}/{:d} net {:.3f}s preproc {:.3f}s postproc {:.3f}s misc {:.3f}s' \ + .format(i + 1, num_images, _t['im_net'].average_time, + _t['im_preproc'].average_time, _t['im_postproc'].average_time, _t['misc'].average_time) det_file = os.path.join(output_dir, 'detections.pkl') diff --git a/lib/roi_data_layer/layer.py b/lib/roi_data_layer/layer.py index 9f145fea8..04f41728b 100644 --- a/lib/roi_data_layer/layer.py +++ b/lib/roi_data_layer/layer.py @@ -84,7 +84,7 @@ def setup(self, bottom, top): """Setup the RoIDataLayer.""" # parse the layer parameter string, which must be valid YAML - layer_params = yaml.load(self.param_str_) + layer_params = yaml.load(self.param_str) self._num_classes = layer_params['num_classes'] diff --git a/lib/rpn/anchor_target_layer.py b/lib/rpn/anchor_target_layer.py index 555e2fd44..24ae405c8 100644 --- a/lib/rpn/anchor_target_layer.py +++ b/lib/rpn/anchor_target_layer.py @@ -24,7 +24,7 @@ class AnchorTargetLayer(caffe.Layer): """ def setup(self, bottom, top): - layer_params = yaml.load(self.param_str_) + layer_params = yaml.load(self.param_str) anchor_scales = layer_params.get('scales', (8, 16, 32)) anchor_ratios = layer_params.get('ratios', ((0.5, 1, 2))) self._anchors = generate_anchors(ratios=anchor_ratios, scales=np.array(anchor_scales)) diff --git a/lib/rpn/proposal_layer.py b/lib/rpn/proposal_layer.py index 6a78cf668..f946836ed 100644 --- a/lib/rpn/proposal_layer.py +++ b/lib/rpn/proposal_layer.py @@ -23,7 +23,7 @@ class ProposalLayer(caffe.Layer): def setup(self, bottom, top): # parse the layer parameter string, which must be valid YAML - layer_params = yaml.load(self.param_str_) + layer_params = yaml.load(self.param_str) self._feat_stride = layer_params['feat_stride'] anchor_scales = layer_params.get('scales', (8, 16, 32)) @@ -62,11 +62,15 @@ def forward(self, bottom, top): assert bottom[0].data.shape[0] == 1, \ 'Only single item batches are supported' - cfg_key = str(self.phase) # either 'TRAIN' or 'TEST' - pre_nms_topN = cfg[cfg_key].RPN_PRE_NMS_TOP_N - post_nms_topN = cfg[cfg_key].RPN_POST_NMS_TOP_N - nms_thresh = cfg[cfg_key].RPN_NMS_THRESH - min_size = cfg[cfg_key].RPN_MIN_SIZE + cfg_key = self.phase # either 'TRAIN' or 'TEST' + if cfg_key == 0: + cfg_ = cfg.TRAIN + else: + cfg_ = cfg.TEST + pre_nms_topN = cfg_.RPN_PRE_NMS_TOP_N + post_nms_topN = cfg_.RPN_POST_NMS_TOP_N + nms_thresh = cfg_.RPN_NMS_THRESH + min_size = cfg_.RPN_MIN_SIZE # the first set of _num_anchors channels are bg probs # the second set are the fg probs, which we want diff --git a/lib/rpn/proposal_target_layer.py b/lib/rpn/proposal_target_layer.py index 38e1f2c88..89f2c6e41 100644 --- a/lib/rpn/proposal_target_layer.py +++ b/lib/rpn/proposal_target_layer.py @@ -22,7 +22,7 @@ class ProposalTargetLayer(caffe.Layer): """ def setup(self, bottom, top): - layer_params = yaml.load(self.param_str_) + layer_params = yaml.load(self.param_str) self._num_classes = layer_params['num_classes'] # sampled rois (0, x1, y1, x2, y2) From de03c831c0d7bd137e40f4c7de73872d3c3977c8 Mon Sep 17 00:00:00 2001 From: Kye-Hyeon Kim Date: Fri, 2 Sep 2016 15:51:17 +0900 Subject: [PATCH 07/36] Add PVANET prototxts and a script for downloading caffemodels --- models/pvanet/cfgs/100prop.yml | 9 + models/pvanet/cfgs/200prop.yml | 9 + models/pvanet/cfgs/300prop.yml | 9 + models/pvanet/cfgs/50prop.yml | 9 + models/pvanet/cfgs/submit_160715.yml | 9 + models/pvanet/comp/original.pt | 6447 +++++++++++++++++++++++++ models/pvanet/comp/test.pt | 3251 +++++++++++++ models/pvanet/download_models.sh | 3 + models/pvanet/full/original.pt | 6533 ++++++++++++++++++++++++++ models/pvanet/full/test.pt | 3261 +++++++++++++ 10 files changed, 19540 insertions(+) create mode 100644 models/pvanet/cfgs/100prop.yml create mode 100644 models/pvanet/cfgs/200prop.yml create mode 100644 models/pvanet/cfgs/300prop.yml create mode 100644 models/pvanet/cfgs/50prop.yml create mode 100644 models/pvanet/cfgs/submit_160715.yml create mode 100644 models/pvanet/comp/original.pt create mode 100644 models/pvanet/comp/test.pt create mode 100755 models/pvanet/download_models.sh create mode 100644 models/pvanet/full/original.pt create mode 100644 models/pvanet/full/test.pt diff --git a/models/pvanet/cfgs/100prop.yml b/models/pvanet/cfgs/100prop.yml new file mode 100644 index 000000000..091fee441 --- /dev/null +++ b/models/pvanet/cfgs/100prop.yml @@ -0,0 +1,9 @@ +TEST: + HAS_RPN: True + SCALE_MULTIPLE_OF: 32 + SCALES: + - 640 + BBOX_VOTE: False + NMS: 0.4 + RPN_PRE_NMS_TOP_N: 12000 + RPN_POST_NMS_TOP_N: 100 diff --git a/models/pvanet/cfgs/200prop.yml b/models/pvanet/cfgs/200prop.yml new file mode 100644 index 000000000..b8dafc98e --- /dev/null +++ b/models/pvanet/cfgs/200prop.yml @@ -0,0 +1,9 @@ +TEST: + HAS_RPN: True + SCALE_MULTIPLE_OF: 32 + SCALES: + - 640 + BBOX_VOTE: False + NMS: 0.4 + RPN_PRE_NMS_TOP_N: 12000 + RPN_POST_NMS_TOP_N: 200 diff --git a/models/pvanet/cfgs/300prop.yml b/models/pvanet/cfgs/300prop.yml new file mode 100644 index 000000000..c35f3dca4 --- /dev/null +++ b/models/pvanet/cfgs/300prop.yml @@ -0,0 +1,9 @@ +TEST: + HAS_RPN: True + SCALE_MULTIPLE_OF: 32 + SCALES: + - 640 + BBOX_VOTE: False + NMS: 0.4 + RPN_PRE_NMS_TOP_N: 12000 + RPN_POST_NMS_TOP_N: 300 diff --git a/models/pvanet/cfgs/50prop.yml b/models/pvanet/cfgs/50prop.yml new file mode 100644 index 000000000..a7223b256 --- /dev/null +++ b/models/pvanet/cfgs/50prop.yml @@ -0,0 +1,9 @@ +TEST: + HAS_RPN: True + SCALE_MULTIPLE_OF: 32 + SCALES: + - 640 + BBOX_VOTE: False + NMS: 0.4 + RPN_PRE_NMS_TOP_N: 12000 + RPN_POST_NMS_TOP_N: 50 diff --git a/models/pvanet/cfgs/submit_160715.yml b/models/pvanet/cfgs/submit_160715.yml new file mode 100644 index 000000000..124112b30 --- /dev/null +++ b/models/pvanet/cfgs/submit_160715.yml @@ -0,0 +1,9 @@ +TEST: + HAS_RPN: True + SCALE_MULTIPLE_OF: 32 + SCALES: + - 640 + BBOX_VOTE: True + NMS: 0.4 + RPN_PRE_NMS_TOP_N: 12000 + RPN_POST_NMS_TOP_N: 200 diff --git a/models/pvanet/comp/original.pt b/models/pvanet/comp/original.pt new file mode 100644 index 000000000..2cb30bdb4 --- /dev/null +++ b/models/pvanet/comp/original.pt @@ -0,0 +1,6447 @@ +name: "PVANET" + +################################################################################ +## Input +################################################################################ + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 640 + dim: 1056 +} + +input: "im_info" +input_shape { + dim: 1 + dim: 6 +} + +################################################################################ +## Convolution +################################################################################ + +layer { + name: "conv1_1/conv" + type: "Convolution" + bottom: "data" + top: "conv1_1/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 16 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 3 + pad_w: 3 + kernel_h: 7 + kernel_w: 7 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv1_1/bn" + type: "BatchNorm" + bottom: "conv1_1/conv" + top: "conv1_1/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv1_1/neg" + type: "Power" + bottom: "conv1_1/conv" + top: "conv1_1/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv1_1/concat" + type: "Concat" + bottom: "conv1_1/conv" + bottom: "conv1_1/neg" + top: "conv1_1" +} +layer { + name: "conv1_1/scale" + type: "Scale" + bottom: "conv1_1" + top: "conv1_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv1_1/relu" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv2_1/1/conv" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/1/bn" + type: "BatchNorm" + bottom: "conv2_1/1" + top: "conv2_1/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/1/bn_scale" + type: "Scale" + bottom: "conv2_1/1" + top: "conv2_1/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/1/relu" + type: "ReLU" + bottom: "conv2_1/1" + top: "conv2_1/1" +} +layer { + name: "conv2_1/2/conv" + type: "Convolution" + bottom: "conv2_1/1" + top: "conv2_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/2/bn" + type: "BatchNorm" + bottom: "conv2_1/2/conv" + top: "conv2_1/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/2/neg" + type: "Power" + bottom: "conv2_1/2/conv" + top: "conv2_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_1/2/concat" + type: "Concat" + bottom: "conv2_1/2/conv" + bottom: "conv2_1/2/neg" + top: "conv2_1/2" +} +layer { + name: "conv2_1/2/scale" + type: "Scale" + bottom: "conv2_1/2" + top: "conv2_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/2/relu" + type: "ReLU" + bottom: "conv2_1/2" + top: "conv2_1/2" +} +layer { + name: "conv2_1/3/conv" + type: "Convolution" + bottom: "conv2_1/2" + top: "conv2_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/3/bn" + type: "BatchNorm" + bottom: "conv2_1/3" + top: "conv2_1/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/3/bn_scale" + type: "Scale" + bottom: "conv2_1/3" + top: "conv2_1/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/proj" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/proj_bn" + type: "BatchNorm" + bottom: "conv2_1/proj" + top: "conv2_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/proj_bn_scale" + type: "Scale" + bottom: "conv2_1/proj" + top: "conv2_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1" + type: "Eltwise" + bottom: "conv2_1/3" + bottom: "conv2_1/proj" + top: "conv2_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_2/1/conv" + type: "Convolution" + bottom: "conv2_1" + top: "conv2_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/1/bn" + type: "BatchNorm" + bottom: "conv2_2/1" + top: "conv2_2/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/1/bn_scale" + type: "Scale" + bottom: "conv2_2/1" + top: "conv2_2/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/1/relu" + type: "ReLU" + bottom: "conv2_2/1" + top: "conv2_2/1" +} +layer { + name: "conv2_2/2/conv" + type: "Convolution" + bottom: "conv2_2/1" + top: "conv2_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/2/bn" + type: "BatchNorm" + bottom: "conv2_2/2/conv" + top: "conv2_2/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/2/neg" + type: "Power" + bottom: "conv2_2/2/conv" + top: "conv2_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_2/2/concat" + type: "Concat" + bottom: "conv2_2/2/conv" + bottom: "conv2_2/2/neg" + top: "conv2_2/2" +} +layer { + name: "conv2_2/2/scale" + type: "Scale" + bottom: "conv2_2/2" + top: "conv2_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/2/relu" + type: "ReLU" + bottom: "conv2_2/2" + top: "conv2_2/2" +} +layer { + name: "conv2_2/3/conv" + type: "Convolution" + bottom: "conv2_2/2" + top: "conv2_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/3/bn" + type: "BatchNorm" + bottom: "conv2_2/3" + top: "conv2_2/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/3/bn_scale" + type: "Scale" + bottom: "conv2_2/3" + top: "conv2_2/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/input" + type: "Power" + bottom: "conv2_1" + top: "conv2_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_2" + type: "Eltwise" + bottom: "conv2_2/3" + bottom: "conv2_2/input" + top: "conv2_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_3/1/conv" + type: "Convolution" + bottom: "conv2_2" + top: "conv2_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/1/bn" + type: "BatchNorm" + bottom: "conv2_3/1" + top: "conv2_3/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/1/bn_scale" + type: "Scale" + bottom: "conv2_3/1" + top: "conv2_3/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/1/relu" + type: "ReLU" + bottom: "conv2_3/1" + top: "conv2_3/1" +} +layer { + name: "conv2_3/2/conv" + type: "Convolution" + bottom: "conv2_3/1" + top: "conv2_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/2/bn" + type: "BatchNorm" + bottom: "conv2_3/2/conv" + top: "conv2_3/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/2/neg" + type: "Power" + bottom: "conv2_3/2/conv" + top: "conv2_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_3/2/concat" + type: "Concat" + bottom: "conv2_3/2/conv" + bottom: "conv2_3/2/neg" + top: "conv2_3/2" +} +layer { + name: "conv2_3/2/scale" + type: "Scale" + bottom: "conv2_3/2" + top: "conv2_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/2/relu" + type: "ReLU" + bottom: "conv2_3/2" + top: "conv2_3/2" +} +layer { + name: "conv2_3/3/conv" + type: "Convolution" + bottom: "conv2_3/2" + top: "conv2_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/3/bn" + type: "BatchNorm" + bottom: "conv2_3/3" + top: "conv2_3/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/3/bn_scale" + type: "Scale" + bottom: "conv2_3/3" + top: "conv2_3/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/input" + type: "Power" + bottom: "conv2_2" + top: "conv2_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_3" + type: "Eltwise" + bottom: "conv2_3/3" + bottom: "conv2_3/input" + top: "conv2_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_1/1/conv" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/1/bn" + type: "BatchNorm" + bottom: "conv3_1/1" + top: "conv3_1/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/1/bn_scale" + type: "Scale" + bottom: "conv3_1/1" + top: "conv3_1/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/1/relu" + type: "ReLU" + bottom: "conv3_1/1" + top: "conv3_1/1" +} +layer { + name: "conv3_1/2/conv" + type: "Convolution" + bottom: "conv3_1/1" + top: "conv3_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/2/bn" + type: "BatchNorm" + bottom: "conv3_1/2/conv" + top: "conv3_1/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/2/neg" + type: "Power" + bottom: "conv3_1/2/conv" + top: "conv3_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_1/2/concat" + type: "Concat" + bottom: "conv3_1/2/conv" + bottom: "conv3_1/2/neg" + top: "conv3_1/2" +} +layer { + name: "conv3_1/2/scale" + type: "Scale" + bottom: "conv3_1/2" + top: "conv3_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/2/relu" + type: "ReLU" + bottom: "conv3_1/2" + top: "conv3_1/2" +} +layer { + name: "conv3_1/3/conv" + type: "Convolution" + bottom: "conv3_1/2" + top: "conv3_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/3/bn" + type: "BatchNorm" + bottom: "conv3_1/3" + top: "conv3_1/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/3/bn_scale" + type: "Scale" + bottom: "conv3_1/3" + top: "conv3_1/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/proj" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/proj_bn" + type: "BatchNorm" + bottom: "conv3_1/proj" + top: "conv3_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/proj_bn_scale" + type: "Scale" + bottom: "conv3_1/proj" + top: "conv3_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1" + type: "Eltwise" + bottom: "conv3_1/3" + bottom: "conv3_1/proj" + top: "conv3_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_2/1/conv" + type: "Convolution" + bottom: "conv3_1" + top: "conv3_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/1/bn" + type: "BatchNorm" + bottom: "conv3_2/1" + top: "conv3_2/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/1/bn_scale" + type: "Scale" + bottom: "conv3_2/1" + top: "conv3_2/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/1/relu" + type: "ReLU" + bottom: "conv3_2/1" + top: "conv3_2/1" +} +layer { + name: "conv3_2/2/conv" + type: "Convolution" + bottom: "conv3_2/1" + top: "conv3_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/2/bn" + type: "BatchNorm" + bottom: "conv3_2/2/conv" + top: "conv3_2/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/2/neg" + type: "Power" + bottom: "conv3_2/2/conv" + top: "conv3_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_2/2/concat" + type: "Concat" + bottom: "conv3_2/2/conv" + bottom: "conv3_2/2/neg" + top: "conv3_2/2" +} +layer { + name: "conv3_2/2/scale" + type: "Scale" + bottom: "conv3_2/2" + top: "conv3_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/2/relu" + type: "ReLU" + bottom: "conv3_2/2" + top: "conv3_2/2" +} +layer { + name: "conv3_2/3/conv" + type: "Convolution" + bottom: "conv3_2/2" + top: "conv3_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/3/bn" + type: "BatchNorm" + bottom: "conv3_2/3" + top: "conv3_2/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/3/bn_scale" + type: "Scale" + bottom: "conv3_2/3" + top: "conv3_2/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/input" + type: "Power" + bottom: "conv3_1" + top: "conv3_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_2" + type: "Eltwise" + bottom: "conv3_2/3" + bottom: "conv3_2/input" + top: "conv3_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_3/1/conv" + type: "Convolution" + bottom: "conv3_2" + top: "conv3_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/1/bn" + type: "BatchNorm" + bottom: "conv3_3/1" + top: "conv3_3/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/1/bn_scale" + type: "Scale" + bottom: "conv3_3/1" + top: "conv3_3/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/1/relu" + type: "ReLU" + bottom: "conv3_3/1" + top: "conv3_3/1" +} +layer { + name: "conv3_3/2/conv" + type: "Convolution" + bottom: "conv3_3/1" + top: "conv3_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/2/bn" + type: "BatchNorm" + bottom: "conv3_3/2/conv" + top: "conv3_3/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/2/neg" + type: "Power" + bottom: "conv3_3/2/conv" + top: "conv3_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_3/2/concat" + type: "Concat" + bottom: "conv3_3/2/conv" + bottom: "conv3_3/2/neg" + top: "conv3_3/2" +} +layer { + name: "conv3_3/2/scale" + type: "Scale" + bottom: "conv3_3/2" + top: "conv3_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/2/relu" + type: "ReLU" + bottom: "conv3_3/2" + top: "conv3_3/2" +} +layer { + name: "conv3_3/3/conv" + type: "Convolution" + bottom: "conv3_3/2" + top: "conv3_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/3/bn" + type: "BatchNorm" + bottom: "conv3_3/3" + top: "conv3_3/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/3/bn_scale" + type: "Scale" + bottom: "conv3_3/3" + top: "conv3_3/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/input" + type: "Power" + bottom: "conv3_2" + top: "conv3_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_3" + type: "Eltwise" + bottom: "conv3_3/3" + bottom: "conv3_3/input" + top: "conv3_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_4/1/conv" + type: "Convolution" + bottom: "conv3_3" + top: "conv3_4/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/1/bn" + type: "BatchNorm" + bottom: "conv3_4/1" + top: "conv3_4/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/1/bn_scale" + type: "Scale" + bottom: "conv3_4/1" + top: "conv3_4/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/1/relu" + type: "ReLU" + bottom: "conv3_4/1" + top: "conv3_4/1" +} +layer { + name: "conv3_4/2/conv" + type: "Convolution" + bottom: "conv3_4/1" + top: "conv3_4/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/2/bn" + type: "BatchNorm" + bottom: "conv3_4/2/conv" + top: "conv3_4/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/2/neg" + type: "Power" + bottom: "conv3_4/2/conv" + top: "conv3_4/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_4/2/concat" + type: "Concat" + bottom: "conv3_4/2/conv" + bottom: "conv3_4/2/neg" + top: "conv3_4/2" +} +layer { + name: "conv3_4/2/scale" + type: "Scale" + bottom: "conv3_4/2" + top: "conv3_4/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/2/relu" + type: "ReLU" + bottom: "conv3_4/2" + top: "conv3_4/2" +} +layer { + name: "conv3_4/3/conv" + type: "Convolution" + bottom: "conv3_4/2" + top: "conv3_4/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/3/bn" + type: "BatchNorm" + bottom: "conv3_4/3" + top: "conv3_4/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/3/bn_scale" + type: "Scale" + bottom: "conv3_4/3" + top: "conv3_4/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/input" + type: "Power" + bottom: "conv3_3" + top: "conv3_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_4" + type: "Eltwise" + bottom: "conv3_4/3" + bottom: "conv3_4/input" + top: "conv3_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_1/incep/0/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/0/relu" + type: "ReLU" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/pool" + type: "Pooling" + bottom: "conv3_4" + top: "conv4_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv4_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv4_1/incep/pool" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep" + type: "Concat" + bottom: "conv4_1/incep/0" + bottom: "conv4_1/incep/1_0" + bottom: "conv4_1/incep/2_1" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep" +} +layer { + name: "conv4_1/out/conv" + type: "Convolution" + bottom: "conv4_1/incep" + top: "conv4_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/out/bn" + type: "BatchNorm" + bottom: "conv4_1/out" + top: "conv4_1/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/out/bn_scale" + type: "Scale" + bottom: "conv4_1/out" + top: "conv4_1/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/proj" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/proj_bn" + type: "BatchNorm" + bottom: "conv4_1/proj" + top: "conv4_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/proj_bn_scale" + type: "Scale" + bottom: "conv4_1/proj" + top: "conv4_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1" + type: "Eltwise" + bottom: "conv4_1/out" + bottom: "conv4_1/proj" + top: "conv4_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_2/incep/0/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/0/relu" + type: "ReLU" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep" + type: "Concat" + bottom: "conv4_2/incep/0" + bottom: "conv4_2/incep/1_0" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep" +} +layer { + name: "conv4_2/out/conv" + type: "Convolution" + bottom: "conv4_2/incep" + top: "conv4_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/out/bn" + type: "BatchNorm" + bottom: "conv4_2/out" + top: "conv4_2/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/out/bn_scale" + type: "Scale" + bottom: "conv4_2/out" + top: "conv4_2/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/input" + type: "Power" + bottom: "conv4_1" + top: "conv4_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_2" + type: "Eltwise" + bottom: "conv4_2/out" + bottom: "conv4_2/input" + top: "conv4_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_3/incep/0/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/0/relu" + type: "ReLU" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep" + type: "Concat" + bottom: "conv4_3/incep/0" + bottom: "conv4_3/incep/1_0" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep" +} +layer { + name: "conv4_3/out/conv" + type: "Convolution" + bottom: "conv4_3/incep" + top: "conv4_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/out/bn" + type: "BatchNorm" + bottom: "conv4_3/out" + top: "conv4_3/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/out/bn_scale" + type: "Scale" + bottom: "conv4_3/out" + top: "conv4_3/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/input" + type: "Power" + bottom: "conv4_2" + top: "conv4_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_3" + type: "Eltwise" + bottom: "conv4_3/out" + bottom: "conv4_3/input" + top: "conv4_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_4/incep/0/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/0/relu" + type: "ReLU" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep" + type: "Concat" + bottom: "conv4_4/incep/0" + bottom: "conv4_4/incep/1_0" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep" +} +layer { + name: "conv4_4/out/conv" + type: "Convolution" + bottom: "conv4_4/incep" + top: "conv4_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/out/bn" + type: "BatchNorm" + bottom: "conv4_4/out" + top: "conv4_4/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/out/bn_scale" + type: "Scale" + bottom: "conv4_4/out" + top: "conv4_4/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/input" + type: "Power" + bottom: "conv4_3" + top: "conv4_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_4" + type: "Eltwise" + bottom: "conv4_4/out" + bottom: "conv4_4/input" + top: "conv4_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_1/incep/0/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/0/relu" + type: "ReLU" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/pool" + type: "Pooling" + bottom: "conv4_4" + top: "conv5_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv5_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv5_1/incep/pool" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep" + type: "Concat" + bottom: "conv5_1/incep/0" + bottom: "conv5_1/incep/1_0" + bottom: "conv5_1/incep/2_1" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep" +} +layer { + name: "conv5_1/out/conv" + type: "Convolution" + bottom: "conv5_1/incep" + top: "conv5_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/out/bn" + type: "BatchNorm" + bottom: "conv5_1/out" + top: "conv5_1/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/out/bn_scale" + type: "Scale" + bottom: "conv5_1/out" + top: "conv5_1/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/proj" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/proj_bn" + type: "BatchNorm" + bottom: "conv5_1/proj" + top: "conv5_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/proj_bn_scale" + type: "Scale" + bottom: "conv5_1/proj" + top: "conv5_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1" + type: "Eltwise" + bottom: "conv5_1/out" + bottom: "conv5_1/proj" + top: "conv5_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_2/incep/0/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/0/relu" + type: "ReLU" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep" + type: "Concat" + bottom: "conv5_2/incep/0" + bottom: "conv5_2/incep/1_0" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep" +} +layer { + name: "conv5_2/out/conv" + type: "Convolution" + bottom: "conv5_2/incep" + top: "conv5_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/out/bn" + type: "BatchNorm" + bottom: "conv5_2/out" + top: "conv5_2/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/out/bn_scale" + type: "Scale" + bottom: "conv5_2/out" + top: "conv5_2/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/input" + type: "Power" + bottom: "conv5_1" + top: "conv5_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_2" + type: "Eltwise" + bottom: "conv5_2/out" + bottom: "conv5_2/input" + top: "conv5_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_3/incep/0/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/0/relu" + type: "ReLU" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep" + type: "Concat" + bottom: "conv5_3/incep/0" + bottom: "conv5_3/incep/1_0" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep" +} +layer { + name: "conv5_3/out/conv" + type: "Convolution" + bottom: "conv5_3/incep" + top: "conv5_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/out/bn" + type: "BatchNorm" + bottom: "conv5_3/out" + top: "conv5_3/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/out/bn_scale" + type: "Scale" + bottom: "conv5_3/out" + top: "conv5_3/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/input" + type: "Power" + bottom: "conv5_2" + top: "conv5_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_3" + type: "Eltwise" + bottom: "conv5_3/out" + bottom: "conv5_3/input" + top: "conv5_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/incep/0/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/0/relu" + type: "ReLU" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep" + type: "Concat" + bottom: "conv5_4/incep/0" + bottom: "conv5_4/incep/1_0" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep" +} +layer { + name: "conv5_4/out/conv" + type: "Convolution" + bottom: "conv5_4/incep" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/out/bn" + type: "BatchNorm" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/out/bn_scale" + type: "Scale" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/input" + type: "Power" + bottom: "conv5_3" + top: "conv5_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_4" + type: "Eltwise" + bottom: "conv5_4/out" + bottom: "conv5_4/input" + top: "conv5_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} + +### hyper feature ### +layer { + name: "downsample" + type: "Pooling" + bottom: "conv3_4" + top: "downsample" + pooling_param { + kernel_size: 3 + stride: 2 + pad: 0 + pool: MAX + } +} +layer { + name: "upsample" + type: "Deconvolution" + bottom: "conv5_4" + top: "upsample" + param { + lr_mult: 0 + decay_mult: 0 + } + convolution_param { + num_output: 384 + kernel_size: 4 + pad: 1 + stride: 2 + group: 384 + bias_term: false + weight_filler: { + type: "bilinear" + } + } +} +layer { + name: "concat" + bottom: "downsample" + bottom: "conv4_4" + bottom: "upsample" + top: "concat" + type: "Concat" + concat_param { + axis: 1 + } +} +layer { + name: "convf_rpn" + type: "Convolution" + bottom: "concat" + top: "convf_rpn" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "reluf_rpn" + type: "ReLU" + bottom: "convf_rpn" + top: "convf_rpn" +} +layer { + name: "convf_2" + type: "Convolution" + bottom: "concat" + top: "convf_2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + convolution_param { + num_output: 384 + kernel_size: 1 + pad: 0 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "reluf_2" + type: "ReLU" + bottom: "convf_2" + top: "convf_2" +} +layer { + name: "concat_convf" + bottom: "convf_rpn" + bottom: "convf_2" + top: "convf" + type: "Concat" + concat_param { + axis: 1 + } +} + +################################################################################ +## RPN +################################################################################ + +### RPN conv ### +layer { + name: "rpn_conv1" + type: "Convolution" + bottom: "convf_rpn" + top: "rpn_conv1" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu1" + type: "ReLU" + bottom: "rpn_conv1" + top: "rpn_conv1" +} +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 50 # 2(bg/fg) * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 100 # 4 * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +################################################################################ +## Proposal +################################################################################ +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 50 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Proposal' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + top: 'scores' + proposal_param { + ratio: 0.5 ratio: 0.667 ratio: 1.0 ratio: 1.5 ratio: 2.0 + scale: 3 scale: 6 scale: 9 scale: 16 scale: 32 + base_size: 16 + feat_stride: 16 + pre_nms_topn: 12000 + post_nms_topn: 200 + nms_thresh: 0.7 + min_size: 16 + } +} + +################################################################################ +## RCNN +################################################################################ +layer { + name: "roi_pool_conv5" + type: "ROIPooling" + bottom: "convf" + bottom: "rois" + top: "roi_pool_conv5" + roi_pooling_param { + pooled_w: 6 + pooled_h: 6 + spatial_scale: 0.0625 # 1/16 + } +} +layer { + name: "fc6_L" + type: "InnerProduct" + bottom: "roi_pool_conv5" + top: "fc6_L" + inner_product_param { + num_output: 512 + bias_term: false + } +} +layer { + name: "fc6_U" + type: "InnerProduct" + bottom: "fc6_L" + top: "fc6_U" + inner_product_param { + num_output: 4096 + } +} +layer { + name: "fc6/dropout" + type: "Dropout" + bottom: "fc6_U" + top: "fc6_U" + dropout_param { + dropout_ratio: 0.25 + } +} +layer { + name: "fc6/relu" + type: "ReLU" + bottom: "fc6_U" + top: "fc6_U" +} +layer { + name: "fc7_L" + type: "InnerProduct" + bottom: "fc6_U" + top: "fc7_L" + inner_product_param { + num_output: 512 + bias_term: false + } +} +layer { + name: "fc7_U" + type: "InnerProduct" + bottom: "fc7_L" + top: "fc7_U" + inner_product_param { + num_output: 4096 + } +} +layer { + name: "fc7/dropout" + type: "Dropout" + bottom: "fc7_U" + top: "fc7_U" + dropout_param { + dropout_ratio: 0.25 + } +} +layer { + name: "fc7/relu" + type: "ReLU" + bottom: "fc7_U" + top: "fc7_U" +} +layer { + name: "cls_score" + type: "InnerProduct" + bottom: "fc7_U" + top: "cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 21 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "bbox_pred" + type: "InnerProduct" + bottom: "fc7_U" + top: "bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 84 + weight_filler { type: "gaussian" std: 0.001 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob" +} diff --git a/models/pvanet/comp/test.pt b/models/pvanet/comp/test.pt new file mode 100644 index 000000000..4e0f21753 --- /dev/null +++ b/models/pvanet/comp/test.pt @@ -0,0 +1,3251 @@ +name: "PVANET" + +################################################################################ +## Input +################################################################################ + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 640 + dim: 1056 +} +input: "im_info" +input_shape { + dim: 1 + dim: 6 +} + +################################################################################ +## Convolution +################################################################################ + +layer { + name: "conv1_1/conv" + type: "Convolution" + bottom: "data" + top: "conv1_1/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 16 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 3 + pad_w: 3 + kernel_h: 7 + kernel_w: 7 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv1_1/neg" + type: "Power" + bottom: "conv1_1/conv" + top: "conv1_1/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv1_1/concat" + type: "Concat" + bottom: "conv1_1/conv" + bottom: "conv1_1/neg" + top: "conv1_1" +} +layer { + name: "conv1_1/scale" + type: "Scale" + bottom: "conv1_1" + top: "conv1_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv1_1/relu" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv2_1/1/conv" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/1/relu" + type: "ReLU" + bottom: "conv2_1/1" + top: "conv2_1/1" +} +layer { + name: "conv2_1/2/conv" + type: "Convolution" + bottom: "conv2_1/1" + top: "conv2_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/2/neg" + type: "Power" + bottom: "conv2_1/2/conv" + top: "conv2_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_1/2/concat" + type: "Concat" + bottom: "conv2_1/2/conv" + bottom: "conv2_1/2/neg" + top: "conv2_1/2" +} +layer { + name: "conv2_1/2/scale" + type: "Scale" + bottom: "conv2_1/2" + top: "conv2_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/2/relu" + type: "ReLU" + bottom: "conv2_1/2" + top: "conv2_1/2" +} +layer { + name: "conv2_1/3/conv" + type: "Convolution" + bottom: "conv2_1/2" + top: "conv2_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/proj" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1" + type: "Eltwise" + bottom: "conv2_1/3" + bottom: "conv2_1/proj" + top: "conv2_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_2/1/conv" + type: "Convolution" + bottom: "conv2_1" + top: "conv2_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/1/relu" + type: "ReLU" + bottom: "conv2_2/1" + top: "conv2_2/1" +} +layer { + name: "conv2_2/2/conv" + type: "Convolution" + bottom: "conv2_2/1" + top: "conv2_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/2/neg" + type: "Power" + bottom: "conv2_2/2/conv" + top: "conv2_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_2/2/concat" + type: "Concat" + bottom: "conv2_2/2/conv" + bottom: "conv2_2/2/neg" + top: "conv2_2/2" +} +layer { + name: "conv2_2/2/scale" + type: "Scale" + bottom: "conv2_2/2" + top: "conv2_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/2/relu" + type: "ReLU" + bottom: "conv2_2/2" + top: "conv2_2/2" +} +layer { + name: "conv2_2/3/conv" + type: "Convolution" + bottom: "conv2_2/2" + top: "conv2_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2" + type: "Eltwise" + bottom: "conv2_2/3" + bottom: "conv2_1" + top: "conv2_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_3/1/conv" + type: "Convolution" + bottom: "conv2_2" + top: "conv2_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/1/relu" + type: "ReLU" + bottom: "conv2_3/1" + top: "conv2_3/1" +} +layer { + name: "conv2_3/2/conv" + type: "Convolution" + bottom: "conv2_3/1" + top: "conv2_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/2/neg" + type: "Power" + bottom: "conv2_3/2/conv" + top: "conv2_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_3/2/concat" + type: "Concat" + bottom: "conv2_3/2/conv" + bottom: "conv2_3/2/neg" + top: "conv2_3/2" +} +layer { + name: "conv2_3/2/scale" + type: "Scale" + bottom: "conv2_3/2" + top: "conv2_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/2/relu" + type: "ReLU" + bottom: "conv2_3/2" + top: "conv2_3/2" +} +layer { + name: "conv2_3/3/conv" + type: "Convolution" + bottom: "conv2_3/2" + top: "conv2_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3" + type: "Eltwise" + bottom: "conv2_3/3" + bottom: "conv2_2" + top: "conv2_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_1/1/conv" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/1/relu" + type: "ReLU" + bottom: "conv3_1/1" + top: "conv3_1/1" +} +layer { + name: "conv3_1/2/conv" + type: "Convolution" + bottom: "conv3_1/1" + top: "conv3_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/2/neg" + type: "Power" + bottom: "conv3_1/2/conv" + top: "conv3_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_1/2/concat" + type: "Concat" + bottom: "conv3_1/2/conv" + bottom: "conv3_1/2/neg" + top: "conv3_1/2" +} +layer { + name: "conv3_1/2/scale" + type: "Scale" + bottom: "conv3_1/2" + top: "conv3_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/2/relu" + type: "ReLU" + bottom: "conv3_1/2" + top: "conv3_1/2" +} +layer { + name: "conv3_1/3/conv" + type: "Convolution" + bottom: "conv3_1/2" + top: "conv3_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/proj" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1" + type: "Eltwise" + bottom: "conv3_1/3" + bottom: "conv3_1/proj" + top: "conv3_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_2/1/conv" + type: "Convolution" + bottom: "conv3_1" + top: "conv3_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/1/relu" + type: "ReLU" + bottom: "conv3_2/1" + top: "conv3_2/1" +} +layer { + name: "conv3_2/2/conv" + type: "Convolution" + bottom: "conv3_2/1" + top: "conv3_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/2/neg" + type: "Power" + bottom: "conv3_2/2/conv" + top: "conv3_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_2/2/concat" + type: "Concat" + bottom: "conv3_2/2/conv" + bottom: "conv3_2/2/neg" + top: "conv3_2/2" +} +layer { + name: "conv3_2/2/scale" + type: "Scale" + bottom: "conv3_2/2" + top: "conv3_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/2/relu" + type: "ReLU" + bottom: "conv3_2/2" + top: "conv3_2/2" +} +layer { + name: "conv3_2/3/conv" + type: "Convolution" + bottom: "conv3_2/2" + top: "conv3_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2" + type: "Eltwise" + bottom: "conv3_2/3" + bottom: "conv3_1" + top: "conv3_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_3/1/conv" + type: "Convolution" + bottom: "conv3_2" + top: "conv3_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/1/relu" + type: "ReLU" + bottom: "conv3_3/1" + top: "conv3_3/1" +} +layer { + name: "conv3_3/2/conv" + type: "Convolution" + bottom: "conv3_3/1" + top: "conv3_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/2/neg" + type: "Power" + bottom: "conv3_3/2/conv" + top: "conv3_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_3/2/concat" + type: "Concat" + bottom: "conv3_3/2/conv" + bottom: "conv3_3/2/neg" + top: "conv3_3/2" +} +layer { + name: "conv3_3/2/scale" + type: "Scale" + bottom: "conv3_3/2" + top: "conv3_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/2/relu" + type: "ReLU" + bottom: "conv3_3/2" + top: "conv3_3/2" +} +layer { + name: "conv3_3/3/conv" + type: "Convolution" + bottom: "conv3_3/2" + top: "conv3_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3" + type: "Eltwise" + bottom: "conv3_3/3" + bottom: "conv3_2" + top: "conv3_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_4/1/conv" + type: "Convolution" + bottom: "conv3_3" + top: "conv3_4/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/1/relu" + type: "ReLU" + bottom: "conv3_4/1" + top: "conv3_4/1" +} +layer { + name: "conv3_4/2/conv" + type: "Convolution" + bottom: "conv3_4/1" + top: "conv3_4/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/2/neg" + type: "Power" + bottom: "conv3_4/2/conv" + top: "conv3_4/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_4/2/concat" + type: "Concat" + bottom: "conv3_4/2/conv" + bottom: "conv3_4/2/neg" + top: "conv3_4/2" +} +layer { + name: "conv3_4/2/scale" + type: "Scale" + bottom: "conv3_4/2" + top: "conv3_4/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/2/relu" + type: "ReLU" + bottom: "conv3_4/2" + top: "conv3_4/2" +} +layer { + name: "conv3_4/3/conv" + type: "Convolution" + bottom: "conv3_4/2" + top: "conv3_4/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4" + type: "Eltwise" + bottom: "conv3_4/3" + bottom: "conv3_3" + top: "conv3_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_1/incep/0/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/0/relu" + type: "ReLU" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/pool" + type: "Pooling" + bottom: "conv3_4" + top: "conv4_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv4_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv4_1/incep/pool" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep" + type: "Concat" + bottom: "conv4_1/incep/0" + bottom: "conv4_1/incep/1_0" + bottom: "conv4_1/incep/2_1" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep" +} +layer { + name: "conv4_1/out/conv" + type: "Convolution" + bottom: "conv4_1/incep" + top: "conv4_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/proj" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1" + type: "Eltwise" + bottom: "conv4_1/out" + bottom: "conv4_1/proj" + top: "conv4_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_2/incep/0/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/0/relu" + type: "ReLU" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep" + type: "Concat" + bottom: "conv4_2/incep/0" + bottom: "conv4_2/incep/1_0" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep" +} +layer { + name: "conv4_2/out/conv" + type: "Convolution" + bottom: "conv4_2/incep" + top: "conv4_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2" + type: "Eltwise" + bottom: "conv4_2/out" + bottom: "conv4_1" + top: "conv4_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_3/incep/0/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/0/relu" + type: "ReLU" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep" + type: "Concat" + bottom: "conv4_3/incep/0" + bottom: "conv4_3/incep/1_0" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep" +} +layer { + name: "conv4_3/out/conv" + type: "Convolution" + bottom: "conv4_3/incep" + top: "conv4_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3" + type: "Eltwise" + bottom: "conv4_3/out" + bottom: "conv4_2" + top: "conv4_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_4/incep/0/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/0/relu" + type: "ReLU" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep" + type: "Concat" + bottom: "conv4_4/incep/0" + bottom: "conv4_4/incep/1_0" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep" +} +layer { + name: "conv4_4/out/conv" + type: "Convolution" + bottom: "conv4_4/incep" + top: "conv4_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4" + type: "Eltwise" + bottom: "conv4_4/out" + bottom: "conv4_3" + top: "conv4_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_1/incep/0/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/0/relu" + type: "ReLU" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/pool" + type: "Pooling" + bottom: "conv4_4" + top: "conv5_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv5_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv5_1/incep/pool" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep" + type: "Concat" + bottom: "conv5_1/incep/0" + bottom: "conv5_1/incep/1_0" + bottom: "conv5_1/incep/2_1" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep" +} +layer { + name: "conv5_1/out/conv" + type: "Convolution" + bottom: "conv5_1/incep" + top: "conv5_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/proj" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1" + type: "Eltwise" + bottom: "conv5_1/out" + bottom: "conv5_1/proj" + top: "conv5_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_2/incep/0/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/0/relu" + type: "ReLU" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep" + type: "Concat" + bottom: "conv5_2/incep/0" + bottom: "conv5_2/incep/1_0" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep" +} +layer { + name: "conv5_2/out/conv" + type: "Convolution" + bottom: "conv5_2/incep" + top: "conv5_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2" + type: "Eltwise" + bottom: "conv5_2/out" + bottom: "conv5_1" + top: "conv5_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_3/incep/0/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/0/relu" + type: "ReLU" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep" + type: "Concat" + bottom: "conv5_3/incep/0" + bottom: "conv5_3/incep/1_0" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep" +} +layer { + name: "conv5_3/out/conv" + type: "Convolution" + bottom: "conv5_3/incep" + top: "conv5_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3" + type: "Eltwise" + bottom: "conv5_3/out" + bottom: "conv5_2" + top: "conv5_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/incep/0/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/0/relu" + type: "ReLU" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep" + type: "Concat" + bottom: "conv5_4/incep/0" + bottom: "conv5_4/incep/1_0" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep" +} +layer { + name: "conv5_4/out/conv" + type: "Convolution" + bottom: "conv5_4/incep" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4" + type: "Eltwise" + bottom: "conv5_4/out" + bottom: "conv5_3" + top: "conv5_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} + +### hyper feature ### +layer { + name: "downsample" + type: "Pooling" + bottom: "conv3_4" + top: "downsample" + pooling_param { + kernel_size: 3 + stride: 2 + pad: 0 + pool: MAX + } +} +layer { + name: "upsample" + type: "Deconvolution" + bottom: "conv5_4" + top: "upsample" + param { + lr_mult: 0 + decay_mult: 0 + } + convolution_param { + num_output: 384 + kernel_size: 4 + pad: 1 + stride: 2 + group: 384 + bias_term: false + weight_filler: { + type: "bilinear" + } + } +} +layer { + name: "concat" + bottom: "downsample" + bottom: "conv4_4" + bottom: "upsample" + top: "concat" + type: "Concat" + concat_param { + axis: 1 + } +} +layer { + name: "convf_rpn" + type: "Convolution" + bottom: "concat" + top: "convf_rpn" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "reluf_rpn" + type: "ReLU" + bottom: "convf_rpn" + top: "convf_rpn" +} +layer { + name: "convf_2" + type: "Convolution" + bottom: "concat" + top: "convf_2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + convolution_param { + num_output: 384 + kernel_size: 1 + pad: 0 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "reluf_2" + type: "ReLU" + bottom: "convf_2" + top: "convf_2" +} +layer { + name: "concat_convf" + bottom: "convf_rpn" + bottom: "convf_2" + top: "convf" + type: "Concat" + concat_param { + axis: 1 + } +} + +################################################################################ +## RPN +################################################################################ + +### RPN conv ### +layer { + name: "rpn_conv1" + type: "Convolution" + bottom: "convf_rpn" + top: "rpn_conv1" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu1" + type: "ReLU" + bottom: "rpn_conv1" + top: "rpn_conv1" +} +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 50 # 2(bg/fg) * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 100 # 4 * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +################################################################################ +## Proposal +################################################################################ +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 50 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Proposal' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + top: 'scores' + proposal_param { + ratio: 0.5 ratio: 0.667 ratio: 1.0 ratio: 1.5 ratio: 2.0 + scale: 3 scale: 6 scale: 9 scale: 16 scale: 32 + base_size: 16 + feat_stride: 16 + pre_nms_topn: 12000 + post_nms_topn: 200 + nms_thresh: 0.7 + min_size: 16 + } +} + +################################################################################ +## RCNN +################################################################################ +layer { + name: "roi_pool_conv5" + type: "ROIPooling" + bottom: "convf" + bottom: "rois" + top: "roi_pool_conv5" + roi_pooling_param { + pooled_w: 6 + pooled_h: 6 + spatial_scale: 0.0625 # 1/16 + } +} +layer { + name: "fc6_L" + type: "InnerProduct" + bottom: "roi_pool_conv5" + top: "fc6_L" + inner_product_param { + num_output: 512 + bias_term: false + } +} +layer { + name: "fc6_U" + type: "InnerProduct" + bottom: "fc6_L" + top: "fc6_U" + inner_product_param { + num_output: 4096 + } +} +layer { + name: "fc6/relu" + type: "ReLU" + bottom: "fc6_U" + top: "fc6_U" +} +layer { + name: "fc7_L" + type: "InnerProduct" + bottom: "fc6_U" + top: "fc7_L" + inner_product_param { + num_output: 512 + bias_term: false + } +} +layer { + name: "fc7_U" + type: "InnerProduct" + bottom: "fc7_L" + top: "fc7_U" + inner_product_param { + num_output: 4096 + } +} +layer { + name: "fc7/relu" + type: "ReLU" + bottom: "fc7_U" + top: "fc7_U" +} +layer { + name: "cls_score" + type: "InnerProduct" + bottom: "fc7_U" + top: "cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 21 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "bbox_pred" + type: "InnerProduct" + bottom: "fc7_U" + top: "bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 84 + weight_filler { type: "gaussian" std: 0.001 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob" +} diff --git a/models/pvanet/download_models.sh b/models/pvanet/download_models.sh new file mode 100755 index 000000000..01d9e1ee7 --- /dev/null +++ b/models/pvanet/download_models.sh @@ -0,0 +1,3 @@ +#/bin/bash +wget https://www.dropbox.com/s/87zu4y6cvgeu8vs/test.model?dl=0 && mv "test.model?dl=0" models/pvanet/full/test.model +wget https://www.dropbox.com/s/aphfzyc9plg5mvx/test.model?dl=0 && mv "test.model?dl=0" models/pvanet/comp/test.model diff --git a/models/pvanet/full/original.pt b/models/pvanet/full/original.pt new file mode 100644 index 000000000..75a15e0bd --- /dev/null +++ b/models/pvanet/full/original.pt @@ -0,0 +1,6533 @@ +name: "PVANET" + +################################################################################ +## Input +################################################################################ + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 640 + dim: 1056 +} + +input: "im_info" +input_shape { + dim: 1 + dim: 6 +} + +################################################################################ +## Convolution +################################################################################ + +layer { + name: "conv1_1/conv" + type: "Convolution" + bottom: "data" + top: "conv1_1/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 16 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 3 + pad_w: 3 + kernel_h: 7 + kernel_w: 7 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv1_1/bn" + type: "BatchNorm" + bottom: "conv1_1/conv" + top: "conv1_1/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv1_1/neg" + type: "Power" + bottom: "conv1_1/conv" + top: "conv1_1/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv1_1/concat" + type: "Concat" + bottom: "conv1_1/conv" + bottom: "conv1_1/neg" + top: "conv1_1" +} +layer { + name: "conv1_1/scale" + type: "Scale" + bottom: "conv1_1" + top: "conv1_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv1_1/relu" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv2_1/1/conv" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/1/bn" + type: "BatchNorm" + bottom: "conv2_1/1" + top: "conv2_1/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/1/bn_scale" + type: "Scale" + bottom: "conv2_1/1" + top: "conv2_1/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/1/relu" + type: "ReLU" + bottom: "conv2_1/1" + top: "conv2_1/1" +} +layer { + name: "conv2_1/2/conv" + type: "Convolution" + bottom: "conv2_1/1" + top: "conv2_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/2/bn" + type: "BatchNorm" + bottom: "conv2_1/2/conv" + top: "conv2_1/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/2/neg" + type: "Power" + bottom: "conv2_1/2/conv" + top: "conv2_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_1/2/concat" + type: "Concat" + bottom: "conv2_1/2/conv" + bottom: "conv2_1/2/neg" + top: "conv2_1/2" +} +layer { + name: "conv2_1/2/scale" + type: "Scale" + bottom: "conv2_1/2" + top: "conv2_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/2/relu" + type: "ReLU" + bottom: "conv2_1/2" + top: "conv2_1/2" +} +layer { + name: "conv2_1/3/conv" + type: "Convolution" + bottom: "conv2_1/2" + top: "conv2_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/3/bn" + type: "BatchNorm" + bottom: "conv2_1/3" + top: "conv2_1/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/3/bn_scale" + type: "Scale" + bottom: "conv2_1/3" + top: "conv2_1/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/proj" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/proj_bn" + type: "BatchNorm" + bottom: "conv2_1/proj" + top: "conv2_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/proj_bn_scale" + type: "Scale" + bottom: "conv2_1/proj" + top: "conv2_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1" + type: "Eltwise" + bottom: "conv2_1/3" + bottom: "conv2_1/proj" + top: "conv2_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_2/1/conv" + type: "Convolution" + bottom: "conv2_1" + top: "conv2_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/1/bn" + type: "BatchNorm" + bottom: "conv2_2/1" + top: "conv2_2/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/1/bn_scale" + type: "Scale" + bottom: "conv2_2/1" + top: "conv2_2/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/1/relu" + type: "ReLU" + bottom: "conv2_2/1" + top: "conv2_2/1" +} +layer { + name: "conv2_2/2/conv" + type: "Convolution" + bottom: "conv2_2/1" + top: "conv2_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/2/bn" + type: "BatchNorm" + bottom: "conv2_2/2/conv" + top: "conv2_2/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/2/neg" + type: "Power" + bottom: "conv2_2/2/conv" + top: "conv2_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_2/2/concat" + type: "Concat" + bottom: "conv2_2/2/conv" + bottom: "conv2_2/2/neg" + top: "conv2_2/2" +} +layer { + name: "conv2_2/2/scale" + type: "Scale" + bottom: "conv2_2/2" + top: "conv2_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/2/relu" + type: "ReLU" + bottom: "conv2_2/2" + top: "conv2_2/2" +} +layer { + name: "conv2_2/3/conv" + type: "Convolution" + bottom: "conv2_2/2" + top: "conv2_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/3/bn" + type: "BatchNorm" + bottom: "conv2_2/3" + top: "conv2_2/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/3/bn_scale" + type: "Scale" + bottom: "conv2_2/3" + top: "conv2_2/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/input" + type: "Power" + bottom: "conv2_1" + top: "conv2_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_2" + type: "Eltwise" + bottom: "conv2_2/3" + bottom: "conv2_2/input" + top: "conv2_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_3/1/conv" + type: "Convolution" + bottom: "conv2_2" + top: "conv2_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/1/bn" + type: "BatchNorm" + bottom: "conv2_3/1" + top: "conv2_3/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/1/bn_scale" + type: "Scale" + bottom: "conv2_3/1" + top: "conv2_3/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/1/relu" + type: "ReLU" + bottom: "conv2_3/1" + top: "conv2_3/1" +} +layer { + name: "conv2_3/2/conv" + type: "Convolution" + bottom: "conv2_3/1" + top: "conv2_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/2/bn" + type: "BatchNorm" + bottom: "conv2_3/2/conv" + top: "conv2_3/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/2/neg" + type: "Power" + bottom: "conv2_3/2/conv" + top: "conv2_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_3/2/concat" + type: "Concat" + bottom: "conv2_3/2/conv" + bottom: "conv2_3/2/neg" + top: "conv2_3/2" +} +layer { + name: "conv2_3/2/scale" + type: "Scale" + bottom: "conv2_3/2" + top: "conv2_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/2/relu" + type: "ReLU" + bottom: "conv2_3/2" + top: "conv2_3/2" +} +layer { + name: "conv2_3/3/conv" + type: "Convolution" + bottom: "conv2_3/2" + top: "conv2_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/3/bn" + type: "BatchNorm" + bottom: "conv2_3/3" + top: "conv2_3/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/3/bn_scale" + type: "Scale" + bottom: "conv2_3/3" + top: "conv2_3/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/input" + type: "Power" + bottom: "conv2_2" + top: "conv2_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_3" + type: "Eltwise" + bottom: "conv2_3/3" + bottom: "conv2_3/input" + top: "conv2_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_1/1/conv" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/1/bn" + type: "BatchNorm" + bottom: "conv3_1/1" + top: "conv3_1/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/1/bn_scale" + type: "Scale" + bottom: "conv3_1/1" + top: "conv3_1/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/1/relu" + type: "ReLU" + bottom: "conv3_1/1" + top: "conv3_1/1" +} +layer { + name: "conv3_1/2/conv" + type: "Convolution" + bottom: "conv3_1/1" + top: "conv3_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/2/bn" + type: "BatchNorm" + bottom: "conv3_1/2/conv" + top: "conv3_1/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/2/neg" + type: "Power" + bottom: "conv3_1/2/conv" + top: "conv3_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_1/2/concat" + type: "Concat" + bottom: "conv3_1/2/conv" + bottom: "conv3_1/2/neg" + top: "conv3_1/2" +} +layer { + name: "conv3_1/2/scale" + type: "Scale" + bottom: "conv3_1/2" + top: "conv3_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/2/relu" + type: "ReLU" + bottom: "conv3_1/2" + top: "conv3_1/2" +} +layer { + name: "conv3_1/3/conv" + type: "Convolution" + bottom: "conv3_1/2" + top: "conv3_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/3/bn" + type: "BatchNorm" + bottom: "conv3_1/3" + top: "conv3_1/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/3/bn_scale" + type: "Scale" + bottom: "conv3_1/3" + top: "conv3_1/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/proj" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/proj_bn" + type: "BatchNorm" + bottom: "conv3_1/proj" + top: "conv3_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/proj_bn_scale" + type: "Scale" + bottom: "conv3_1/proj" + top: "conv3_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1" + type: "Eltwise" + bottom: "conv3_1/3" + bottom: "conv3_1/proj" + top: "conv3_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_2/1/conv" + type: "Convolution" + bottom: "conv3_1" + top: "conv3_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/1/bn" + type: "BatchNorm" + bottom: "conv3_2/1" + top: "conv3_2/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/1/bn_scale" + type: "Scale" + bottom: "conv3_2/1" + top: "conv3_2/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/1/relu" + type: "ReLU" + bottom: "conv3_2/1" + top: "conv3_2/1" +} +layer { + name: "conv3_2/2/conv" + type: "Convolution" + bottom: "conv3_2/1" + top: "conv3_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/2/bn" + type: "BatchNorm" + bottom: "conv3_2/2/conv" + top: "conv3_2/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/2/neg" + type: "Power" + bottom: "conv3_2/2/conv" + top: "conv3_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_2/2/concat" + type: "Concat" + bottom: "conv3_2/2/conv" + bottom: "conv3_2/2/neg" + top: "conv3_2/2" +} +layer { + name: "conv3_2/2/scale" + type: "Scale" + bottom: "conv3_2/2" + top: "conv3_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/2/relu" + type: "ReLU" + bottom: "conv3_2/2" + top: "conv3_2/2" +} +layer { + name: "conv3_2/3/conv" + type: "Convolution" + bottom: "conv3_2/2" + top: "conv3_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/3/bn" + type: "BatchNorm" + bottom: "conv3_2/3" + top: "conv3_2/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/3/bn_scale" + type: "Scale" + bottom: "conv3_2/3" + top: "conv3_2/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/input" + type: "Power" + bottom: "conv3_1" + top: "conv3_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_2" + type: "Eltwise" + bottom: "conv3_2/3" + bottom: "conv3_2/input" + top: "conv3_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_3/1/conv" + type: "Convolution" + bottom: "conv3_2" + top: "conv3_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/1/bn" + type: "BatchNorm" + bottom: "conv3_3/1" + top: "conv3_3/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/1/bn_scale" + type: "Scale" + bottom: "conv3_3/1" + top: "conv3_3/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/1/relu" + type: "ReLU" + bottom: "conv3_3/1" + top: "conv3_3/1" +} +layer { + name: "conv3_3/2/conv" + type: "Convolution" + bottom: "conv3_3/1" + top: "conv3_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/2/bn" + type: "BatchNorm" + bottom: "conv3_3/2/conv" + top: "conv3_3/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/2/neg" + type: "Power" + bottom: "conv3_3/2/conv" + top: "conv3_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_3/2/concat" + type: "Concat" + bottom: "conv3_3/2/conv" + bottom: "conv3_3/2/neg" + top: "conv3_3/2" +} +layer { + name: "conv3_3/2/scale" + type: "Scale" + bottom: "conv3_3/2" + top: "conv3_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/2/relu" + type: "ReLU" + bottom: "conv3_3/2" + top: "conv3_3/2" +} +layer { + name: "conv3_3/3/conv" + type: "Convolution" + bottom: "conv3_3/2" + top: "conv3_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/3/bn" + type: "BatchNorm" + bottom: "conv3_3/3" + top: "conv3_3/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/3/bn_scale" + type: "Scale" + bottom: "conv3_3/3" + top: "conv3_3/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/input" + type: "Power" + bottom: "conv3_2" + top: "conv3_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_3" + type: "Eltwise" + bottom: "conv3_3/3" + bottom: "conv3_3/input" + top: "conv3_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_4/1/conv" + type: "Convolution" + bottom: "conv3_3" + top: "conv3_4/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/1/bn" + type: "BatchNorm" + bottom: "conv3_4/1" + top: "conv3_4/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/1/bn_scale" + type: "Scale" + bottom: "conv3_4/1" + top: "conv3_4/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/1/relu" + type: "ReLU" + bottom: "conv3_4/1" + top: "conv3_4/1" +} +layer { + name: "conv3_4/2/conv" + type: "Convolution" + bottom: "conv3_4/1" + top: "conv3_4/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/2/bn" + type: "BatchNorm" + bottom: "conv3_4/2/conv" + top: "conv3_4/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/2/neg" + type: "Power" + bottom: "conv3_4/2/conv" + top: "conv3_4/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_4/2/concat" + type: "Concat" + bottom: "conv3_4/2/conv" + bottom: "conv3_4/2/neg" + top: "conv3_4/2" +} +layer { + name: "conv3_4/2/scale" + type: "Scale" + bottom: "conv3_4/2" + top: "conv3_4/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/2/relu" + type: "ReLU" + bottom: "conv3_4/2" + top: "conv3_4/2" +} +layer { + name: "conv3_4/3/conv" + type: "Convolution" + bottom: "conv3_4/2" + top: "conv3_4/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/3/bn" + type: "BatchNorm" + bottom: "conv3_4/3" + top: "conv3_4/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/3/bn_scale" + type: "Scale" + bottom: "conv3_4/3" + top: "conv3_4/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/input" + type: "Power" + bottom: "conv3_3" + top: "conv3_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_4" + type: "Eltwise" + bottom: "conv3_4/3" + bottom: "conv3_4/input" + top: "conv3_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_1/incep/0/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/0/relu" + type: "ReLU" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/pool" + type: "Pooling" + bottom: "conv3_4" + top: "conv4_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv4_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv4_1/incep/pool" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep" + type: "Concat" + bottom: "conv4_1/incep/0" + bottom: "conv4_1/incep/1_0" + bottom: "conv4_1/incep/2_1" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep" +} +layer { + name: "conv4_1/out/conv" + type: "Convolution" + bottom: "conv4_1/incep" + top: "conv4_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/out/bn" + type: "BatchNorm" + bottom: "conv4_1/out" + top: "conv4_1/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/out/bn_scale" + type: "Scale" + bottom: "conv4_1/out" + top: "conv4_1/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/proj" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/proj_bn" + type: "BatchNorm" + bottom: "conv4_1/proj" + top: "conv4_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/proj_bn_scale" + type: "Scale" + bottom: "conv4_1/proj" + top: "conv4_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1" + type: "Eltwise" + bottom: "conv4_1/out" + bottom: "conv4_1/proj" + top: "conv4_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_2/incep/0/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/0/relu" + type: "ReLU" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep" + type: "Concat" + bottom: "conv4_2/incep/0" + bottom: "conv4_2/incep/1_0" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep" +} +layer { + name: "conv4_2/out/conv" + type: "Convolution" + bottom: "conv4_2/incep" + top: "conv4_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/out/bn" + type: "BatchNorm" + bottom: "conv4_2/out" + top: "conv4_2/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/out/bn_scale" + type: "Scale" + bottom: "conv4_2/out" + top: "conv4_2/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/input" + type: "Power" + bottom: "conv4_1" + top: "conv4_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_2" + type: "Eltwise" + bottom: "conv4_2/out" + bottom: "conv4_2/input" + top: "conv4_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_3/incep/0/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/0/relu" + type: "ReLU" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep" + type: "Concat" + bottom: "conv4_3/incep/0" + bottom: "conv4_3/incep/1_0" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep" +} +layer { + name: "conv4_3/out/conv" + type: "Convolution" + bottom: "conv4_3/incep" + top: "conv4_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/out/bn" + type: "BatchNorm" + bottom: "conv4_3/out" + top: "conv4_3/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/out/bn_scale" + type: "Scale" + bottom: "conv4_3/out" + top: "conv4_3/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/input" + type: "Power" + bottom: "conv4_2" + top: "conv4_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_3" + type: "Eltwise" + bottom: "conv4_3/out" + bottom: "conv4_3/input" + top: "conv4_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_4/incep/0/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/0/relu" + type: "ReLU" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep" + type: "Concat" + bottom: "conv4_4/incep/0" + bottom: "conv4_4/incep/1_0" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep" +} +layer { + name: "conv4_4/out/conv" + type: "Convolution" + bottom: "conv4_4/incep" + top: "conv4_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/out/bn" + type: "BatchNorm" + bottom: "conv4_4/out" + top: "conv4_4/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/out/bn_scale" + type: "Scale" + bottom: "conv4_4/out" + top: "conv4_4/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/input" + type: "Power" + bottom: "conv4_3" + top: "conv4_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_4" + type: "Eltwise" + bottom: "conv4_4/out" + bottom: "conv4_4/input" + top: "conv4_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_1/incep/0/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/0/relu" + type: "ReLU" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/pool" + type: "Pooling" + bottom: "conv4_4" + top: "conv5_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv5_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv5_1/incep/pool" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep" + type: "Concat" + bottom: "conv5_1/incep/0" + bottom: "conv5_1/incep/1_0" + bottom: "conv5_1/incep/2_1" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep" +} +layer { + name: "conv5_1/out/conv" + type: "Convolution" + bottom: "conv5_1/incep" + top: "conv5_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/out/bn" + type: "BatchNorm" + bottom: "conv5_1/out" + top: "conv5_1/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/out/bn_scale" + type: "Scale" + bottom: "conv5_1/out" + top: "conv5_1/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/proj" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/proj_bn" + type: "BatchNorm" + bottom: "conv5_1/proj" + top: "conv5_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/proj_bn_scale" + type: "Scale" + bottom: "conv5_1/proj" + top: "conv5_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1" + type: "Eltwise" + bottom: "conv5_1/out" + bottom: "conv5_1/proj" + top: "conv5_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_2/incep/0/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/0/relu" + type: "ReLU" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep" + type: "Concat" + bottom: "conv5_2/incep/0" + bottom: "conv5_2/incep/1_0" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep" +} +layer { + name: "conv5_2/out/conv" + type: "Convolution" + bottom: "conv5_2/incep" + top: "conv5_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/out/bn" + type: "BatchNorm" + bottom: "conv5_2/out" + top: "conv5_2/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/out/bn_scale" + type: "Scale" + bottom: "conv5_2/out" + top: "conv5_2/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/input" + type: "Power" + bottom: "conv5_1" + top: "conv5_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_2" + type: "Eltwise" + bottom: "conv5_2/out" + bottom: "conv5_2/input" + top: "conv5_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_3/incep/0/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/0/relu" + type: "ReLU" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep" + type: "Concat" + bottom: "conv5_3/incep/0" + bottom: "conv5_3/incep/1_0" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep" +} +layer { + name: "conv5_3/out/conv" + type: "Convolution" + bottom: "conv5_3/incep" + top: "conv5_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/out/bn" + type: "BatchNorm" + bottom: "conv5_3/out" + top: "conv5_3/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/out/bn_scale" + type: "Scale" + bottom: "conv5_3/out" + top: "conv5_3/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/input" + type: "Power" + bottom: "conv5_2" + top: "conv5_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_3" + type: "Eltwise" + bottom: "conv5_3/out" + bottom: "conv5_3/input" + top: "conv5_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/incep/0/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/0/relu" + type: "ReLU" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep" + type: "Concat" + bottom: "conv5_4/incep/0" + bottom: "conv5_4/incep/1_0" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep" +} +layer { + name: "conv5_4/out/conv" + type: "Convolution" + bottom: "conv5_4/incep" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/out/bn" + type: "BatchNorm" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/out/bn_scale" + type: "Scale" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/input" + type: "Power" + bottom: "conv5_3" + top: "conv5_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_4" + type: "Eltwise" + bottom: "conv5_4/out" + bottom: "conv5_4/input" + top: "conv5_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} + +### hyper feature ### +layer { + name: "downsample" + type: "Pooling" + bottom: "conv3_4" + top: "downsample" + pooling_param { + kernel_size: 3 + stride: 2 + pad: 0 + pool: MAX + } +} +layer { + name: "upsample" + type: "Deconvolution" + bottom: "conv5_4" + top: "upsample" + param { + lr_mult: 0 + decay_mult: 0 + } + convolution_param { + num_output: 384 + kernel_size: 4 + pad: 1 + stride: 2 + group: 384 + bias_term: false + weight_filler: { + type: "bilinear" + } + } +} +layer { + name: "concat" + bottom: "downsample" + bottom: "conv4_4" + bottom: "upsample" + top: "concat" + type: "Concat" + concat_param { + axis: 1 + } +} +layer { + name: "convf_rpn" + type: "Convolution" + bottom: "concat" + top: "convf_rpn" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "reluf_rpn" + type: "ReLU" + bottom: "convf_rpn" + top: "convf_rpn" +} +layer { + name: "convf_2" + type: "Convolution" + bottom: "concat" + top: "convf_2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + convolution_param { + num_output: 384 + kernel_size: 1 + pad: 0 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "reluf_2" + type: "ReLU" + bottom: "convf_2" + top: "convf_2" +} +layer { + name: "concat_convf" + bottom: "convf_rpn" + bottom: "convf_2" + top: "convf" + type: "Concat" + concat_param { + axis: 1 + } +} + +################################################################################ +## RPN +################################################################################ + +### RPN conv ### +layer { + name: "rpn_conv1" + type: "Convolution" + bottom: "convf_rpn" + top: "rpn_conv1" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu1" + type: "ReLU" + bottom: "rpn_conv1" + top: "rpn_conv1" +} +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 50 # 2(bg/fg) * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 100 # 4 * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +################################################################################ +## Proposal +################################################################################ +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 50 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Proposal' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + top: 'scores' + proposal_param { + ratio: 0.5 ratio: 0.667 ratio: 1.0 ratio: 1.5 ratio: 2.0 + scale: 3 scale: 6 scale: 9 scale: 16 scale: 32 + base_size: 16 + feat_stride: 16 + pre_nms_topn: 12000 + post_nms_topn: 200 + nms_thresh: 0.7 + min_size: 16 + } +} + +################################################################################ +## RCNN +################################################################################ +layer { + name: "roi_pool_conv5" + type: "ROIPooling" + bottom: "convf" + bottom: "rois" + top: "roi_pool_conv5" + roi_pooling_param { + pooled_w: 6 + pooled_h: 6 + spatial_scale: 0.0625 # 1/16 + } +} +layer { + name: "fc6" + type: "InnerProduct" + bottom: "roi_pool_conv5" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc6/bn" + type: "BatchNorm" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc6/scale" + type: "Scale" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc6/dropout" + type: "Dropout" + bottom: "fc6" + top: "fc6" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc6/relu" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "fc7" + type: "InnerProduct" + bottom: "fc6" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc7/bn" + type: "BatchNorm" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc7/scale" + type: "Scale" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc7/dropout" + type: "Dropout" + bottom: "fc7" + top: "fc7" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc7/relu" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} +layer { + name: "cls_score" + type: "InnerProduct" + bottom: "fc7" + top: "cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 21 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "bbox_pred" + type: "InnerProduct" + bottom: "fc7" + top: "bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 84 + weight_filler { type: "gaussian" std: 0.001 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob" +} diff --git a/models/pvanet/full/test.pt b/models/pvanet/full/test.pt new file mode 100644 index 000000000..a4af50881 --- /dev/null +++ b/models/pvanet/full/test.pt @@ -0,0 +1,3261 @@ +name: "PVANET" + +################################################################################ +## Input +################################################################################ + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 640 + dim: 1056 +} +input: "im_info" +input_shape { + dim: 1 + dim: 6 +} + +################################################################################ +## Convolution +################################################################################ + +layer { + name: "conv1_1/conv" + type: "Convolution" + bottom: "data" + top: "conv1_1/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 16 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 3 + pad_w: 3 + kernel_h: 7 + kernel_w: 7 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv1_1/neg" + type: "Power" + bottom: "conv1_1/conv" + top: "conv1_1/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv1_1/concat" + type: "Concat" + bottom: "conv1_1/conv" + bottom: "conv1_1/neg" + top: "conv1_1" +} +layer { + name: "conv1_1/scale" + type: "Scale" + bottom: "conv1_1" + top: "conv1_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv1_1/relu" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv2_1/1/conv" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/1/relu" + type: "ReLU" + bottom: "conv2_1/1" + top: "conv2_1/1" +} +layer { + name: "conv2_1/2/conv" + type: "Convolution" + bottom: "conv2_1/1" + top: "conv2_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/2/neg" + type: "Power" + bottom: "conv2_1/2/conv" + top: "conv2_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_1/2/concat" + type: "Concat" + bottom: "conv2_1/2/conv" + bottom: "conv2_1/2/neg" + top: "conv2_1/2" +} +layer { + name: "conv2_1/2/scale" + type: "Scale" + bottom: "conv2_1/2" + top: "conv2_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/2/relu" + type: "ReLU" + bottom: "conv2_1/2" + top: "conv2_1/2" +} +layer { + name: "conv2_1/3/conv" + type: "Convolution" + bottom: "conv2_1/2" + top: "conv2_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/proj" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1" + type: "Eltwise" + bottom: "conv2_1/3" + bottom: "conv2_1/proj" + top: "conv2_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_2/1/conv" + type: "Convolution" + bottom: "conv2_1" + top: "conv2_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/1/relu" + type: "ReLU" + bottom: "conv2_2/1" + top: "conv2_2/1" +} +layer { + name: "conv2_2/2/conv" + type: "Convolution" + bottom: "conv2_2/1" + top: "conv2_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/2/neg" + type: "Power" + bottom: "conv2_2/2/conv" + top: "conv2_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_2/2/concat" + type: "Concat" + bottom: "conv2_2/2/conv" + bottom: "conv2_2/2/neg" + top: "conv2_2/2" +} +layer { + name: "conv2_2/2/scale" + type: "Scale" + bottom: "conv2_2/2" + top: "conv2_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/2/relu" + type: "ReLU" + bottom: "conv2_2/2" + top: "conv2_2/2" +} +layer { + name: "conv2_2/3/conv" + type: "Convolution" + bottom: "conv2_2/2" + top: "conv2_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2" + type: "Eltwise" + bottom: "conv2_2/3" + bottom: "conv2_1" + top: "conv2_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_3/1/conv" + type: "Convolution" + bottom: "conv2_2" + top: "conv2_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/1/relu" + type: "ReLU" + bottom: "conv2_3/1" + top: "conv2_3/1" +} +layer { + name: "conv2_3/2/conv" + type: "Convolution" + bottom: "conv2_3/1" + top: "conv2_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/2/neg" + type: "Power" + bottom: "conv2_3/2/conv" + top: "conv2_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_3/2/concat" + type: "Concat" + bottom: "conv2_3/2/conv" + bottom: "conv2_3/2/neg" + top: "conv2_3/2" +} +layer { + name: "conv2_3/2/scale" + type: "Scale" + bottom: "conv2_3/2" + top: "conv2_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/2/relu" + type: "ReLU" + bottom: "conv2_3/2" + top: "conv2_3/2" +} +layer { + name: "conv2_3/3/conv" + type: "Convolution" + bottom: "conv2_3/2" + top: "conv2_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3" + type: "Eltwise" + bottom: "conv2_3/3" + bottom: "conv2_2" + top: "conv2_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_1/1/conv" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/1/relu" + type: "ReLU" + bottom: "conv3_1/1" + top: "conv3_1/1" +} +layer { + name: "conv3_1/2/conv" + type: "Convolution" + bottom: "conv3_1/1" + top: "conv3_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/2/neg" + type: "Power" + bottom: "conv3_1/2/conv" + top: "conv3_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_1/2/concat" + type: "Concat" + bottom: "conv3_1/2/conv" + bottom: "conv3_1/2/neg" + top: "conv3_1/2" +} +layer { + name: "conv3_1/2/scale" + type: "Scale" + bottom: "conv3_1/2" + top: "conv3_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/2/relu" + type: "ReLU" + bottom: "conv3_1/2" + top: "conv3_1/2" +} +layer { + name: "conv3_1/3/conv" + type: "Convolution" + bottom: "conv3_1/2" + top: "conv3_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/proj" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1" + type: "Eltwise" + bottom: "conv3_1/3" + bottom: "conv3_1/proj" + top: "conv3_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_2/1/conv" + type: "Convolution" + bottom: "conv3_1" + top: "conv3_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/1/relu" + type: "ReLU" + bottom: "conv3_2/1" + top: "conv3_2/1" +} +layer { + name: "conv3_2/2/conv" + type: "Convolution" + bottom: "conv3_2/1" + top: "conv3_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/2/neg" + type: "Power" + bottom: "conv3_2/2/conv" + top: "conv3_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_2/2/concat" + type: "Concat" + bottom: "conv3_2/2/conv" + bottom: "conv3_2/2/neg" + top: "conv3_2/2" +} +layer { + name: "conv3_2/2/scale" + type: "Scale" + bottom: "conv3_2/2" + top: "conv3_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/2/relu" + type: "ReLU" + bottom: "conv3_2/2" + top: "conv3_2/2" +} +layer { + name: "conv3_2/3/conv" + type: "Convolution" + bottom: "conv3_2/2" + top: "conv3_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2" + type: "Eltwise" + bottom: "conv3_2/3" + bottom: "conv3_1" + top: "conv3_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_3/1/conv" + type: "Convolution" + bottom: "conv3_2" + top: "conv3_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/1/relu" + type: "ReLU" + bottom: "conv3_3/1" + top: "conv3_3/1" +} +layer { + name: "conv3_3/2/conv" + type: "Convolution" + bottom: "conv3_3/1" + top: "conv3_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/2/neg" + type: "Power" + bottom: "conv3_3/2/conv" + top: "conv3_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_3/2/concat" + type: "Concat" + bottom: "conv3_3/2/conv" + bottom: "conv3_3/2/neg" + top: "conv3_3/2" +} +layer { + name: "conv3_3/2/scale" + type: "Scale" + bottom: "conv3_3/2" + top: "conv3_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/2/relu" + type: "ReLU" + bottom: "conv3_3/2" + top: "conv3_3/2" +} +layer { + name: "conv3_3/3/conv" + type: "Convolution" + bottom: "conv3_3/2" + top: "conv3_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3" + type: "Eltwise" + bottom: "conv3_3/3" + bottom: "conv3_2" + top: "conv3_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_4/1/conv" + type: "Convolution" + bottom: "conv3_3" + top: "conv3_4/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/1/relu" + type: "ReLU" + bottom: "conv3_4/1" + top: "conv3_4/1" +} +layer { + name: "conv3_4/2/conv" + type: "Convolution" + bottom: "conv3_4/1" + top: "conv3_4/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/2/neg" + type: "Power" + bottom: "conv3_4/2/conv" + top: "conv3_4/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_4/2/concat" + type: "Concat" + bottom: "conv3_4/2/conv" + bottom: "conv3_4/2/neg" + top: "conv3_4/2" +} +layer { + name: "conv3_4/2/scale" + type: "Scale" + bottom: "conv3_4/2" + top: "conv3_4/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/2/relu" + type: "ReLU" + bottom: "conv3_4/2" + top: "conv3_4/2" +} +layer { + name: "conv3_4/3/conv" + type: "Convolution" + bottom: "conv3_4/2" + top: "conv3_4/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4" + type: "Eltwise" + bottom: "conv3_4/3" + bottom: "conv3_3" + top: "conv3_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_1/incep/0/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/0/relu" + type: "ReLU" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/pool" + type: "Pooling" + bottom: "conv3_4" + top: "conv4_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv4_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv4_1/incep/pool" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep" + type: "Concat" + bottom: "conv4_1/incep/0" + bottom: "conv4_1/incep/1_0" + bottom: "conv4_1/incep/2_1" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep" +} +layer { + name: "conv4_1/out/conv" + type: "Convolution" + bottom: "conv4_1/incep" + top: "conv4_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/proj" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1" + type: "Eltwise" + bottom: "conv4_1/out" + bottom: "conv4_1/proj" + top: "conv4_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_2/incep/0/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/0/relu" + type: "ReLU" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep" + type: "Concat" + bottom: "conv4_2/incep/0" + bottom: "conv4_2/incep/1_0" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep" +} +layer { + name: "conv4_2/out/conv" + type: "Convolution" + bottom: "conv4_2/incep" + top: "conv4_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2" + type: "Eltwise" + bottom: "conv4_2/out" + bottom: "conv4_1" + top: "conv4_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_3/incep/0/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/0/relu" + type: "ReLU" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep" + type: "Concat" + bottom: "conv4_3/incep/0" + bottom: "conv4_3/incep/1_0" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep" +} +layer { + name: "conv4_3/out/conv" + type: "Convolution" + bottom: "conv4_3/incep" + top: "conv4_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3" + type: "Eltwise" + bottom: "conv4_3/out" + bottom: "conv4_2" + top: "conv4_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_4/incep/0/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/0/relu" + type: "ReLU" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep" + type: "Concat" + bottom: "conv4_4/incep/0" + bottom: "conv4_4/incep/1_0" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep" +} +layer { + name: "conv4_4/out/conv" + type: "Convolution" + bottom: "conv4_4/incep" + top: "conv4_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4" + type: "Eltwise" + bottom: "conv4_4/out" + bottom: "conv4_3" + top: "conv4_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_1/incep/0/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/0/relu" + type: "ReLU" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/pool" + type: "Pooling" + bottom: "conv4_4" + top: "conv5_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv5_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv5_1/incep/pool" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep" + type: "Concat" + bottom: "conv5_1/incep/0" + bottom: "conv5_1/incep/1_0" + bottom: "conv5_1/incep/2_1" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep" +} +layer { + name: "conv5_1/out/conv" + type: "Convolution" + bottom: "conv5_1/incep" + top: "conv5_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/proj" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1" + type: "Eltwise" + bottom: "conv5_1/out" + bottom: "conv5_1/proj" + top: "conv5_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_2/incep/0/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/0/relu" + type: "ReLU" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep" + type: "Concat" + bottom: "conv5_2/incep/0" + bottom: "conv5_2/incep/1_0" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep" +} +layer { + name: "conv5_2/out/conv" + type: "Convolution" + bottom: "conv5_2/incep" + top: "conv5_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2" + type: "Eltwise" + bottom: "conv5_2/out" + bottom: "conv5_1" + top: "conv5_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_3/incep/0/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/0/relu" + type: "ReLU" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep" + type: "Concat" + bottom: "conv5_3/incep/0" + bottom: "conv5_3/incep/1_0" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep" +} +layer { + name: "conv5_3/out/conv" + type: "Convolution" + bottom: "conv5_3/incep" + top: "conv5_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3" + type: "Eltwise" + bottom: "conv5_3/out" + bottom: "conv5_2" + top: "conv5_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/incep/0/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/0/relu" + type: "ReLU" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep" + type: "Concat" + bottom: "conv5_4/incep/0" + bottom: "conv5_4/incep/1_0" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep" +} +layer { + name: "conv5_4/out/conv" + type: "Convolution" + bottom: "conv5_4/incep" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4" + type: "Eltwise" + bottom: "conv5_4/out" + bottom: "conv5_3" + top: "conv5_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} + +### hyper feature ### +layer { + name: "downsample" + type: "Pooling" + bottom: "conv3_4" + top: "downsample" + pooling_param { + kernel_size: 3 + stride: 2 + pad: 0 + pool: MAX + } +} +layer { + name: "upsample" + type: "Deconvolution" + bottom: "conv5_4" + top: "upsample" + param { + lr_mult: 0 + decay_mult: 0 + } + convolution_param { + num_output: 384 + kernel_size: 4 + pad: 1 + stride: 2 + group: 384 + bias_term: false + weight_filler: { + type: "bilinear" + } + } +} +layer { + name: "concat" + bottom: "downsample" + bottom: "conv4_4" + bottom: "upsample" + top: "concat" + type: "Concat" + concat_param { + axis: 1 + } +} +layer { + name: "convf_rpn" + type: "Convolution" + bottom: "concat" + top: "convf_rpn" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "reluf_rpn" + type: "ReLU" + bottom: "convf_rpn" + top: "convf_rpn" +} +layer { + name: "convf_2" + type: "Convolution" + bottom: "concat" + top: "convf_2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + convolution_param { + num_output: 384 + kernel_size: 1 + pad: 0 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "reluf_2" + type: "ReLU" + bottom: "convf_2" + top: "convf_2" +} +layer { + name: "concat_convf" + bottom: "convf_rpn" + bottom: "convf_2" + top: "convf" + type: "Concat" + concat_param { + axis: 1 + } +} + +################################################################################ +## RPN +################################################################################ + +### RPN conv ### +layer { + name: "rpn_conv1" + type: "Convolution" + bottom: "convf_rpn" + top: "rpn_conv1" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu1" + type: "ReLU" + bottom: "rpn_conv1" + top: "rpn_conv1" +} +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 50 # 2(bg/fg) * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 100 # 4 * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +################################################################################ +## Proposal +################################################################################ +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 50 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Proposal' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + top: 'scores' + proposal_param { + ratio: 0.5 ratio: 0.667 ratio: 1.0 ratio: 1.5 ratio: 2.0 + scale: 3 scale: 6 scale: 9 scale: 16 scale: 32 + base_size: 16 + feat_stride: 16 + pre_nms_topn: 12000 + post_nms_topn: 200 + nms_thresh: 0.7 + min_size: 16 + } +} + +################################################################################ +## RCNN +################################################################################ +layer { + name: "roi_pool_conv5" + type: "ROIPooling" + bottom: "convf" + bottom: "rois" + top: "roi_pool_conv5" + roi_pooling_param { + pooled_w: 6 + pooled_h: 6 + spatial_scale: 0.0625 # 1/16 + } +} +layer { + name: "fc6" + type: "InnerProduct" + bottom: "roi_pool_conv5" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc6/relu" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "fc7" + type: "InnerProduct" + bottom: "fc6" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc7/relu" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} +layer { + name: "cls_score" + type: "InnerProduct" + bottom: "fc7" + top: "cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 21 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "bbox_pred" + type: "InnerProduct" + bottom: "fc7" + top: "bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 84 + weight_filler { type: "gaussian" std: 0.001 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob" +} From abf4288e5b24045dc0a36ba9a1120b62f22d3567 Mon Sep 17 00:00:00 2001 From: Kye-Hyeon Kim Date: Fri, 2 Sep 2016 15:51:45 +0900 Subject: [PATCH 08/36] Update README --- README.md | 94 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 84 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c28ceb9af..f5bcf35cc 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ ## PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection -by Kye-Hyeon Kim, Yeongjae Cheon, Sanghoon Hong, Byungseok Roh, Minje Park +by Kye-Hyeon Kim, Yeongjae Cheon, Sanghoon Hong, Byungseok Roh, Minje Park (Intel Imaging and Camera Technology) ### Introduction + This repository is a fork from [py-faster-rcnn](https://github.com/rbgirshick/py-faster-rcnn) and demonstrates the performance of PVANET. You can refer to [py-faster-rcnn README.md](https://github.com/rbgirshick/py-faster-rcnn/blob/master/README.md) and [faster-rcnn README.md](https://github.com/ShaoqingRen/faster_rcnn/blob/master/README.md) for more information. @@ -9,19 +10,92 @@ You can refer to [py-faster-rcnn README.md](https://github.com/rbgirshick/py-fas ### Desclaimer Please note that this repository doesn't contain our in-house runtime code used in the published article. -- Current implementation is slower at test-time than the reported version because py-faster-rcnn uses an older version of CuDNN and some parts are written in Python. -- If testing parameters in py-faster-rcnn codes have been changed, there might be a tiny difference in VOC2012 test results as well. -- The training of the reported model wasn't done with this implementation. +- The original py-faster-rcnn is quite slow and there exist lots of inefficient code blocks. +- We improved some of them, by 1) replacing the Caffe backend with its latest version (Sep 1, 2016), and 2) porting our implementation of the proposal layer. +- However it is still slower than our in-house runtime code due to the image pre-processing code written in Python (+9ms) and some poorly implemented parts in Caffe (+5 ms). +- PVANET was trained by our in-house deep learning library, not by this implementation. +- There might be a tiny difference in VOC2012 test results, because some hidden parameters in py-faster-rcnn may be set differently with ours. + +### Citing PVANET + +If you find PVANET useful in your research, please consider citing: + + @article{KimKH2016arXivPVANET, + author = {Kye-Hyeon Kim and Yeongjae Cheon and Sanghoon Hong and Byungseok Roh and Minje Park}, + title = {{PVANET}: Deep but Lightweight Neural Networks for Real-time Object Detection}, + journal = {arXiv preprint arXiv:1608.08021}, + year = {2016} + } + +### Installation + +1. Clone the Faster R-CNN repository + ```Shell + # Make sure to clone with --recursive + git clone --recursive https://github.com/sanghoon/pva-faster-rcnn.git + ``` + +2. We'll call the directory that you cloned Faster R-CNN into `FRCN_ROOT`. Build the Cython modules + ```Shell + cd $FRCN_ROOT/lib + make + ``` + +3. Build Caffe and pycaffe + ```Shell + cd $FRCN_ROOT/caffe-fast-rcnn + # Now follow the Caffe installation instructions here: + # http://caffe.berkeleyvision.org/installation.html + # For your Makefile.config: + # Do NOT uncomment `USE_CUDNN := 1` (for running PVANET, cuDNN is slower than Caffe native implementation) + # Uncomment `WITH_PYTHON_LAYER := 1` + + make -j8 && make pycaffe + ``` + +4. Download PVANET caffemodels + ```Shell + cd $FRCN_ROOT + ./models/pvanet/download_models.sh + ``` + +### Models + +1. PVANET +- `./models/pvanet/full/test.pt`: For testing-time efficiency, batch normalization (w/ its moving averaged mini-batch statistics) and scale (w/ its trained parameters) layers are merged into the corresponding convolutional layer. +- `./models/pvanet/full/original.pt`: Original network structure. + +2. PVANET (compressed) +- `./models/pvanet/comp/test.pt`: Compressed network w/ merging batch normalization and scale. +- `./models/pvanet/comp/original.pt`: Original compressed network structure. + +3. PVANET-lite +- TBA -### Installation (for the demo) -TBA ### How to run the demo -TBA + +1. Download PASCAL VOC 2007 and 2012 + +Follow the instructions in [py-faster-rcnn README.md](https://github.com/rbgirshick/py-faster-rcnn#beyond-the-demo-installation-for-training-and-testing-models) + +2. PVANET+ on PASCAL VOC 2007 + +```Shell + cd $FRCN_ROOT + ./tools/test_net.py --gpu 0 --def models/pvanet/full/test.pt --net models/pvanet/full/test.model --cfg models/pvanet/cfgs/submit_160715.yml + ``` + +3. PVANET+ (compressed) + +```Shell + cd $FRCN_ROOT + ./tools/test_net.py --gpu 0 --def models/pvanet/comp/test.pt --net models/pvanet/comp/test.model --cfg models/pvanet/cfgs/submit_160715.yml + ``` ### Expected results -TBA -### Models -TBA +- PVANET+: 83.85% mAP +- PVANET+ (compressed): 82.90% mAP + From 300e9e09dd19abc29e7858d64e6b53bc9ee06a48 Mon Sep 17 00:00:00 2001 From: Kye-Hyeon Kim Date: Fri, 2 Sep 2016 15:56:44 +0900 Subject: [PATCH 09/36] Update README --- README.md | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index f5bcf35cc..1f0ed5557 100644 --- a/README.md +++ b/README.md @@ -62,32 +62,29 @@ If you find PVANET useful in your research, please consider citing: ### Models 1. PVANET -- `./models/pvanet/full/test.pt`: For testing-time efficiency, batch normalization (w/ its moving averaged mini-batch statistics) and scale (w/ its trained parameters) layers are merged into the corresponding convolutional layer. -- `./models/pvanet/full/original.pt`: Original network structure. +`./models/pvanet/full/test.pt`: For testing-time efficiency, batch normalization (w/ its moving averaged mini-batch statistics) and scale (w/ its trained parameters) layers are merged into the corresponding convolutional layer. +`./models/pvanet/full/original.pt`: Original network structure. 2. PVANET (compressed) -- `./models/pvanet/comp/test.pt`: Compressed network w/ merging batch normalization and scale. -- `./models/pvanet/comp/original.pt`: Original compressed network structure. +`./models/pvanet/comp/test.pt`: Compressed network w/ merging batch normalization and scale. +`./models/pvanet/comp/original.pt`: Original compressed network structure. 3. PVANET-lite -- TBA +TBA ### How to run the demo 1. Download PASCAL VOC 2007 and 2012 - Follow the instructions in [py-faster-rcnn README.md](https://github.com/rbgirshick/py-faster-rcnn#beyond-the-demo-installation-for-training-and-testing-models) 2. PVANET+ on PASCAL VOC 2007 - ```Shell cd $FRCN_ROOT ./tools/test_net.py --gpu 0 --def models/pvanet/full/test.pt --net models/pvanet/full/test.model --cfg models/pvanet/cfgs/submit_160715.yml ``` 3. PVANET+ (compressed) - ```Shell cd $FRCN_ROOT ./tools/test_net.py --gpu 0 --def models/pvanet/comp/test.pt --net models/pvanet/comp/test.model --cfg models/pvanet/cfgs/submit_160715.yml From 6e6f36cd5136d3fa2f5b5bd72585ed25e9eb9d06 Mon Sep 17 00:00:00 2001 From: Kye-Hyeon Kim Date: Fri, 2 Sep 2016 15:59:15 +0900 Subject: [PATCH 10/36] Update README --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 1f0ed5557..b25fa6c4e 100644 --- a/README.md +++ b/README.md @@ -62,30 +62,30 @@ If you find PVANET useful in your research, please consider citing: ### Models 1. PVANET -`./models/pvanet/full/test.pt`: For testing-time efficiency, batch normalization (w/ its moving averaged mini-batch statistics) and scale (w/ its trained parameters) layers are merged into the corresponding convolutional layer. -`./models/pvanet/full/original.pt`: Original network structure. + `./models/pvanet/full/test.pt`: For testing-time efficiency, batch normalization (w/ its moving averaged mini-batch statistics) and scale (w/ its trained parameters) layers are merged into the corresponding convolutional layer. + `./models/pvanet/full/original.pt`: Original network structure. 2. PVANET (compressed) -`./models/pvanet/comp/test.pt`: Compressed network w/ merging batch normalization and scale. -`./models/pvanet/comp/original.pt`: Original compressed network structure. + `./models/pvanet/comp/test.pt`: Compressed network w/ merging batch normalization and scale. + `./models/pvanet/comp/original.pt`: Original compressed network structure. 3. PVANET-lite -TBA + TBA ### How to run the demo 1. Download PASCAL VOC 2007 and 2012 -Follow the instructions in [py-faster-rcnn README.md](https://github.com/rbgirshick/py-faster-rcnn#beyond-the-demo-installation-for-training-and-testing-models) + Follow the instructions in [py-faster-rcnn README.md](https://github.com/rbgirshick/py-faster-rcnn#beyond-the-demo-installation-for-training-and-testing-models) 2. PVANET+ on PASCAL VOC 2007 -```Shell + ```Shell cd $FRCN_ROOT ./tools/test_net.py --gpu 0 --def models/pvanet/full/test.pt --net models/pvanet/full/test.model --cfg models/pvanet/cfgs/submit_160715.yml ``` 3. PVANET+ (compressed) -```Shell + ```Shell cd $FRCN_ROOT ./tools/test_net.py --gpu 0 --def models/pvanet/comp/test.pt --net models/pvanet/comp/test.model --cfg models/pvanet/cfgs/submit_160715.yml ``` From 568a08cbb879b7d66588f760625864c8507bc52e Mon Sep 17 00:00:00 2001 From: Kye-Hyeon Kim Date: Fri, 2 Sep 2016 16:03:07 +0900 Subject: [PATCH 11/36] Update README --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index b25fa6c4e..5c194d9a0 100644 --- a/README.md +++ b/README.md @@ -62,21 +62,21 @@ If you find PVANET useful in your research, please consider citing: ### Models 1. PVANET - `./models/pvanet/full/test.pt`: For testing-time efficiency, batch normalization (w/ its moving averaged mini-batch statistics) and scale (w/ its trained parameters) layers are merged into the corresponding convolutional layer. - `./models/pvanet/full/original.pt`: Original network structure. + - `./models/pvanet/full/test.pt`: For testing-time efficiency, batch normalization (w/ its moving averaged mini-batch statistics) and scale (w/ its trained parameters) layers are merged into the corresponding convolutional layer. + - `./models/pvanet/full/original.pt`: Original network structure. -2. PVANET (compressed) - `./models/pvanet/comp/test.pt`: Compressed network w/ merging batch normalization and scale. - `./models/pvanet/comp/original.pt`: Original compressed network structure. +2. PVANET (compressed): + - `./models/pvanet/comp/test.pt`: Compressed network w/ merging batch normalization and scale. + - `./models/pvanet/comp/original.pt`: Original compressed network structure. 3. PVANET-lite - TBA + - TBA ### How to run the demo 1. Download PASCAL VOC 2007 and 2012 - Follow the instructions in [py-faster-rcnn README.md](https://github.com/rbgirshick/py-faster-rcnn#beyond-the-demo-installation-for-training-and-testing-models) + - Follow the instructions in [py-faster-rcnn README.md](https://github.com/rbgirshick/py-faster-rcnn#beyond-the-demo-installation-for-training-and-testing-models) 2. PVANET+ on PASCAL VOC 2007 ```Shell From 4321a602a8098efbcf7a6a8fe3e4db072ec6f06b Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Fri, 2 Sep 2016 16:50:07 +0900 Subject: [PATCH 12/36] Update submodule 'caffe' - Now it's an up-to-date Caffe with additional layers for Faster R-CNN --- .gitmodules | 2 +- caffe-fast-rcnn | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 52460e0ee..70ac05595 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ -[submodule "caffe-fast-rcnn"] +[submodule "caffe-for-pva"] path = caffe-fast-rcnn url = https://github.com/sanghoon/caffe.git branch = dev_pvanet diff --git a/caffe-fast-rcnn b/caffe-fast-rcnn index 0dcd397b2..ff77007c0 160000 --- a/caffe-fast-rcnn +++ b/caffe-fast-rcnn @@ -1 +1 @@ -Subproject commit 0dcd397b29507b8314e252e850518c5695efbb83 +Subproject commit ff77007c0285a8d10150977d7ff4a360e470114a From 49561326e9a0483d5170ddf91a7f5650ef21b1b3 Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Fri, 2 Sep 2016 08:26:13 +0900 Subject: [PATCH 13/36] Update README.md and downloading script --- README.md | 1 + models/pvanet/download_models.sh | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5c194d9a0..2ca18007b 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,7 @@ If you find PVANET useful in your research, please consider citing: # Do NOT uncomment `USE_CUDNN := 1` (for running PVANET, cuDNN is slower than Caffe native implementation) # Uncomment `WITH_PYTHON_LAYER := 1` + cp Makefile.config.example Makefile.config make -j8 && make pycaffe ``` diff --git a/models/pvanet/download_models.sh b/models/pvanet/download_models.sh index 01d9e1ee7..ca4572f9f 100755 --- a/models/pvanet/download_models.sh +++ b/models/pvanet/download_models.sh @@ -1,3 +1,3 @@ #/bin/bash -wget https://www.dropbox.com/s/87zu4y6cvgeu8vs/test.model?dl=0 && mv "test.model?dl=0" models/pvanet/full/test.model -wget https://www.dropbox.com/s/aphfzyc9plg5mvx/test.model?dl=0 && mv "test.model?dl=0" models/pvanet/comp/test.model +wget https://www.dropbox.com/s/87zu4y6cvgeu8vs/test.model?dl=0 -O models/pvanet/full/test.model +wget https://www.dropbox.com/s/aphfzyc9plg5mvx/test.model?dl=0 -O models/pvanet/comp/test.model From e9d8ae7f030d859cfc62eaccc63dc0204566e113 Mon Sep 17 00:00:00 2001 From: Kye-Hyeon Kim Date: Tue, 13 Sep 2016 15:22:35 +0900 Subject: [PATCH 14/36] Update a script for downloading original caffemodels --- README.md | 6 ++++++ models/pvanet/download_original_models.sh | 3 +++ 2 files changed, 9 insertions(+) create mode 100755 models/pvanet/download_original_models.sh diff --git a/README.md b/README.md index 2ca18007b..b1cd00bf2 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,12 @@ If you find PVANET useful in your research, please consider citing: ./models/pvanet/download_models.sh ``` +5. (Optional) Download original caffemodels (without merging batch normalization and scale layers) + ```Shell + cd $FRCN_ROOT + ./models/pvanet/download_original_models.sh + ``` + ### Models 1. PVANET diff --git a/models/pvanet/download_original_models.sh b/models/pvanet/download_original_models.sh new file mode 100755 index 000000000..e9d3fa8b2 --- /dev/null +++ b/models/pvanet/download_original_models.sh @@ -0,0 +1,3 @@ +#/bin/bash +wget https://www.dropbox.com/s/v7ccvm61q5htxha/original.model?dl=0 -O models/pvanet/full/original.model +wget https://www.dropbox.com/s/eqokl27ohk6au51/original.model?dl=0 -O models/pvanet/comp/original.model From c1803f76397c5bcf10d3c4a81e44dab78ed407cb Mon Sep 17 00:00:00 2001 From: Kye-Hyeon Kim Date: Mon, 19 Sep 2016 18:44:36 +0900 Subject: [PATCH 15/36] Add PVANET ImageNet pretrained models, PVANET-lite models, and their download scripts; Update README --- README.md | 44 +- models/pvanet/download_imagenet_models.sh | 3 + models/pvanet/download_lite_models.sh | 3 + models/pvanet/imagenet/original.pt | 4963 +++++++++++++++++++++ models/pvanet/imagenet/test.pt | 3103 +++++++++++++ models/pvanet/lite/original.pt | 2949 ++++++++++++ models/pvanet/lite/test.pt | 1651 +++++++ 7 files changed, 12709 insertions(+), 7 deletions(-) create mode 100755 models/pvanet/download_imagenet_models.sh create mode 100755 models/pvanet/download_lite_models.sh create mode 100644 models/pvanet/imagenet/original.pt create mode 100644 models/pvanet/imagenet/test.pt create mode 100644 models/pvanet/lite/original.pt create mode 100644 models/pvanet/lite/test.pt diff --git a/README.md b/README.md index b1cd00bf2..3aa08835f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ## PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection -by Kye-Hyeon Kim, Yeongjae Cheon, Sanghoon Hong, Byungseok Roh, Minje Park (Intel Imaging and Camera Technology) +by Yeongjae Cheon, Sanghoon Hong, Kye-Hyeon Kim, Minje Park, Byungseok Roh (Intel Imaging and Camera Technology) ### Introduction @@ -15,13 +15,14 @@ Please note that this repository doesn't contain our in-house runtime code used - However it is still slower than our in-house runtime code due to the image pre-processing code written in Python (+9ms) and some poorly implemented parts in Caffe (+5 ms). - PVANET was trained by our in-house deep learning library, not by this implementation. - There might be a tiny difference in VOC2012 test results, because some hidden parameters in py-faster-rcnn may be set differently with ours. +- PVANET-lite (76.3% mAP on VOC2012, 10th place) is originally designed to verify the effectiveness of multi-scale features for object detection, so it only uses Inception and hyper features only. Further improvement may be achievable by adding C.ReLU, residual connections, etc. ### Citing PVANET If you find PVANET useful in your research, please consider citing: @article{KimKH2016arXivPVANET, - author = {Kye-Hyeon Kim and Yeongjae Cheon and Sanghoon Hong and Byungseok Roh and Minje Park}, + author = {Yeongjae Cheon and Sanghoon Hong and Kye-Hyeon Kim and Minje Park and Byungseok Roh}, title = {{PVANET}: Deep but Lightweight Neural Networks for Real-time Object Detection}, journal = {arXiv preprint arXiv:1608.08021}, year = {2016} @@ -66,18 +67,35 @@ If you find PVANET useful in your research, please consider citing: ./models/pvanet/download_original_models.sh ``` +6. (Optional) Download ImageNet pretrained models + ```Shell + cd $FRCN_ROOT + ./models/pvanet/download_imagenet_models.sh + ``` + +7. (Optional) Download PVANET-lite models + ```Shell + cd $FRCN_ROOT + ./models/pvanet/download_lite_models.sh + ``` + ### Models 1. PVANET - `./models/pvanet/full/test.pt`: For testing-time efficiency, batch normalization (w/ its moving averaged mini-batch statistics) and scale (w/ its trained parameters) layers are merged into the corresponding convolutional layer. - `./models/pvanet/full/original.pt`: Original network structure. -2. PVANET (compressed): +2. PVANET (compressed) - `./models/pvanet/comp/test.pt`: Compressed network w/ merging batch normalization and scale. - `./models/pvanet/comp/original.pt`: Original compressed network structure. -3. PVANET-lite - - TBA +3. PVANET (ImageNet pretrained model) + - `./models/pvanet/imagenet/test.pt`: Classification network w/ merging batch normalization and scale. + - `./models/pvanet/imagenet/original.pt`: Original classification network structure. + +4. PVANET-lite + - `./models/pvanet/lite/test.pt`: Compressed network w/ merging batch normalization and scale. + - `./models/pvanet/lite/original.pt`: Original compressed network structure. ### How to run the demo @@ -97,9 +115,21 @@ If you find PVANET useful in your research, please consider citing: ./tools/test_net.py --gpu 0 --def models/pvanet/comp/test.pt --net models/pvanet/comp/test.model --cfg models/pvanet/cfgs/submit_160715.yml ``` +4. (Optional) ImageNet classification + ```Shell + cd $FRCN_ROOT + ./caffe-fast-rcnn/build/tools/caffe test -gpu 0 -model models/pvanet/imagenet/test.pt -weights models/pvanet/imagenet/test.model -iterations 1000 + ``` + +5. (Optional) PVANET-lite + ```Shell + cd $FRCN_ROOT + ./tools/test_net.py --gpu 0 --def models/pvanet/lite/test.pt --net models/pvanet/lite/test.model --cfg models/pvanet/cfgs/submit_160715.yml + ``` + ### Expected results - PVANET+: 83.85% mAP - PVANET+ (compressed): 82.90% mAP - - +- ImageNet classification: 68.998% top-1 accuracy, 88.8902% top-5 accuracy, 1.28726 loss +- PVANET-lite: 79.10% mAP diff --git a/models/pvanet/download_imagenet_models.sh b/models/pvanet/download_imagenet_models.sh new file mode 100755 index 000000000..2d82521ca --- /dev/null +++ b/models/pvanet/download_imagenet_models.sh @@ -0,0 +1,3 @@ +#/bin/bash +wget -O models/pvanet/imagenet/test.model +wget -O models/pvanet/imagenet/original.model diff --git a/models/pvanet/download_lite_models.sh b/models/pvanet/download_lite_models.sh new file mode 100755 index 000000000..b55b210c8 --- /dev/null +++ b/models/pvanet/download_lite_models.sh @@ -0,0 +1,3 @@ +#/bin/bash +wget https://www.dropbox.com/s/38g96yh51afzj7c/test_690K.model?dl=0 -O models/pvanet/lite/test.model +wget https://www.dropbox.com/s/4j27cjkv5t7danz/original_690K.model?dl=0 -O models/pvanet/lite/original.model diff --git a/models/pvanet/imagenet/original.pt b/models/pvanet/imagenet/original.pt new file mode 100644 index 000000000..ef5b5c158 --- /dev/null +++ b/models/pvanet/imagenet/original.pt @@ -0,0 +1,4963 @@ +# Layer Mega MAC Output H,W Output Ch +# ------------------------------------------------- +# data , 0.00 MMAC, 640, 3 +# conv1_1 , 240.84 MMAC, 320, 32 +# pool1 , 0.00 MMAC, 160, 32 +# conv2_1 , 283.44 MMAC, 160, 64 +# conv2_2 , 250.68 MMAC, 160, 64 +# conv2_3 , 250.68 MMAC, 160, 64 +# conv3_1 , 283.44 MMAC, 80, 128 +# conv3_2 , 250.68 MMAC, 80, 128 +# conv3_3 , 250.68 MMAC, 80, 128 +# conv3_4 , 250.68 MMAC, 80, 128 +# conv4_1 , 395.47 MMAC, 40, 256 +# conv4_2 , 328.29 MMAC, 40, 256 +# conv4_3 , 328.29 MMAC, 40, 256 +# conv4_4 , 328.29 MMAC, 40, 256 +# conv5_1 , 229.38 MMAC, 20, 384 +# conv5_2 , 167.12 MMAC, 20, 384 +# conv5_3 , 167.12 MMAC, 20, 384 +# conv5_4 , 167.12 MMAC, 20, 384 +# pool5 , 0.00 MMAC, 20, 384 +# ------------------------------------------------- +# Total: 4.17 GMAC + +name: "PVANET_ImageNet" +layer { + name: "data" + type: "Data" + top: "data" + top: "label" + include { + phase: TRAIN + } + transform_param { + mirror: true + crop_size: 192 + mean_value: 104 + mean_value: 117 + mean_value: 123 + } + data_param { + source: "data/imagenet/ilsvrc12_train_lmdb" + batch_size: 72 + backend: LMDB + } +} +layer { + name: "data" + type: "Data" + top: "data" + top: "label" + include { + phase: TEST + } + transform_param { + mirror: false + crop_size: 192 + mean_value: 104 + mean_value: 117 + mean_value: 123 + } + data_param { + source: "data/imagenet/ilsvrc12_val_lmdb" + batch_size: 32 + backend: LMDB + } +} + +layer { + name: "conv1_1/conv" + type: "Convolution" + bottom: "data" + top: "conv1_1/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 16 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 3 + pad_w: 3 + kernel_h: 7 + kernel_w: 7 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv1_1/bn" + type: "BatchNorm" + bottom: "conv1_1/conv" + top: "conv1_1/conv" +} +layer { + name: "conv1_1/neg" + type: "Power" + bottom: "conv1_1/conv" + top: "conv1_1/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv1_1/concat" + type: "Concat" + bottom: "conv1_1/conv" + bottom: "conv1_1/neg" + top: "conv1_1" +} +layer { + name: "conv1_1/scale" + type: "Scale" + bottom: "conv1_1" + top: "conv1_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv1_1/relu" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv2_1/1/conv" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/1/bn" + type: "BatchNorm" + bottom: "conv2_1/1" + top: "conv2_1/1" +} +layer { + name: "conv2_1/1/bn_scale" + type: "Scale" + bottom: "conv2_1/1" + top: "conv2_1/1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/1/relu" + type: "ReLU" + bottom: "conv2_1/1" + top: "conv2_1/1" +} +layer { + name: "conv2_1/2/conv" + type: "Convolution" + bottom: "conv2_1/1" + top: "conv2_1/2/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/2/bn" + type: "BatchNorm" + bottom: "conv2_1/2/conv" + top: "conv2_1/2/conv" +} +layer { + name: "conv2_1/2/neg" + type: "Power" + bottom: "conv2_1/2/conv" + top: "conv2_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_1/2/concat" + type: "Concat" + bottom: "conv2_1/2/conv" + bottom: "conv2_1/2/neg" + top: "conv2_1/2" +} +layer { + name: "conv2_1/2/scale" + type: "Scale" + bottom: "conv2_1/2" + top: "conv2_1/2" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/2/relu" + type: "ReLU" + bottom: "conv2_1/2" + top: "conv2_1/2" +} +layer { + name: "conv2_1/3/conv" + type: "Convolution" + bottom: "conv2_1/2" + top: "conv2_1/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/3/bn" + type: "BatchNorm" + bottom: "conv2_1/3" + top: "conv2_1/3" +} +layer { + name: "conv2_1/3/bn_scale" + type: "Scale" + bottom: "conv2_1/3" + top: "conv2_1/3" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/proj" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/proj_bn" + type: "BatchNorm" + bottom: "conv2_1/proj" + top: "conv2_1/proj" +} +layer { + name: "conv2_1/proj_bn_scale" + type: "Scale" + bottom: "conv2_1/proj" + top: "conv2_1/proj" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1" + type: "Eltwise" + bottom: "conv2_1/3" + bottom: "conv2_1/proj" + top: "conv2_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_2/1/conv" + type: "Convolution" + bottom: "conv2_1" + top: "conv2_2/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/1/bn" + type: "BatchNorm" + bottom: "conv2_2/1" + top: "conv2_2/1" +} +layer { + name: "conv2_2/1/bn_scale" + type: "Scale" + bottom: "conv2_2/1" + top: "conv2_2/1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/1/relu" + type: "ReLU" + bottom: "conv2_2/1" + top: "conv2_2/1" +} +layer { + name: "conv2_2/2/conv" + type: "Convolution" + bottom: "conv2_2/1" + top: "conv2_2/2/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/2/bn" + type: "BatchNorm" + bottom: "conv2_2/2/conv" + top: "conv2_2/2/conv" +} +layer { + name: "conv2_2/2/neg" + type: "Power" + bottom: "conv2_2/2/conv" + top: "conv2_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_2/2/concat" + type: "Concat" + bottom: "conv2_2/2/conv" + bottom: "conv2_2/2/neg" + top: "conv2_2/2" +} +layer { + name: "conv2_2/2/scale" + type: "Scale" + bottom: "conv2_2/2" + top: "conv2_2/2" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/2/relu" + type: "ReLU" + bottom: "conv2_2/2" + top: "conv2_2/2" +} +layer { + name: "conv2_2/3/conv" + type: "Convolution" + bottom: "conv2_2/2" + top: "conv2_2/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/3/bn" + type: "BatchNorm" + bottom: "conv2_2/3" + top: "conv2_2/3" +} +layer { + name: "conv2_2/3/bn_scale" + type: "Scale" + bottom: "conv2_2/3" + top: "conv2_2/3" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2" + type: "Eltwise" + bottom: "conv2_2/3" + bottom: "conv2_1" + top: "conv2_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_3/1/conv" + type: "Convolution" + bottom: "conv2_2" + top: "conv2_3/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/1/bn" + type: "BatchNorm" + bottom: "conv2_3/1" + top: "conv2_3/1" +} +layer { + name: "conv2_3/1/bn_scale" + type: "Scale" + bottom: "conv2_3/1" + top: "conv2_3/1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/1/relu" + type: "ReLU" + bottom: "conv2_3/1" + top: "conv2_3/1" +} +layer { + name: "conv2_3/2/conv" + type: "Convolution" + bottom: "conv2_3/1" + top: "conv2_3/2/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/2/bn" + type: "BatchNorm" + bottom: "conv2_3/2/conv" + top: "conv2_3/2/conv" +} +layer { + name: "conv2_3/2/neg" + type: "Power" + bottom: "conv2_3/2/conv" + top: "conv2_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_3/2/concat" + type: "Concat" + bottom: "conv2_3/2/conv" + bottom: "conv2_3/2/neg" + top: "conv2_3/2" +} +layer { + name: "conv2_3/2/scale" + type: "Scale" + bottom: "conv2_3/2" + top: "conv2_3/2" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/2/relu" + type: "ReLU" + bottom: "conv2_3/2" + top: "conv2_3/2" +} +layer { + name: "conv2_3/3/conv" + type: "Convolution" + bottom: "conv2_3/2" + top: "conv2_3/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/3/bn" + type: "BatchNorm" + bottom: "conv2_3/3" + top: "conv2_3/3" +} +layer { + name: "conv2_3/3/bn_scale" + type: "Scale" + bottom: "conv2_3/3" + top: "conv2_3/3" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3" + type: "Eltwise" + bottom: "conv2_3/3" + bottom: "conv2_2" + top: "conv2_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_1/1/conv" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/1/bn" + type: "BatchNorm" + bottom: "conv3_1/1" + top: "conv3_1/1" +} +layer { + name: "conv3_1/1/bn_scale" + type: "Scale" + bottom: "conv3_1/1" + top: "conv3_1/1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/1/relu" + type: "ReLU" + bottom: "conv3_1/1" + top: "conv3_1/1" +} +layer { + name: "conv3_1/2/conv" + type: "Convolution" + bottom: "conv3_1/1" + top: "conv3_1/2/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/2/bn" + type: "BatchNorm" + bottom: "conv3_1/2/conv" + top: "conv3_1/2/conv" +} +layer { + name: "conv3_1/2/neg" + type: "Power" + bottom: "conv3_1/2/conv" + top: "conv3_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_1/2/concat" + type: "Concat" + bottom: "conv3_1/2/conv" + bottom: "conv3_1/2/neg" + top: "conv3_1/2" +} +layer { + name: "conv3_1/2/scale" + type: "Scale" + bottom: "conv3_1/2" + top: "conv3_1/2" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/2/relu" + type: "ReLU" + bottom: "conv3_1/2" + top: "conv3_1/2" +} +layer { + name: "conv3_1/3/conv" + type: "Convolution" + bottom: "conv3_1/2" + top: "conv3_1/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/3/bn" + type: "BatchNorm" + bottom: "conv3_1/3" + top: "conv3_1/3" +} +layer { + name: "conv3_1/3/bn_scale" + type: "Scale" + bottom: "conv3_1/3" + top: "conv3_1/3" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/proj" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/proj_bn" + type: "BatchNorm" + bottom: "conv3_1/proj" + top: "conv3_1/proj" +} +layer { + name: "conv3_1/proj_bn_scale" + type: "Scale" + bottom: "conv3_1/proj" + top: "conv3_1/proj" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1" + type: "Eltwise" + bottom: "conv3_1/3" + bottom: "conv3_1/proj" + top: "conv3_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_2/1/conv" + type: "Convolution" + bottom: "conv3_1" + top: "conv3_2/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/1/bn" + type: "BatchNorm" + bottom: "conv3_2/1" + top: "conv3_2/1" +} +layer { + name: "conv3_2/1/bn_scale" + type: "Scale" + bottom: "conv3_2/1" + top: "conv3_2/1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/1/relu" + type: "ReLU" + bottom: "conv3_2/1" + top: "conv3_2/1" +} +layer { + name: "conv3_2/2/conv" + type: "Convolution" + bottom: "conv3_2/1" + top: "conv3_2/2/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/2/bn" + type: "BatchNorm" + bottom: "conv3_2/2/conv" + top: "conv3_2/2/conv" +} +layer { + name: "conv3_2/2/neg" + type: "Power" + bottom: "conv3_2/2/conv" + top: "conv3_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_2/2/concat" + type: "Concat" + bottom: "conv3_2/2/conv" + bottom: "conv3_2/2/neg" + top: "conv3_2/2" +} +layer { + name: "conv3_2/2/scale" + type: "Scale" + bottom: "conv3_2/2" + top: "conv3_2/2" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/2/relu" + type: "ReLU" + bottom: "conv3_2/2" + top: "conv3_2/2" +} +layer { + name: "conv3_2/3/conv" + type: "Convolution" + bottom: "conv3_2/2" + top: "conv3_2/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/3/bn" + type: "BatchNorm" + bottom: "conv3_2/3" + top: "conv3_2/3" +} +layer { + name: "conv3_2/3/bn_scale" + type: "Scale" + bottom: "conv3_2/3" + top: "conv3_2/3" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2" + type: "Eltwise" + bottom: "conv3_2/3" + bottom: "conv3_1" + top: "conv3_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_3/1/conv" + type: "Convolution" + bottom: "conv3_2" + top: "conv3_3/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/1/bn" + type: "BatchNorm" + bottom: "conv3_3/1" + top: "conv3_3/1" +} +layer { + name: "conv3_3/1/bn_scale" + type: "Scale" + bottom: "conv3_3/1" + top: "conv3_3/1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/1/relu" + type: "ReLU" + bottom: "conv3_3/1" + top: "conv3_3/1" +} +layer { + name: "conv3_3/2/conv" + type: "Convolution" + bottom: "conv3_3/1" + top: "conv3_3/2/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/2/bn" + type: "BatchNorm" + bottom: "conv3_3/2/conv" + top: "conv3_3/2/conv" +} +layer { + name: "conv3_3/2/neg" + type: "Power" + bottom: "conv3_3/2/conv" + top: "conv3_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_3/2/concat" + type: "Concat" + bottom: "conv3_3/2/conv" + bottom: "conv3_3/2/neg" + top: "conv3_3/2" +} +layer { + name: "conv3_3/2/scale" + type: "Scale" + bottom: "conv3_3/2" + top: "conv3_3/2" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/2/relu" + type: "ReLU" + bottom: "conv3_3/2" + top: "conv3_3/2" +} +layer { + name: "conv3_3/3/conv" + type: "Convolution" + bottom: "conv3_3/2" + top: "conv3_3/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/3/bn" + type: "BatchNorm" + bottom: "conv3_3/3" + top: "conv3_3/3" +} +layer { + name: "conv3_3/3/bn_scale" + type: "Scale" + bottom: "conv3_3/3" + top: "conv3_3/3" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3" + type: "Eltwise" + bottom: "conv3_3/3" + bottom: "conv3_2" + top: "conv3_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_4/1/conv" + type: "Convolution" + bottom: "conv3_3" + top: "conv3_4/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/1/bn" + type: "BatchNorm" + bottom: "conv3_4/1" + top: "conv3_4/1" +} +layer { + name: "conv3_4/1/bn_scale" + type: "Scale" + bottom: "conv3_4/1" + top: "conv3_4/1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/1/relu" + type: "ReLU" + bottom: "conv3_4/1" + top: "conv3_4/1" +} +layer { + name: "conv3_4/2/conv" + type: "Convolution" + bottom: "conv3_4/1" + top: "conv3_4/2/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/2/bn" + type: "BatchNorm" + bottom: "conv3_4/2/conv" + top: "conv3_4/2/conv" +} +layer { + name: "conv3_4/2/neg" + type: "Power" + bottom: "conv3_4/2/conv" + top: "conv3_4/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_4/2/concat" + type: "Concat" + bottom: "conv3_4/2/conv" + bottom: "conv3_4/2/neg" + top: "conv3_4/2" +} +layer { + name: "conv3_4/2/scale" + type: "Scale" + bottom: "conv3_4/2" + top: "conv3_4/2" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/2/relu" + type: "ReLU" + bottom: "conv3_4/2" + top: "conv3_4/2" +} +layer { + name: "conv3_4/3/conv" + type: "Convolution" + bottom: "conv3_4/2" + top: "conv3_4/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/3/bn" + type: "BatchNorm" + bottom: "conv3_4/3" + top: "conv3_4/3" +} +layer { + name: "conv3_4/3/bn_scale" + type: "Scale" + bottom: "conv3_4/3" + top: "conv3_4/3" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4" + type: "Eltwise" + bottom: "conv3_4/3" + bottom: "conv3_3" + top: "conv3_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_1/incep/0/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/0/relu" + type: "ReLU" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/pool" + type: "Pooling" + bottom: "conv3_4" + top: "conv4_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv4_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv4_1/incep/pool" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep" + type: "Concat" + bottom: "conv4_1/incep/0" + bottom: "conv4_1/incep/1_0" + bottom: "conv4_1/incep/2_1" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep" +} +layer { + name: "conv4_1/out/conv" + type: "Convolution" + bottom: "conv4_1/incep" + top: "conv4_1/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/out/bn" + type: "BatchNorm" + bottom: "conv4_1/out" + top: "conv4_1/out" +} +layer { + name: "conv4_1/out/bn_scale" + type: "Scale" + bottom: "conv4_1/out" + top: "conv4_1/out" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/proj" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/proj_bn" + type: "BatchNorm" + bottom: "conv4_1/proj" + top: "conv4_1/proj" +} +layer { + name: "conv4_1/proj_bn_scale" + type: "Scale" + bottom: "conv4_1/proj" + top: "conv4_1/proj" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1" + type: "Eltwise" + bottom: "conv4_1/out" + bottom: "conv4_1/proj" + top: "conv4_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_2/incep/0/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/0/relu" + type: "ReLU" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep" + type: "Concat" + bottom: "conv4_2/incep/0" + bottom: "conv4_2/incep/1_0" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep" +} +layer { + name: "conv4_2/out/conv" + type: "Convolution" + bottom: "conv4_2/incep" + top: "conv4_2/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/out/bn" + type: "BatchNorm" + bottom: "conv4_2/out" + top: "conv4_2/out" +} +layer { + name: "conv4_2/out/bn_scale" + type: "Scale" + bottom: "conv4_2/out" + top: "conv4_2/out" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2" + type: "Eltwise" + bottom: "conv4_2/out" + bottom: "conv4_1" + top: "conv4_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_3/incep/0/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/0/relu" + type: "ReLU" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep" + type: "Concat" + bottom: "conv4_3/incep/0" + bottom: "conv4_3/incep/1_0" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep" +} +layer { + name: "conv4_3/out/conv" + type: "Convolution" + bottom: "conv4_3/incep" + top: "conv4_3/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/out/bn" + type: "BatchNorm" + bottom: "conv4_3/out" + top: "conv4_3/out" +} +layer { + name: "conv4_3/out/bn_scale" + type: "Scale" + bottom: "conv4_3/out" + top: "conv4_3/out" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3" + type: "Eltwise" + bottom: "conv4_3/out" + bottom: "conv4_2" + top: "conv4_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_4/incep/0/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/0/relu" + type: "ReLU" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep" + type: "Concat" + bottom: "conv4_4/incep/0" + bottom: "conv4_4/incep/1_0" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep" +} +layer { + name: "conv4_4/out/conv" + type: "Convolution" + bottom: "conv4_4/incep" + top: "conv4_4/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/out/bn" + type: "BatchNorm" + bottom: "conv4_4/out" + top: "conv4_4/out" +} +layer { + name: "conv4_4/out/bn_scale" + type: "Scale" + bottom: "conv4_4/out" + top: "conv4_4/out" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4" + type: "Eltwise" + bottom: "conv4_4/out" + bottom: "conv4_3" + top: "conv4_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_1/incep/0/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/0/relu" + type: "ReLU" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/pool" + type: "Pooling" + bottom: "conv4_4" + top: "conv5_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv5_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv5_1/incep/pool" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep" + type: "Concat" + bottom: "conv5_1/incep/0" + bottom: "conv5_1/incep/1_0" + bottom: "conv5_1/incep/2_1" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep" +} +layer { + name: "conv5_1/out/conv" + type: "Convolution" + bottom: "conv5_1/incep" + top: "conv5_1/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/out/bn" + type: "BatchNorm" + bottom: "conv5_1/out" + top: "conv5_1/out" +} +layer { + name: "conv5_1/out/bn_scale" + type: "Scale" + bottom: "conv5_1/out" + top: "conv5_1/out" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/proj" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/proj_bn" + type: "BatchNorm" + bottom: "conv5_1/proj" + top: "conv5_1/proj" +} +layer { + name: "conv5_1/proj_bn_scale" + type: "Scale" + bottom: "conv5_1/proj" + top: "conv5_1/proj" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1" + type: "Eltwise" + bottom: "conv5_1/out" + bottom: "conv5_1/proj" + top: "conv5_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_2/incep/0/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/0/relu" + type: "ReLU" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep" + type: "Concat" + bottom: "conv5_2/incep/0" + bottom: "conv5_2/incep/1_0" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep" +} +layer { + name: "conv5_2/out/conv" + type: "Convolution" + bottom: "conv5_2/incep" + top: "conv5_2/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/out/bn" + type: "BatchNorm" + bottom: "conv5_2/out" + top: "conv5_2/out" +} +layer { + name: "conv5_2/out/bn_scale" + type: "Scale" + bottom: "conv5_2/out" + top: "conv5_2/out" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2" + type: "Eltwise" + bottom: "conv5_2/out" + bottom: "conv5_1" + top: "conv5_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_3/incep/0/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/0/relu" + type: "ReLU" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep" + type: "Concat" + bottom: "conv5_3/incep/0" + bottom: "conv5_3/incep/1_0" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep" +} +layer { + name: "conv5_3/out/conv" + type: "Convolution" + bottom: "conv5_3/incep" + top: "conv5_3/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/out/bn" + type: "BatchNorm" + bottom: "conv5_3/out" + top: "conv5_3/out" +} +layer { + name: "conv5_3/out/bn_scale" + type: "Scale" + bottom: "conv5_3/out" + top: "conv5_3/out" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3" + type: "Eltwise" + bottom: "conv5_3/out" + bottom: "conv5_2" + top: "conv5_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/incep/0/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/0/relu" + type: "ReLU" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep" + type: "Concat" + bottom: "conv5_4/incep/0" + bottom: "conv5_4/incep/1_0" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep" +} +layer { + name: "conv5_4/out/conv" + type: "Convolution" + bottom: "conv5_4/incep" + top: "conv5_4/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/out/bn" + type: "BatchNorm" + bottom: "conv5_4/out" + top: "conv5_4/out" +} +layer { + name: "conv5_4/out/bn_scale" + type: "Scale" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4" + type: "Eltwise" + bottom: "conv5_4/out" + bottom: "conv5_3" + top: "conv5_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "pool5" + type: "Pooling" + bottom: "conv5_4" + top: "pool5" + pooling_param { + pool: MAX + kernel_size: 1 + stride: 1 + pad: 0 + } +} +layer { + name: "fc6" + type: "InnerProduct" + bottom: "pool5" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc6/bn" + type: "BatchNorm" + bottom: "fc6" + top: "fc6" +} +layer { + name: "fc6/bn_scale" + type: "Scale" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc6/dropout" + type: "Dropout" + bottom: "fc6" + top: "fc6" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc6/relu" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "fc7" + type: "InnerProduct" + bottom: "fc6" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc7/bn" + type: "BatchNorm" + bottom: "fc7" + top: "fc7" +} +layer { + name: "fc7/bn_scale" + type: "Scale" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc7/dropout" + type: "Dropout" + bottom: "fc7" + top: "fc7" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc7/relu" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} + + +layer { + name: "fc8" + type: "InnerProduct" + bottom: "fc7" + top: "fc8" + param { lr_mult: 1.0 decay_mult: 1.0 } + inner_product_param { + num_output: 1000 + weight_filler { type: "xavier" } + bias_filler { type: "constant" value: 0.1 } + } +} + +### Loss +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "fc8" + bottom: "label" + top: "loss" +} + +layer { + name: "accuracy" + type: "Accuracy" + bottom: "fc8" + bottom: "label" + top: "accuracy" + include { + phase: TEST + } + accuracy_param { + top_k: 1 + } +} + +layer { + name: "accuracy_top5" + type: "Accuracy" + bottom: "fc8" + bottom: "label" + top: "accuracy_top5" + include { + phase: TEST + } + accuracy_param { + top_k: 5 + } +} diff --git a/models/pvanet/imagenet/test.pt b/models/pvanet/imagenet/test.pt new file mode 100644 index 000000000..82e4ff75d --- /dev/null +++ b/models/pvanet/imagenet/test.pt @@ -0,0 +1,3103 @@ +# Layer Mega MAC Output H,W Output Ch +# ------------------------------------------------- +# data , 0.00 MMAC, 640, 3 +# conv1_1 , 240.84 MMAC, 320, 32 +# pool1 , 0.00 MMAC, 160, 32 +# conv2_1 , 283.44 MMAC, 160, 64 +# conv2_2 , 250.68 MMAC, 160, 64 +# conv2_3 , 250.68 MMAC, 160, 64 +# conv3_1 , 283.44 MMAC, 80, 128 +# conv3_2 , 250.68 MMAC, 80, 128 +# conv3_3 , 250.68 MMAC, 80, 128 +# conv3_4 , 250.68 MMAC, 80, 128 +# conv4_1 , 395.47 MMAC, 40, 256 +# conv4_2 , 328.29 MMAC, 40, 256 +# conv4_3 , 328.29 MMAC, 40, 256 +# conv4_4 , 328.29 MMAC, 40, 256 +# conv5_1 , 229.38 MMAC, 20, 384 +# conv5_2 , 167.12 MMAC, 20, 384 +# conv5_3 , 167.12 MMAC, 20, 384 +# conv5_4 , 167.12 MMAC, 20, 384 +# pool5 , 0.00 MMAC, 20, 384 +# ------------------------------------------------- +# Total: 4.17 GMAC + +name: "PVANET_ImageNet" +layer { + name: "data" + type: "Data" + top: "data" + top: "label" + include { + phase: TRAIN + } + transform_param { + mirror: true + crop_size: 192 + mean_value: 104 + mean_value: 117 + mean_value: 123 + } + data_param { + source: "data/imagenet/ilsvrc12_train_lmdb" + batch_size: 72 + backend: LMDB + } +} +layer { + name: "data" + type: "Data" + top: "data" + top: "label" + include { + phase: TEST + } + transform_param { + mirror: false + crop_size: 192 + mean_value: 104 + mean_value: 117 + mean_value: 123 + } + data_param { + source: "data/imagenet/ilsvrc12_val_lmdb" + batch_size: 50 + backend: LMDB + } +} + +layer { + name: "conv1_1/conv" + type: "Convolution" + bottom: "data" + top: "conv1_1/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 16 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 3 + pad_w: 3 + kernel_h: 7 + kernel_w: 7 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv1_1/neg" + type: "Power" + bottom: "conv1_1/conv" + top: "conv1_1/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv1_1/concat" + type: "Concat" + bottom: "conv1_1/conv" + bottom: "conv1_1/neg" + top: "conv1_1" +} +layer { + name: "conv1_1/scale" + type: "Scale" + bottom: "conv1_1" + top: "conv1_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv1_1/relu" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv2_1/1/conv" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/1/relu" + type: "ReLU" + bottom: "conv2_1/1" + top: "conv2_1/1" +} +layer { + name: "conv2_1/2/conv" + type: "Convolution" + bottom: "conv2_1/1" + top: "conv2_1/2/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/2/neg" + type: "Power" + bottom: "conv2_1/2/conv" + top: "conv2_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_1/2/concat" + type: "Concat" + bottom: "conv2_1/2/conv" + bottom: "conv2_1/2/neg" + top: "conv2_1/2" +} +layer { + name: "conv2_1/2/scale" + type: "Scale" + bottom: "conv2_1/2" + top: "conv2_1/2" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/2/relu" + type: "ReLU" + bottom: "conv2_1/2" + top: "conv2_1/2" +} +layer { + name: "conv2_1/3/conv" + type: "Convolution" + bottom: "conv2_1/2" + top: "conv2_1/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/proj" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1" + type: "Eltwise" + bottom: "conv2_1/3" + bottom: "conv2_1/proj" + top: "conv2_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_2/1/conv" + type: "Convolution" + bottom: "conv2_1" + top: "conv2_2/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/1/relu" + type: "ReLU" + bottom: "conv2_2/1" + top: "conv2_2/1" +} +layer { + name: "conv2_2/2/conv" + type: "Convolution" + bottom: "conv2_2/1" + top: "conv2_2/2/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/2/neg" + type: "Power" + bottom: "conv2_2/2/conv" + top: "conv2_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_2/2/concat" + type: "Concat" + bottom: "conv2_2/2/conv" + bottom: "conv2_2/2/neg" + top: "conv2_2/2" +} +layer { + name: "conv2_2/2/scale" + type: "Scale" + bottom: "conv2_2/2" + top: "conv2_2/2" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/2/relu" + type: "ReLU" + bottom: "conv2_2/2" + top: "conv2_2/2" +} +layer { + name: "conv2_2/3/conv" + type: "Convolution" + bottom: "conv2_2/2" + top: "conv2_2/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2" + type: "Eltwise" + bottom: "conv2_2/3" + bottom: "conv2_1" + top: "conv2_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_3/1/conv" + type: "Convolution" + bottom: "conv2_2" + top: "conv2_3/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/1/relu" + type: "ReLU" + bottom: "conv2_3/1" + top: "conv2_3/1" +} +layer { + name: "conv2_3/2/conv" + type: "Convolution" + bottom: "conv2_3/1" + top: "conv2_3/2/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/2/neg" + type: "Power" + bottom: "conv2_3/2/conv" + top: "conv2_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_3/2/concat" + type: "Concat" + bottom: "conv2_3/2/conv" + bottom: "conv2_3/2/neg" + top: "conv2_3/2" +} +layer { + name: "conv2_3/2/scale" + type: "Scale" + bottom: "conv2_3/2" + top: "conv2_3/2" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/2/relu" + type: "ReLU" + bottom: "conv2_3/2" + top: "conv2_3/2" +} +layer { + name: "conv2_3/3/conv" + type: "Convolution" + bottom: "conv2_3/2" + top: "conv2_3/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3" + type: "Eltwise" + bottom: "conv2_3/3" + bottom: "conv2_2" + top: "conv2_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_1/1/conv" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/1/relu" + type: "ReLU" + bottom: "conv3_1/1" + top: "conv3_1/1" +} +layer { + name: "conv3_1/2/conv" + type: "Convolution" + bottom: "conv3_1/1" + top: "conv3_1/2/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/2/neg" + type: "Power" + bottom: "conv3_1/2/conv" + top: "conv3_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_1/2/concat" + type: "Concat" + bottom: "conv3_1/2/conv" + bottom: "conv3_1/2/neg" + top: "conv3_1/2" +} +layer { + name: "conv3_1/2/scale" + type: "Scale" + bottom: "conv3_1/2" + top: "conv3_1/2" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/2/relu" + type: "ReLU" + bottom: "conv3_1/2" + top: "conv3_1/2" +} +layer { + name: "conv3_1/3/conv" + type: "Convolution" + bottom: "conv3_1/2" + top: "conv3_1/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/proj" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1" + type: "Eltwise" + bottom: "conv3_1/3" + bottom: "conv3_1/proj" + top: "conv3_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_2/1/conv" + type: "Convolution" + bottom: "conv3_1" + top: "conv3_2/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/1/relu" + type: "ReLU" + bottom: "conv3_2/1" + top: "conv3_2/1" +} +layer { + name: "conv3_2/2/conv" + type: "Convolution" + bottom: "conv3_2/1" + top: "conv3_2/2/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/2/neg" + type: "Power" + bottom: "conv3_2/2/conv" + top: "conv3_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_2/2/concat" + type: "Concat" + bottom: "conv3_2/2/conv" + bottom: "conv3_2/2/neg" + top: "conv3_2/2" +} +layer { + name: "conv3_2/2/scale" + type: "Scale" + bottom: "conv3_2/2" + top: "conv3_2/2" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/2/relu" + type: "ReLU" + bottom: "conv3_2/2" + top: "conv3_2/2" +} +layer { + name: "conv3_2/3/conv" + type: "Convolution" + bottom: "conv3_2/2" + top: "conv3_2/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2" + type: "Eltwise" + bottom: "conv3_2/3" + bottom: "conv3_1" + top: "conv3_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_3/1/conv" + type: "Convolution" + bottom: "conv3_2" + top: "conv3_3/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/1/relu" + type: "ReLU" + bottom: "conv3_3/1" + top: "conv3_3/1" +} +layer { + name: "conv3_3/2/conv" + type: "Convolution" + bottom: "conv3_3/1" + top: "conv3_3/2/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/2/neg" + type: "Power" + bottom: "conv3_3/2/conv" + top: "conv3_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_3/2/concat" + type: "Concat" + bottom: "conv3_3/2/conv" + bottom: "conv3_3/2/neg" + top: "conv3_3/2" +} +layer { + name: "conv3_3/2/scale" + type: "Scale" + bottom: "conv3_3/2" + top: "conv3_3/2" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/2/relu" + type: "ReLU" + bottom: "conv3_3/2" + top: "conv3_3/2" +} +layer { + name: "conv3_3/3/conv" + type: "Convolution" + bottom: "conv3_3/2" + top: "conv3_3/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3" + type: "Eltwise" + bottom: "conv3_3/3" + bottom: "conv3_2" + top: "conv3_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_4/1/conv" + type: "Convolution" + bottom: "conv3_3" + top: "conv3_4/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/1/relu" + type: "ReLU" + bottom: "conv3_4/1" + top: "conv3_4/1" +} +layer { + name: "conv3_4/2/conv" + type: "Convolution" + bottom: "conv3_4/1" + top: "conv3_4/2/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/2/neg" + type: "Power" + bottom: "conv3_4/2/conv" + top: "conv3_4/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_4/2/concat" + type: "Concat" + bottom: "conv3_4/2/conv" + bottom: "conv3_4/2/neg" + top: "conv3_4/2" +} +layer { + name: "conv3_4/2/scale" + type: "Scale" + bottom: "conv3_4/2" + top: "conv3_4/2" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/2/relu" + type: "ReLU" + bottom: "conv3_4/2" + top: "conv3_4/2" +} +layer { + name: "conv3_4/3/conv" + type: "Convolution" + bottom: "conv3_4/2" + top: "conv3_4/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4" + type: "Eltwise" + bottom: "conv3_4/3" + bottom: "conv3_3" + top: "conv3_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_1/incep/0/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/0/relu" + type: "ReLU" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/pool" + type: "Pooling" + bottom: "conv3_4" + top: "conv4_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv4_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv4_1/incep/pool" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep" + type: "Concat" + bottom: "conv4_1/incep/0" + bottom: "conv4_1/incep/1_0" + bottom: "conv4_1/incep/2_1" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep" +} +layer { + name: "conv4_1/out/conv" + type: "Convolution" + bottom: "conv4_1/incep" + top: "conv4_1/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 256 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/proj" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1" + type: "Eltwise" + bottom: "conv4_1/out" + bottom: "conv4_1/proj" + top: "conv4_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_2/incep/0/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/0/relu" + type: "ReLU" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep" + type: "Concat" + bottom: "conv4_2/incep/0" + bottom: "conv4_2/incep/1_0" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep" +} +layer { + name: "conv4_2/out/conv" + type: "Convolution" + bottom: "conv4_2/incep" + top: "conv4_2/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 256 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2" + type: "Eltwise" + bottom: "conv4_2/out" + bottom: "conv4_1" + top: "conv4_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_3/incep/0/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/0/relu" + type: "ReLU" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep" + type: "Concat" + bottom: "conv4_3/incep/0" + bottom: "conv4_3/incep/1_0" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep" +} +layer { + name: "conv4_3/out/conv" + type: "Convolution" + bottom: "conv4_3/incep" + top: "conv4_3/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 256 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3" + type: "Eltwise" + bottom: "conv4_3/out" + bottom: "conv4_2" + top: "conv4_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_4/incep/0/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/0/relu" + type: "ReLU" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep" + type: "Concat" + bottom: "conv4_4/incep/0" + bottom: "conv4_4/incep/1_0" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep" +} +layer { + name: "conv4_4/out/conv" + type: "Convolution" + bottom: "conv4_4/incep" + top: "conv4_4/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 256 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4" + type: "Eltwise" + bottom: "conv4_4/out" + bottom: "conv4_3" + top: "conv4_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_1/incep/0/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/0/relu" + type: "ReLU" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/pool" + type: "Pooling" + bottom: "conv4_4" + top: "conv5_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv5_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv5_1/incep/pool" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep" + type: "Concat" + bottom: "conv5_1/incep/0" + bottom: "conv5_1/incep/1_0" + bottom: "conv5_1/incep/2_1" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep" +} +layer { + name: "conv5_1/out/conv" + type: "Convolution" + bottom: "conv5_1/incep" + top: "conv5_1/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/proj" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1" + type: "Eltwise" + bottom: "conv5_1/out" + bottom: "conv5_1/proj" + top: "conv5_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_2/incep/0/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/0/relu" + type: "ReLU" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep" + type: "Concat" + bottom: "conv5_2/incep/0" + bottom: "conv5_2/incep/1_0" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep" +} +layer { + name: "conv5_2/out/conv" + type: "Convolution" + bottom: "conv5_2/incep" + top: "conv5_2/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2" + type: "Eltwise" + bottom: "conv5_2/out" + bottom: "conv5_1" + top: "conv5_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_3/incep/0/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/0/relu" + type: "ReLU" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep" + type: "Concat" + bottom: "conv5_3/incep/0" + bottom: "conv5_3/incep/1_0" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep" +} +layer { + name: "conv5_3/out/conv" + type: "Convolution" + bottom: "conv5_3/incep" + top: "conv5_3/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3" + type: "Eltwise" + bottom: "conv5_3/out" + bottom: "conv5_2" + top: "conv5_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/incep/0/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/0/relu" + type: "ReLU" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep" + type: "Concat" + bottom: "conv5_4/incep/0" + bottom: "conv5_4/incep/1_0" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep" +} +layer { + name: "conv5_4/out/conv" + type: "Convolution" + bottom: "conv5_4/incep" + top: "conv5_4/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_filler { type: "constant" value: 0 } + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4" + type: "Eltwise" + bottom: "conv5_4/out" + bottom: "conv5_3" + top: "conv5_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "pool5" + type: "Pooling" + bottom: "conv5_4" + top: "pool5" + pooling_param { + pool: MAX + kernel_size: 1 + stride: 1 + pad: 0 + } +} +layer { + name: "fc6" + type: "InnerProduct" + bottom: "pool5" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc6/relu" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "fc7" + type: "InnerProduct" + bottom: "fc6" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc7/relu" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} + + +layer { + name: "fc8" + type: "InnerProduct" + bottom: "fc7" + top: "fc8" + param { lr_mult: 1.0 decay_mult: 1.0 } + inner_product_param { + num_output: 1000 + weight_filler { type: "xavier" } + bias_filler { type: "constant" value: 0.1 } + } +} + +### Loss +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "fc8" + bottom: "label" + top: "loss" +} + +layer { + name: "accuracy" + type: "Accuracy" + bottom: "fc8" + bottom: "label" + top: "accuracy" + include { + phase: TEST + } + accuracy_param { + top_k: 1 + } +} + +layer { + name: "accuracy_top5" + type: "Accuracy" + bottom: "fc8" + bottom: "label" + top: "accuracy_top5" + include { + phase: TEST + } + accuracy_param { + top_k: 5 + } +} diff --git a/models/pvanet/lite/original.pt b/models/pvanet/lite/original.pt new file mode 100644 index 000000000..bff88cb69 --- /dev/null +++ b/models/pvanet/lite/original.pt @@ -0,0 +1,2949 @@ +name: "PVANET-lite" + +################################################################################ +## Input +################################################################################ + +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + include { phase: TRAIN } + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +layer { + name: "input-data" + type: "DummyData" + top: "data" + top: "im_info" + include { phase: TEST } + dummy_data_param { + shape { dim: 1 dim: 3 dim: 640 dim: 1056 } + shape { dim: 1 dim: 4 } + } +} + + +################################################################################ +## Conv 1 +################################################################################ +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 + kernel_size: 4 stride: 2 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "conv1/bn" + type: "BatchNorm" + bottom: "conv1" + top: "conv1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "conv1/scale" + type: "Scale" + bottom: "conv1" + top: "conv1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "conv1" + top: "conv1" +} + +################################################################################ +## Conv 2 +################################################################################ +layer { + name: "conv2" + type: "Convolution" + bottom: "conv1" + top: "conv2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 48 + kernel_size: 3 stride: 2 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "conv2/bn" + type: "BatchNorm" + bottom: "conv2" + top: "conv2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "conv2/scale" + type: "Scale" + bottom: "conv2" + top: "conv2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "relu2" + type: "ReLU" + bottom: "conv2" + top: "conv2" +} + +################################################################################ +## Conv 3 +################################################################################ +layer { + name: "conv3" + type: "Convolution" + bottom: "conv2" + top: "conv3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 + kernel_size: 3 stride: 2 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "conv3/bn" + type: "BatchNorm" + bottom: "conv3" + top: "conv3" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "conv3/scale" + type: "Scale" + bottom: "conv3" + top: "conv3" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "relu3" + type: "ReLU" + bottom: "conv3" + top: "conv3" +} + +################################################################################ +## Inception 3a +################################################################################ +layer { + name: "inc3a/pool1" + type: "Pooling" + bottom: "conv3" + top: "inc3a/pool1" + pooling_param { + kernel_size: 3 stride: 2 pad: 0 + pool: MAX + } +} +layer { + name: "inc3a/conv1" + type: "Convolution" + bottom: "inc3a/pool1" + top: "inc3a/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3a/conv1/bn" + type: "BatchNorm" + bottom: "inc3a/conv1" + top: "inc3a/conv1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3a/conv1/scale" + type: "Scale" + bottom: "inc3a/conv1" + top: "inc3a/conv1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3a/relu1" + type: "ReLU" + bottom: "inc3a/conv1" + top: "inc3a/conv1" +} +layer { + name: "inc3a/conv3_1" + type: "Convolution" + bottom: "conv3" + top: "inc3a/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3a/conv3_1/bn" + type: "BatchNorm" + bottom: "inc3a/conv3_1" + top: "inc3a/conv3_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3a/conv3_1/scale" + type: "Scale" + bottom: "inc3a/conv3_1" + top: "inc3a/conv3_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3a/relu3_1" + type: "ReLU" + bottom: "inc3a/conv3_1" + top: "inc3a/conv3_1" +} +layer { + name: "inc3a/conv3_2" + type: "Convolution" + bottom: "inc3a/conv3_1" + top: "inc3a/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 64 kernel_size: 3 stride: 2 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3a/conv3_2/bn" + type: "BatchNorm" + bottom: "inc3a/conv3_2" + top: "inc3a/conv3_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3a/conv3_2/scale" + type: "Scale" + bottom: "inc3a/conv3_2" + top: "inc3a/conv3_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3a/relu3_2" + type: "ReLU" + bottom: "inc3a/conv3_2" + top: "inc3a/conv3_2" +} +layer { + name: "inc3a/conv5_1" + type: "Convolution" + bottom: "conv3" + top: "inc3a/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3a/conv5_1/bn" + type: "BatchNorm" + bottom: "inc3a/conv5_1" + top: "inc3a/conv5_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3a/conv5_1/scale" + type: "Scale" + bottom: "inc3a/conv5_1" + top: "inc3a/conv5_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3a/relu5_1" + type: "ReLU" + bottom: "inc3a/conv5_1" + top: "inc3a/conv5_1" +} +layer { + name: "inc3a/conv5_2" + type: "Convolution" + bottom: "inc3a/conv5_1" + top: "inc3a/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3a/conv5_2/bn" + type: "BatchNorm" + bottom: "inc3a/conv5_2" + top: "inc3a/conv5_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3a/conv5_2/scale" + type: "Scale" + bottom: "inc3a/conv5_2" + top: "inc3a/conv5_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3a/relu5_2" + type: "ReLU" + bottom: "inc3a/conv5_2" + top: "inc3a/conv5_2" +} +layer { + name: "inc3a/conv5_3" + type: "Convolution" + bottom: "inc3a/conv5_2" + top: "inc3a/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 stride: 2 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3a/conv5_3/bn" + type: "BatchNorm" + bottom: "inc3a/conv5_3" + top: "inc3a/conv5_3" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3a/conv5_3/scale" + type: "Scale" + bottom: "inc3a/conv5_3" + top: "inc3a/conv5_3" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3a/relu5_3" + type: "ReLU" + bottom: "inc3a/conv5_3" + top: "inc3a/conv5_3" +} +layer { + name: "inc3a" + type: "Concat" + bottom: "inc3a/conv1" + bottom: "inc3a/conv3_2" + bottom: "inc3a/conv5_3" + top: "inc3a" +} + +################################################################################ +## Inception 3b +################################################################################ +layer { + name: "inc3b/conv1" + type: "Convolution" + bottom: "inc3a" + top: "inc3b/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3b/conv1/bn" + type: "BatchNorm" + bottom: "inc3b/conv1" + top: "inc3b/conv1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3b/conv1/scale" + type: "Scale" + bottom: "inc3b/conv1" + top: "inc3b/conv1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3b/relu1" + type: "ReLU" + bottom: "inc3b/conv1" + top: "inc3b/conv1" +} +layer { + name: "inc3b/conv3_1" + type: "Convolution" + bottom: "inc3a" + top: "inc3b/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3b/conv3_1/bn" + type: "BatchNorm" + bottom: "inc3b/conv3_1" + top: "inc3b/conv3_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3b/conv3_1/scale" + type: "Scale" + bottom: "inc3b/conv3_1" + top: "inc3b/conv3_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3b/relu3_1" + type: "ReLU" + bottom: "inc3b/conv3_1" + top: "inc3b/conv3_1" +} +layer { + name: "inc3b/conv3_2" + type: "Convolution" + bottom: "inc3b/conv3_1" + top: "inc3b/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 64 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3b/conv3_2/bn" + type: "BatchNorm" + bottom: "inc3b/conv3_2" + top: "inc3b/conv3_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3b/conv3_2/scale" + type: "Scale" + bottom: "inc3b/conv3_2" + top: "inc3b/conv3_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3b/relu3_2" + type: "ReLU" + bottom: "inc3b/conv3_2" + top: "inc3b/conv3_2" +} +layer { + name: "inc3b/conv5_1" + type: "Convolution" + bottom: "inc3a" + top: "inc3b/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3b/conv5_1/bn" + type: "BatchNorm" + bottom: "inc3b/conv5_1" + top: "inc3b/conv5_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3b/conv5_1/scale" + type: "Scale" + bottom: "inc3b/conv5_1" + top: "inc3b/conv5_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3b/relu5_1" + type: "ReLU" + bottom: "inc3b/conv5_1" + top: "inc3b/conv5_1" +} +layer { + name: "inc3b/conv5_2" + type: "Convolution" + bottom: "inc3b/conv5_1" + top: "inc3b/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3b/conv5_2/bn" + type: "BatchNorm" + bottom: "inc3b/conv5_2" + top: "inc3b/conv5_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3b/conv5_2/scale" + type: "Scale" + bottom: "inc3b/conv5_2" + top: "inc3b/conv5_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3b/relu5_2" + type: "ReLU" + bottom: "inc3b/conv5_2" + top: "inc3b/conv5_2" +} +layer { + name: "inc3b/conv5_3" + type: "Convolution" + bottom: "inc3b/conv5_2" + top: "inc3b/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3b/conv5_3/bn" + type: "BatchNorm" + bottom: "inc3b/conv5_3" + top: "inc3b/conv5_3" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3b/conv5_3/scale" + type: "Scale" + bottom: "inc3b/conv5_3" + top: "inc3b/conv5_3" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3b/relu5_3" + type: "ReLU" + bottom: "inc3b/conv5_3" + top: "inc3b/conv5_3" +} +layer { + name: "inc3b" + type: "Concat" + bottom: "inc3b/conv1" + bottom: "inc3b/conv3_2" + bottom: "inc3b/conv5_3" + top: "inc3b" +} + +################################################################################ +## Inception 3c +################################################################################ +layer { + name: "inc3c/conv1" + type: "Convolution" + bottom: "inc3b" + top: "inc3c/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3c/conv1/bn" + type: "BatchNorm" + bottom: "inc3c/conv1" + top: "inc3c/conv1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3c/conv1/scale" + type: "Scale" + bottom: "inc3c/conv1" + top: "inc3c/conv1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3c/relu1" + type: "ReLU" + bottom: "inc3c/conv1" + top: "inc3c/conv1" +} +layer { + name: "inc3c/conv3_1" + type: "Convolution" + bottom: "inc3b" + top: "inc3c/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3c/conv3_1/bn" + type: "BatchNorm" + bottom: "inc3c/conv3_1" + top: "inc3c/conv3_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3c/conv3_1/scale" + type: "Scale" + bottom: "inc3c/conv3_1" + top: "inc3c/conv3_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3c/relu3_1" + type: "ReLU" + bottom: "inc3c/conv3_1" + top: "inc3c/conv3_1" +} +layer { + name: "inc3c/conv3_2" + type: "Convolution" + bottom: "inc3c/conv3_1" + top: "inc3c/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 64 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3c/conv3_2/bn" + type: "BatchNorm" + bottom: "inc3c/conv3_2" + top: "inc3c/conv3_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3c/conv3_2/scale" + type: "Scale" + bottom: "inc3c/conv3_2" + top: "inc3c/conv3_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3c/relu3_2" + type: "ReLU" + bottom: "inc3c/conv3_2" + top: "inc3c/conv3_2" +} +layer { + name: "inc3c/conv5_1" + type: "Convolution" + bottom: "inc3b" + top: "inc3c/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3c/conv5_1/bn" + type: "BatchNorm" + bottom: "inc3c/conv5_1" + top: "inc3c/conv5_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3c/conv5_1/scale" + type: "Scale" + bottom: "inc3c/conv5_1" + top: "inc3c/conv5_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3c/relu5_1" + type: "ReLU" + bottom: "inc3c/conv5_1" + top: "inc3c/conv5_1" +} +layer { + name: "inc3c/conv5_2" + type: "Convolution" + bottom: "inc3c/conv5_1" + top: "inc3c/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3c/conv5_2/bn" + type: "BatchNorm" + bottom: "inc3c/conv5_2" + top: "inc3c/conv5_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3c/conv5_2/scale" + type: "Scale" + bottom: "inc3c/conv5_2" + top: "inc3c/conv5_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3c/relu5_2" + type: "ReLU" + bottom: "inc3c/conv5_2" + top: "inc3c/conv5_2" +} +layer { + name: "inc3c/conv5_3" + type: "Convolution" + bottom: "inc3c/conv5_2" + top: "inc3c/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3c/conv5_3/bn" + type: "BatchNorm" + bottom: "inc3c/conv5_3" + top: "inc3c/conv5_3" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3c/conv5_3/scale" + type: "Scale" + bottom: "inc3c/conv5_3" + top: "inc3c/conv5_3" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3c/relu5_3" + type: "ReLU" + bottom: "inc3c/conv5_3" + top: "inc3c/conv5_3" +} +layer { + name: "inc3c" + type: "Concat" + bottom: "inc3c/conv1" + bottom: "inc3c/conv3_2" + bottom: "inc3c/conv5_3" + top: "inc3c" +} + +################################################################################ +## Inception 3d +################################################################################ +layer { + name: "inc3d/conv1" + type: "Convolution" + bottom: "inc3c" + top: "inc3d/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3d/conv1/bn" + type: "BatchNorm" + bottom: "inc3d/conv1" + top: "inc3d/conv1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3d/conv1/scale" + type: "Scale" + bottom: "inc3d/conv1" + top: "inc3d/conv1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3d/relu1" + type: "ReLU" + bottom: "inc3d/conv1" + top: "inc3d/conv1" +} +layer { + name: "inc3d/conv3_1" + type: "Convolution" + bottom: "inc3c" + top: "inc3d/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3d/conv3_1/bn" + type: "BatchNorm" + bottom: "inc3d/conv3_1" + top: "inc3d/conv3_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3d/conv3_1/scale" + type: "Scale" + bottom: "inc3d/conv3_1" + top: "inc3d/conv3_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3d/relu3_1" + type: "ReLU" + bottom: "inc3d/conv3_1" + top: "inc3d/conv3_1" +} +layer { + name: "inc3d/conv3_2" + type: "Convolution" + bottom: "inc3d/conv3_1" + top: "inc3d/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 64 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3d/conv3_2/bn" + type: "BatchNorm" + bottom: "inc3d/conv3_2" + top: "inc3d/conv3_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3d/conv3_2/scale" + type: "Scale" + bottom: "inc3d/conv3_2" + top: "inc3d/conv3_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3d/relu3_2" + type: "ReLU" + bottom: "inc3d/conv3_2" + top: "inc3d/conv3_2" +} +layer { + name: "inc3d/conv5_1" + type: "Convolution" + bottom: "inc3c" + top: "inc3d/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3d/conv5_1/bn" + type: "BatchNorm" + bottom: "inc3d/conv5_1" + top: "inc3d/conv5_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3d/conv5_1/scale" + type: "Scale" + bottom: "inc3d/conv5_1" + top: "inc3d/conv5_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3d/relu5_1" + type: "ReLU" + bottom: "inc3d/conv5_1" + top: "inc3d/conv5_1" +} +layer { + name: "inc3d/conv5_2" + type: "Convolution" + bottom: "inc3d/conv5_1" + top: "inc3d/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3d/conv5_2/bn" + type: "BatchNorm" + bottom: "inc3d/conv5_2" + top: "inc3d/conv5_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3d/conv5_2/scale" + type: "Scale" + bottom: "inc3d/conv5_2" + top: "inc3d/conv5_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3d/relu5_2" + type: "ReLU" + bottom: "inc3d/conv5_2" + top: "inc3d/conv5_2" +} +layer { + name: "inc3d/conv5_3" + type: "Convolution" + bottom: "inc3d/conv5_2" + top: "inc3d/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3d/conv5_3/bn" + type: "BatchNorm" + bottom: "inc3d/conv5_3" + top: "inc3d/conv5_3" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3d/conv5_3/scale" + type: "Scale" + bottom: "inc3d/conv5_3" + top: "inc3d/conv5_3" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3d/relu5_3" + type: "ReLU" + bottom: "inc3d/conv5_3" + top: "inc3d/conv5_3" +} +layer { + name: "inc3d" + type: "Concat" + bottom: "inc3d/conv1" + bottom: "inc3d/conv3_2" + bottom: "inc3d/conv5_3" + top: "inc3d" +} + +################################################################################ +## Inception 3e +################################################################################ +layer { + name: "inc3e/conv1" + type: "Convolution" + bottom: "inc3d" + top: "inc3e/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3e/conv1/bn" + type: "BatchNorm" + bottom: "inc3e/conv1" + top: "inc3e/conv1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3e/conv1/scale" + type: "Scale" + bottom: "inc3e/conv1" + top: "inc3e/conv1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3e/relu1" + type: "ReLU" + bottom: "inc3e/conv1" + top: "inc3e/conv1" +} +layer { + name: "inc3e/conv3_1" + type: "Convolution" + bottom: "inc3d" + top: "inc3e/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3e/conv3_1/bn" + type: "BatchNorm" + bottom: "inc3e/conv3_1" + top: "inc3e/conv3_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3e/conv3_1/scale" + type: "Scale" + bottom: "inc3e/conv3_1" + top: "inc3e/conv3_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3e/relu3_1" + type: "ReLU" + bottom: "inc3e/conv3_1" + top: "inc3e/conv3_1" +} +layer { + name: "inc3e/conv3_2" + type: "Convolution" + bottom: "inc3e/conv3_1" + top: "inc3e/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 64 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3e/conv3_2/bn" + type: "BatchNorm" + bottom: "inc3e/conv3_2" + top: "inc3e/conv3_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3e/conv3_2/scale" + type: "Scale" + bottom: "inc3e/conv3_2" + top: "inc3e/conv3_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3e/relu3_2" + type: "ReLU" + bottom: "inc3e/conv3_2" + top: "inc3e/conv3_2" +} +layer { + name: "inc3e/conv5_1" + type: "Convolution" + bottom: "inc3d" + top: "inc3e/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3e/conv5_1/bn" + type: "BatchNorm" + bottom: "inc3e/conv5_1" + top: "inc3e/conv5_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3e/conv5_1/scale" + type: "Scale" + bottom: "inc3e/conv5_1" + top: "inc3e/conv5_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3e/relu5_1" + type: "ReLU" + bottom: "inc3e/conv5_1" + top: "inc3e/conv5_1" +} +layer { + name: "inc3e/conv5_2" + type: "Convolution" + bottom: "inc3e/conv5_1" + top: "inc3e/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3e/conv5_2/bn" + type: "BatchNorm" + bottom: "inc3e/conv5_2" + top: "inc3e/conv5_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3e/conv5_2/scale" + type: "Scale" + bottom: "inc3e/conv5_2" + top: "inc3e/conv5_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3e/relu5_2" + type: "ReLU" + bottom: "inc3e/conv5_2" + top: "inc3e/conv5_2" +} +layer { + name: "inc3e/conv5_3" + type: "Convolution" + bottom: "inc3e/conv5_2" + top: "inc3e/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3e/conv5_3/bn" + type: "BatchNorm" + bottom: "inc3e/conv5_3" + top: "inc3e/conv5_3" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc3e/conv5_3/scale" + type: "Scale" + bottom: "inc3e/conv5_3" + top: "inc3e/conv5_3" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc3e/relu5_3" + type: "ReLU" + bottom: "inc3e/conv5_3" + top: "inc3e/conv5_3" +} +layer { + name: "inc3e" + type: "Concat" + bottom: "inc3e/conv1" + bottom: "inc3e/conv3_2" + bottom: "inc3e/conv5_3" + top: "inc3e" +} + +################################################################################ +## Inception 4a +################################################################################ +layer { + name: "inc4a/pool1" + type: "Pooling" + bottom: "inc3e" + top: "inc4a/pool1" + pooling_param { + kernel_size: 3 stride: 2 pad: 0 + pool: MAX + } +} +layer { + name: "inc4a/conv1" + type: "Convolution" + bottom: "inc4a/pool1" + top: "inc4a/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 128 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4a/conv1/bn" + type: "BatchNorm" + bottom: "inc4a/conv1" + top: "inc4a/conv1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4a/conv1/scale" + type: "Scale" + bottom: "inc4a/conv1" + top: "inc4a/conv1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4a/relu1" + type: "ReLU" + bottom: "inc4a/conv1" + top: "inc4a/conv1" +} +layer { + name: "inc4a/conv3_1" + type: "Convolution" + bottom: "inc3e" + top: "inc4a/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4a/conv3_1/bn" + type: "BatchNorm" + bottom: "inc4a/conv3_1" + top: "inc4a/conv3_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4a/conv3_1/scale" + type: "Scale" + bottom: "inc4a/conv3_1" + top: "inc4a/conv3_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4a/relu3_1" + type: "ReLU" + bottom: "inc4a/conv3_1" + top: "inc4a/conv3_1" +} +layer { + name: "inc4a/conv3_2" + type: "Convolution" + bottom: "inc4a/conv3_1" + top: "inc4a/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 3 stride: 2 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4a/conv3_2/bn" + type: "BatchNorm" + bottom: "inc4a/conv3_2" + top: "inc4a/conv3_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4a/conv3_2/scale" + type: "Scale" + bottom: "inc4a/conv3_2" + top: "inc4a/conv3_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4a/relu3_2" + type: "ReLU" + bottom: "inc4a/conv3_2" + top: "inc4a/conv3_2" +} +layer { + name: "inc4a/conv5_1" + type: "Convolution" + bottom: "inc3e" + top: "inc4a/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4a/conv5_1/bn" + type: "BatchNorm" + bottom: "inc4a/conv5_1" + top: "inc4a/conv5_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4a/conv5_1/scale" + type: "Scale" + bottom: "inc4a/conv5_1" + top: "inc4a/conv5_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4a/relu5_1" + type: "ReLU" + bottom: "inc4a/conv5_1" + top: "inc4a/conv5_1" +} +layer { + name: "inc4a/conv5_2" + type: "Convolution" + bottom: "inc4a/conv5_1" + top: "inc4a/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4a/conv5_2/bn" + type: "BatchNorm" + bottom: "inc4a/conv5_2" + top: "inc4a/conv5_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4a/conv5_2/scale" + type: "Scale" + bottom: "inc4a/conv5_2" + top: "inc4a/conv5_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4a/relu5_2" + type: "ReLU" + bottom: "inc4a/conv5_2" + top: "inc4a/conv5_2" +} +layer { + name: "inc4a/conv5_3" + type: "Convolution" + bottom: "inc4a/conv5_2" + top: "inc4a/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 stride: 2 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4a/conv5_3/bn" + type: "BatchNorm" + bottom: "inc4a/conv5_3" + top: "inc4a/conv5_3" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4a/conv5_3/scale" + type: "Scale" + bottom: "inc4a/conv5_3" + top: "inc4a/conv5_3" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4a/relu5_3" + type: "ReLU" + bottom: "inc4a/conv5_3" + top: "inc4a/conv5_3" +} +layer { + name: "inc4a" + type: "Concat" + bottom: "inc4a/conv1" + bottom: "inc4a/conv3_2" + bottom: "inc4a/conv5_3" + top: "inc4a" +} + +################################################################################ +## Inception 4b +################################################################################ +layer { + name: "inc4b/conv1" + type: "Convolution" + bottom: "inc4a" + top: "inc4b/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 128 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4b/conv1/bn" + type: "BatchNorm" + bottom: "inc4b/conv1" + top: "inc4b/conv1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4b/conv1/scale" + type: "Scale" + bottom: "inc4b/conv1" + top: "inc4b/conv1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4b/relu1" + type: "ReLU" + bottom: "inc4b/conv1" + top: "inc4b/conv1" +} +layer { + name: "inc4b/conv3_1" + type: "Convolution" + bottom: "inc4a" + top: "inc4b/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4b/conv3_1/bn" + type: "BatchNorm" + bottom: "inc4b/conv3_1" + top: "inc4b/conv3_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4b/conv3_1/scale" + type: "Scale" + bottom: "inc4b/conv3_1" + top: "inc4b/conv3_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4b/relu3_1" + type: "ReLU" + bottom: "inc4b/conv3_1" + top: "inc4b/conv3_1" +} +layer { + name: "inc4b/conv3_2" + type: "Convolution" + bottom: "inc4b/conv3_1" + top: "inc4b/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4b/conv3_2/bn" + type: "BatchNorm" + bottom: "inc4b/conv3_2" + top: "inc4b/conv3_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4b/conv3_2/scale" + type: "Scale" + bottom: "inc4b/conv3_2" + top: "inc4b/conv3_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4b/relu3_2" + type: "ReLU" + bottom: "inc4b/conv3_2" + top: "inc4b/conv3_2" +} +layer { + name: "inc4b/conv5_1" + type: "Convolution" + bottom: "inc4a" + top: "inc4b/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4b/conv5_1/bn" + type: "BatchNorm" + bottom: "inc4b/conv5_1" + top: "inc4b/conv5_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4b/conv5_1/scale" + type: "Scale" + bottom: "inc4b/conv5_1" + top: "inc4b/conv5_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4b/relu5_1" + type: "ReLU" + bottom: "inc4b/conv5_1" + top: "inc4b/conv5_1" +} +layer { + name: "inc4b/conv5_2" + type: "Convolution" + bottom: "inc4b/conv5_1" + top: "inc4b/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4b/conv5_2/bn" + type: "BatchNorm" + bottom: "inc4b/conv5_2" + top: "inc4b/conv5_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4b/conv5_2/scale" + type: "Scale" + bottom: "inc4b/conv5_2" + top: "inc4b/conv5_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4b/relu5_2" + type: "ReLU" + bottom: "inc4b/conv5_2" + top: "inc4b/conv5_2" +} +layer { + name: "inc4b/conv5_3" + type: "Convolution" + bottom: "inc4b/conv5_2" + top: "inc4b/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4b/conv5_3/bn" + type: "BatchNorm" + bottom: "inc4b/conv5_3" + top: "inc4b/conv5_3" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4b/conv5_3/scale" + type: "Scale" + bottom: "inc4b/conv5_3" + top: "inc4b/conv5_3" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4b/relu5_3" + type: "ReLU" + bottom: "inc4b/conv5_3" + top: "inc4b/conv5_3" +} +layer { + name: "inc4b" + type: "Concat" + bottom: "inc4b/conv1" + bottom: "inc4b/conv3_2" + bottom: "inc4b/conv5_3" + top: "inc4b" +} + +################################################################################ +## Inception 4c +################################################################################ +layer { + name: "inc4c/conv1" + type: "Convolution" + bottom: "inc4b" + top: "inc4c/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 128 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4c/conv1/bn" + type: "BatchNorm" + bottom: "inc4c/conv1" + top: "inc4c/conv1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4c/conv1/scale" + type: "Scale" + bottom: "inc4c/conv1" + top: "inc4c/conv1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4c/relu1" + type: "ReLU" + bottom: "inc4c/conv1" + top: "inc4c/conv1" +} +layer { + name: "inc4c/conv3_1" + type: "Convolution" + bottom: "inc4b" + top: "inc4c/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4c/conv3_1/bn" + type: "BatchNorm" + bottom: "inc4c/conv3_1" + top: "inc4c/conv3_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4c/conv3_1/scale" + type: "Scale" + bottom: "inc4c/conv3_1" + top: "inc4c/conv3_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4c/relu3_1" + type: "ReLU" + bottom: "inc4c/conv3_1" + top: "inc4c/conv3_1" +} +layer { + name: "inc4c/conv3_2" + type: "Convolution" + bottom: "inc4c/conv3_1" + top: "inc4c/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4c/conv3_2/bn" + type: "BatchNorm" + bottom: "inc4c/conv3_2" + top: "inc4c/conv3_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4c/conv3_2/scale" + type: "Scale" + bottom: "inc4c/conv3_2" + top: "inc4c/conv3_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4c/relu3_2" + type: "ReLU" + bottom: "inc4c/conv3_2" + top: "inc4c/conv3_2" +} +layer { + name: "inc4c/conv5_1" + type: "Convolution" + bottom: "inc4b" + top: "inc4c/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4c/conv5_1/bn" + type: "BatchNorm" + bottom: "inc4c/conv5_1" + top: "inc4c/conv5_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4c/conv5_1/scale" + type: "Scale" + bottom: "inc4c/conv5_1" + top: "inc4c/conv5_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4c/relu5_1" + type: "ReLU" + bottom: "inc4c/conv5_1" + top: "inc4c/conv5_1" +} +layer { + name: "inc4c/conv5_2" + type: "Convolution" + bottom: "inc4c/conv5_1" + top: "inc4c/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4c/conv5_2/bn" + type: "BatchNorm" + bottom: "inc4c/conv5_2" + top: "inc4c/conv5_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4c/conv5_2/scale" + type: "Scale" + bottom: "inc4c/conv5_2" + top: "inc4c/conv5_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4c/relu5_2" + type: "ReLU" + bottom: "inc4c/conv5_2" + top: "inc4c/conv5_2" +} +layer { + name: "inc4c/conv5_3" + type: "Convolution" + bottom: "inc4c/conv5_2" + top: "inc4c/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4c/conv5_3/bn" + type: "BatchNorm" + bottom: "inc4c/conv5_3" + top: "inc4c/conv5_3" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4c/conv5_3/scale" + type: "Scale" + bottom: "inc4c/conv5_3" + top: "inc4c/conv5_3" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4c/relu5_3" + type: "ReLU" + bottom: "inc4c/conv5_3" + top: "inc4c/conv5_3" +} +layer { + name: "inc4c" + type: "Concat" + bottom: "inc4c/conv1" + bottom: "inc4c/conv3_2" + bottom: "inc4c/conv5_3" + top: "inc4c" +} + +################################################################################ +## Inception 4d +################################################################################ +layer { + name: "inc4d/conv1" + type: "Convolution" + bottom: "inc4c" + top: "inc4d/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 128 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4d/conv1/bn" + type: "BatchNorm" + bottom: "inc4d/conv1" + top: "inc4d/conv1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4d/conv1/scale" + type: "Scale" + bottom: "inc4d/conv1" + top: "inc4d/conv1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4d/relu1" + type: "ReLU" + bottom: "inc4d/conv1" + top: "inc4d/conv1" +} +layer { + name: "inc4d/conv3_1" + type: "Convolution" + bottom: "inc4c" + top: "inc4d/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4d/conv3_1/bn" + type: "BatchNorm" + bottom: "inc4d/conv3_1" + top: "inc4d/conv3_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4d/conv3_1/scale" + type: "Scale" + bottom: "inc4d/conv3_1" + top: "inc4d/conv3_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4d/relu3_1" + type: "ReLU" + bottom: "inc4d/conv3_1" + top: "inc4d/conv3_1" +} +layer { + name: "inc4d/conv3_2" + type: "Convolution" + bottom: "inc4d/conv3_1" + top: "inc4d/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4d/conv3_2/bn" + type: "BatchNorm" + bottom: "inc4d/conv3_2" + top: "inc4d/conv3_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4d/conv3_2/scale" + type: "Scale" + bottom: "inc4d/conv3_2" + top: "inc4d/conv3_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4d/relu3_2" + type: "ReLU" + bottom: "inc4d/conv3_2" + top: "inc4d/conv3_2" +} +layer { + name: "inc4d/conv5_1" + type: "Convolution" + bottom: "inc4c" + top: "inc4d/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4d/conv5_1/bn" + type: "BatchNorm" + bottom: "inc4d/conv5_1" + top: "inc4d/conv5_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4d/conv5_1/scale" + type: "Scale" + bottom: "inc4d/conv5_1" + top: "inc4d/conv5_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4d/relu5_1" + type: "ReLU" + bottom: "inc4d/conv5_1" + top: "inc4d/conv5_1" +} +layer { + name: "inc4d/conv5_2" + type: "Convolution" + bottom: "inc4d/conv5_1" + top: "inc4d/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4d/conv5_2/bn" + type: "BatchNorm" + bottom: "inc4d/conv5_2" + top: "inc4d/conv5_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4d/conv5_2/scale" + type: "Scale" + bottom: "inc4d/conv5_2" + top: "inc4d/conv5_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4d/relu5_2" + type: "ReLU" + bottom: "inc4d/conv5_2" + top: "inc4d/conv5_2" +} +layer { + name: "inc4d/conv5_3" + type: "Convolution" + bottom: "inc4d/conv5_2" + top: "inc4d/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4d/conv5_3/bn" + type: "BatchNorm" + bottom: "inc4d/conv5_3" + top: "inc4d/conv5_3" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4d/conv5_3/scale" + type: "Scale" + bottom: "inc4d/conv5_3" + top: "inc4d/conv5_3" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4d/relu5_3" + type: "ReLU" + bottom: "inc4d/conv5_3" + top: "inc4d/conv5_3" +} +layer { + name: "inc4d" + type: "Concat" + bottom: "inc4d/conv1" + bottom: "inc4d/conv3_2" + bottom: "inc4d/conv5_3" + top: "inc4d" +} + +################################################################################ +## Inception 4e +################################################################################ +layer { + name: "inc4e/conv1" + type: "Convolution" + bottom: "inc4d" + top: "inc4e/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 128 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4e/conv1/bn" + type: "BatchNorm" + bottom: "inc4e/conv1" + top: "inc4e/conv1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4e/conv1/scale" + type: "Scale" + bottom: "inc4e/conv1" + top: "inc4e/conv1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4e/relu1" + type: "ReLU" + bottom: "inc4e/conv1" + top: "inc4e/conv1" +} +layer { + name: "inc4e/conv3_1" + type: "Convolution" + bottom: "inc4d" + top: "inc4e/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4e/conv3_1/bn" + type: "BatchNorm" + bottom: "inc4e/conv3_1" + top: "inc4e/conv3_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4e/conv3_1/scale" + type: "Scale" + bottom: "inc4e/conv3_1" + top: "inc4e/conv3_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4e/relu3_1" + type: "ReLU" + bottom: "inc4e/conv3_1" + top: "inc4e/conv3_1" +} +layer { + name: "inc4e/conv3_2" + type: "Convolution" + bottom: "inc4e/conv3_1" + top: "inc4e/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4e/conv3_2/bn" + type: "BatchNorm" + bottom: "inc4e/conv3_2" + top: "inc4e/conv3_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4e/conv3_2/scale" + type: "Scale" + bottom: "inc4e/conv3_2" + top: "inc4e/conv3_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4e/relu3_2" + type: "ReLU" + bottom: "inc4e/conv3_2" + top: "inc4e/conv3_2" +} +layer { + name: "inc4e/conv5_1" + type: "Convolution" + bottom: "inc4d" + top: "inc4e/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4e/conv5_1/bn" + type: "BatchNorm" + bottom: "inc4e/conv5_1" + top: "inc4e/conv5_1" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4e/conv5_1/scale" + type: "Scale" + bottom: "inc4e/conv5_1" + top: "inc4e/conv5_1" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4e/relu5_1" + type: "ReLU" + bottom: "inc4e/conv5_1" + top: "inc4e/conv5_1" +} +layer { + name: "inc4e/conv5_2" + type: "Convolution" + bottom: "inc4e/conv5_1" + top: "inc4e/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4e/conv5_2/bn" + type: "BatchNorm" + bottom: "inc4e/conv5_2" + top: "inc4e/conv5_2" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4e/conv5_2/scale" + type: "Scale" + bottom: "inc4e/conv5_2" + top: "inc4e/conv5_2" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4e/relu5_2" + type: "ReLU" + bottom: "inc4e/conv5_2" + top: "inc4e/conv5_2" +} +layer { + name: "inc4e/conv5_3" + type: "Convolution" + bottom: "inc4e/conv5_2" + top: "inc4e/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4e/conv5_3/bn" + type: "BatchNorm" + bottom: "inc4e/conv5_3" + top: "inc4e/conv5_3" + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + param { lr_mult: 0 decay_mult: 0 } + batch_norm_param { use_global_stats: true } +} +layer { + name: "inc4e/conv5_3/scale" + type: "Scale" + bottom: "inc4e/conv5_3" + top: "inc4e/conv5_3" + param { lr_mult: 0.1 decay_mult: 0 } + param { lr_mult: 0.1 decay_mult: 0 } + scale_param { bias_term: true } +} +layer { + name: "inc4e/relu5_3" + type: "ReLU" + bottom: "inc4e/conv5_3" + top: "inc4e/conv5_3" +} +layer { + name: "inc4e" + type: "Concat" + bottom: "inc4e/conv1" + bottom: "inc4e/conv3_2" + bottom: "inc4e/conv5_3" + top: "inc4e" +} + + +################################################################################ +## hyper feature +################################################################################ +layer { + name: "downsample" + type: "Pooling" + bottom: "conv3" + top: "downsample" + pooling_param { + kernel_size: 3 stride: 2 pad: 0 + pool: MAX + } +} +layer { + name: "upsample" + type: "Deconvolution" + bottom: "inc4e" + top: "upsample" + param { lr_mult: 0 decay_mult: 0 } + convolution_param { + num_output: 256 + kernel_size: 4 stride: 2 pad: 1 + group: 256 + weight_filler: { type: "bilinear" } + bias_term: false + } +} +layer { + name: "concat" + type: "Concat" + bottom: "downsample" + bottom: "inc3e" + bottom: "upsample" + top: "concat" + concat_param { axis: 1 } +} +layer { + name: "convf" + type: "Convolution" + bottom: "concat" + top: "convf" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + convolution_param { + num_output: 256 + kernel_size: 1 stride: 1 pad: 0 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "reluf" + type: "ReLU" + bottom: "convf" + top: "convf" +} + + +################################################################################ +## RPN +################################################################################ + +### RPN ### +layer { + name: "rpn_conv1" + type: "Convolution" + bottom: "convf" + top: "rpn_conv1" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + convolution_param { + num_output: 256 + kernel_size: 1 stride: 1 pad: 0 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu1" + type: "ReLU" + bottom: "rpn_conv1" + top: "rpn_conv1" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_cls_score" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + convolution_param { + num_output: 50 + kernel_size: 1 stride: 1 pad: 0 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_bbox_pred" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + convolution_param { + num_output: 100 + kernel_size: 1 stride: 1 pad: 0 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + include { phase: TRAIN } + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "{'feat_stride': 16, 'ratios': [0.5, 0.667, 1, 1.5, 2], 'scales': [3, 6, 9, 16, 32]}" + } +} +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_loss_cls" + include { phase: TRAIN } + loss_weight: 1 + loss_param { ignore_label: -1 normalize: true } +} +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: "rpn_bbox_inside_weights" + bottom: "rpn_bbox_outside_weights" + top: "rpn_loss_bbox" + include { phase: TRAIN } + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + +################################################################################ +## Proposal +################################################################################ +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 50 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + bottom: 'gt_boxes' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + include { phase: TRAIN } + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer2' + param_str: "{'feat_stride': 16, 'num_classes': 21, 'ratios': [0.5, 0.667, 1, 1.5, 2], 'scales': [3, 6, 9, 16, 32]}" + } +} +layer { + name: 'proposal' + type: 'Proposal' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + top: 'scores' + include { phase: TEST } + proposal_param { + ratio: 0.5 ratio: 0.667 ratio: 1.0 ratio: 1.5 ratio: 2.0 + scale: 3 scale: 6 scale: 9 scale: 16 scale: 32 + base_size: 16 + feat_stride: 16 + pre_nms_topn: 6000 + post_nms_topn: 200 + nms_thresh: 0.7 + min_size: 16 + } +} + + +################################################################################ +## RCNN +################################################################################ +layer { + name: "roi_pool_conv5" + type: "ROIPooling" + bottom: "convf" + bottom: "rois" + top: "roi_pool_conv5" + roi_pooling_param { + pooled_w: 6 pooled_h: 6 + spatial_scale: 0.0625 # 1/16 + } +} +layer { + name: "fc6_L" + type: "InnerProduct" + bottom: "roi_pool_conv5" + top: "fc6_L" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + inner_product_param { + num_output: 512 + weight_filler { type: "xavier" std: 0.005 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "fc6_U" + type: "InnerProduct" + bottom: "fc6_L" + top: "fc6_U" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + inner_product_param { + num_output: 4096 + weight_filler { type: "xavier" std: 0.005 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "relu6" + type: "ReLU" + bottom: "fc6_U" + top: "fc6_U" +} + +################################################################################ +## fc 7 +################################################################################ +layer { + name: "fc7_L" + type: "InnerProduct" + bottom: "fc6_U" + top: "fc7_L" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + inner_product_param { + num_output: 128 + weight_filler { type: "xavier" std: 0.005 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "fc7_U" + type: "InnerProduct" + bottom: "fc7_L" + top: "fc7_U" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + inner_product_param { + num_output: 4096 + weight_filler { type: "xavier" std: 0.005 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "relu7" + type: "ReLU" + bottom: "fc7_U" + top: "fc7_U" +} + +################################################################################ +## output +################################################################################ +layer { + name: "cls_score" + type: "InnerProduct" + bottom: "fc7_U" + top: "cls_score" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + inner_product_param { + num_output: 21 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "bbox_pred" + type: "InnerProduct" + bottom: "fc7_U" + top: "bbox_pred" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + inner_product_param { + num_output: 84 + weight_filler { type: "gaussian" std: 0.001 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "loss_cls" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels" + propagate_down: 1 + propagate_down: 0 + top: "loss_cls" + include { phase: TRAIN } + loss_weight: 1 + loss_param { ignore_label: -1 normalize: true } +} +layer { + name: "loss_bbox" + type: "SmoothL1Loss" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_inside_weights" + bottom: "bbox_outside_weights" + top: "loss_bbox" + include { phase: TRAIN } + loss_weight: 1 +} +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob" + include { phase: TEST } + loss_param { + ignore_label: -1 + normalize: true + } +} diff --git a/models/pvanet/lite/test.pt b/models/pvanet/lite/test.pt new file mode 100644 index 000000000..c2e2fe222 --- /dev/null +++ b/models/pvanet/lite/test.pt @@ -0,0 +1,1651 @@ +name: "PVANET-lite" + +################################################################################ +## Input +################################################################################ + +layer { + name: "input-data" + type: "DummyData" + top: "data" + top: "im_info" + dummy_data_param { + shape { dim: 1 dim: 3 dim: 640 dim: 1056 } + shape { dim: 1 dim: 4 } + } +} + + +################################################################################ +## Conv 1 +################################################################################ +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 + kernel_size: 4 stride: 2 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "relu1" + type: "ReLU" + bottom: "conv1" + top: "conv1" +} + +################################################################################ +## Conv 2 +################################################################################ +layer { + name: "conv2" + type: "Convolution" + bottom: "conv1" + top: "conv2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 48 + kernel_size: 3 stride: 2 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "relu2" + type: "ReLU" + bottom: "conv2" + top: "conv2" +} + +################################################################################ +## Conv 3 +################################################################################ +layer { + name: "conv3" + type: "Convolution" + bottom: "conv2" + top: "conv3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 + kernel_size: 3 stride: 2 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "relu3" + type: "ReLU" + bottom: "conv3" + top: "conv3" +} + +################################################################################ +## Inception 3a +################################################################################ +layer { + name: "inc3a/pool1" + type: "Pooling" + bottom: "conv3" + top: "inc3a/pool1" + pooling_param { + kernel_size: 3 stride: 2 pad: 0 + pool: MAX + } +} +layer { + name: "inc3a/conv1" + type: "Convolution" + bottom: "inc3a/pool1" + top: "inc3a/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3a/relu1" + type: "ReLU" + bottom: "inc3a/conv1" + top: "inc3a/conv1" +} +layer { + name: "inc3a/conv3_1" + type: "Convolution" + bottom: "conv3" + top: "inc3a/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3a/relu3_1" + type: "ReLU" + bottom: "inc3a/conv3_1" + top: "inc3a/conv3_1" +} +layer { + name: "inc3a/conv3_2" + type: "Convolution" + bottom: "inc3a/conv3_1" + top: "inc3a/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 64 kernel_size: 3 stride: 2 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3a/relu3_2" + type: "ReLU" + bottom: "inc3a/conv3_2" + top: "inc3a/conv3_2" +} +layer { + name: "inc3a/conv5_1" + type: "Convolution" + bottom: "conv3" + top: "inc3a/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3a/relu5_1" + type: "ReLU" + bottom: "inc3a/conv5_1" + top: "inc3a/conv5_1" +} +layer { + name: "inc3a/conv5_2" + type: "Convolution" + bottom: "inc3a/conv5_1" + top: "inc3a/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3a/relu5_2" + type: "ReLU" + bottom: "inc3a/conv5_2" + top: "inc3a/conv5_2" +} +layer { + name: "inc3a/conv5_3" + type: "Convolution" + bottom: "inc3a/conv5_2" + top: "inc3a/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 stride: 2 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3a/relu5_3" + type: "ReLU" + bottom: "inc3a/conv5_3" + top: "inc3a/conv5_3" +} +layer { + name: "inc3a" + type: "Concat" + bottom: "inc3a/conv1" + bottom: "inc3a/conv3_2" + bottom: "inc3a/conv5_3" + top: "inc3a" +} + +################################################################################ +## Inception 3b +################################################################################ +layer { + name: "inc3b/conv1" + type: "Convolution" + bottom: "inc3a" + top: "inc3b/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3b/relu1" + type: "ReLU" + bottom: "inc3b/conv1" + top: "inc3b/conv1" +} +layer { + name: "inc3b/conv3_1" + type: "Convolution" + bottom: "inc3a" + top: "inc3b/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3b/relu3_1" + type: "ReLU" + bottom: "inc3b/conv3_1" + top: "inc3b/conv3_1" +} +layer { + name: "inc3b/conv3_2" + type: "Convolution" + bottom: "inc3b/conv3_1" + top: "inc3b/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 64 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3b/relu3_2" + type: "ReLU" + bottom: "inc3b/conv3_2" + top: "inc3b/conv3_2" +} +layer { + name: "inc3b/conv5_1" + type: "Convolution" + bottom: "inc3a" + top: "inc3b/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3b/relu5_1" + type: "ReLU" + bottom: "inc3b/conv5_1" + top: "inc3b/conv5_1" +} +layer { + name: "inc3b/conv5_2" + type: "Convolution" + bottom: "inc3b/conv5_1" + top: "inc3b/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3b/relu5_2" + type: "ReLU" + bottom: "inc3b/conv5_2" + top: "inc3b/conv5_2" +} +layer { + name: "inc3b/conv5_3" + type: "Convolution" + bottom: "inc3b/conv5_2" + top: "inc3b/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3b/relu5_3" + type: "ReLU" + bottom: "inc3b/conv5_3" + top: "inc3b/conv5_3" +} +layer { + name: "inc3b" + type: "Concat" + bottom: "inc3b/conv1" + bottom: "inc3b/conv3_2" + bottom: "inc3b/conv5_3" + top: "inc3b" +} + +################################################################################ +## Inception 3c +################################################################################ +layer { + name: "inc3c/conv1" + type: "Convolution" + bottom: "inc3b" + top: "inc3c/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3c/relu1" + type: "ReLU" + bottom: "inc3c/conv1" + top: "inc3c/conv1" +} +layer { + name: "inc3c/conv3_1" + type: "Convolution" + bottom: "inc3b" + top: "inc3c/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3c/relu3_1" + type: "ReLU" + bottom: "inc3c/conv3_1" + top: "inc3c/conv3_1" +} +layer { + name: "inc3c/conv3_2" + type: "Convolution" + bottom: "inc3c/conv3_1" + top: "inc3c/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 64 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3c/relu3_2" + type: "ReLU" + bottom: "inc3c/conv3_2" + top: "inc3c/conv3_2" +} +layer { + name: "inc3c/conv5_1" + type: "Convolution" + bottom: "inc3b" + top: "inc3c/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3c/relu5_1" + type: "ReLU" + bottom: "inc3c/conv5_1" + top: "inc3c/conv5_1" +} +layer { + name: "inc3c/conv5_2" + type: "Convolution" + bottom: "inc3c/conv5_1" + top: "inc3c/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3c/relu5_2" + type: "ReLU" + bottom: "inc3c/conv5_2" + top: "inc3c/conv5_2" +} +layer { + name: "inc3c/conv5_3" + type: "Convolution" + bottom: "inc3c/conv5_2" + top: "inc3c/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3c/relu5_3" + type: "ReLU" + bottom: "inc3c/conv5_3" + top: "inc3c/conv5_3" +} +layer { + name: "inc3c" + type: "Concat" + bottom: "inc3c/conv1" + bottom: "inc3c/conv3_2" + bottom: "inc3c/conv5_3" + top: "inc3c" +} + +################################################################################ +## Inception 3d +################################################################################ +layer { + name: "inc3d/conv1" + type: "Convolution" + bottom: "inc3c" + top: "inc3d/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3d/relu1" + type: "ReLU" + bottom: "inc3d/conv1" + top: "inc3d/conv1" +} +layer { + name: "inc3d/conv3_1" + type: "Convolution" + bottom: "inc3c" + top: "inc3d/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3d/relu3_1" + type: "ReLU" + bottom: "inc3d/conv3_1" + top: "inc3d/conv3_1" +} +layer { + name: "inc3d/conv3_2" + type: "Convolution" + bottom: "inc3d/conv3_1" + top: "inc3d/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 64 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3d/relu3_2" + type: "ReLU" + bottom: "inc3d/conv3_2" + top: "inc3d/conv3_2" +} +layer { + name: "inc3d/conv5_1" + type: "Convolution" + bottom: "inc3c" + top: "inc3d/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3d/relu5_1" + type: "ReLU" + bottom: "inc3d/conv5_1" + top: "inc3d/conv5_1" +} +layer { + name: "inc3d/conv5_2" + type: "Convolution" + bottom: "inc3d/conv5_1" + top: "inc3d/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3d/relu5_2" + type: "ReLU" + bottom: "inc3d/conv5_2" + top: "inc3d/conv5_2" +} +layer { + name: "inc3d/conv5_3" + type: "Convolution" + bottom: "inc3d/conv5_2" + top: "inc3d/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3d/relu5_3" + type: "ReLU" + bottom: "inc3d/conv5_3" + top: "inc3d/conv5_3" +} +layer { + name: "inc3d" + type: "Concat" + bottom: "inc3d/conv1" + bottom: "inc3d/conv3_2" + bottom: "inc3d/conv5_3" + top: "inc3d" +} + +################################################################################ +## Inception 3e +################################################################################ +layer { + name: "inc3e/conv1" + type: "Convolution" + bottom: "inc3d" + top: "inc3e/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3e/relu1" + type: "ReLU" + bottom: "inc3e/conv1" + top: "inc3e/conv1" +} +layer { + name: "inc3e/conv3_1" + type: "Convolution" + bottom: "inc3d" + top: "inc3e/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3e/relu3_1" + type: "ReLU" + bottom: "inc3e/conv3_1" + top: "inc3e/conv3_1" +} +layer { + name: "inc3e/conv3_2" + type: "Convolution" + bottom: "inc3e/conv3_1" + top: "inc3e/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 64 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3e/relu3_2" + type: "ReLU" + bottom: "inc3e/conv3_2" + top: "inc3e/conv3_2" +} +layer { + name: "inc3e/conv5_1" + type: "Convolution" + bottom: "inc3d" + top: "inc3e/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3e/relu5_1" + type: "ReLU" + bottom: "inc3e/conv5_1" + top: "inc3e/conv5_1" +} +layer { + name: "inc3e/conv5_2" + type: "Convolution" + bottom: "inc3e/conv5_1" + top: "inc3e/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3e/relu5_2" + type: "ReLU" + bottom: "inc3e/conv5_2" + top: "inc3e/conv5_2" +} +layer { + name: "inc3e/conv5_3" + type: "Convolution" + bottom: "inc3e/conv5_2" + top: "inc3e/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc3e/relu5_3" + type: "ReLU" + bottom: "inc3e/conv5_3" + top: "inc3e/conv5_3" +} +layer { + name: "inc3e" + type: "Concat" + bottom: "inc3e/conv1" + bottom: "inc3e/conv3_2" + bottom: "inc3e/conv5_3" + top: "inc3e" +} + +################################################################################ +## Inception 4a +################################################################################ +layer { + name: "inc4a/pool1" + type: "Pooling" + bottom: "inc3e" + top: "inc4a/pool1" + pooling_param { + kernel_size: 3 stride: 2 pad: 0 + pool: MAX + } +} +layer { + name: "inc4a/conv1" + type: "Convolution" + bottom: "inc4a/pool1" + top: "inc4a/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 128 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4a/relu1" + type: "ReLU" + bottom: "inc4a/conv1" + top: "inc4a/conv1" +} +layer { + name: "inc4a/conv3_1" + type: "Convolution" + bottom: "inc3e" + top: "inc4a/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4a/relu3_1" + type: "ReLU" + bottom: "inc4a/conv3_1" + top: "inc4a/conv3_1" +} +layer { + name: "inc4a/conv3_2" + type: "Convolution" + bottom: "inc4a/conv3_1" + top: "inc4a/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 3 stride: 2 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4a/relu3_2" + type: "ReLU" + bottom: "inc4a/conv3_2" + top: "inc4a/conv3_2" +} +layer { + name: "inc4a/conv5_1" + type: "Convolution" + bottom: "inc3e" + top: "inc4a/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4a/relu5_1" + type: "ReLU" + bottom: "inc4a/conv5_1" + top: "inc4a/conv5_1" +} +layer { + name: "inc4a/conv5_2" + type: "Convolution" + bottom: "inc4a/conv5_1" + top: "inc4a/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4a/relu5_2" + type: "ReLU" + bottom: "inc4a/conv5_2" + top: "inc4a/conv5_2" +} +layer { + name: "inc4a/conv5_3" + type: "Convolution" + bottom: "inc4a/conv5_2" + top: "inc4a/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 stride: 2 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4a/relu5_3" + type: "ReLU" + bottom: "inc4a/conv5_3" + top: "inc4a/conv5_3" +} +layer { + name: "inc4a" + type: "Concat" + bottom: "inc4a/conv1" + bottom: "inc4a/conv3_2" + bottom: "inc4a/conv5_3" + top: "inc4a" +} + +################################################################################ +## Inception 4b +################################################################################ +layer { + name: "inc4b/conv1" + type: "Convolution" + bottom: "inc4a" + top: "inc4b/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 128 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4b/relu1" + type: "ReLU" + bottom: "inc4b/conv1" + top: "inc4b/conv1" +} +layer { + name: "inc4b/conv3_1" + type: "Convolution" + bottom: "inc4a" + top: "inc4b/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4b/relu3_1" + type: "ReLU" + bottom: "inc4b/conv3_1" + top: "inc4b/conv3_1" +} +layer { + name: "inc4b/conv3_2" + type: "Convolution" + bottom: "inc4b/conv3_1" + top: "inc4b/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4b/relu3_2" + type: "ReLU" + bottom: "inc4b/conv3_2" + top: "inc4b/conv3_2" +} +layer { + name: "inc4b/conv5_1" + type: "Convolution" + bottom: "inc4a" + top: "inc4b/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4b/relu5_1" + type: "ReLU" + bottom: "inc4b/conv5_1" + top: "inc4b/conv5_1" +} +layer { + name: "inc4b/conv5_2" + type: "Convolution" + bottom: "inc4b/conv5_1" + top: "inc4b/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4b/relu5_2" + type: "ReLU" + bottom: "inc4b/conv5_2" + top: "inc4b/conv5_2" +} +layer { + name: "inc4b/conv5_3" + type: "Convolution" + bottom: "inc4b/conv5_2" + top: "inc4b/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4b/relu5_3" + type: "ReLU" + bottom: "inc4b/conv5_3" + top: "inc4b/conv5_3" +} +layer { + name: "inc4b" + type: "Concat" + bottom: "inc4b/conv1" + bottom: "inc4b/conv3_2" + bottom: "inc4b/conv5_3" + top: "inc4b" +} + +################################################################################ +## Inception 4c +################################################################################ +layer { + name: "inc4c/conv1" + type: "Convolution" + bottom: "inc4b" + top: "inc4c/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 128 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4c/relu1" + type: "ReLU" + bottom: "inc4c/conv1" + top: "inc4c/conv1" +} +layer { + name: "inc4c/conv3_1" + type: "Convolution" + bottom: "inc4b" + top: "inc4c/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4c/relu3_1" + type: "ReLU" + bottom: "inc4c/conv3_1" + top: "inc4c/conv3_1" +} +layer { + name: "inc4c/conv3_2" + type: "Convolution" + bottom: "inc4c/conv3_1" + top: "inc4c/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4c/relu3_2" + type: "ReLU" + bottom: "inc4c/conv3_2" + top: "inc4c/conv3_2" +} +layer { + name: "inc4c/conv5_1" + type: "Convolution" + bottom: "inc4b" + top: "inc4c/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4c/relu5_1" + type: "ReLU" + bottom: "inc4c/conv5_1" + top: "inc4c/conv5_1" +} +layer { + name: "inc4c/conv5_2" + type: "Convolution" + bottom: "inc4c/conv5_1" + top: "inc4c/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4c/relu5_2" + type: "ReLU" + bottom: "inc4c/conv5_2" + top: "inc4c/conv5_2" +} +layer { + name: "inc4c/conv5_3" + type: "Convolution" + bottom: "inc4c/conv5_2" + top: "inc4c/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4c/relu5_3" + type: "ReLU" + bottom: "inc4c/conv5_3" + top: "inc4c/conv5_3" +} +layer { + name: "inc4c" + type: "Concat" + bottom: "inc4c/conv1" + bottom: "inc4c/conv3_2" + bottom: "inc4c/conv5_3" + top: "inc4c" +} + +################################################################################ +## Inception 4d +################################################################################ +layer { + name: "inc4d/conv1" + type: "Convolution" + bottom: "inc4c" + top: "inc4d/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 128 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4d/relu1" + type: "ReLU" + bottom: "inc4d/conv1" + top: "inc4d/conv1" +} +layer { + name: "inc4d/conv3_1" + type: "Convolution" + bottom: "inc4c" + top: "inc4d/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4d/relu3_1" + type: "ReLU" + bottom: "inc4d/conv3_1" + top: "inc4d/conv3_1" +} +layer { + name: "inc4d/conv3_2" + type: "Convolution" + bottom: "inc4d/conv3_1" + top: "inc4d/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4d/relu3_2" + type: "ReLU" + bottom: "inc4d/conv3_2" + top: "inc4d/conv3_2" +} +layer { + name: "inc4d/conv5_1" + type: "Convolution" + bottom: "inc4c" + top: "inc4d/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4d/relu5_1" + type: "ReLU" + bottom: "inc4d/conv5_1" + top: "inc4d/conv5_1" +} +layer { + name: "inc4d/conv5_2" + type: "Convolution" + bottom: "inc4d/conv5_1" + top: "inc4d/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4d/relu5_2" + type: "ReLU" + bottom: "inc4d/conv5_2" + top: "inc4d/conv5_2" +} +layer { + name: "inc4d/conv5_3" + type: "Convolution" + bottom: "inc4d/conv5_2" + top: "inc4d/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4d/relu5_3" + type: "ReLU" + bottom: "inc4d/conv5_3" + top: "inc4d/conv5_3" +} +layer { + name: "inc4d" + type: "Concat" + bottom: "inc4d/conv1" + bottom: "inc4d/conv3_2" + bottom: "inc4d/conv5_3" + top: "inc4d" +} + +################################################################################ +## Inception 4e +################################################################################ +layer { + name: "inc4e/conv1" + type: "Convolution" + bottom: "inc4d" + top: "inc4e/conv1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 128 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4e/relu1" + type: "ReLU" + bottom: "inc4e/conv1" + top: "inc4e/conv1" +} +layer { + name: "inc4e/conv3_1" + type: "Convolution" + bottom: "inc4d" + top: "inc4e/conv3_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4e/relu3_1" + type: "ReLU" + bottom: "inc4e/conv3_1" + top: "inc4e/conv3_1" +} +layer { + name: "inc4e/conv3_2" + type: "Convolution" + bottom: "inc4e/conv3_1" + top: "inc4e/conv3_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 96 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4e/relu3_2" + type: "ReLU" + bottom: "inc4e/conv3_2" + top: "inc4e/conv3_2" +} +layer { + name: "inc4e/conv5_1" + type: "Convolution" + bottom: "inc4d" + top: "inc4e/conv5_1" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 16 kernel_size: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4e/relu5_1" + type: "ReLU" + bottom: "inc4e/conv5_1" + top: "inc4e/conv5_1" +} +layer { + name: "inc4e/conv5_2" + type: "Convolution" + bottom: "inc4e/conv5_1" + top: "inc4e/conv5_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4e/relu5_2" + type: "ReLU" + bottom: "inc4e/conv5_2" + top: "inc4e/conv5_2" +} +layer { + name: "inc4e/conv5_3" + type: "Convolution" + bottom: "inc4e/conv5_2" + top: "inc4e/conv5_3" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 32 kernel_size: 3 pad: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "inc4e/relu5_3" + type: "ReLU" + bottom: "inc4e/conv5_3" + top: "inc4e/conv5_3" +} +layer { + name: "inc4e" + type: "Concat" + bottom: "inc4e/conv1" + bottom: "inc4e/conv3_2" + bottom: "inc4e/conv5_3" + top: "inc4e" +} + + +################################################################################ +## hyper feature +################################################################################ +layer { + name: "downsample" + type: "Pooling" + bottom: "conv3" + top: "downsample" + pooling_param { + kernel_size: 3 stride: 2 pad: 0 + pool: MAX + } +} +layer { + name: "upsample" + type: "Deconvolution" + bottom: "inc4e" + top: "upsample" + param { lr_mult: 0 decay_mult: 0 } + convolution_param { + num_output: 256 + kernel_size: 4 stride: 2 pad: 1 + group: 256 + weight_filler: { type: "bilinear" } + bias_term: false + } +} +layer { + name: "concat" + type: "Concat" + bottom: "downsample" + bottom: "inc3e" + bottom: "upsample" + top: "concat" + concat_param { axis: 1 } +} +layer { + name: "convf" + type: "Convolution" + bottom: "concat" + top: "convf" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + convolution_param { + num_output: 256 + kernel_size: 1 stride: 1 pad: 0 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "reluf" + type: "ReLU" + bottom: "convf" + top: "convf" +} + + +################################################################################ +## RPN +################################################################################ + +### RPN ### +layer { + name: "rpn_conv1" + type: "Convolution" + bottom: "convf" + top: "rpn_conv1" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + convolution_param { + num_output: 256 + kernel_size: 1 stride: 1 pad: 0 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu1" + type: "ReLU" + bottom: "rpn_conv1" + top: "rpn_conv1" +} + +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_cls_score" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + convolution_param { + num_output: 50 + kernel_size: 1 stride: 1 pad: 0 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_bbox_pred" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + convolution_param { + num_output: 100 + kernel_size: 1 stride: 1 pad: 0 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} + +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +################################################################################ +## Proposal +################################################################################ +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 50 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Proposal' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + top: 'scores' + proposal_param { + ratio: 0.5 ratio: 0.667 ratio: 1.0 ratio: 1.5 ratio: 2.0 + scale: 3 scale: 6 scale: 9 scale: 16 scale: 32 + base_size: 16 + feat_stride: 16 + pre_nms_topn: 6000 + post_nms_topn: 200 + nms_thresh: 0.7 + min_size: 16 + } +} + + +################################################################################ +## RCNN +################################################################################ +layer { + name: "roi_pool_conv5" + type: "ROIPooling" + bottom: "convf" + bottom: "rois" + top: "roi_pool_conv5" + roi_pooling_param { + pooled_w: 6 pooled_h: 6 + spatial_scale: 0.0625 # 1/16 + } +} +layer { + name: "fc6_L" + type: "InnerProduct" + bottom: "roi_pool_conv5" + top: "fc6_L" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + inner_product_param { + num_output: 512 + weight_filler { type: "xavier" std: 0.005 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "fc6_U" + type: "InnerProduct" + bottom: "fc6_L" + top: "fc6_U" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + inner_product_param { + num_output: 4096 + weight_filler { type: "xavier" std: 0.005 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "relu6" + type: "ReLU" + bottom: "fc6_U" + top: "fc6_U" +} + +################################################################################ +## fc 7 +################################################################################ +layer { + name: "fc7_L" + type: "InnerProduct" + bottom: "fc6_U" + top: "fc7_L" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + inner_product_param { + num_output: 128 + weight_filler { type: "xavier" std: 0.005 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "fc7_U" + type: "InnerProduct" + bottom: "fc7_L" + top: "fc7_U" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + inner_product_param { + num_output: 4096 + weight_filler { type: "xavier" std: 0.005 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "relu7" + type: "ReLU" + bottom: "fc7_U" + top: "fc7_U" +} + +################################################################################ +## output +################################################################################ +layer { + name: "cls_score" + type: "InnerProduct" + bottom: "fc7_U" + top: "cls_score" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + inner_product_param { + num_output: 21 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "bbox_pred" + type: "InnerProduct" + bottom: "fc7_U" + top: "bbox_pred" + param { lr_mult: 1 decay_mult: 1 } + param { lr_mult: 2 decay_mult: 0 } + inner_product_param { + num_output: 84 + weight_filler { type: "gaussian" std: 0.001 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob" + loss_param { + ignore_label: -1 + normalize: true + } +} From 4cbd40ca1daae92f13ee7c61c4712b2e99433220 Mon Sep 17 00:00:00 2001 From: Kye-Hyeon Kim Date: Mon, 19 Sep 2016 19:07:44 +0900 Subject: [PATCH 16/36] Update the download script for ImageNet pretrained models --- models/pvanet/download_imagenet_models.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/pvanet/download_imagenet_models.sh b/models/pvanet/download_imagenet_models.sh index 2d82521ca..5e6a65cdf 100755 --- a/models/pvanet/download_imagenet_models.sh +++ b/models/pvanet/download_imagenet_models.sh @@ -1,3 +1,3 @@ #/bin/bash -wget -O models/pvanet/imagenet/test.model -wget -O models/pvanet/imagenet/original.model +wget https://www.dropbox.com/s/2xsfg8vqmhv9p84/test.model?dl=0 -O models/pvanet/imagenet/test.model +wget https://www.dropbox.com/s/l11v2uh05pjejws/original.model?dl=0 -O models/pvanet/imagenet/original.model From ddf604031443f2f7cb949e5824955713bbfa6ff5 Mon Sep 17 00:00:00 2001 From: Kye-Hyeon Kim Date: Wed, 28 Sep 2016 15:17:10 +0900 Subject: [PATCH 17/36] Add Google Drive download links for PVANET models --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index 3aa08835f..38b0b170b 100644 --- a/README.md +++ b/README.md @@ -60,24 +60,36 @@ If you find PVANET useful in your research, please consider citing: cd $FRCN_ROOT ./models/pvanet/download_models.sh ``` + - If it does not work, + 1. Download [full/test.model](https://drive.google.com/open?id=0BwFPOX3S4VcBd3NPNmI1RHBZNkk) and move it to ./models/pvanet/full/ + 2. Download [comp/test.model](https://drive.google.com/open?id=0BwFPOX3S4VcBODJkckhudE1NeGM) and move it to ./models/pvanet/comp/ 5. (Optional) Download original caffemodels (without merging batch normalization and scale layers) ```Shell cd $FRCN_ROOT ./models/pvanet/download_original_models.sh ``` + - If it does not work, + 1. Download [full/original.model](https://drive.google.com/open?id=0BwFPOX3S4VcBUW1OS1Fva3VKZ1E) and move it to ./models/pvanet/full/ + 2. Download [comp/original.model](https://drive.google.com/open?id=0BwFPOX3S4VcBdVZuX3dQRzFjU1k) and move it to ./models/pvanet/comp/ 6. (Optional) Download ImageNet pretrained models ```Shell cd $FRCN_ROOT ./models/pvanet/download_imagenet_models.sh ``` + - If it does not work, + 1. Download [imagenet/original.model](https://drive.google.com/open?id=0BwFPOX3S4VcBd1VtRzdHa1NoN1k) and move it to ./models/pvanet/imagenet/ + 2. Download [imagenet/test.model](https://drive.google.com/open?id=0BwFPOX3S4VcBWnI0VHRzZWh6bFU) and move it to ./models/pvanet/imagenet/ 7. (Optional) Download PVANET-lite models ```Shell cd $FRCN_ROOT ./models/pvanet/download_lite_models.sh ``` + - If it does not work, + 1. Download [lite/original.model](https://drive.google.com/open?id=0BwFPOX3S4VcBc1ZEQldZTlZKN00) and move it to ./models/pvanet/lite/ + 2. Download [lite/test.model](https://drive.google.com/open?id=0BwFPOX3S4VcBSWg2MlpGcWlQeHM) and move it to ./models/pvanet/lite/ ### Models From d23bf1f6fdbbaf8d545e85181306d06fa3b3994d Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Fri, 30 Sep 2016 17:22:59 +0900 Subject: [PATCH 18/36] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 38b0b170b..c135aacdc 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ## PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection -by Yeongjae Cheon, Sanghoon Hong, Kye-Hyeon Kim, Minje Park, Byungseok Roh (Intel Imaging and Camera Technology) +by Kye-Hyeon Kim, Sanghoon Hong, Byungseok Roh, Yeongjae Cheon, Minje Park (Intel Imaging and Camera Technology) ### Introduction @@ -22,7 +22,7 @@ Please note that this repository doesn't contain our in-house runtime code used If you find PVANET useful in your research, please consider citing: @article{KimKH2016arXivPVANET, - author = {Yeongjae Cheon and Sanghoon Hong and Kye-Hyeon Kim and Minje Park and Byungseok Roh}, + author = {Kye-Hyeon Kim and Sanghoon Hong and Byungseok Roh and Yeongjae Cheon and Minje Park}, title = {{PVANET}: Deep but Lightweight Neural Networks for Real-time Object Detection}, journal = {arXiv preprint arXiv:1608.08021}, year = {2016} From 4799b2889fecdccd823559a7f0300bc68d69aefd Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Fri, 30 Sep 2016 17:50:01 +0900 Subject: [PATCH 19/36] Add training prototxts - They're different from the one we've used. --- models/pvanet/cfgs/train.yml | 27 + models/pvanet/example_finetune/README.md | 7 + .../pvanet/example_finetune/solver.prototxt | 18 + models/pvanet/example_finetune/test.prototxt | 3261 ++++++++ models/pvanet/example_finetune/train.prototxt | 3357 +++++++++ models/pvanet/example_train_384/README.md | 8 + .../pvanet/example_train_384/solver.prototxt | 18 + models/pvanet/example_train_384/test.prototxt | 6491 ++++++++++++++++ .../pvanet/example_train_384/train.prototxt | 6539 +++++++++++++++++ 9 files changed, 19726 insertions(+) create mode 100644 models/pvanet/cfgs/train.yml create mode 100644 models/pvanet/example_finetune/README.md create mode 100644 models/pvanet/example_finetune/solver.prototxt create mode 100644 models/pvanet/example_finetune/test.prototxt create mode 100644 models/pvanet/example_finetune/train.prototxt create mode 100644 models/pvanet/example_train_384/README.md create mode 100644 models/pvanet/example_train_384/solver.prototxt create mode 100644 models/pvanet/example_train_384/test.prototxt create mode 100644 models/pvanet/example_train_384/train.prototxt diff --git a/models/pvanet/cfgs/train.yml b/models/pvanet/cfgs/train.yml new file mode 100644 index 000000000..ab88fbc84 --- /dev/null +++ b/models/pvanet/cfgs/train.yml @@ -0,0 +1,27 @@ +EXP_DIR: faster_rcnn_pvanet +TRAIN: + HAS_RPN: True + IMS_PER_BATCH: 1 + BBOX_NORMALIZE_TARGETS_PRECOMPUTED: True + RPN_POSITIVE_OVERLAP: 0.7 + RPN_BATCHSIZE: 256 + PROPOSAL_METHOD: gt + BG_THRESH_LO: 0.0 + SCALE_MULTIPLE_OF: 32 + MAX_SIZE: 1440 + SCALES: + - 416 + - 448 + - 480 + - 512 + - 544 + - 576 + - 608 + - 640 + - 672 + - 704 + - 736 + - 768 + - 800 + - 832 + - 864 diff --git a/models/pvanet/example_finetune/README.md b/models/pvanet/example_finetune/README.md new file mode 100644 index 000000000..86fc25f11 --- /dev/null +++ b/models/pvanet/example_finetune/README.md @@ -0,0 +1,7 @@ +## PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection +by Kye-Hyeon Kim, Sanghoon Hong, Byungseok Roh, Yeongjae Cheon, Minje Park (Intel Imaging and Camera Technology) + +### Notes +- The training of PVANet 9.0 on the VOC2012 leaderboard wasn't done with this code. +- **This training prototxt hasn't been tested yet**. + diff --git a/models/pvanet/example_finetune/solver.prototxt b/models/pvanet/example_finetune/solver.prototxt new file mode 100644 index 000000000..875f1f04b --- /dev/null +++ b/models/pvanet/example_finetune/solver.prototxt @@ -0,0 +1,18 @@ +train_net: "models/pvanet/example_finetune/train.prototxt" + +base_lr: 0.0001 +lr_policy: "step" +gamma: 0.1 +stepsize: 50000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0002 + + +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "pvanet_frcnn" +iter_size: 2 diff --git a/models/pvanet/example_finetune/test.prototxt b/models/pvanet/example_finetune/test.prototxt new file mode 100644 index 000000000..a4af50881 --- /dev/null +++ b/models/pvanet/example_finetune/test.prototxt @@ -0,0 +1,3261 @@ +name: "PVANET" + +################################################################################ +## Input +################################################################################ + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 640 + dim: 1056 +} +input: "im_info" +input_shape { + dim: 1 + dim: 6 +} + +################################################################################ +## Convolution +################################################################################ + +layer { + name: "conv1_1/conv" + type: "Convolution" + bottom: "data" + top: "conv1_1/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 16 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 3 + pad_w: 3 + kernel_h: 7 + kernel_w: 7 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv1_1/neg" + type: "Power" + bottom: "conv1_1/conv" + top: "conv1_1/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv1_1/concat" + type: "Concat" + bottom: "conv1_1/conv" + bottom: "conv1_1/neg" + top: "conv1_1" +} +layer { + name: "conv1_1/scale" + type: "Scale" + bottom: "conv1_1" + top: "conv1_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv1_1/relu" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv2_1/1/conv" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/1/relu" + type: "ReLU" + bottom: "conv2_1/1" + top: "conv2_1/1" +} +layer { + name: "conv2_1/2/conv" + type: "Convolution" + bottom: "conv2_1/1" + top: "conv2_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/2/neg" + type: "Power" + bottom: "conv2_1/2/conv" + top: "conv2_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_1/2/concat" + type: "Concat" + bottom: "conv2_1/2/conv" + bottom: "conv2_1/2/neg" + top: "conv2_1/2" +} +layer { + name: "conv2_1/2/scale" + type: "Scale" + bottom: "conv2_1/2" + top: "conv2_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/2/relu" + type: "ReLU" + bottom: "conv2_1/2" + top: "conv2_1/2" +} +layer { + name: "conv2_1/3/conv" + type: "Convolution" + bottom: "conv2_1/2" + top: "conv2_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/proj" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1" + type: "Eltwise" + bottom: "conv2_1/3" + bottom: "conv2_1/proj" + top: "conv2_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_2/1/conv" + type: "Convolution" + bottom: "conv2_1" + top: "conv2_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/1/relu" + type: "ReLU" + bottom: "conv2_2/1" + top: "conv2_2/1" +} +layer { + name: "conv2_2/2/conv" + type: "Convolution" + bottom: "conv2_2/1" + top: "conv2_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/2/neg" + type: "Power" + bottom: "conv2_2/2/conv" + top: "conv2_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_2/2/concat" + type: "Concat" + bottom: "conv2_2/2/conv" + bottom: "conv2_2/2/neg" + top: "conv2_2/2" +} +layer { + name: "conv2_2/2/scale" + type: "Scale" + bottom: "conv2_2/2" + top: "conv2_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/2/relu" + type: "ReLU" + bottom: "conv2_2/2" + top: "conv2_2/2" +} +layer { + name: "conv2_2/3/conv" + type: "Convolution" + bottom: "conv2_2/2" + top: "conv2_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2" + type: "Eltwise" + bottom: "conv2_2/3" + bottom: "conv2_1" + top: "conv2_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_3/1/conv" + type: "Convolution" + bottom: "conv2_2" + top: "conv2_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/1/relu" + type: "ReLU" + bottom: "conv2_3/1" + top: "conv2_3/1" +} +layer { + name: "conv2_3/2/conv" + type: "Convolution" + bottom: "conv2_3/1" + top: "conv2_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/2/neg" + type: "Power" + bottom: "conv2_3/2/conv" + top: "conv2_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_3/2/concat" + type: "Concat" + bottom: "conv2_3/2/conv" + bottom: "conv2_3/2/neg" + top: "conv2_3/2" +} +layer { + name: "conv2_3/2/scale" + type: "Scale" + bottom: "conv2_3/2" + top: "conv2_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/2/relu" + type: "ReLU" + bottom: "conv2_3/2" + top: "conv2_3/2" +} +layer { + name: "conv2_3/3/conv" + type: "Convolution" + bottom: "conv2_3/2" + top: "conv2_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3" + type: "Eltwise" + bottom: "conv2_3/3" + bottom: "conv2_2" + top: "conv2_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_1/1/conv" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/1/relu" + type: "ReLU" + bottom: "conv3_1/1" + top: "conv3_1/1" +} +layer { + name: "conv3_1/2/conv" + type: "Convolution" + bottom: "conv3_1/1" + top: "conv3_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/2/neg" + type: "Power" + bottom: "conv3_1/2/conv" + top: "conv3_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_1/2/concat" + type: "Concat" + bottom: "conv3_1/2/conv" + bottom: "conv3_1/2/neg" + top: "conv3_1/2" +} +layer { + name: "conv3_1/2/scale" + type: "Scale" + bottom: "conv3_1/2" + top: "conv3_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/2/relu" + type: "ReLU" + bottom: "conv3_1/2" + top: "conv3_1/2" +} +layer { + name: "conv3_1/3/conv" + type: "Convolution" + bottom: "conv3_1/2" + top: "conv3_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/proj" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1" + type: "Eltwise" + bottom: "conv3_1/3" + bottom: "conv3_1/proj" + top: "conv3_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_2/1/conv" + type: "Convolution" + bottom: "conv3_1" + top: "conv3_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/1/relu" + type: "ReLU" + bottom: "conv3_2/1" + top: "conv3_2/1" +} +layer { + name: "conv3_2/2/conv" + type: "Convolution" + bottom: "conv3_2/1" + top: "conv3_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/2/neg" + type: "Power" + bottom: "conv3_2/2/conv" + top: "conv3_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_2/2/concat" + type: "Concat" + bottom: "conv3_2/2/conv" + bottom: "conv3_2/2/neg" + top: "conv3_2/2" +} +layer { + name: "conv3_2/2/scale" + type: "Scale" + bottom: "conv3_2/2" + top: "conv3_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/2/relu" + type: "ReLU" + bottom: "conv3_2/2" + top: "conv3_2/2" +} +layer { + name: "conv3_2/3/conv" + type: "Convolution" + bottom: "conv3_2/2" + top: "conv3_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2" + type: "Eltwise" + bottom: "conv3_2/3" + bottom: "conv3_1" + top: "conv3_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_3/1/conv" + type: "Convolution" + bottom: "conv3_2" + top: "conv3_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/1/relu" + type: "ReLU" + bottom: "conv3_3/1" + top: "conv3_3/1" +} +layer { + name: "conv3_3/2/conv" + type: "Convolution" + bottom: "conv3_3/1" + top: "conv3_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/2/neg" + type: "Power" + bottom: "conv3_3/2/conv" + top: "conv3_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_3/2/concat" + type: "Concat" + bottom: "conv3_3/2/conv" + bottom: "conv3_3/2/neg" + top: "conv3_3/2" +} +layer { + name: "conv3_3/2/scale" + type: "Scale" + bottom: "conv3_3/2" + top: "conv3_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/2/relu" + type: "ReLU" + bottom: "conv3_3/2" + top: "conv3_3/2" +} +layer { + name: "conv3_3/3/conv" + type: "Convolution" + bottom: "conv3_3/2" + top: "conv3_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3" + type: "Eltwise" + bottom: "conv3_3/3" + bottom: "conv3_2" + top: "conv3_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_4/1/conv" + type: "Convolution" + bottom: "conv3_3" + top: "conv3_4/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/1/relu" + type: "ReLU" + bottom: "conv3_4/1" + top: "conv3_4/1" +} +layer { + name: "conv3_4/2/conv" + type: "Convolution" + bottom: "conv3_4/1" + top: "conv3_4/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/2/neg" + type: "Power" + bottom: "conv3_4/2/conv" + top: "conv3_4/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_4/2/concat" + type: "Concat" + bottom: "conv3_4/2/conv" + bottom: "conv3_4/2/neg" + top: "conv3_4/2" +} +layer { + name: "conv3_4/2/scale" + type: "Scale" + bottom: "conv3_4/2" + top: "conv3_4/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/2/relu" + type: "ReLU" + bottom: "conv3_4/2" + top: "conv3_4/2" +} +layer { + name: "conv3_4/3/conv" + type: "Convolution" + bottom: "conv3_4/2" + top: "conv3_4/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4" + type: "Eltwise" + bottom: "conv3_4/3" + bottom: "conv3_3" + top: "conv3_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_1/incep/0/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/0/relu" + type: "ReLU" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/pool" + type: "Pooling" + bottom: "conv3_4" + top: "conv4_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv4_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv4_1/incep/pool" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep" + type: "Concat" + bottom: "conv4_1/incep/0" + bottom: "conv4_1/incep/1_0" + bottom: "conv4_1/incep/2_1" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep" +} +layer { + name: "conv4_1/out/conv" + type: "Convolution" + bottom: "conv4_1/incep" + top: "conv4_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/proj" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1" + type: "Eltwise" + bottom: "conv4_1/out" + bottom: "conv4_1/proj" + top: "conv4_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_2/incep/0/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/0/relu" + type: "ReLU" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep" + type: "Concat" + bottom: "conv4_2/incep/0" + bottom: "conv4_2/incep/1_0" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep" +} +layer { + name: "conv4_2/out/conv" + type: "Convolution" + bottom: "conv4_2/incep" + top: "conv4_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2" + type: "Eltwise" + bottom: "conv4_2/out" + bottom: "conv4_1" + top: "conv4_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_3/incep/0/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/0/relu" + type: "ReLU" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep" + type: "Concat" + bottom: "conv4_3/incep/0" + bottom: "conv4_3/incep/1_0" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep" +} +layer { + name: "conv4_3/out/conv" + type: "Convolution" + bottom: "conv4_3/incep" + top: "conv4_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3" + type: "Eltwise" + bottom: "conv4_3/out" + bottom: "conv4_2" + top: "conv4_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_4/incep/0/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/0/relu" + type: "ReLU" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep" + type: "Concat" + bottom: "conv4_4/incep/0" + bottom: "conv4_4/incep/1_0" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep" +} +layer { + name: "conv4_4/out/conv" + type: "Convolution" + bottom: "conv4_4/incep" + top: "conv4_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4" + type: "Eltwise" + bottom: "conv4_4/out" + bottom: "conv4_3" + top: "conv4_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_1/incep/0/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/0/relu" + type: "ReLU" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/pool" + type: "Pooling" + bottom: "conv4_4" + top: "conv5_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv5_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv5_1/incep/pool" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep" + type: "Concat" + bottom: "conv5_1/incep/0" + bottom: "conv5_1/incep/1_0" + bottom: "conv5_1/incep/2_1" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep" +} +layer { + name: "conv5_1/out/conv" + type: "Convolution" + bottom: "conv5_1/incep" + top: "conv5_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/proj" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1" + type: "Eltwise" + bottom: "conv5_1/out" + bottom: "conv5_1/proj" + top: "conv5_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_2/incep/0/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/0/relu" + type: "ReLU" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep" + type: "Concat" + bottom: "conv5_2/incep/0" + bottom: "conv5_2/incep/1_0" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep" +} +layer { + name: "conv5_2/out/conv" + type: "Convolution" + bottom: "conv5_2/incep" + top: "conv5_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2" + type: "Eltwise" + bottom: "conv5_2/out" + bottom: "conv5_1" + top: "conv5_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_3/incep/0/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/0/relu" + type: "ReLU" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep" + type: "Concat" + bottom: "conv5_3/incep/0" + bottom: "conv5_3/incep/1_0" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep" +} +layer { + name: "conv5_3/out/conv" + type: "Convolution" + bottom: "conv5_3/incep" + top: "conv5_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3" + type: "Eltwise" + bottom: "conv5_3/out" + bottom: "conv5_2" + top: "conv5_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/incep/0/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/0/relu" + type: "ReLU" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep" + type: "Concat" + bottom: "conv5_4/incep/0" + bottom: "conv5_4/incep/1_0" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep" +} +layer { + name: "conv5_4/out/conv" + type: "Convolution" + bottom: "conv5_4/incep" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4" + type: "Eltwise" + bottom: "conv5_4/out" + bottom: "conv5_3" + top: "conv5_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} + +### hyper feature ### +layer { + name: "downsample" + type: "Pooling" + bottom: "conv3_4" + top: "downsample" + pooling_param { + kernel_size: 3 + stride: 2 + pad: 0 + pool: MAX + } +} +layer { + name: "upsample" + type: "Deconvolution" + bottom: "conv5_4" + top: "upsample" + param { + lr_mult: 0 + decay_mult: 0 + } + convolution_param { + num_output: 384 + kernel_size: 4 + pad: 1 + stride: 2 + group: 384 + bias_term: false + weight_filler: { + type: "bilinear" + } + } +} +layer { + name: "concat" + bottom: "downsample" + bottom: "conv4_4" + bottom: "upsample" + top: "concat" + type: "Concat" + concat_param { + axis: 1 + } +} +layer { + name: "convf_rpn" + type: "Convolution" + bottom: "concat" + top: "convf_rpn" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "reluf_rpn" + type: "ReLU" + bottom: "convf_rpn" + top: "convf_rpn" +} +layer { + name: "convf_2" + type: "Convolution" + bottom: "concat" + top: "convf_2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + convolution_param { + num_output: 384 + kernel_size: 1 + pad: 0 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "reluf_2" + type: "ReLU" + bottom: "convf_2" + top: "convf_2" +} +layer { + name: "concat_convf" + bottom: "convf_rpn" + bottom: "convf_2" + top: "convf" + type: "Concat" + concat_param { + axis: 1 + } +} + +################################################################################ +## RPN +################################################################################ + +### RPN conv ### +layer { + name: "rpn_conv1" + type: "Convolution" + bottom: "convf_rpn" + top: "rpn_conv1" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu1" + type: "ReLU" + bottom: "rpn_conv1" + top: "rpn_conv1" +} +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 50 # 2(bg/fg) * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 100 # 4 * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +################################################################################ +## Proposal +################################################################################ +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 50 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Proposal' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + top: 'scores' + proposal_param { + ratio: 0.5 ratio: 0.667 ratio: 1.0 ratio: 1.5 ratio: 2.0 + scale: 3 scale: 6 scale: 9 scale: 16 scale: 32 + base_size: 16 + feat_stride: 16 + pre_nms_topn: 12000 + post_nms_topn: 200 + nms_thresh: 0.7 + min_size: 16 + } +} + +################################################################################ +## RCNN +################################################################################ +layer { + name: "roi_pool_conv5" + type: "ROIPooling" + bottom: "convf" + bottom: "rois" + top: "roi_pool_conv5" + roi_pooling_param { + pooled_w: 6 + pooled_h: 6 + spatial_scale: 0.0625 # 1/16 + } +} +layer { + name: "fc6" + type: "InnerProduct" + bottom: "roi_pool_conv5" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc6/relu" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "fc7" + type: "InnerProduct" + bottom: "fc6" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc7/relu" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} +layer { + name: "cls_score" + type: "InnerProduct" + bottom: "fc7" + top: "cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 21 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "bbox_pred" + type: "InnerProduct" + bottom: "fc7" + top: "bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 84 + weight_filler { type: "gaussian" std: 0.001 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob" +} diff --git a/models/pvanet/example_finetune/train.prototxt b/models/pvanet/example_finetune/train.prototxt new file mode 100644 index 000000000..9aadfe23f --- /dev/null +++ b/models/pvanet/example_finetune/train.prototxt @@ -0,0 +1,3357 @@ +name: "PVANET" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +################################################################################ +## Convolution +################################################################################ + +layer { + name: "conv1_1/conv" + type: "Convolution" + bottom: "data" + top: "conv1_1/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 16 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 3 + pad_w: 3 + kernel_h: 7 + kernel_w: 7 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv1_1/neg" + type: "Power" + bottom: "conv1_1/conv" + top: "conv1_1/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv1_1/concat" + type: "Concat" + bottom: "conv1_1/conv" + bottom: "conv1_1/neg" + top: "conv1_1" +} +layer { + name: "conv1_1/scale" + type: "Scale" + bottom: "conv1_1" + top: "conv1_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv1_1/relu" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv2_1/1/conv" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/1/relu" + type: "ReLU" + bottom: "conv2_1/1" + top: "conv2_1/1" +} +layer { + name: "conv2_1/2/conv" + type: "Convolution" + bottom: "conv2_1/1" + top: "conv2_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/2/neg" + type: "Power" + bottom: "conv2_1/2/conv" + top: "conv2_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_1/2/concat" + type: "Concat" + bottom: "conv2_1/2/conv" + bottom: "conv2_1/2/neg" + top: "conv2_1/2" +} +layer { + name: "conv2_1/2/scale" + type: "Scale" + bottom: "conv2_1/2" + top: "conv2_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/2/relu" + type: "ReLU" + bottom: "conv2_1/2" + top: "conv2_1/2" +} +layer { + name: "conv2_1/3/conv" + type: "Convolution" + bottom: "conv2_1/2" + top: "conv2_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/proj" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1" + type: "Eltwise" + bottom: "conv2_1/3" + bottom: "conv2_1/proj" + top: "conv2_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_2/1/conv" + type: "Convolution" + bottom: "conv2_1" + top: "conv2_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/1/relu" + type: "ReLU" + bottom: "conv2_2/1" + top: "conv2_2/1" +} +layer { + name: "conv2_2/2/conv" + type: "Convolution" + bottom: "conv2_2/1" + top: "conv2_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/2/neg" + type: "Power" + bottom: "conv2_2/2/conv" + top: "conv2_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_2/2/concat" + type: "Concat" + bottom: "conv2_2/2/conv" + bottom: "conv2_2/2/neg" + top: "conv2_2/2" +} +layer { + name: "conv2_2/2/scale" + type: "Scale" + bottom: "conv2_2/2" + top: "conv2_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/2/relu" + type: "ReLU" + bottom: "conv2_2/2" + top: "conv2_2/2" +} +layer { + name: "conv2_2/3/conv" + type: "Convolution" + bottom: "conv2_2/2" + top: "conv2_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2" + type: "Eltwise" + bottom: "conv2_2/3" + bottom: "conv2_1" + top: "conv2_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_3/1/conv" + type: "Convolution" + bottom: "conv2_2" + top: "conv2_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/1/relu" + type: "ReLU" + bottom: "conv2_3/1" + top: "conv2_3/1" +} +layer { + name: "conv2_3/2/conv" + type: "Convolution" + bottom: "conv2_3/1" + top: "conv2_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/2/neg" + type: "Power" + bottom: "conv2_3/2/conv" + top: "conv2_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_3/2/concat" + type: "Concat" + bottom: "conv2_3/2/conv" + bottom: "conv2_3/2/neg" + top: "conv2_3/2" +} +layer { + name: "conv2_3/2/scale" + type: "Scale" + bottom: "conv2_3/2" + top: "conv2_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/2/relu" + type: "ReLU" + bottom: "conv2_3/2" + top: "conv2_3/2" +} +layer { + name: "conv2_3/3/conv" + type: "Convolution" + bottom: "conv2_3/2" + top: "conv2_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3" + type: "Eltwise" + bottom: "conv2_3/3" + bottom: "conv2_2" + top: "conv2_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_1/1/conv" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/1/relu" + type: "ReLU" + bottom: "conv3_1/1" + top: "conv3_1/1" +} +layer { + name: "conv3_1/2/conv" + type: "Convolution" + bottom: "conv3_1/1" + top: "conv3_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/2/neg" + type: "Power" + bottom: "conv3_1/2/conv" + top: "conv3_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_1/2/concat" + type: "Concat" + bottom: "conv3_1/2/conv" + bottom: "conv3_1/2/neg" + top: "conv3_1/2" +} +layer { + name: "conv3_1/2/scale" + type: "Scale" + bottom: "conv3_1/2" + top: "conv3_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/2/relu" + type: "ReLU" + bottom: "conv3_1/2" + top: "conv3_1/2" +} +layer { + name: "conv3_1/3/conv" + type: "Convolution" + bottom: "conv3_1/2" + top: "conv3_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/proj" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1" + type: "Eltwise" + bottom: "conv3_1/3" + bottom: "conv3_1/proj" + top: "conv3_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_2/1/conv" + type: "Convolution" + bottom: "conv3_1" + top: "conv3_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/1/relu" + type: "ReLU" + bottom: "conv3_2/1" + top: "conv3_2/1" +} +layer { + name: "conv3_2/2/conv" + type: "Convolution" + bottom: "conv3_2/1" + top: "conv3_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/2/neg" + type: "Power" + bottom: "conv3_2/2/conv" + top: "conv3_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_2/2/concat" + type: "Concat" + bottom: "conv3_2/2/conv" + bottom: "conv3_2/2/neg" + top: "conv3_2/2" +} +layer { + name: "conv3_2/2/scale" + type: "Scale" + bottom: "conv3_2/2" + top: "conv3_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/2/relu" + type: "ReLU" + bottom: "conv3_2/2" + top: "conv3_2/2" +} +layer { + name: "conv3_2/3/conv" + type: "Convolution" + bottom: "conv3_2/2" + top: "conv3_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2" + type: "Eltwise" + bottom: "conv3_2/3" + bottom: "conv3_1" + top: "conv3_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_3/1/conv" + type: "Convolution" + bottom: "conv3_2" + top: "conv3_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/1/relu" + type: "ReLU" + bottom: "conv3_3/1" + top: "conv3_3/1" +} +layer { + name: "conv3_3/2/conv" + type: "Convolution" + bottom: "conv3_3/1" + top: "conv3_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/2/neg" + type: "Power" + bottom: "conv3_3/2/conv" + top: "conv3_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_3/2/concat" + type: "Concat" + bottom: "conv3_3/2/conv" + bottom: "conv3_3/2/neg" + top: "conv3_3/2" +} +layer { + name: "conv3_3/2/scale" + type: "Scale" + bottom: "conv3_3/2" + top: "conv3_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/2/relu" + type: "ReLU" + bottom: "conv3_3/2" + top: "conv3_3/2" +} +layer { + name: "conv3_3/3/conv" + type: "Convolution" + bottom: "conv3_3/2" + top: "conv3_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3" + type: "Eltwise" + bottom: "conv3_3/3" + bottom: "conv3_2" + top: "conv3_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_4/1/conv" + type: "Convolution" + bottom: "conv3_3" + top: "conv3_4/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/1/relu" + type: "ReLU" + bottom: "conv3_4/1" + top: "conv3_4/1" +} +layer { + name: "conv3_4/2/conv" + type: "Convolution" + bottom: "conv3_4/1" + top: "conv3_4/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/2/neg" + type: "Power" + bottom: "conv3_4/2/conv" + top: "conv3_4/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_4/2/concat" + type: "Concat" + bottom: "conv3_4/2/conv" + bottom: "conv3_4/2/neg" + top: "conv3_4/2" +} +layer { + name: "conv3_4/2/scale" + type: "Scale" + bottom: "conv3_4/2" + top: "conv3_4/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/2/relu" + type: "ReLU" + bottom: "conv3_4/2" + top: "conv3_4/2" +} +layer { + name: "conv3_4/3/conv" + type: "Convolution" + bottom: "conv3_4/2" + top: "conv3_4/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4" + type: "Eltwise" + bottom: "conv3_4/3" + bottom: "conv3_3" + top: "conv3_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_1/incep/0/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/0/relu" + type: "ReLU" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/pool" + type: "Pooling" + bottom: "conv3_4" + top: "conv4_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv4_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv4_1/incep/pool" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep" + type: "Concat" + bottom: "conv4_1/incep/0" + bottom: "conv4_1/incep/1_0" + bottom: "conv4_1/incep/2_1" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep" +} +layer { + name: "conv4_1/out/conv" + type: "Convolution" + bottom: "conv4_1/incep" + top: "conv4_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/proj" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1" + type: "Eltwise" + bottom: "conv4_1/out" + bottom: "conv4_1/proj" + top: "conv4_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_2/incep/0/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/0/relu" + type: "ReLU" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep" + type: "Concat" + bottom: "conv4_2/incep/0" + bottom: "conv4_2/incep/1_0" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep" +} +layer { + name: "conv4_2/out/conv" + type: "Convolution" + bottom: "conv4_2/incep" + top: "conv4_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2" + type: "Eltwise" + bottom: "conv4_2/out" + bottom: "conv4_1" + top: "conv4_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_3/incep/0/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/0/relu" + type: "ReLU" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep" + type: "Concat" + bottom: "conv4_3/incep/0" + bottom: "conv4_3/incep/1_0" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep" +} +layer { + name: "conv4_3/out/conv" + type: "Convolution" + bottom: "conv4_3/incep" + top: "conv4_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3" + type: "Eltwise" + bottom: "conv4_3/out" + bottom: "conv4_2" + top: "conv4_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_4/incep/0/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/0/relu" + type: "ReLU" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep" + type: "Concat" + bottom: "conv4_4/incep/0" + bottom: "conv4_4/incep/1_0" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep" +} +layer { + name: "conv4_4/out/conv" + type: "Convolution" + bottom: "conv4_4/incep" + top: "conv4_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4" + type: "Eltwise" + bottom: "conv4_4/out" + bottom: "conv4_3" + top: "conv4_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_1/incep/0/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/0/relu" + type: "ReLU" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/pool" + type: "Pooling" + bottom: "conv4_4" + top: "conv5_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv5_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv5_1/incep/pool" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep" + type: "Concat" + bottom: "conv5_1/incep/0" + bottom: "conv5_1/incep/1_0" + bottom: "conv5_1/incep/2_1" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep" +} +layer { + name: "conv5_1/out/conv" + type: "Convolution" + bottom: "conv5_1/incep" + top: "conv5_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/proj" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1" + type: "Eltwise" + bottom: "conv5_1/out" + bottom: "conv5_1/proj" + top: "conv5_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_2/incep/0/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/0/relu" + type: "ReLU" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep" + type: "Concat" + bottom: "conv5_2/incep/0" + bottom: "conv5_2/incep/1_0" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep" +} +layer { + name: "conv5_2/out/conv" + type: "Convolution" + bottom: "conv5_2/incep" + top: "conv5_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2" + type: "Eltwise" + bottom: "conv5_2/out" + bottom: "conv5_1" + top: "conv5_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_3/incep/0/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/0/relu" + type: "ReLU" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep" + type: "Concat" + bottom: "conv5_3/incep/0" + bottom: "conv5_3/incep/1_0" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep" +} +layer { + name: "conv5_3/out/conv" + type: "Convolution" + bottom: "conv5_3/incep" + top: "conv5_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3" + type: "Eltwise" + bottom: "conv5_3/out" + bottom: "conv5_2" + top: "conv5_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/incep/0/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/0/relu" + type: "ReLU" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep" + type: "Concat" + bottom: "conv5_4/incep/0" + bottom: "conv5_4/incep/1_0" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep" +} +layer { + name: "conv5_4/out/conv" + type: "Convolution" + bottom: "conv5_4/incep" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: true + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4" + type: "Eltwise" + bottom: "conv5_4/out" + bottom: "conv5_3" + top: "conv5_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} + +### hyper feature ### +layer { + name: "downsample" + type: "Pooling" + bottom: "conv3_4" + top: "downsample" + pooling_param { + kernel_size: 3 + stride: 2 + pad: 0 + pool: MAX + } +} +layer { + name: "upsample" + type: "Deconvolution" + bottom: "conv5_4" + top: "upsample" + param { + lr_mult: 0 + decay_mult: 0 + } + convolution_param { + num_output: 384 + kernel_size: 4 + pad: 1 + stride: 2 + group: 384 + bias_term: false + weight_filler: { + type: "bilinear" + } + } +} +layer { + name: "concat" + bottom: "downsample" + bottom: "conv4_4" + bottom: "upsample" + top: "concat" + type: "Concat" + concat_param { + axis: 1 + } +} +layer { + name: "convf_rpn" + type: "Convolution" + bottom: "concat" + top: "convf_rpn" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + convolution_param { + num_output: 128 + kernel_size: 1 + pad: 0 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "reluf_rpn" + type: "ReLU" + bottom: "convf_rpn" + top: "convf_rpn" +} +layer { + name: "convf_2" + type: "Convolution" + bottom: "concat" + top: "convf_2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + convolution_param { + num_output: 384 + kernel_size: 1 + pad: 0 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "reluf_2" + type: "ReLU" + bottom: "convf_2" + top: "convf_2" +} +layer { + name: "concat_convf" + bottom: "convf_rpn" + bottom: "convf_2" + top: "convf" + type: "Concat" + concat_param { + axis: 1 + } +} + +################################################################################ +## RPN +################################################################################ + +### RPN conv ### +layer { + name: "rpn_conv1" + type: "Convolution" + bottom: "convf_rpn" + top: "rpn_conv1" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu1" + type: "ReLU" + bottom: "rpn_conv1" + top: "rpn_conv1" +} +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 50 # 2(bg/fg) * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 100 # 4 * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "{'feat_stride': 16, 'scales': [3, 6, 9, 16, 32], 'ratios': [0.5, 0.667, 1.0, 1.5, 2.0]}" + } +} +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: 'rpn_bbox_inside_weights' + bottom: 'rpn_bbox_outside_weights' + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + +#========= RoI Proposal ============ + +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 50 dim: -1 dim: 0 } } +} +# C++ implementation of the proposal layer +layer { + name: 'proposal' + type: 'Proposal' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rpn_rois' + top: 'rpn_scores' + proposal_param { + ratio: 0.5 ratio: 0.667 ratio: 1.0 ratio: 1.5 ratio: 2.0 + scale: 3 scale: 6 scale: 9 scale: 16 scale: 32 + base_size: 16 + feat_stride: 16 + pre_nms_topn: 12000 + post_nms_topn: 200 + nms_thresh: 0.7 + min_size: 16 + } +} +layer { + name: 'mute_rpn_scores' + bottom: 'rpn_scores' + type: 'Silence' +} + +layer { + name: 'roi-data' + type: 'Python' + bottom: 'rpn_rois' + bottom: 'gt_boxes' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'rpn.proposal_target_layer' + layer: 'ProposalTargetLayer' + param_str: "'num_classes': 21" + } +} + +################################################################################ +## RCNN +################################################################################ +layer { + name: "roi_pool_conv5" + type: "ROIPooling" + bottom: "convf" + bottom: "rois" + top: "roi_pool_conv5" + roi_pooling_param { + pooled_w: 6 + pooled_h: 6 + spatial_scale: 0.0625 # 1/16 + } +} +layer { + name: "fc6" + type: "InnerProduct" + bottom: "roi_pool_conv5" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc6/dropout" + type: "Dropout" + bottom: "fc6" + top: "fc6" + dropout_param { + dropout_ratio: 0.25 + } +} +layer { + name: "fc6/relu" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "fc7" + type: "InnerProduct" + bottom: "fc6" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc7/dropout" + type: "Dropout" + bottom: "fc7" + top: "fc7" + dropout_param { + dropout_ratio: 0.25 + } +} +layer { + name: "fc7/relu" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} +layer { + name: "cls_score" + type: "InnerProduct" + bottom: "fc7" + top: "cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 21 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "bbox_pred" + type: "InnerProduct" + bottom: "fc7" + top: "bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 84 + weight_filler { type: "gaussian" std: 0.001 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "loss_cls" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels" + propagate_down: 1 + propagate_down: 0 + top: "cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} +layer { + name: "loss_bbox" + type: "SmoothL1Loss" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: 'bbox_inside_weights' + bottom: 'bbox_outside_weights' + top: "loss_bbox" + loss_weight: 1 +} diff --git a/models/pvanet/example_train_384/README.md b/models/pvanet/example_train_384/README.md new file mode 100644 index 000000000..7e49263a2 --- /dev/null +++ b/models/pvanet/example_train_384/README.md @@ -0,0 +1,8 @@ +## PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection +by Kye-Hyeon Kim, Sanghoon Hong, Byungseok Roh, Yeongjae Cheon, Minje Park (Intel Imaging and Camera Technology) + +### Notes +- The training of PVANet 9.0 on the VOC2012 leaderboard wasn't done with this code. +- **This training prototxt hasn't been tested yet**. +- PVANet pre-trained model contains a FC6 layer with a 6x6x384-shaped input. Therefore, layers in this training example generates **a hyper feature with the depth of 384** which is different from the one in the arXiv article. + diff --git a/models/pvanet/example_train_384/solver.prototxt b/models/pvanet/example_train_384/solver.prototxt new file mode 100644 index 000000000..9b5f2f14b --- /dev/null +++ b/models/pvanet/example_train_384/solver.prototxt @@ -0,0 +1,18 @@ +train_net: "models/pvanet/example_train_384/train.prototxt" + +base_lr: 0.001 +lr_policy: "step" +gamma: 0.1 +stepsize: 50000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0002 + + +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "pvanet_frcnn_384" +iter_size: 2 diff --git a/models/pvanet/example_train_384/test.prototxt b/models/pvanet/example_train_384/test.prototxt new file mode 100644 index 000000000..72e7dec05 --- /dev/null +++ b/models/pvanet/example_train_384/test.prototxt @@ -0,0 +1,6491 @@ +name: "PVANET" + +################################################################################ +## Input +################################################################################ + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 640 + dim: 1056 +} + +input: "im_info" +input_shape { + dim: 1 + dim: 6 +} + +################################################################################ +## Convolution +################################################################################ + +layer { + name: "conv1_1/conv" + type: "Convolution" + bottom: "data" + top: "conv1_1/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 16 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 3 + pad_w: 3 + kernel_h: 7 + kernel_w: 7 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv1_1/bn" + type: "BatchNorm" + bottom: "conv1_1/conv" + top: "conv1_1/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv1_1/neg" + type: "Power" + bottom: "conv1_1/conv" + top: "conv1_1/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv1_1/concat" + type: "Concat" + bottom: "conv1_1/conv" + bottom: "conv1_1/neg" + top: "conv1_1" +} +layer { + name: "conv1_1/scale" + type: "Scale" + bottom: "conv1_1" + top: "conv1_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv1_1/relu" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv2_1/1/conv" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/1/bn" + type: "BatchNorm" + bottom: "conv2_1/1" + top: "conv2_1/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/1/bn_scale" + type: "Scale" + bottom: "conv2_1/1" + top: "conv2_1/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/1/relu" + type: "ReLU" + bottom: "conv2_1/1" + top: "conv2_1/1" +} +layer { + name: "conv2_1/2/conv" + type: "Convolution" + bottom: "conv2_1/1" + top: "conv2_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/2/bn" + type: "BatchNorm" + bottom: "conv2_1/2/conv" + top: "conv2_1/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/2/neg" + type: "Power" + bottom: "conv2_1/2/conv" + top: "conv2_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_1/2/concat" + type: "Concat" + bottom: "conv2_1/2/conv" + bottom: "conv2_1/2/neg" + top: "conv2_1/2" +} +layer { + name: "conv2_1/2/scale" + type: "Scale" + bottom: "conv2_1/2" + top: "conv2_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/2/relu" + type: "ReLU" + bottom: "conv2_1/2" + top: "conv2_1/2" +} +layer { + name: "conv2_1/3/conv" + type: "Convolution" + bottom: "conv2_1/2" + top: "conv2_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/3/bn" + type: "BatchNorm" + bottom: "conv2_1/3" + top: "conv2_1/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/3/bn_scale" + type: "Scale" + bottom: "conv2_1/3" + top: "conv2_1/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/proj" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/proj_bn" + type: "BatchNorm" + bottom: "conv2_1/proj" + top: "conv2_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/proj_bn_scale" + type: "Scale" + bottom: "conv2_1/proj" + top: "conv2_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1" + type: "Eltwise" + bottom: "conv2_1/3" + bottom: "conv2_1/proj" + top: "conv2_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_2/1/conv" + type: "Convolution" + bottom: "conv2_1" + top: "conv2_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/1/bn" + type: "BatchNorm" + bottom: "conv2_2/1" + top: "conv2_2/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/1/bn_scale" + type: "Scale" + bottom: "conv2_2/1" + top: "conv2_2/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/1/relu" + type: "ReLU" + bottom: "conv2_2/1" + top: "conv2_2/1" +} +layer { + name: "conv2_2/2/conv" + type: "Convolution" + bottom: "conv2_2/1" + top: "conv2_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/2/bn" + type: "BatchNorm" + bottom: "conv2_2/2/conv" + top: "conv2_2/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/2/neg" + type: "Power" + bottom: "conv2_2/2/conv" + top: "conv2_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_2/2/concat" + type: "Concat" + bottom: "conv2_2/2/conv" + bottom: "conv2_2/2/neg" + top: "conv2_2/2" +} +layer { + name: "conv2_2/2/scale" + type: "Scale" + bottom: "conv2_2/2" + top: "conv2_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/2/relu" + type: "ReLU" + bottom: "conv2_2/2" + top: "conv2_2/2" +} +layer { + name: "conv2_2/3/conv" + type: "Convolution" + bottom: "conv2_2/2" + top: "conv2_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/3/bn" + type: "BatchNorm" + bottom: "conv2_2/3" + top: "conv2_2/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/3/bn_scale" + type: "Scale" + bottom: "conv2_2/3" + top: "conv2_2/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/input" + type: "Power" + bottom: "conv2_1" + top: "conv2_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_2" + type: "Eltwise" + bottom: "conv2_2/3" + bottom: "conv2_2/input" + top: "conv2_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_3/1/conv" + type: "Convolution" + bottom: "conv2_2" + top: "conv2_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/1/bn" + type: "BatchNorm" + bottom: "conv2_3/1" + top: "conv2_3/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/1/bn_scale" + type: "Scale" + bottom: "conv2_3/1" + top: "conv2_3/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/1/relu" + type: "ReLU" + bottom: "conv2_3/1" + top: "conv2_3/1" +} +layer { + name: "conv2_3/2/conv" + type: "Convolution" + bottom: "conv2_3/1" + top: "conv2_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/2/bn" + type: "BatchNorm" + bottom: "conv2_3/2/conv" + top: "conv2_3/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/2/neg" + type: "Power" + bottom: "conv2_3/2/conv" + top: "conv2_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_3/2/concat" + type: "Concat" + bottom: "conv2_3/2/conv" + bottom: "conv2_3/2/neg" + top: "conv2_3/2" +} +layer { + name: "conv2_3/2/scale" + type: "Scale" + bottom: "conv2_3/2" + top: "conv2_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/2/relu" + type: "ReLU" + bottom: "conv2_3/2" + top: "conv2_3/2" +} +layer { + name: "conv2_3/3/conv" + type: "Convolution" + bottom: "conv2_3/2" + top: "conv2_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/3/bn" + type: "BatchNorm" + bottom: "conv2_3/3" + top: "conv2_3/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/3/bn_scale" + type: "Scale" + bottom: "conv2_3/3" + top: "conv2_3/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/input" + type: "Power" + bottom: "conv2_2" + top: "conv2_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_3" + type: "Eltwise" + bottom: "conv2_3/3" + bottom: "conv2_3/input" + top: "conv2_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_1/1/conv" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/1/bn" + type: "BatchNorm" + bottom: "conv3_1/1" + top: "conv3_1/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/1/bn_scale" + type: "Scale" + bottom: "conv3_1/1" + top: "conv3_1/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/1/relu" + type: "ReLU" + bottom: "conv3_1/1" + top: "conv3_1/1" +} +layer { + name: "conv3_1/2/conv" + type: "Convolution" + bottom: "conv3_1/1" + top: "conv3_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/2/bn" + type: "BatchNorm" + bottom: "conv3_1/2/conv" + top: "conv3_1/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/2/neg" + type: "Power" + bottom: "conv3_1/2/conv" + top: "conv3_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_1/2/concat" + type: "Concat" + bottom: "conv3_1/2/conv" + bottom: "conv3_1/2/neg" + top: "conv3_1/2" +} +layer { + name: "conv3_1/2/scale" + type: "Scale" + bottom: "conv3_1/2" + top: "conv3_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/2/relu" + type: "ReLU" + bottom: "conv3_1/2" + top: "conv3_1/2" +} +layer { + name: "conv3_1/3/conv" + type: "Convolution" + bottom: "conv3_1/2" + top: "conv3_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/3/bn" + type: "BatchNorm" + bottom: "conv3_1/3" + top: "conv3_1/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/3/bn_scale" + type: "Scale" + bottom: "conv3_1/3" + top: "conv3_1/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/proj" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/proj_bn" + type: "BatchNorm" + bottom: "conv3_1/proj" + top: "conv3_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/proj_bn_scale" + type: "Scale" + bottom: "conv3_1/proj" + top: "conv3_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1" + type: "Eltwise" + bottom: "conv3_1/3" + bottom: "conv3_1/proj" + top: "conv3_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_2/1/conv" + type: "Convolution" + bottom: "conv3_1" + top: "conv3_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/1/bn" + type: "BatchNorm" + bottom: "conv3_2/1" + top: "conv3_2/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/1/bn_scale" + type: "Scale" + bottom: "conv3_2/1" + top: "conv3_2/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/1/relu" + type: "ReLU" + bottom: "conv3_2/1" + top: "conv3_2/1" +} +layer { + name: "conv3_2/2/conv" + type: "Convolution" + bottom: "conv3_2/1" + top: "conv3_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/2/bn" + type: "BatchNorm" + bottom: "conv3_2/2/conv" + top: "conv3_2/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/2/neg" + type: "Power" + bottom: "conv3_2/2/conv" + top: "conv3_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_2/2/concat" + type: "Concat" + bottom: "conv3_2/2/conv" + bottom: "conv3_2/2/neg" + top: "conv3_2/2" +} +layer { + name: "conv3_2/2/scale" + type: "Scale" + bottom: "conv3_2/2" + top: "conv3_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/2/relu" + type: "ReLU" + bottom: "conv3_2/2" + top: "conv3_2/2" +} +layer { + name: "conv3_2/3/conv" + type: "Convolution" + bottom: "conv3_2/2" + top: "conv3_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/3/bn" + type: "BatchNorm" + bottom: "conv3_2/3" + top: "conv3_2/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/3/bn_scale" + type: "Scale" + bottom: "conv3_2/3" + top: "conv3_2/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/input" + type: "Power" + bottom: "conv3_1" + top: "conv3_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_2" + type: "Eltwise" + bottom: "conv3_2/3" + bottom: "conv3_2/input" + top: "conv3_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_3/1/conv" + type: "Convolution" + bottom: "conv3_2" + top: "conv3_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/1/bn" + type: "BatchNorm" + bottom: "conv3_3/1" + top: "conv3_3/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/1/bn_scale" + type: "Scale" + bottom: "conv3_3/1" + top: "conv3_3/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/1/relu" + type: "ReLU" + bottom: "conv3_3/1" + top: "conv3_3/1" +} +layer { + name: "conv3_3/2/conv" + type: "Convolution" + bottom: "conv3_3/1" + top: "conv3_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/2/bn" + type: "BatchNorm" + bottom: "conv3_3/2/conv" + top: "conv3_3/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/2/neg" + type: "Power" + bottom: "conv3_3/2/conv" + top: "conv3_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_3/2/concat" + type: "Concat" + bottom: "conv3_3/2/conv" + bottom: "conv3_3/2/neg" + top: "conv3_3/2" +} +layer { + name: "conv3_3/2/scale" + type: "Scale" + bottom: "conv3_3/2" + top: "conv3_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/2/relu" + type: "ReLU" + bottom: "conv3_3/2" + top: "conv3_3/2" +} +layer { + name: "conv3_3/3/conv" + type: "Convolution" + bottom: "conv3_3/2" + top: "conv3_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/3/bn" + type: "BatchNorm" + bottom: "conv3_3/3" + top: "conv3_3/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/3/bn_scale" + type: "Scale" + bottom: "conv3_3/3" + top: "conv3_3/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/input" + type: "Power" + bottom: "conv3_2" + top: "conv3_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_3" + type: "Eltwise" + bottom: "conv3_3/3" + bottom: "conv3_3/input" + top: "conv3_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_4/1/conv" + type: "Convolution" + bottom: "conv3_3" + top: "conv3_4/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/1/bn" + type: "BatchNorm" + bottom: "conv3_4/1" + top: "conv3_4/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/1/bn_scale" + type: "Scale" + bottom: "conv3_4/1" + top: "conv3_4/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/1/relu" + type: "ReLU" + bottom: "conv3_4/1" + top: "conv3_4/1" +} +layer { + name: "conv3_4/2/conv" + type: "Convolution" + bottom: "conv3_4/1" + top: "conv3_4/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/2/bn" + type: "BatchNorm" + bottom: "conv3_4/2/conv" + top: "conv3_4/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/2/neg" + type: "Power" + bottom: "conv3_4/2/conv" + top: "conv3_4/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_4/2/concat" + type: "Concat" + bottom: "conv3_4/2/conv" + bottom: "conv3_4/2/neg" + top: "conv3_4/2" +} +layer { + name: "conv3_4/2/scale" + type: "Scale" + bottom: "conv3_4/2" + top: "conv3_4/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/2/relu" + type: "ReLU" + bottom: "conv3_4/2" + top: "conv3_4/2" +} +layer { + name: "conv3_4/3/conv" + type: "Convolution" + bottom: "conv3_4/2" + top: "conv3_4/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/3/bn" + type: "BatchNorm" + bottom: "conv3_4/3" + top: "conv3_4/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/3/bn_scale" + type: "Scale" + bottom: "conv3_4/3" + top: "conv3_4/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/input" + type: "Power" + bottom: "conv3_3" + top: "conv3_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_4" + type: "Eltwise" + bottom: "conv3_4/3" + bottom: "conv3_4/input" + top: "conv3_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_1/incep/0/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/0/relu" + type: "ReLU" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/pool" + type: "Pooling" + bottom: "conv3_4" + top: "conv4_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv4_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv4_1/incep/pool" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep" + type: "Concat" + bottom: "conv4_1/incep/0" + bottom: "conv4_1/incep/1_0" + bottom: "conv4_1/incep/2_1" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep" +} +layer { + name: "conv4_1/out/conv" + type: "Convolution" + bottom: "conv4_1/incep" + top: "conv4_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/out/bn" + type: "BatchNorm" + bottom: "conv4_1/out" + top: "conv4_1/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/out/bn_scale" + type: "Scale" + bottom: "conv4_1/out" + top: "conv4_1/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/proj" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/proj_bn" + type: "BatchNorm" + bottom: "conv4_1/proj" + top: "conv4_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/proj_bn_scale" + type: "Scale" + bottom: "conv4_1/proj" + top: "conv4_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1" + type: "Eltwise" + bottom: "conv4_1/out" + bottom: "conv4_1/proj" + top: "conv4_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_2/incep/0/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/0/relu" + type: "ReLU" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep" + type: "Concat" + bottom: "conv4_2/incep/0" + bottom: "conv4_2/incep/1_0" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep" +} +layer { + name: "conv4_2/out/conv" + type: "Convolution" + bottom: "conv4_2/incep" + top: "conv4_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/out/bn" + type: "BatchNorm" + bottom: "conv4_2/out" + top: "conv4_2/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/out/bn_scale" + type: "Scale" + bottom: "conv4_2/out" + top: "conv4_2/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/input" + type: "Power" + bottom: "conv4_1" + top: "conv4_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_2" + type: "Eltwise" + bottom: "conv4_2/out" + bottom: "conv4_2/input" + top: "conv4_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_3/incep/0/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/0/relu" + type: "ReLU" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep" + type: "Concat" + bottom: "conv4_3/incep/0" + bottom: "conv4_3/incep/1_0" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep" +} +layer { + name: "conv4_3/out/conv" + type: "Convolution" + bottom: "conv4_3/incep" + top: "conv4_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/out/bn" + type: "BatchNorm" + bottom: "conv4_3/out" + top: "conv4_3/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/out/bn_scale" + type: "Scale" + bottom: "conv4_3/out" + top: "conv4_3/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/input" + type: "Power" + bottom: "conv4_2" + top: "conv4_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_3" + type: "Eltwise" + bottom: "conv4_3/out" + bottom: "conv4_3/input" + top: "conv4_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_4/incep/0/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/0/relu" + type: "ReLU" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep" + type: "Concat" + bottom: "conv4_4/incep/0" + bottom: "conv4_4/incep/1_0" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep" +} +layer { + name: "conv4_4/out/conv" + type: "Convolution" + bottom: "conv4_4/incep" + top: "conv4_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/out/bn" + type: "BatchNorm" + bottom: "conv4_4/out" + top: "conv4_4/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/out/bn_scale" + type: "Scale" + bottom: "conv4_4/out" + top: "conv4_4/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/input" + type: "Power" + bottom: "conv4_3" + top: "conv4_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_4" + type: "Eltwise" + bottom: "conv4_4/out" + bottom: "conv4_4/input" + top: "conv4_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_1/incep/0/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/0/relu" + type: "ReLU" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/pool" + type: "Pooling" + bottom: "conv4_4" + top: "conv5_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv5_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv5_1/incep/pool" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep" + type: "Concat" + bottom: "conv5_1/incep/0" + bottom: "conv5_1/incep/1_0" + bottom: "conv5_1/incep/2_1" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep" +} +layer { + name: "conv5_1/out/conv" + type: "Convolution" + bottom: "conv5_1/incep" + top: "conv5_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/out/bn" + type: "BatchNorm" + bottom: "conv5_1/out" + top: "conv5_1/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/out/bn_scale" + type: "Scale" + bottom: "conv5_1/out" + top: "conv5_1/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/proj" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/proj_bn" + type: "BatchNorm" + bottom: "conv5_1/proj" + top: "conv5_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/proj_bn_scale" + type: "Scale" + bottom: "conv5_1/proj" + top: "conv5_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1" + type: "Eltwise" + bottom: "conv5_1/out" + bottom: "conv5_1/proj" + top: "conv5_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_2/incep/0/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/0/relu" + type: "ReLU" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep" + type: "Concat" + bottom: "conv5_2/incep/0" + bottom: "conv5_2/incep/1_0" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep" +} +layer { + name: "conv5_2/out/conv" + type: "Convolution" + bottom: "conv5_2/incep" + top: "conv5_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/out/bn" + type: "BatchNorm" + bottom: "conv5_2/out" + top: "conv5_2/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/out/bn_scale" + type: "Scale" + bottom: "conv5_2/out" + top: "conv5_2/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/input" + type: "Power" + bottom: "conv5_1" + top: "conv5_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_2" + type: "Eltwise" + bottom: "conv5_2/out" + bottom: "conv5_2/input" + top: "conv5_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_3/incep/0/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/0/relu" + type: "ReLU" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep" + type: "Concat" + bottom: "conv5_3/incep/0" + bottom: "conv5_3/incep/1_0" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep" +} +layer { + name: "conv5_3/out/conv" + type: "Convolution" + bottom: "conv5_3/incep" + top: "conv5_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/out/bn" + type: "BatchNorm" + bottom: "conv5_3/out" + top: "conv5_3/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/out/bn_scale" + type: "Scale" + bottom: "conv5_3/out" + top: "conv5_3/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/input" + type: "Power" + bottom: "conv5_2" + top: "conv5_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_3" + type: "Eltwise" + bottom: "conv5_3/out" + bottom: "conv5_3/input" + top: "conv5_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/incep/0/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/0/relu" + type: "ReLU" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep" + type: "Concat" + bottom: "conv5_4/incep/0" + bottom: "conv5_4/incep/1_0" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep" +} +layer { + name: "conv5_4/out/conv" + type: "Convolution" + bottom: "conv5_4/incep" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/out/bn" + type: "BatchNorm" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/out/bn_scale" + type: "Scale" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/input" + type: "Power" + bottom: "conv5_3" + top: "conv5_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_4" + type: "Eltwise" + bottom: "conv5_4/out" + bottom: "conv5_4/input" + top: "conv5_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} + +### hyper feature ### +layer { + name: "downsample" + type: "Pooling" + bottom: "conv3_4" + top: "downsample" + pooling_param { + kernel_size: 3 + stride: 2 + pad: 0 + pool: MAX + } +} +layer { + name: "upsample" + type: "Deconvolution" + bottom: "conv5_4" + top: "upsample" + param { + lr_mult: 0 + decay_mult: 0 + } + convolution_param { + num_output: 384 + kernel_size: 4 + pad: 1 + stride: 2 + group: 384 + bias_term: false + weight_filler: { + type: "bilinear" + } + } +} +layer { + name: "concat" + bottom: "downsample" + bottom: "conv4_4" + bottom: "upsample" + top: "concat" + type: "Concat" + concat_param { + axis: 1 + } +} +layer { + name: "convf" + type: "Convolution" + bottom: "concat" + top: "convf" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + convolution_param { + num_output: 384 + kernel_size: 1 + pad: 0 + stride: 1 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "reluf" + type: "ReLU" + bottom: "convf" + top: "convf" +} + + +################################################################################ +## RPN +################################################################################ + +### RPN conv ### +layer { + name: "rpn_conv1" + type: "Convolution" + bottom: "convf" + top: "rpn_conv1" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu1" + type: "ReLU" + bottom: "rpn_conv1" + top: "rpn_conv1" +} +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 50 # 2(bg/fg) * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 100 # 4 * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +################################################################################ +## Proposal +################################################################################ +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 50 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Proposal' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + top: 'scores' + proposal_param { + ratio: 0.5 ratio: 0.667 ratio: 1.0 ratio: 1.5 ratio: 2.0 + scale: 3 scale: 6 scale: 9 scale: 16 scale: 32 + base_size: 16 + feat_stride: 16 + pre_nms_topn: 12000 + post_nms_topn: 200 + nms_thresh: 0.7 + min_size: 16 + } +} + +################################################################################ +## RCNN +################################################################################ +layer { + name: "roi_pool_conv5" + type: "ROIPooling" + bottom: "convf" + bottom: "rois" + top: "roi_pool_conv5" + roi_pooling_param { + pooled_w: 6 + pooled_h: 6 + spatial_scale: 0.0625 # 1/16 + } +} +layer { + name: "fc6" + type: "InnerProduct" + bottom: "roi_pool_conv5" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc6/bn" + type: "BatchNorm" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc6/scale" + type: "Scale" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc6/dropout" + type: "Dropout" + bottom: "fc6" + top: "fc6" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc6/relu" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "fc7" + type: "InnerProduct" + bottom: "fc6" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc7/bn" + type: "BatchNorm" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc7/scale" + type: "Scale" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc7/dropout" + type: "Dropout" + bottom: "fc7" + top: "fc7" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc7/relu" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} +layer { + name: "cls_score" + type: "InnerProduct" + bottom: "fc7" + top: "cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 21 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "bbox_pred" + type: "InnerProduct" + bottom: "fc7" + top: "bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 84 + weight_filler { type: "gaussian" std: 0.001 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob" +} diff --git a/models/pvanet/example_train_384/train.prototxt b/models/pvanet/example_train_384/train.prototxt new file mode 100644 index 000000000..d1bbba641 --- /dev/null +++ b/models/pvanet/example_train_384/train.prototxt @@ -0,0 +1,6539 @@ +name: "PVANet" +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + + +################################################################################ +## Convolution +################################################################################ + +layer { + name: "conv1_1/conv" + type: "Convolution" + bottom: "data" + top: "conv1_1/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 16 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 3 + pad_w: 3 + kernel_h: 7 + kernel_w: 7 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv1_1/bn" + type: "BatchNorm" + bottom: "conv1_1/conv" + top: "conv1_1/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv1_1/neg" + type: "Power" + bottom: "conv1_1/conv" + top: "conv1_1/neg" + power_param { + power: 1 + scale: -1.0 + shift: 1 + } +} +layer { + name: "conv1_1/concat" + type: "Concat" + bottom: "conv1_1/conv" + bottom: "conv1_1/neg" + top: "conv1_1" +} +layer { + name: "conv1_1/scale" + type: "Scale" + bottom: "conv1_1" + top: "conv1_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv1_1/relu" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv2_1/1/conv" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/1/bn" + type: "BatchNorm" + bottom: "conv2_1/1" + top: "conv2_1/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/1/bn_scale" + type: "Scale" + bottom: "conv2_1/1" + top: "conv2_1/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/1/relu" + type: "ReLU" + bottom: "conv2_1/1" + top: "conv2_1/1" +} +layer { + name: "conv2_1/2/conv" + type: "Convolution" + bottom: "conv2_1/1" + top: "conv2_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/2/bn" + type: "BatchNorm" + bottom: "conv2_1/2/conv" + top: "conv2_1/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/2/neg" + type: "Power" + bottom: "conv2_1/2/conv" + top: "conv2_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 1 + } +} +layer { + name: "conv2_1/2/concat" + type: "Concat" + bottom: "conv2_1/2/conv" + bottom: "conv2_1/2/neg" + top: "conv2_1/2" +} +layer { + name: "conv2_1/2/scale" + type: "Scale" + bottom: "conv2_1/2" + top: "conv2_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/2/relu" + type: "ReLU" + bottom: "conv2_1/2" + top: "conv2_1/2" +} +layer { + name: "conv2_1/3/conv" + type: "Convolution" + bottom: "conv2_1/2" + top: "conv2_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/3/bn" + type: "BatchNorm" + bottom: "conv2_1/3" + top: "conv2_1/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/3/bn_scale" + type: "Scale" + bottom: "conv2_1/3" + top: "conv2_1/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/proj" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/proj_bn" + type: "BatchNorm" + bottom: "conv2_1/proj" + top: "conv2_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/proj_bn_scale" + type: "Scale" + bottom: "conv2_1/proj" + top: "conv2_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1" + type: "Eltwise" + bottom: "conv2_1/3" + bottom: "conv2_1/proj" + top: "conv2_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_2/1/conv" + type: "Convolution" + bottom: "conv2_1" + top: "conv2_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/1/bn" + type: "BatchNorm" + bottom: "conv2_2/1" + top: "conv2_2/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/1/bn_scale" + type: "Scale" + bottom: "conv2_2/1" + top: "conv2_2/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/1/relu" + type: "ReLU" + bottom: "conv2_2/1" + top: "conv2_2/1" +} +layer { + name: "conv2_2/2/conv" + type: "Convolution" + bottom: "conv2_2/1" + top: "conv2_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/2/bn" + type: "BatchNorm" + bottom: "conv2_2/2/conv" + top: "conv2_2/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/2/neg" + type: "Power" + bottom: "conv2_2/2/conv" + top: "conv2_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 1 + } +} +layer { + name: "conv2_2/2/concat" + type: "Concat" + bottom: "conv2_2/2/conv" + bottom: "conv2_2/2/neg" + top: "conv2_2/2" +} +layer { + name: "conv2_2/2/scale" + type: "Scale" + bottom: "conv2_2/2" + top: "conv2_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/2/relu" + type: "ReLU" + bottom: "conv2_2/2" + top: "conv2_2/2" +} +layer { + name: "conv2_2/3/conv" + type: "Convolution" + bottom: "conv2_2/2" + top: "conv2_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/3/bn" + type: "BatchNorm" + bottom: "conv2_2/3" + top: "conv2_2/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/3/bn_scale" + type: "Scale" + bottom: "conv2_2/3" + top: "conv2_2/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/input" + type: "Power" + bottom: "conv2_1" + top: "conv2_2/input" + power_param { + power: 1 + scale: 1 + shift: 1 + } +} +layer { + name: "conv2_2" + type: "Eltwise" + bottom: "conv2_2/3" + bottom: "conv2_2/input" + top: "conv2_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_3/1/conv" + type: "Convolution" + bottom: "conv2_2" + top: "conv2_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/1/bn" + type: "BatchNorm" + bottom: "conv2_3/1" + top: "conv2_3/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/1/bn_scale" + type: "Scale" + bottom: "conv2_3/1" + top: "conv2_3/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/1/relu" + type: "ReLU" + bottom: "conv2_3/1" + top: "conv2_3/1" +} +layer { + name: "conv2_3/2/conv" + type: "Convolution" + bottom: "conv2_3/1" + top: "conv2_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/2/bn" + type: "BatchNorm" + bottom: "conv2_3/2/conv" + top: "conv2_3/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/2/neg" + type: "Power" + bottom: "conv2_3/2/conv" + top: "conv2_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 1 + } +} +layer { + name: "conv2_3/2/concat" + type: "Concat" + bottom: "conv2_3/2/conv" + bottom: "conv2_3/2/neg" + top: "conv2_3/2" +} +layer { + name: "conv2_3/2/scale" + type: "Scale" + bottom: "conv2_3/2" + top: "conv2_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/2/relu" + type: "ReLU" + bottom: "conv2_3/2" + top: "conv2_3/2" +} +layer { + name: "conv2_3/3/conv" + type: "Convolution" + bottom: "conv2_3/2" + top: "conv2_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/3/bn" + type: "BatchNorm" + bottom: "conv2_3/3" + top: "conv2_3/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/3/bn_scale" + type: "Scale" + bottom: "conv2_3/3" + top: "conv2_3/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/input" + type: "Power" + bottom: "conv2_2" + top: "conv2_3/input" + power_param { + power: 1 + scale: 1 + shift: 1 + } +} +layer { + name: "conv2_3" + type: "Eltwise" + bottom: "conv2_3/3" + bottom: "conv2_3/input" + top: "conv2_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_1/1/conv" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/1/bn" + type: "BatchNorm" + bottom: "conv3_1/1" + top: "conv3_1/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/1/bn_scale" + type: "Scale" + bottom: "conv3_1/1" + top: "conv3_1/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/1/relu" + type: "ReLU" + bottom: "conv3_1/1" + top: "conv3_1/1" +} +layer { + name: "conv3_1/2/conv" + type: "Convolution" + bottom: "conv3_1/1" + top: "conv3_1/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/2/bn" + type: "BatchNorm" + bottom: "conv3_1/2/conv" + top: "conv3_1/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/2/neg" + type: "Power" + bottom: "conv3_1/2/conv" + top: "conv3_1/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 1 + } +} +layer { + name: "conv3_1/2/concat" + type: "Concat" + bottom: "conv3_1/2/conv" + bottom: "conv3_1/2/neg" + top: "conv3_1/2" +} +layer { + name: "conv3_1/2/scale" + type: "Scale" + bottom: "conv3_1/2" + top: "conv3_1/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/2/relu" + type: "ReLU" + bottom: "conv3_1/2" + top: "conv3_1/2" +} +layer { + name: "conv3_1/3/conv" + type: "Convolution" + bottom: "conv3_1/2" + top: "conv3_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/3/bn" + type: "BatchNorm" + bottom: "conv3_1/3" + top: "conv3_1/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/3/bn_scale" + type: "Scale" + bottom: "conv3_1/3" + top: "conv3_1/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/proj" + type: "Convolution" + bottom: "conv2_3" + top: "conv3_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/proj_bn" + type: "BatchNorm" + bottom: "conv3_1/proj" + top: "conv3_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/proj_bn_scale" + type: "Scale" + bottom: "conv3_1/proj" + top: "conv3_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1" + type: "Eltwise" + bottom: "conv3_1/3" + bottom: "conv3_1/proj" + top: "conv3_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_2/1/conv" + type: "Convolution" + bottom: "conv3_1" + top: "conv3_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/1/bn" + type: "BatchNorm" + bottom: "conv3_2/1" + top: "conv3_2/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/1/bn_scale" + type: "Scale" + bottom: "conv3_2/1" + top: "conv3_2/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/1/relu" + type: "ReLU" + bottom: "conv3_2/1" + top: "conv3_2/1" +} +layer { + name: "conv3_2/2/conv" + type: "Convolution" + bottom: "conv3_2/1" + top: "conv3_2/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/2/bn" + type: "BatchNorm" + bottom: "conv3_2/2/conv" + top: "conv3_2/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/2/neg" + type: "Power" + bottom: "conv3_2/2/conv" + top: "conv3_2/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 1 + } +} +layer { + name: "conv3_2/2/concat" + type: "Concat" + bottom: "conv3_2/2/conv" + bottom: "conv3_2/2/neg" + top: "conv3_2/2" +} +layer { + name: "conv3_2/2/scale" + type: "Scale" + bottom: "conv3_2/2" + top: "conv3_2/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/2/relu" + type: "ReLU" + bottom: "conv3_2/2" + top: "conv3_2/2" +} +layer { + name: "conv3_2/3/conv" + type: "Convolution" + bottom: "conv3_2/2" + top: "conv3_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/3/bn" + type: "BatchNorm" + bottom: "conv3_2/3" + top: "conv3_2/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/3/bn_scale" + type: "Scale" + bottom: "conv3_2/3" + top: "conv3_2/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/input" + type: "Power" + bottom: "conv3_1" + top: "conv3_2/input" + power_param { + power: 1 + scale: 1 + shift: 1 + } +} +layer { + name: "conv3_2" + type: "Eltwise" + bottom: "conv3_2/3" + bottom: "conv3_2/input" + top: "conv3_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_3/1/conv" + type: "Convolution" + bottom: "conv3_2" + top: "conv3_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/1/bn" + type: "BatchNorm" + bottom: "conv3_3/1" + top: "conv3_3/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/1/bn_scale" + type: "Scale" + bottom: "conv3_3/1" + top: "conv3_3/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/1/relu" + type: "ReLU" + bottom: "conv3_3/1" + top: "conv3_3/1" +} +layer { + name: "conv3_3/2/conv" + type: "Convolution" + bottom: "conv3_3/1" + top: "conv3_3/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/2/bn" + type: "BatchNorm" + bottom: "conv3_3/2/conv" + top: "conv3_3/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/2/neg" + type: "Power" + bottom: "conv3_3/2/conv" + top: "conv3_3/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 1 + } +} +layer { + name: "conv3_3/2/concat" + type: "Concat" + bottom: "conv3_3/2/conv" + bottom: "conv3_3/2/neg" + top: "conv3_3/2" +} +layer { + name: "conv3_3/2/scale" + type: "Scale" + bottom: "conv3_3/2" + top: "conv3_3/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/2/relu" + type: "ReLU" + bottom: "conv3_3/2" + top: "conv3_3/2" +} +layer { + name: "conv3_3/3/conv" + type: "Convolution" + bottom: "conv3_3/2" + top: "conv3_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/3/bn" + type: "BatchNorm" + bottom: "conv3_3/3" + top: "conv3_3/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/3/bn_scale" + type: "Scale" + bottom: "conv3_3/3" + top: "conv3_3/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/input" + type: "Power" + bottom: "conv3_2" + top: "conv3_3/input" + power_param { + power: 1 + scale: 1 + shift: 1 + } +} +layer { + name: "conv3_3" + type: "Eltwise" + bottom: "conv3_3/3" + bottom: "conv3_3/input" + top: "conv3_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_4/1/conv" + type: "Convolution" + bottom: "conv3_3" + top: "conv3_4/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/1/bn" + type: "BatchNorm" + bottom: "conv3_4/1" + top: "conv3_4/1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/1/bn_scale" + type: "Scale" + bottom: "conv3_4/1" + top: "conv3_4/1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/1/relu" + type: "ReLU" + bottom: "conv3_4/1" + top: "conv3_4/1" +} +layer { + name: "conv3_4/2/conv" + type: "Convolution" + bottom: "conv3_4/1" + top: "conv3_4/2/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/2/bn" + type: "BatchNorm" + bottom: "conv3_4/2/conv" + top: "conv3_4/2/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/2/neg" + type: "Power" + bottom: "conv3_4/2/conv" + top: "conv3_4/2/neg" + power_param { + power: 1 + scale: -1.0 + shift: 1 + } +} +layer { + name: "conv3_4/2/concat" + type: "Concat" + bottom: "conv3_4/2/conv" + bottom: "conv3_4/2/neg" + top: "conv3_4/2" +} +layer { + name: "conv3_4/2/scale" + type: "Scale" + bottom: "conv3_4/2" + top: "conv3_4/2" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/2/relu" + type: "ReLU" + bottom: "conv3_4/2" + top: "conv3_4/2" +} +layer { + name: "conv3_4/3/conv" + type: "Convolution" + bottom: "conv3_4/2" + top: "conv3_4/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/3/bn" + type: "BatchNorm" + bottom: "conv3_4/3" + top: "conv3_4/3" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/3/bn_scale" + type: "Scale" + bottom: "conv3_4/3" + top: "conv3_4/3" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/input" + type: "Power" + bottom: "conv3_3" + top: "conv3_4/input" + power_param { + power: 1 + scale: 1 + shift: 1 + } +} +layer { + name: "conv3_4" + type: "Eltwise" + bottom: "conv3_4/3" + bottom: "conv3_4/input" + top: "conv3_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_1/incep/0/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/0/relu" + type: "ReLU" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/pool" + type: "Pooling" + bottom: "conv3_4" + top: "conv4_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv4_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv4_1/incep/pool" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep" + type: "Concat" + bottom: "conv4_1/incep/0" + bottom: "conv4_1/incep/1_0" + bottom: "conv4_1/incep/2_1" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep" +} +layer { + name: "conv4_1/out/conv" + type: "Convolution" + bottom: "conv4_1/incep" + top: "conv4_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/out/bn" + type: "BatchNorm" + bottom: "conv4_1/out" + top: "conv4_1/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/out/bn_scale" + type: "Scale" + bottom: "conv4_1/out" + top: "conv4_1/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/proj" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/proj_bn" + type: "BatchNorm" + bottom: "conv4_1/proj" + top: "conv4_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/proj_bn_scale" + type: "Scale" + bottom: "conv4_1/proj" + top: "conv4_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1" + type: "Eltwise" + bottom: "conv4_1/out" + bottom: "conv4_1/proj" + top: "conv4_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_2/incep/0/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/0/relu" + type: "ReLU" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_1" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep" + type: "Concat" + bottom: "conv4_2/incep/0" + bottom: "conv4_2/incep/1_0" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep" +} +layer { + name: "conv4_2/out/conv" + type: "Convolution" + bottom: "conv4_2/incep" + top: "conv4_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/out/bn" + type: "BatchNorm" + bottom: "conv4_2/out" + top: "conv4_2/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/out/bn_scale" + type: "Scale" + bottom: "conv4_2/out" + top: "conv4_2/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/input" + type: "Power" + bottom: "conv4_1" + top: "conv4_2/input" + power_param { + power: 1 + scale: 1 + shift: 1 + } +} +layer { + name: "conv4_2" + type: "Eltwise" + bottom: "conv4_2/out" + bottom: "conv4_2/input" + top: "conv4_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_3/incep/0/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/0/relu" + type: "ReLU" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_2" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep" + type: "Concat" + bottom: "conv4_3/incep/0" + bottom: "conv4_3/incep/1_0" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep" +} +layer { + name: "conv4_3/out/conv" + type: "Convolution" + bottom: "conv4_3/incep" + top: "conv4_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/out/bn" + type: "BatchNorm" + bottom: "conv4_3/out" + top: "conv4_3/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/out/bn_scale" + type: "Scale" + bottom: "conv4_3/out" + top: "conv4_3/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/input" + type: "Power" + bottom: "conv4_2" + top: "conv4_3/input" + power_param { + power: 1 + scale: 1 + shift: 1 + } +} +layer { + name: "conv4_3" + type: "Eltwise" + bottom: "conv4_3/out" + bottom: "conv4_3/input" + top: "conv4_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_4/incep/0/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/0/relu" + type: "ReLU" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_3" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep" + type: "Concat" + bottom: "conv4_4/incep/0" + bottom: "conv4_4/incep/1_0" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep" +} +layer { + name: "conv4_4/out/conv" + type: "Convolution" + bottom: "conv4_4/incep" + top: "conv4_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 256 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/out/bn" + type: "BatchNorm" + bottom: "conv4_4/out" + top: "conv4_4/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/out/bn_scale" + type: "Scale" + bottom: "conv4_4/out" + top: "conv4_4/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/input" + type: "Power" + bottom: "conv4_3" + top: "conv4_4/input" + power_param { + power: 1 + scale: 1 + shift: 1 + } +} +layer { + name: "conv4_4" + type: "Eltwise" + bottom: "conv4_4/out" + bottom: "conv4_4/input" + top: "conv4_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_1/incep/0/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/0/relu" + type: "ReLU" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/pool" + type: "Pooling" + bottom: "conv4_4" + top: "conv5_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv5_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv5_1/incep/pool" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep" + type: "Concat" + bottom: "conv5_1/incep/0" + bottom: "conv5_1/incep/1_0" + bottom: "conv5_1/incep/2_1" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep" +} +layer { + name: "conv5_1/out/conv" + type: "Convolution" + bottom: "conv5_1/incep" + top: "conv5_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/out/bn" + type: "BatchNorm" + bottom: "conv5_1/out" + top: "conv5_1/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/out/bn_scale" + type: "Scale" + bottom: "conv5_1/out" + top: "conv5_1/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/proj" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/proj_bn" + type: "BatchNorm" + bottom: "conv5_1/proj" + top: "conv5_1/proj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/proj_bn_scale" + type: "Scale" + bottom: "conv5_1/proj" + top: "conv5_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1" + type: "Eltwise" + bottom: "conv5_1/out" + bottom: "conv5_1/proj" + top: "conv5_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_2/incep/0/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/0/relu" + type: "ReLU" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_1" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep" + type: "Concat" + bottom: "conv5_2/incep/0" + bottom: "conv5_2/incep/1_0" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep" +} +layer { + name: "conv5_2/out/conv" + type: "Convolution" + bottom: "conv5_2/incep" + top: "conv5_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/out/bn" + type: "BatchNorm" + bottom: "conv5_2/out" + top: "conv5_2/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/out/bn_scale" + type: "Scale" + bottom: "conv5_2/out" + top: "conv5_2/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/input" + type: "Power" + bottom: "conv5_1" + top: "conv5_2/input" + power_param { + power: 1 + scale: 1 + shift: 1 + } +} +layer { + name: "conv5_2" + type: "Eltwise" + bottom: "conv5_2/out" + bottom: "conv5_2/input" + top: "conv5_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_3/incep/0/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/0/relu" + type: "ReLU" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_2" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep" + type: "Concat" + bottom: "conv5_3/incep/0" + bottom: "conv5_3/incep/1_0" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep" +} +layer { + name: "conv5_3/out/conv" + type: "Convolution" + bottom: "conv5_3/incep" + top: "conv5_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/out/bn" + type: "BatchNorm" + bottom: "conv5_3/out" + top: "conv5_3/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/out/bn_scale" + type: "Scale" + bottom: "conv5_3/out" + top: "conv5_3/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/input" + type: "Power" + bottom: "conv5_2" + top: "conv5_3/input" + power_param { + power: 1 + scale: 1 + shift: 1 + } +} +layer { + name: "conv5_3" + type: "Eltwise" + bottom: "conv5_3/out" + bottom: "conv5_3/input" + top: "conv5_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/incep/0/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/0/relu" + type: "ReLU" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_3" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep" + type: "Concat" + bottom: "conv5_4/incep/0" + bottom: "conv5_4/incep/1_0" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep" +} +layer { + name: "conv5_4/out/conv" + type: "Convolution" + bottom: "conv5_4/incep" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/out/bn" + type: "BatchNorm" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/out/bn_scale" + type: "Scale" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/input" + type: "Power" + bottom: "conv5_3" + top: "conv5_4/input" + power_param { + power: 1 + scale: 1 + shift: 1 + } +} +layer { + name: "conv5_4" + type: "Eltwise" + bottom: "conv5_4/out" + bottom: "conv5_4/input" + top: "conv5_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} + + +### hyper feature ### +layer { + name: "downsample" + type: "Pooling" + bottom: "conv3_4" + top: "downsample" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } +} +layer { + name: "upsample" + type: "Deconvolution" + bottom: "conv5_4" + top: "upsample" + param { lr_mult: 0 decay_mult: 0} + convolution_param { + num_output: 384 kernel_size: 4 pad: 1 stride: 2 group: 384 + weight_filler: {type: "bilinear" } + bias_term: false + } +} +layer { + name: "concat" + bottom: "downsample" + bottom: "conv4_4" + bottom: "upsample" + top: "concat" + type: "Concat" + concat_param { axis: 1 } +} + +layer { + name: "convf" + type: "Convolution" + bottom: "concat" + top: "convf" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "reluf" + type: "ReLU" + bottom: "convf" + top: "convf" +} + +################################################################################ +## RPN +################################################################################ + +### RPN conv ### +layer { + name: "rpn_conv1" + type: "Convolution" + bottom: "convf" + top: "rpn_conv1" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu1" + type: "ReLU" + bottom: "rpn_conv1" + top: "rpn_conv1" +} +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 50 # 2(bg/fg) * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 100 # 4 * 25(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "{'feat_stride': 16, 'scales': [3, 6, 9, 16, 32], 'ratios': [0.5, 0.667, 1.0, 1.5, 2.0]}" + } +} +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: 'rpn_bbox_inside_weights' + bottom: 'rpn_bbox_outside_weights' + top: "rpn_loss_bbox" + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + +#========= RoI Proposal ============ + +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 50 dim: -1 dim: 0 } } +} +# C++ implementation of the proposal layer +layer { + name: 'proposal' + type: 'Proposal' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rpn_rois' + top: 'rpn_scores' + proposal_param { + ratio: 0.5 ratio: 0.667 ratio: 1.0 ratio: 1.5 ratio: 2.0 + scale: 3 scale: 6 scale: 9 scale: 16 scale: 32 + base_size: 16 + feat_stride: 16 + pre_nms_topn: 12000 + post_nms_topn: 200 + nms_thresh: 0.7 + min_size: 16 + } +} +layer { + name: 'mute_rpn_scores' + bottom: 'rpn_scores' + type: 'Silence' +} + +layer { + name: 'roi-data' + type: 'Python' + bottom: 'rpn_rois' + bottom: 'gt_boxes' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + python_param { + module: 'rpn.proposal_target_layer' + layer: 'ProposalTargetLayer' + param_str: "'num_classes': 21" + } +} + +#========= RCNN ============ + +layer { + name: "roi_pool_conv5" + type: "ROIPooling" + bottom: "convf" + bottom: "rois" + top: "roi_pool_conv5" + roi_pooling_param { + pooled_w: 6 + pooled_h: 6 + spatial_scale: 0.0625 # 1/16 + } +} +layer { + name: "fc6" + type: "InnerProduct" + bottom: "roi_pool_conv5" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc6/bn" + type: "BatchNorm" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc6/scale" + type: "Scale" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc6/dropout" + type: "Dropout" + bottom: "fc6" + top: "fc6" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc6/relu" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "fc7" + type: "InnerProduct" + bottom: "fc6" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc7/bn" + type: "BatchNorm" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc7/scale" + type: "Scale" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc7/dropout" + type: "Dropout" + bottom: "fc7" + top: "fc7" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc7/relu" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} +layer { + name: "cls_score" + type: "InnerProduct" + bottom: "fc7" + top: "cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 21 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "bbox_pred" + type: "InnerProduct" + bottom: "fc7" + top: "bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + inner_product_param { + num_output: 84 + weight_filler { type: "gaussian" std: 0.001 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "loss_cls" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels" + propagate_down: 1 + propagate_down: 0 + top: "cls_loss" + loss_weight: 1 + loss_param { + ignore_label: -1 + normalize: true + } +} +layer { + name: "loss_bbox" + type: "SmoothL1Loss" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: 'bbox_inside_weights' + bottom: 'bbox_outside_weights' + top: "loss_bbox" + loss_weight: 1 +} From 7be72509ff0ce0510643082d5bcfb4cdd0dc620b Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Tue, 11 Oct 2016 11:12:19 +0900 Subject: [PATCH 20/36] Fix a bug in training examples --- models/pvanet/example_finetune/README.md | 22 +++++++++- models/pvanet/example_train_384/README.md | 24 ++++++++++- models/pvanet/example_train_384/test.prototxt | 4 +- .../pvanet/example_train_384/train.prototxt | 42 +++++++++---------- 4 files changed, 67 insertions(+), 25 deletions(-) diff --git a/models/pvanet/example_finetune/README.md b/models/pvanet/example_finetune/README.md index 86fc25f11..4ca9e5453 100644 --- a/models/pvanet/example_finetune/README.md +++ b/models/pvanet/example_finetune/README.md @@ -3,5 +3,25 @@ by Kye-Hyeon Kim, Sanghoon Hong, Byungseok Roh, Yeongjae Cheon, Minje Park (Inte ### Notes - The training of PVANet 9.0 on the VOC2012 leaderboard wasn't done with this code. -- **This training prototxt hasn't been tested yet**. +### Sample command +- Training for 100k iterations (toy) + ``` + tools/train_net.py + --gpu 0 + --solver models/pvanet/example_finetune/solver.prototxt + --weights models/pvanet/full/test.model + --iters 100000 + --cfg models/pvanet/cfgs/train.yml + --imdb voc_2007_trainval + ``` + +- Testing + + ``` + tools/test_net.py + --gpu 0 + --def models/pvanet/example_finetune/test.prototxt + --net output/faster_rcnn_pvanet/voc_2007_trainval/pvanet_frcnn_iter_100000.caffemodel + --cfg models/pvanet/cfgs/submit_160715.yml + ``` diff --git a/models/pvanet/example_train_384/README.md b/models/pvanet/example_train_384/README.md index 7e49263a2..c9396893a 100644 --- a/models/pvanet/example_train_384/README.md +++ b/models/pvanet/example_train_384/README.md @@ -3,6 +3,28 @@ by Kye-Hyeon Kim, Sanghoon Hong, Byungseok Roh, Yeongjae Cheon, Minje Park (Inte ### Notes - The training of PVANet 9.0 on the VOC2012 leaderboard wasn't done with this code. -- **This training prototxt hasn't been tested yet**. - PVANet pre-trained model contains a FC6 layer with a 6x6x384-shaped input. Therefore, layers in this training example generates **a hyper feature with the depth of 384** which is different from the one in the arXiv article. +- For better detection results, **fine-tuning the existing PVANet** is recommended (see example_finetune). + +### Sample command +- Training for 100k iterations (toy) + ``` + tools/train_net.py + --gpu 0 + --solver models/pvanet/example_train_384/solver.prototxt + --weights models/pvanet/imagenet/original.model + --iters 100000 + --cfg models/pvanet/cfgs/train.yml + --imdb voc_2007_trainval + ``` + +- Testing + + ``` + tools/test_net.py + --gpu 0 + --def models/pvanet/example_train_384/test.prototxt + --net output/faster_rcnn_pvanet/voc_2007_trainval/pvanet_frcnn_384_iter_100000.caffemodel + --cfg models/pvanet/cfgs/submit_160715.yml + ``` diff --git a/models/pvanet/example_train_384/test.prototxt b/models/pvanet/example_train_384/test.prototxt index 72e7dec05..c751041a3 100644 --- a/models/pvanet/example_train_384/test.prototxt +++ b/models/pvanet/example_train_384/test.prototxt @@ -6349,7 +6349,7 @@ layer { } } layer { - name: "fc6/scale" + name: "fc6/bn_scale" type: "Scale" bottom: "fc6" top: "fc6" @@ -6426,7 +6426,7 @@ layer { } } layer { - name: "fc7/scale" + name: "fc7/bn_scale" type: "Scale" bottom: "fc7" top: "fc7" diff --git a/models/pvanet/example_train_384/train.prototxt b/models/pvanet/example_train_384/train.prototxt index d1bbba641..3793affa5 100644 --- a/models/pvanet/example_train_384/train.prototxt +++ b/models/pvanet/example_train_384/train.prototxt @@ -69,7 +69,7 @@ layer { power_param { power: 1 scale: -1.0 - shift: 1 + shift: 0 } } layer { @@ -233,7 +233,7 @@ layer { power_param { power: 1 scale: -1.0 - shift: 1 + shift: 0 } } layer { @@ -526,7 +526,7 @@ layer { power_param { power: 1 scale: -1.0 - shift: 1 + shift: 0 } } layer { @@ -628,7 +628,7 @@ layer { power_param { power: 1 scale: 1 - shift: 1 + shift: 0 } } layer { @@ -762,7 +762,7 @@ layer { power_param { power: 1 scale: -1.0 - shift: 1 + shift: 0 } } layer { @@ -864,7 +864,7 @@ layer { power_param { power: 1 scale: 1 - shift: 1 + shift: 0 } } layer { @@ -998,7 +998,7 @@ layer { power_param { power: 1 scale: -1.0 - shift: 1 + shift: 0 } } layer { @@ -1291,7 +1291,7 @@ layer { power_param { power: 1 scale: -1.0 - shift: 1 + shift: 0 } } layer { @@ -1393,7 +1393,7 @@ layer { power_param { power: 1 scale: 1 - shift: 1 + shift: 0 } } layer { @@ -1527,7 +1527,7 @@ layer { power_param { power: 1 scale: -1.0 - shift: 1 + shift: 0 } } layer { @@ -1629,7 +1629,7 @@ layer { power_param { power: 1 scale: 1 - shift: 1 + shift: 0 } } layer { @@ -1763,7 +1763,7 @@ layer { power_param { power: 1 scale: -1.0 - shift: 1 + shift: 0 } } layer { @@ -1865,7 +1865,7 @@ layer { power_param { power: 1 scale: 1 - shift: 1 + shift: 0 } } layer { @@ -2990,7 +2990,7 @@ layer { power_param { power: 1 scale: 1 - shift: 1 + shift: 0 } } layer { @@ -3484,7 +3484,7 @@ layer { power_param { power: 1 scale: 1 - shift: 1 + shift: 0 } } layer { @@ -3978,7 +3978,7 @@ layer { power_param { power: 1 scale: 1 - shift: 1 + shift: 0 } } layer { @@ -5103,7 +5103,7 @@ layer { power_param { power: 1 scale: 1 - shift: 1 + shift: 0 } } layer { @@ -5597,7 +5597,7 @@ layer { power_param { power: 1 scale: 1 - shift: 1 + shift: 0 } } layer { @@ -6091,7 +6091,7 @@ layer { power_param { power: 1 scale: 1 - shift: 1 + shift: 0 } } layer { @@ -6379,7 +6379,7 @@ layer { } } layer { - name: "fc6/scale" + name: "fc6/bn_scale" type: "Scale" bottom: "fc6" top: "fc6" @@ -6456,7 +6456,7 @@ layer { } } layer { - name: "fc7/scale" + name: "fc7/bn_scale" type: "Scale" bottom: "fc7" top: "fc7" From 5f037cd22101a7dc1481cef3920c87c99e3c7a76 Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Sat, 22 Oct 2016 01:25:42 +0900 Subject: [PATCH 21/36] Add a hotfix to enable 'average_loss' - This bug originates from the py-faster-rcnn code --- caffe-fast-rcnn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/caffe-fast-rcnn b/caffe-fast-rcnn index ff77007c0..6068dd04e 160000 --- a/caffe-fast-rcnn +++ b/caffe-fast-rcnn @@ -1 +1 @@ -Subproject commit ff77007c0285a8d10150977d7ff4a360e470114a +Subproject commit 6068dd04ea93cca9fcee036628fdb3ea95b4ebcd From b528853c109bd3ca6c6e811b10b0a47d15d2a365 Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Sat, 22 Oct 2016 01:27:49 +0900 Subject: [PATCH 22/36] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index c135aacdc..0c1c6f5cf 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,6 @@ If you find PVANET useful in your research, please consider citing: # Now follow the Caffe installation instructions here: # http://caffe.berkeleyvision.org/installation.html # For your Makefile.config: - # Do NOT uncomment `USE_CUDNN := 1` (for running PVANET, cuDNN is slower than Caffe native implementation) # Uncomment `WITH_PYTHON_LAYER := 1` cp Makefile.config.example Makefile.config From 39570aab8c6513f0e76e5ab5dba8dfbf63e9c68c Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Wed, 2 Nov 2016 19:54:12 +0900 Subject: [PATCH 23/36] Add a tool to merge 'Conv-BN-Scale' into a single 'Conv' layer. --- tools/gen_merged_model.py | 231 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 231 insertions(+) create mode 100644 tools/gen_merged_model.py diff --git a/tools/gen_merged_model.py b/tools/gen_merged_model.py new file mode 100644 index 000000000..b0338199a --- /dev/null +++ b/tools/gen_merged_model.py @@ -0,0 +1,231 @@ +#!/usr/bin/env python +import _init_paths +import numpy as np +import sys +import os +import os.path as osp +import google.protobuf as pb +from argparse import ArgumentParser +import sys +import caffe + + +def load_and_fill_biases(src_model, src_weights, dst_model, dst_weights): + with open(src_model) as f: + model = caffe.proto.caffe_pb2.NetParameter() + pb.text_format.Merge(f.read(), model) + + for i, layer in enumerate(model.layer): + if layer.type == 'Convolution': # or layer.type == 'Scale': + # Add bias layer if needed + if layer.convolution_param.bias_term == False: + layer.convolution_param.bias_term = True + layer.convolution_param.bias_filler.type = 'constant' + layer.convolution_param.bias_filler.value = 0.0 + + with open(dst_model, 'w') as f: + f.write(pb.text_format.MessageToString(model)) + + caffe.set_mode_cpu() + net_src = caffe.Net(src_model, src_weights, caffe.TEST) + net_dst = caffe.Net(dst_model, caffe.TEST) + for key in net_src.params.keys(): + for i in range(len(net_src.params[key])): + net_dst.params[key][i].data[:] = net_src.params[key][i].data[:] + + if dst_weights is not None: + # Store params + pass + + return net_dst + + +def merge_conv_and_bn(net, i_conv, i_bn, i_scale): + # This is based on Kyeheyon's work + assert(i_conv != None) + assert(i_bn != None) + + def copy_double(data): + return np.array(data, copy=True, dtype=np.double) + + key_conv = net._layer_names[i_conv] + key_bn = net._layer_names[i_bn] + key_scale = net._layer_names[i_scale] if i_scale else None + + # Copy + bn_mean = copy_double(net.params[key_bn][0].data) + bn_variance = copy_double(net.params[key_bn][1].data) + num_bn_samples = copy_double(net.params[key_bn][2].data) + + # and Invalidate the BN layer + net.params[key_bn][0].data[:] = 0 + net.params[key_bn][1].data[:] = 1 + net.params[key_bn][2].data[:] = 1 + if num_bn_samples[0] == 0: + num_bn_samples[0] = 1 + + if net.params.has_key(key_scale): + print 'Combine {:s} + {:s} + {:s}'.format(key_conv, key_bn, key_scale) + scale_weight = copy_double(net.params[key_scale][0].data) + scale_bias = copy_double(net.params[key_scale][1].data) + net.params[key_scale][0].data[:] = 1 + net.params[key_scale][1].data[:] = 0 + else: + print 'Combine {:s} + {:s}'.format(key_conv, key_bn) + scale_weight = 1 + scale_bias = 0 + + weight = copy_double(net.params[key_conv][0].data) + bias = copy_double(net.params[key_conv][1].data) + alpha = scale_weight / np.sqrt(bn_variance / num_bn_samples[0] + np.finfo(np.double).eps) + net.params[key_conv][1].data[:] = bias * alpha + (scale_bias - (bn_mean / num_bn_samples[0]) * alpha) + for i in range(len(alpha)): + net.params[key_conv][0].data[i] = weight[i] * alpha[i] + +def merge_batchnorms_in_net(net): + # for each BN + for i, layer in enumerate(net.layers): + if layer.type != 'BatchNorm': + continue + + l_name = net._layer_names[i] + + l_bottom = net.bottom_names[l_name] + assert(len(l_bottom) == 1) + l_bottom = l_bottom[0] + l_top = net.top_names[l_name] + assert(len(l_top) == 1) + l_top = l_top[0] + + can_be_absorbed = True + + # Search all (bottom) layers + for j in xrange(i - 1, -1, -1): + tops_of_j = net.top_names[net._layer_names[j]] + if l_bottom in tops_of_j: + if net.layers[j].type not in ['Convolution', 'InnerProduct']: + can_be_absorbed = False + else: + # There must be only one layer + conv_ind = j + break + + if not can_be_absorbed: + continue + + # find the following Scale + scale_ind = None + for j in xrange(i + 1, len(net.layers)): + bottoms_of_j = net.bottom_names[net._layer_names[j]] + if l_top in bottoms_of_j: + if scale_ind: + # Followed by two or more layers + scale_ind = None + break + + if net.layers[j].type in ['Scale']: + scale_ind = j + + top_of_j = net.top_names[net._layer_names[j]][0] + if top_of_j == bottoms_of_j[0]: + # On-the-fly => Can be merged + break + + else: + # Followed by a layer which is not 'Scale' + scale_ind = None + break + + + merge_conv_and_bn(net, conv_ind, i, scale_ind) + + return net + + +def process_model(net, src_model, dst_model, func_loop, func_finally): + with open(src_model) as f: + model = caffe.proto.caffe_pb2.NetParameter() + pb.text_format.Merge(f.read(), model) + + + for i, layer in enumerate(model.layer): + map(lambda x: x(layer, net, model, i), func_loop) + + map(lambda x: x(net, model), func_finally) + + with open(dst_model, 'w') as f: + f.write(pb.text_format.MessageToString(model)) + + +# Functions to remove (redundant) BN and Scale layers +to_delete_empty = [] +def pick_empty_layers(layer, net, model, i): + if layer.type not in ['BatchNorm', 'Scale']: + return + + bottom = layer.bottom[0] + top = layer.top[0] + + if (bottom != top): + # Not supperted yet + return + + if layer.type == 'BatchNorm': + zero_mean = np.all(net.params[layer.name][0].data == 0) + one_var = np.all(net.params[layer.name][1].data == 1) + length_is_1 = (net.params['conv1_1/bn'][2].data == 1) or (net.params[layer.name][2].data == 0) + + if zero_mean and one_var and length_is_1: + print 'Delete layer: {}'.format(layer.name) + to_delete_empty.append(layer) + + if layer.type == 'Scale': + no_scaling = np.all(net.params[layer.name][0].data == 1) + zero_bias = np.all(net.params[layer.name][1].data == 0) + + if no_scaling and zero_bias: + print 'Delete layer: {}'.format(layer.name) + to_delete_empty.append(layer) + +def remove_empty_layers(net, model): + map(model.layer.remove, to_delete_empty) + + +# A function to add 'engine: CAFFE' param into 1x1 convolutions +def set_engine_caffe(layer, net, model, i): + if layer.type == 'Convolution': + if layer.convolution_param.kernel_size == 1\ + or (layer.convolution_param.kernel_h == layer.convolution_param.kernel_w == 1): + layer.convolution_param.engine = dict(layer.convolution_param.Engine.items())['CAFFE'] + + +def main(args): + # Set default output file names + if args.output_model is None: + file_name = osp.splitext(args.model)[0] + args.output_model = file_name + '_inference.prototxt' + if args.output_weights is None: + file_name = osp.splitext(args.weights)[0] + args.output_weights = file_name + '_inference.caffemodel' + + net = load_and_fill_biases(args.model, args.weights, args.model + '.temp.pt', None) + + net = merge_batchnorms_in_net(net) + + process_model(net, args.model + '.temp.pt', args.output_model, + [pick_empty_layers, set_engine_caffe], + [remove_empty_layers]) + + # Store params + net.save(args.output_weights) + + +if __name__ == '__main__': + parser = ArgumentParser( + description="Generate Batch Normalized model for inference") + parser.add_argument('model', help="The net definition prototxt") + parser.add_argument('weights', help="The weights caffemodel") + parser.add_argument('--output_model') + parser.add_argument('--output_weights') + args = parser.parse_args() + main(args) \ No newline at end of file From e8440f9c50664862bd36978a90626543bdd187ff Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Mon, 21 Nov 2016 18:44:12 +0900 Subject: [PATCH 24/36] Update README.md --- README.md | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 0c1c6f5cf..a54005a3c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -## PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection -by Kye-Hyeon Kim, Sanghoon Hong, Byungseok Roh, Yeongjae Cheon, Minje Park (Intel Imaging and Camera Technology) +## PVANET: Lightweight Deep Neural Networks for Real-time Object Detection +by Sanghoon Hong, Byungseok Roh, Kye-hyeon Kim, Yeongjae Cheon, Minje Park (Intel Imaging and Camera Technology) ### Introduction @@ -19,14 +19,7 @@ Please note that this repository doesn't contain our in-house runtime code used ### Citing PVANET -If you find PVANET useful in your research, please consider citing: - - @article{KimKH2016arXivPVANET, - author = {Kye-Hyeon Kim and Sanghoon Hong and Byungseok Roh and Yeongjae Cheon and Minje Park}, - title = {{PVANET}: Deep but Lightweight Neural Networks for Real-time Object Detection}, - journal = {arXiv preprint arXiv:1608.08021}, - year = {2016} - } +The BibTeX for EMDNN2016-accepted version will be updated soon ### Installation From ab76d489d14fb9b1c68da496fe10c9a5a3c0c384 Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Thu, 8 Dec 2016 19:26:13 +0900 Subject: [PATCH 25/36] Update README.md (adding an arXiv link for EMDNN-accepted version) --- README.md | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index a54005a3c..c3aa297f0 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,24 @@ -## PVANET: Lightweight Deep Neural Networks for Real-time Object Detection +## PVANet: Lightweight Deep Neural Networks for Real-time Object Detection by Sanghoon Hong, Byungseok Roh, Kye-hyeon Kim, Yeongjae Cheon, Minje Park (Intel Imaging and Camera Technology) +Presented in [EMDNN2016](http://allenai.org/plato/emdnn/), a NIPS2016 workshop ([arXiv link](https://arxiv.org/abs/1611.08588)) ### Introduction -This repository is a fork from [py-faster-rcnn](https://github.com/rbgirshick/py-faster-rcnn) and demonstrates the performance of PVANET. +This repository is a fork from [py-faster-rcnn](https://github.com/rbgirshick/py-faster-rcnn) and demonstrates the performance of PVANet. You can refer to [py-faster-rcnn README.md](https://github.com/rbgirshick/py-faster-rcnn/blob/master/README.md) and [faster-rcnn README.md](https://github.com/ShaoqingRen/faster_rcnn/blob/master/README.md) for more information. ### Desclaimer -Please note that this repository doesn't contain our in-house runtime code used in the published article. -- The original py-faster-rcnn is quite slow and there exist lots of inefficient code blocks. -- We improved some of them, by 1) replacing the Caffe backend with its latest version (Sep 1, 2016), and 2) porting our implementation of the proposal layer. -- However it is still slower than our in-house runtime code due to the image pre-processing code written in Python (+9ms) and some poorly implemented parts in Caffe (+5 ms). -- PVANET was trained by our in-house deep learning library, not by this implementation. +This repository doesn't contain our up-to-date models and codes. +I'll be updated by the end of December. + +Please note that this repository doesn't contain our in-house codes used in the published article. +- This version of py-faster-rcnn is slower than our in-house runtime code due to the image pre-processing code written in Python (+9 ms) and some poorly implemented parts in Caffe (+5 ms). +- PVANet was trained by our in-house deep learning library, not by this implementation. - There might be a tiny difference in VOC2012 test results, because some hidden parameters in py-faster-rcnn may be set differently with ours. -- PVANET-lite (76.3% mAP on VOC2012, 10th place) is originally designed to verify the effectiveness of multi-scale features for object detection, so it only uses Inception and hyper features only. Further improvement may be achievable by adding C.ReLU, residual connections, etc. -### Citing PVANET +### Citing PVANet The BibTeX for EMDNN2016-accepted version will be updated soon @@ -47,7 +48,7 @@ The BibTeX for EMDNN2016-accepted version will be updated soon make -j8 && make pycaffe ``` -4. Download PVANET caffemodels +4. Download PVANet caffemodels ```Shell cd $FRCN_ROOT ./models/pvanet/download_models.sh @@ -74,7 +75,7 @@ The BibTeX for EMDNN2016-accepted version will be updated soon 1. Download [imagenet/original.model](https://drive.google.com/open?id=0BwFPOX3S4VcBd1VtRzdHa1NoN1k) and move it to ./models/pvanet/imagenet/ 2. Download [imagenet/test.model](https://drive.google.com/open?id=0BwFPOX3S4VcBWnI0VHRzZWh6bFU) and move it to ./models/pvanet/imagenet/ -7. (Optional) Download PVANET-lite models +7. (Optional) Download PVANet-lite models ```Shell cd $FRCN_ROOT ./models/pvanet/download_lite_models.sh @@ -85,19 +86,19 @@ The BibTeX for EMDNN2016-accepted version will be updated soon ### Models -1. PVANET +1. PVANet - `./models/pvanet/full/test.pt`: For testing-time efficiency, batch normalization (w/ its moving averaged mini-batch statistics) and scale (w/ its trained parameters) layers are merged into the corresponding convolutional layer. - `./models/pvanet/full/original.pt`: Original network structure. -2. PVANET (compressed) +2. PVANet (compressed) - `./models/pvanet/comp/test.pt`: Compressed network w/ merging batch normalization and scale. - `./models/pvanet/comp/original.pt`: Original compressed network structure. -3. PVANET (ImageNet pretrained model) +3. PVANet (ImageNet pretrained model) - `./models/pvanet/imagenet/test.pt`: Classification network w/ merging batch normalization and scale. - `./models/pvanet/imagenet/original.pt`: Original classification network structure. -4. PVANET-lite +4. PVANet-lite - `./models/pvanet/lite/test.pt`: Compressed network w/ merging batch normalization and scale. - `./models/pvanet/lite/original.pt`: Original compressed network structure. @@ -107,13 +108,13 @@ The BibTeX for EMDNN2016-accepted version will be updated soon 1. Download PASCAL VOC 2007 and 2012 - Follow the instructions in [py-faster-rcnn README.md](https://github.com/rbgirshick/py-faster-rcnn#beyond-the-demo-installation-for-training-and-testing-models) -2. PVANET+ on PASCAL VOC 2007 +2. PVANet on PASCAL VOC 2007 ```Shell cd $FRCN_ROOT ./tools/test_net.py --gpu 0 --def models/pvanet/full/test.pt --net models/pvanet/full/test.model --cfg models/pvanet/cfgs/submit_160715.yml ``` -3. PVANET+ (compressed) +3. PVANet (compressed) ```Shell cd $FRCN_ROOT ./tools/test_net.py --gpu 0 --def models/pvanet/comp/test.pt --net models/pvanet/comp/test.model --cfg models/pvanet/cfgs/submit_160715.yml @@ -125,7 +126,7 @@ The BibTeX for EMDNN2016-accepted version will be updated soon ./caffe-fast-rcnn/build/tools/caffe test -gpu 0 -model models/pvanet/imagenet/test.pt -weights models/pvanet/imagenet/test.model -iterations 1000 ``` -5. (Optional) PVANET-lite +5. (Optional) PVANet-lite ```Shell cd $FRCN_ROOT ./tools/test_net.py --gpu 0 --def models/pvanet/lite/test.pt --net models/pvanet/lite/test.model --cfg models/pvanet/cfgs/submit_160715.yml @@ -133,7 +134,7 @@ The BibTeX for EMDNN2016-accepted version will be updated soon ### Expected results -- PVANET+: 83.85% mAP -- PVANET+ (compressed): 82.90% mAP +- PVANet: 83.85% mAP +- PVANet (compressed): 82.90% mAP - ImageNet classification: 68.998% top-1 accuracy, 88.8902% top-5 accuracy, 1.28726 loss - PVANET-lite: 79.10% mAP From 4fc32d8f6e4b70a849a6f81ac65b6c319dfe29c9 Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Sat, 10 Dec 2016 05:59:14 +0900 Subject: [PATCH 26/36] aUpdate README.md (adding BibTeX) --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c3aa297f0..7d1a6ae95 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,15 @@ Please note that this repository doesn't contain our in-house codes used in the ### Citing PVANet -The BibTeX for EMDNN2016-accepted version will be updated soon +If you want to cite this work in your publication: +``` +@article{hong2016pvanet, + title={{PVANet}: Lightweight Deep Neural Networks for Real-time Object Detection}, + author={Hong, Sanghoon and Roh, Byungseok and Kim, Kye-Hyeon and Cheon, Yeongjae and Park, Minje}, + journal={arXiv preprint arXiv:1611.08588}, + year={2016} +} +``` ### Installation From 8957e2aa6f4abe23602a250d46e2a1f8c695d152 Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Mon, 26 Dec 2016 18:26:33 +0900 Subject: [PATCH 27/36] Add PVANet 9.1 - Added new resources in 'models/pvanet' - Moved the old resources into 'models/pvanet_obsolete' --- .gitignore | 1 + models/pvanet/cfgs/submit_0716.yml | 11 + models/pvanet/download_all_models.sh | 13 + models/pvanet/download_imagenet_model.sh | 3 + models/pvanet/download_voc_best.sh | 3 + .../pva9.1/faster_rcnn_train_test_21cls.pt | 6760 +++++++++++++++++ ..._rcnn_train_test_ft_rcnn_only_plus_comp.pt | 6721 ++++++++++++++++ .../cfgs/100prop.yml | 0 .../cfgs/200prop.yml | 0 .../cfgs/300prop.yml | 0 .../cfgs/50prop.yml | 0 .../cfgs/submit_160715.yml | 0 models/pvanet_obsolete/cfgs/train.yml | 27 + .../comp/original.pt | 0 .../{pvanet => pvanet_obsolete}/comp/test.pt | 0 .../download_imagenet_models.sh | 0 .../download_lite_models.sh | 0 .../download_models.sh | 0 .../download_original_models.sh | 0 .../example_finetune/README.md | 0 .../example_finetune/solver.prototxt | 0 .../example_finetune/test.prototxt | 0 .../example_finetune/train.prototxt | 0 .../example_train_384/README.md | 0 .../example_train_384/solver.prototxt | 0 .../example_train_384/test.prototxt | 0 .../example_train_384/train.prototxt | 0 .../full/original.pt | 0 .../{pvanet => pvanet_obsolete}/full/test.pt | 0 .../imagenet/original.pt | 0 .../imagenet/test.pt | 0 .../lite/original.pt | 0 .../{pvanet => pvanet_obsolete}/lite/test.pt | 0 33 files changed, 13539 insertions(+) create mode 100644 models/pvanet/cfgs/submit_0716.yml create mode 100755 models/pvanet/download_all_models.sh create mode 100755 models/pvanet/download_imagenet_model.sh create mode 100755 models/pvanet/download_voc_best.sh create mode 100644 models/pvanet/pva9.1/faster_rcnn_train_test_21cls.pt create mode 100644 models/pvanet/pva9.1/faster_rcnn_train_test_ft_rcnn_only_plus_comp.pt rename models/{pvanet => pvanet_obsolete}/cfgs/100prop.yml (100%) rename models/{pvanet => pvanet_obsolete}/cfgs/200prop.yml (100%) rename models/{pvanet => pvanet_obsolete}/cfgs/300prop.yml (100%) rename models/{pvanet => pvanet_obsolete}/cfgs/50prop.yml (100%) rename models/{pvanet => pvanet_obsolete}/cfgs/submit_160715.yml (100%) create mode 100644 models/pvanet_obsolete/cfgs/train.yml rename models/{pvanet => pvanet_obsolete}/comp/original.pt (100%) rename models/{pvanet => pvanet_obsolete}/comp/test.pt (100%) rename models/{pvanet => pvanet_obsolete}/download_imagenet_models.sh (100%) rename models/{pvanet => pvanet_obsolete}/download_lite_models.sh (100%) rename models/{pvanet => pvanet_obsolete}/download_models.sh (100%) rename models/{pvanet => pvanet_obsolete}/download_original_models.sh (100%) rename models/{pvanet => pvanet_obsolete}/example_finetune/README.md (100%) rename models/{pvanet => pvanet_obsolete}/example_finetune/solver.prototxt (100%) rename models/{pvanet => pvanet_obsolete}/example_finetune/test.prototxt (100%) rename models/{pvanet => pvanet_obsolete}/example_finetune/train.prototxt (100%) rename models/{pvanet => pvanet_obsolete}/example_train_384/README.md (100%) rename models/{pvanet => pvanet_obsolete}/example_train_384/solver.prototxt (100%) rename models/{pvanet => pvanet_obsolete}/example_train_384/test.prototxt (100%) rename models/{pvanet => pvanet_obsolete}/example_train_384/train.prototxt (100%) rename models/{pvanet => pvanet_obsolete}/full/original.pt (100%) rename models/{pvanet => pvanet_obsolete}/full/test.pt (100%) rename models/{pvanet => pvanet_obsolete}/imagenet/original.pt (100%) rename models/{pvanet => pvanet_obsolete}/imagenet/test.pt (100%) rename models/{pvanet => pvanet_obsolete}/lite/original.pt (100%) rename models/{pvanet => pvanet_obsolete}/lite/test.pt (100%) diff --git a/.gitignore b/.gitignore index 99a5d09eb..6a12a0b35 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ lib/build lib/pycocotools/_mask.c lib/pycocotools/_mask.so +*.caffemodel diff --git a/models/pvanet/cfgs/submit_0716.yml b/models/pvanet/cfgs/submit_0716.yml new file mode 100644 index 000000000..97d4c4f02 --- /dev/null +++ b/models/pvanet/cfgs/submit_0716.yml @@ -0,0 +1,11 @@ +EXP_DIR: submit_0716 +TEST: + HAS_RPN: True + SCALE_MULTIPLE_OF: 32 + MAX_SIZE: 2000 + SCALES: + - 640 + BBOX_VOTE: True + NMS: 0.4 + RPN_PRE_NMS_TOP_N: 12000 + RPN_POST_NMS_TOP_N: 200 diff --git a/models/pvanet/download_all_models.sh b/models/pvanet/download_all_models.sh new file mode 100755 index 000000000..5459da69b --- /dev/null +++ b/models/pvanet/download_all_models.sh @@ -0,0 +1,13 @@ +#/bin/bash + +# ImageNet pre-trained +wget https://www.dropbox.com/s/a2y0e12kmu8wjsf/pva9.1_preAct_train_iter_1900000.caffemodel?dl=1 -O models/pvanet/pretrained/pva9.1_preAct_train_iter_1900000.caffemodel + +# COCO train/val + VOC0712 train/val +wget https://www.dropbox.com/s/sq1kujjil5qg5bw/PVA9.1_ImgNet_COCO_VOC0712.caffemodel?dl=1 -O models/pvanet/pva9.1/PVA9.1_ImgNet_COCO_VOC0712.caffemodel + +# COCO train/val + VOC0712 train/val + VOC07 test +wget https://www.dropbox.com/s/m65ioxcguevsacc/PVA9.1_ImgNet_COCO_VOC0712plus.caffemodel?dl=1 -O models/pvanet/pva9.1/PVA9.1_ImgNet_COCO_VOC0712plus.caffemodel + +# COCO train/val + VOC0712 train/val + VOC07 test + network compression +wget https://www.dropbox.com/s/76q7pdym70ji986/PVA9.1_ImgNet_COCO_VOC0712plus_compressed.caffemodel?dl=1 -O models/pvanet/pva9.1/PVA9.1_ImgNet_COCO_VOC0712plus_compressed.caffemodel \ No newline at end of file diff --git a/models/pvanet/download_imagenet_model.sh b/models/pvanet/download_imagenet_model.sh new file mode 100755 index 000000000..49cf3ed8a --- /dev/null +++ b/models/pvanet/download_imagenet_model.sh @@ -0,0 +1,3 @@ +#/bin/bash +# ImageNet pre-trained +wget https://www.dropbox.com/s/a2y0e12kmu8wjsf/pva9.1_preAct_train_iter_1900000.caffemodel?dl=1 -O models/pvanet/pretrained/pva9.1_preAct_train_iter_1900000.caffemodel \ No newline at end of file diff --git a/models/pvanet/download_voc_best.sh b/models/pvanet/download_voc_best.sh new file mode 100755 index 000000000..61fdea354 --- /dev/null +++ b/models/pvanet/download_voc_best.sh @@ -0,0 +1,3 @@ +#/bin/bash +# COCO train/val + VOC0712 train/val + VOC07 test +wget https://www.dropbox.com/s/m65ioxcguevsacc/PVA9.1_ImgNet_COCO_VOC0712plus.caffemodel?dl=1 -O models/pvanet/pva9.1/PVA9.1_ImgNet_COCO_VOC0712plus.caffemodel \ No newline at end of file diff --git a/models/pvanet/pva9.1/faster_rcnn_train_test_21cls.pt b/models/pvanet/pva9.1/faster_rcnn_train_test_21cls.pt new file mode 100644 index 000000000..ebc43b772 --- /dev/null +++ b/models/pvanet/pva9.1/faster_rcnn_train_test_21cls.pt @@ -0,0 +1,6760 @@ +name: "PVANET" + +################################################################################ +## Input +################################################################################ + +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + include { phase: TRAIN } + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +layer { + name: "input-data" + type: "DummyData" + top: "data" + top: "im_info" + include { phase: TEST } + dummy_data_param { + shape { dim: 1 dim: 3 dim: 224 dim: 224 } + shape { dim: 1 dim: 3 } + } +} + +################################################################################ +## Convolution +################################################################################ + +layer { + name: "conv1_1/conv" + type: "Convolution" + bottom: "data" + top: "conv1_1/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 16 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 3 + pad_w: 3 + kernel_h: 7 + kernel_w: 7 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv1_1/bn" + type: "BatchNorm" + bottom: "conv1_1/conv" + top: "conv1_1/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv1_1/neg" + type: "Power" + bottom: "conv1_1/conv" + top: "conv1_1/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv1_1/concat" + type: "Concat" + bottom: "conv1_1/conv" + bottom: "conv1_1/neg" + top: "conv1_1" +} +layer { + name: "conv1_1/scale" + type: "Scale" + bottom: "conv1_1" + top: "conv1_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv1_1/relu" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv2_1/1/conv" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/2/bn" + type: "BatchNorm" + bottom: "conv2_1/1" + top: "conv2_1/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/2/bn_scale" + type: "Scale" + bottom: "conv2_1/2/pre" + top: "conv2_1/2/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/2/relu" + type: "ReLU" + bottom: "conv2_1/2/pre" + top: "conv2_1/2/pre" +} +layer { + name: "conv2_1/2/conv" + type: "Convolution" + bottom: "conv2_1/2/pre" + top: "conv2_1/2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/3/bn" + type: "BatchNorm" + bottom: "conv2_1/2" + top: "conv2_1/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/3/neg" + type: "Power" + bottom: "conv2_1/3/pre" + top: "conv2_1/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_1/3/concat" + type: "Concat" + bottom: "conv2_1/3/pre" + bottom: "conv2_1/3/neg" + top: "conv2_1/3/preAct" +} +layer { + name: "conv2_1/3/scale" + type: "Scale" + bottom: "conv2_1/3/preAct" + top: "conv2_1/3/preAct" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/3/relu" + type: "ReLU" + bottom: "conv2_1/3/preAct" + top: "conv2_1/3/preAct" +} +layer { + name: "conv2_1/3/conv" + type: "Convolution" + bottom: "conv2_1/3/preAct" + top: "conv2_1/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/proj" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1" + type: "Eltwise" + bottom: "conv2_1/3" + bottom: "conv2_1/proj" + top: "conv2_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_2/1/bn" + type: "BatchNorm" + bottom: "conv2_1" + top: "conv2_2/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/1/bn_scale" + type: "Scale" + bottom: "conv2_2/1/pre" + top: "conv2_2/1/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/1/relu" + type: "ReLU" + bottom: "conv2_2/1/pre" + top: "conv2_2/1/pre" +} +layer { + name: "conv2_2/1/conv" + type: "Convolution" + bottom: "conv2_2/1/pre" + top: "conv2_2/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/2/bn" + type: "BatchNorm" + bottom: "conv2_2/1" + top: "conv2_2/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/2/bn_scale" + type: "Scale" + bottom: "conv2_2/2/pre" + top: "conv2_2/2/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/2/relu" + type: "ReLU" + bottom: "conv2_2/2/pre" + top: "conv2_2/2/pre" +} +layer { + name: "conv2_2/2/conv" + type: "Convolution" + bottom: "conv2_2/2/pre" + top: "conv2_2/2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/3/bn" + type: "BatchNorm" + bottom: "conv2_2/2" + top: "conv2_2/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/3/neg" + type: "Power" + bottom: "conv2_2/3/pre" + top: "conv2_2/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_2/3/concat" + type: "Concat" + bottom: "conv2_2/3/pre" + bottom: "conv2_2/3/neg" + top: "conv2_2/3/preAct" +} +layer { + name: "conv2_2/3/scale" + type: "Scale" + bottom: "conv2_2/3/preAct" + top: "conv2_2/3/preAct" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/3/relu" + type: "ReLU" + bottom: "conv2_2/3/preAct" + top: "conv2_2/3/preAct" +} +layer { + name: "conv2_2/3/conv" + type: "Convolution" + bottom: "conv2_2/3/preAct" + top: "conv2_2/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/input" + type: "Power" + bottom: "conv2_1" + top: "conv2_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_2" + type: "Eltwise" + bottom: "conv2_2/3" + bottom: "conv2_2/input" + top: "conv2_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_3/1/bn" + type: "BatchNorm" + bottom: "conv2_2" + top: "conv2_3/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/1/bn_scale" + type: "Scale" + bottom: "conv2_3/1/pre" + top: "conv2_3/1/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/1/relu" + type: "ReLU" + bottom: "conv2_3/1/pre" + top: "conv2_3/1/pre" +} +layer { + name: "conv2_3/1/conv" + type: "Convolution" + bottom: "conv2_3/1/pre" + top: "conv2_3/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/2/bn" + type: "BatchNorm" + bottom: "conv2_3/1" + top: "conv2_3/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/2/bn_scale" + type: "Scale" + bottom: "conv2_3/2/pre" + top: "conv2_3/2/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/2/relu" + type: "ReLU" + bottom: "conv2_3/2/pre" + top: "conv2_3/2/pre" +} +layer { + name: "conv2_3/2/conv" + type: "Convolution" + bottom: "conv2_3/2/pre" + top: "conv2_3/2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/3/bn" + type: "BatchNorm" + bottom: "conv2_3/2" + top: "conv2_3/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/3/neg" + type: "Power" + bottom: "conv2_3/3/pre" + top: "conv2_3/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_3/3/concat" + type: "Concat" + bottom: "conv2_3/3/pre" + bottom: "conv2_3/3/neg" + top: "conv2_3/3/preAct" +} +layer { + name: "conv2_3/3/scale" + type: "Scale" + bottom: "conv2_3/3/preAct" + top: "conv2_3/3/preAct" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/3/relu" + type: "ReLU" + bottom: "conv2_3/3/preAct" + top: "conv2_3/3/preAct" +} +layer { + name: "conv2_3/3/conv" + type: "Convolution" + bottom: "conv2_3/3/preAct" + top: "conv2_3/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/input" + type: "Power" + bottom: "conv2_2" + top: "conv2_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_3" + type: "Eltwise" + bottom: "conv2_3/3" + bottom: "conv2_3/input" + top: "conv2_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_1/1/bn" + type: "BatchNorm" + bottom: "conv2_3" + top: "conv3_1/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/1/bn_scale" + type: "Scale" + bottom: "conv3_1/1/pre" + top: "conv3_1/1/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/1/relu" + type: "ReLU" + bottom: "conv3_1/1/pre" + top: "conv3_1/1/pre" +} +layer { + name: "conv3_1/1/conv" + type: "Convolution" + bottom: "conv3_1/1/pre" + top: "conv3_1/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/2/bn" + type: "BatchNorm" + bottom: "conv3_1/1" + top: "conv3_1/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/2/bn_scale" + type: "Scale" + bottom: "conv3_1/2/pre" + top: "conv3_1/2/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/2/relu" + type: "ReLU" + bottom: "conv3_1/2/pre" + top: "conv3_1/2/pre" +} +layer { + name: "conv3_1/2/conv" + type: "Convolution" + bottom: "conv3_1/2/pre" + top: "conv3_1/2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/3/bn" + type: "BatchNorm" + bottom: "conv3_1/2" + top: "conv3_1/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/3/neg" + type: "Power" + bottom: "conv3_1/3/pre" + top: "conv3_1/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_1/3/concat" + type: "Concat" + bottom: "conv3_1/3/pre" + bottom: "conv3_1/3/neg" + top: "conv3_1/3/preAct" +} +layer { + name: "conv3_1/3/scale" + type: "Scale" + bottom: "conv3_1/3/preAct" + top: "conv3_1/3/preAct" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/3/relu" + type: "ReLU" + bottom: "conv3_1/3/preAct" + top: "conv3_1/3/preAct" +} +layer { + name: "conv3_1/3/conv" + type: "Convolution" + bottom: "conv3_1/3/preAct" + top: "conv3_1/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/proj" + type: "Convolution" + bottom: "conv3_1/1/pre" + top: "conv3_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1" + type: "Eltwise" + bottom: "conv3_1/3" + bottom: "conv3_1/proj" + top: "conv3_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_2/1/bn" + type: "BatchNorm" + bottom: "conv3_1" + top: "conv3_2/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/1/bn_scale" + type: "Scale" + bottom: "conv3_2/1/pre" + top: "conv3_2/1/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/1/relu" + type: "ReLU" + bottom: "conv3_2/1/pre" + top: "conv3_2/1/pre" +} +layer { + name: "conv3_2/1/conv" + type: "Convolution" + bottom: "conv3_2/1/pre" + top: "conv3_2/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/2/bn" + type: "BatchNorm" + bottom: "conv3_2/1" + top: "conv3_2/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/2/bn_scale" + type: "Scale" + bottom: "conv3_2/2/pre" + top: "conv3_2/2/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/2/relu" + type: "ReLU" + bottom: "conv3_2/2/pre" + top: "conv3_2/2/pre" +} +layer { + name: "conv3_2/2/conv" + type: "Convolution" + bottom: "conv3_2/2/pre" + top: "conv3_2/2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/3/bn" + type: "BatchNorm" + bottom: "conv3_2/2" + top: "conv3_2/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/3/neg" + type: "Power" + bottom: "conv3_2/3/pre" + top: "conv3_2/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_2/3/concat" + type: "Concat" + bottom: "conv3_2/3/pre" + bottom: "conv3_2/3/neg" + top: "conv3_2/3/preAct" +} +layer { + name: "conv3_2/3/scale" + type: "Scale" + bottom: "conv3_2/3/preAct" + top: "conv3_2/3/preAct" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/3/relu" + type: "ReLU" + bottom: "conv3_2/3/preAct" + top: "conv3_2/3/preAct" +} +layer { + name: "conv3_2/3/conv" + type: "Convolution" + bottom: "conv3_2/3/preAct" + top: "conv3_2/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/input" + type: "Power" + bottom: "conv3_1" + top: "conv3_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_2" + type: "Eltwise" + bottom: "conv3_2/3" + bottom: "conv3_2/input" + top: "conv3_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_3/1/bn" + type: "BatchNorm" + bottom: "conv3_2" + top: "conv3_3/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/1/bn_scale" + type: "Scale" + bottom: "conv3_3/1/pre" + top: "conv3_3/1/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/1/relu" + type: "ReLU" + bottom: "conv3_3/1/pre" + top: "conv3_3/1/pre" +} +layer { + name: "conv3_3/1/conv" + type: "Convolution" + bottom: "conv3_3/1/pre" + top: "conv3_3/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/2/bn" + type: "BatchNorm" + bottom: "conv3_3/1" + top: "conv3_3/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/2/bn_scale" + type: "Scale" + bottom: "conv3_3/2/pre" + top: "conv3_3/2/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/2/relu" + type: "ReLU" + bottom: "conv3_3/2/pre" + top: "conv3_3/2/pre" +} +layer { + name: "conv3_3/2/conv" + type: "Convolution" + bottom: "conv3_3/2/pre" + top: "conv3_3/2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/3/bn" + type: "BatchNorm" + bottom: "conv3_3/2" + top: "conv3_3/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/3/neg" + type: "Power" + bottom: "conv3_3/3/pre" + top: "conv3_3/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_3/3/concat" + type: "Concat" + bottom: "conv3_3/3/pre" + bottom: "conv3_3/3/neg" + top: "conv3_3/3/preAct" +} +layer { + name: "conv3_3/3/scale" + type: "Scale" + bottom: "conv3_3/3/preAct" + top: "conv3_3/3/preAct" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/3/relu" + type: "ReLU" + bottom: "conv3_3/3/preAct" + top: "conv3_3/3/preAct" +} +layer { + name: "conv3_3/3/conv" + type: "Convolution" + bottom: "conv3_3/3/preAct" + top: "conv3_3/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/input" + type: "Power" + bottom: "conv3_2" + top: "conv3_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_3" + type: "Eltwise" + bottom: "conv3_3/3" + bottom: "conv3_3/input" + top: "conv3_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_4/1/bn" + type: "BatchNorm" + bottom: "conv3_3" + top: "conv3_4/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/1/bn_scale" + type: "Scale" + bottom: "conv3_4/1/pre" + top: "conv3_4/1/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/1/relu" + type: "ReLU" + bottom: "conv3_4/1/pre" + top: "conv3_4/1/pre" +} +layer { + name: "conv3_4/1/conv" + type: "Convolution" + bottom: "conv3_4/1/pre" + top: "conv3_4/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/2/bn" + type: "BatchNorm" + bottom: "conv3_4/1" + top: "conv3_4/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/2/bn_scale" + type: "Scale" + bottom: "conv3_4/2/pre" + top: "conv3_4/2/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/2/relu" + type: "ReLU" + bottom: "conv3_4/2/pre" + top: "conv3_4/2/pre" +} +layer { + name: "conv3_4/2/conv" + type: "Convolution" + bottom: "conv3_4/2/pre" + top: "conv3_4/2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/3/bn" + type: "BatchNorm" + bottom: "conv3_4/2" + top: "conv3_4/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/3/neg" + type: "Power" + bottom: "conv3_4/3/pre" + top: "conv3_4/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_4/3/concat" + type: "Concat" + bottom: "conv3_4/3/pre" + bottom: "conv3_4/3/neg" + top: "conv3_4/3/preAct" +} +layer { + name: "conv3_4/3/scale" + type: "Scale" + bottom: "conv3_4/3/preAct" + top: "conv3_4/3/preAct" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/3/relu" + type: "ReLU" + bottom: "conv3_4/3/preAct" + top: "conv3_4/3/preAct" +} +layer { + name: "conv3_4/3/conv" + type: "Convolution" + bottom: "conv3_4/3/preAct" + top: "conv3_4/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/input" + type: "Power" + bottom: "conv3_3" + top: "conv3_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_4" + type: "Eltwise" + bottom: "conv3_4/3" + bottom: "conv3_4/input" + top: "conv3_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_1/incep/bn" + type: "BatchNorm" + bottom: "conv3_4" + top: "conv4_1/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/relu" + type: "ReLU" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/pre" +} +layer { + name: "conv4_1/incep/0/conv" + type: "Convolution" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/0/relu" + type: "ReLU" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/pool" + type: "Pooling" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv4_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv4_1/incep/pool" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep" + type: "Concat" + bottom: "conv4_1/incep/0" + bottom: "conv4_1/incep/1_0" + bottom: "conv4_1/incep/2_1" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep" +} +layer { + name: "conv4_1/out/conv" + type: "Convolution" + bottom: "conv4_1/incep" + top: "conv4_1/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/proj" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1" + type: "Eltwise" + bottom: "conv4_1/out" + bottom: "conv4_1/proj" + top: "conv4_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_2/incep/bn" + type: "BatchNorm" + bottom: "conv4_1" + top: "conv4_2/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/relu" + type: "ReLU" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/pre" +} +layer { + name: "conv4_2/incep/0/conv" + type: "Convolution" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/0/relu" + type: "ReLU" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep" + type: "Concat" + bottom: "conv4_2/incep/0" + bottom: "conv4_2/incep/1_0" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep" +} +layer { + name: "conv4_2/out/conv" + type: "Convolution" + bottom: "conv4_2/incep" + top: "conv4_2/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/input" + type: "Power" + bottom: "conv4_1" + top: "conv4_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_2" + type: "Eltwise" + bottom: "conv4_2/out" + bottom: "conv4_2/input" + top: "conv4_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_3/incep/bn" + type: "BatchNorm" + bottom: "conv4_2" + top: "conv4_3/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/relu" + type: "ReLU" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/pre" +} +layer { + name: "conv4_3/incep/0/conv" + type: "Convolution" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/0/relu" + type: "ReLU" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep" + type: "Concat" + bottom: "conv4_3/incep/0" + bottom: "conv4_3/incep/1_0" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep" +} +layer { + name: "conv4_3/out/conv" + type: "Convolution" + bottom: "conv4_3/incep" + top: "conv4_3/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/input" + type: "Power" + bottom: "conv4_2" + top: "conv4_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_3" + type: "Eltwise" + bottom: "conv4_3/out" + bottom: "conv4_3/input" + top: "conv4_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_4/incep/bn" + type: "BatchNorm" + bottom: "conv4_3" + top: "conv4_4/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/relu" + type: "ReLU" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/pre" +} +layer { + name: "conv4_4/incep/0/conv" + type: "Convolution" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/0/relu" + type: "ReLU" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep" + type: "Concat" + bottom: "conv4_4/incep/0" + bottom: "conv4_4/incep/1_0" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep" +} +layer { + name: "conv4_4/out/conv" + type: "Convolution" + bottom: "conv4_4/incep" + top: "conv4_4/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/input" + type: "Power" + bottom: "conv4_3" + top: "conv4_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_4" + type: "Eltwise" + bottom: "conv4_4/out" + bottom: "conv4_4/input" + top: "conv4_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_1/incep/bn" + type: "BatchNorm" + bottom: "conv4_4" + top: "conv5_1/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/relu" + type: "ReLU" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/pre" +} +layer { + name: "conv5_1/incep/0/conv" + type: "Convolution" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/0/relu" + type: "ReLU" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/pool" + type: "Pooling" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv5_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv5_1/incep/pool" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep" + type: "Concat" + bottom: "conv5_1/incep/0" + bottom: "conv5_1/incep/1_0" + bottom: "conv5_1/incep/2_1" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep" +} +layer { + name: "conv5_1/out/conv" + type: "Convolution" + bottom: "conv5_1/incep" + top: "conv5_1/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/proj" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1" + type: "Eltwise" + bottom: "conv5_1/out" + bottom: "conv5_1/proj" + top: "conv5_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_2/incep/bn" + type: "BatchNorm" + bottom: "conv5_1" + top: "conv5_2/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/relu" + type: "ReLU" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/pre" +} +layer { + name: "conv5_2/incep/0/conv" + type: "Convolution" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/0/relu" + type: "ReLU" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep" + type: "Concat" + bottom: "conv5_2/incep/0" + bottom: "conv5_2/incep/1_0" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep" +} +layer { + name: "conv5_2/out/conv" + type: "Convolution" + bottom: "conv5_2/incep" + top: "conv5_2/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/input" + type: "Power" + bottom: "conv5_1" + top: "conv5_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_2" + type: "Eltwise" + bottom: "conv5_2/out" + bottom: "conv5_2/input" + top: "conv5_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_3/incep/bn" + type: "BatchNorm" + bottom: "conv5_2" + top: "conv5_3/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/relu" + type: "ReLU" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/pre" +} +layer { + name: "conv5_3/incep/0/conv" + type: "Convolution" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/0/relu" + type: "ReLU" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep" + type: "Concat" + bottom: "conv5_3/incep/0" + bottom: "conv5_3/incep/1_0" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep" +} +layer { + name: "conv5_3/out/conv" + type: "Convolution" + bottom: "conv5_3/incep" + top: "conv5_3/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/input" + type: "Power" + bottom: "conv5_2" + top: "conv5_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_3" + type: "Eltwise" + bottom: "conv5_3/out" + bottom: "conv5_3/input" + top: "conv5_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/incep/bn" + type: "BatchNorm" + bottom: "conv5_3" + top: "conv5_4/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/relu" + type: "ReLU" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/pre" +} +layer { + name: "conv5_4/incep/0/conv" + type: "Convolution" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/0/relu" + type: "ReLU" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep" + type: "Concat" + bottom: "conv5_4/incep/0" + bottom: "conv5_4/incep/1_0" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep" +} +layer { + name: "conv5_4/out/conv" + type: "Convolution" + bottom: "conv5_4/incep" + top: "conv5_4/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/out/bn" + type: "BatchNorm" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/out/bn_scale" + type: "Scale" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/input" + type: "Power" + bottom: "conv5_3" + top: "conv5_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_4" + type: "Eltwise" + bottom: "conv5_4/out" + bottom: "conv5_4/input" + top: "conv5_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/last_bn" + type: "BatchNorm" + bottom: "conv5_4" + top: "conv5_4" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/last_bn_scale" + type: "Scale" + bottom: "conv5_4" + top: "conv5_4" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/last_relu" + type: "ReLU" + bottom: "conv5_4" + top: "conv5_4" +} + +### hyper feature ### +layer { + name: "downsample" + type: "Pooling" + bottom: "conv3_4" + top: "downsample" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } +} +layer { + name: "upsample" + type: "Deconvolution" + bottom: "conv5_4" + top: "upsample" + param { lr_mult: 0 decay_mult: 0} + convolution_param { + num_output: 384 kernel_size: 4 pad: 1 stride: 2 group: 384 + weight_filler: {type: "bilinear" } + bias_term: false + } +} +layer { + name: "concat" + bottom: "downsample" + bottom: "conv4_4" + bottom: "upsample" + top: "concat" + type: "Concat" + concat_param { axis: 1 } +} + +layer { + name: "convf_rpn" + type: "Convolution" + bottom: "concat" + top: "convf_rpn" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 128 kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "reluf_rpn" + type: "ReLU" + bottom: "convf_rpn" + top: "convf_rpn" +} + + +layer { + name: "convf_2" + type: "Convolution" + bottom: "concat" + top: "convf_2" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "reluf_2" + type: "ReLU" + bottom: "convf_2" + top: "convf_2" +} + +layer { + name: "concat_convf" + bottom: "convf_rpn" + bottom: "convf_2" + top: "convf" + type: "Concat" + concat_param { axis: 1 } +} + +################################################################################ +## RPN +################################################################################ + +### RPN conv ### +layer { + name: "rpn_conv1" + type: "Convolution" + bottom: "convf_rpn" + top: "rpn_conv1" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu1" + type: "ReLU" + bottom: "rpn_conv1" + top: "rpn_conv1" +} +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 84 # 2(bg/fg) * 42(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 168 # 4 * 42(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + include { phase: TRAIN } + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "{'feat_stride': 16, 'ratios': [0.333, 0.5, 0.667, 1, 1.5, 2, 3], 'scales': [2, 3, 5, 9, 16, 32]}" + } +} +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_loss_cls" + include { phase: TRAIN } + loss_weight: 1 + loss_param { ignore_label: -1 normalize: true } +} +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: "rpn_bbox_inside_weights" + bottom: "rpn_bbox_outside_weights" + top: "rpn_loss_bbox" + include { phase: TRAIN } + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + +################################################################################ +## Proposal +################################################################################ +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 84 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + bottom: 'gt_boxes' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + include { phase: TRAIN } + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer2' + param_str: "{'feat_stride': 16, 'num_classes': 21, 'ratios': [0.333, 0.5, 0.667, 1, 1.5, 2, 3], 'scales': [2, 3, 5, 9, 16, 32]}" + } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + top: 'scores' + include { phase: TEST } + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "{'feat_stride': 16, 'ratios': [0.333, 0.5, 0.667, 1, 1.5, 2, 3], 'scales': [2, 3, 5, 9, 16, 32]}" + } +} + +################################################################################ +## RCNN +################################################################################ +layer { + name: "roi_pool_conv5" + type: "ROIPooling" + bottom: "convf" + bottom: "rois" + top: "roi_pool_conv5" + roi_pooling_param { + pooled_w: 6 + pooled_h: 6 + spatial_scale: 0.0625 # 1/16 + } +} +layer { + name: "fc6" + type: "InnerProduct" + bottom: "roi_pool_conv5" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc6/bn" + type: "BatchNorm" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc6/scale" + type: "Scale" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc6/dropout" + type: "Dropout" + bottom: "fc6" + top: "fc6" + dropout_param { + dropout_ratio: 0.25 + } +} +layer { + name: "fc6/relu" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "fc7" + type: "InnerProduct" + bottom: "fc6" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc7/bn" + type: "BatchNorm" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc7/scale" + type: "Scale" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc7/dropout" + type: "Dropout" + bottom: "fc7" + top: "fc7" + dropout_param { + dropout_ratio: 0.25 + } +} +layer { + name: "fc7/relu" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} +layer { + name: "cls_score" + type: "InnerProduct" + bottom: "fc7" + top: "cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + inner_product_param { + num_output: 21 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "bbox_pred" + type: "InnerProduct" + bottom: "fc7" + top: "bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + inner_product_param { + num_output: 84 + weight_filler { type: "gaussian" std: 0.001 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "loss_cls" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels" + propagate_down: 1 + propagate_down: 0 + top: "loss_cls" + include { phase: TRAIN } + loss_weight: 1 + loss_param { ignore_label: -1 normalize: true } +} +layer { + name: "loss_bbox" + type: "SmoothL1Loss" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_inside_weights" + bottom: "bbox_outside_weights" + top: "loss_bbox" + include { phase: TRAIN } + loss_weight: 1 +} +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob" + include { phase: TEST } + loss_param { + ignore_label: -1 + normalize: true + } +} diff --git a/models/pvanet/pva9.1/faster_rcnn_train_test_ft_rcnn_only_plus_comp.pt b/models/pvanet/pva9.1/faster_rcnn_train_test_ft_rcnn_only_plus_comp.pt new file mode 100644 index 000000000..d258026d4 --- /dev/null +++ b/models/pvanet/pva9.1/faster_rcnn_train_test_ft_rcnn_only_plus_comp.pt @@ -0,0 +1,6721 @@ +name: "PVANET" + +################################################################################ +## Input +################################################################################ + +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + include { phase: TRAIN } + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +layer { + name: "input-data" + type: "DummyData" + top: "data" + top: "im_info" + include { phase: TEST } + dummy_data_param { + shape { dim: 1 dim: 3 dim: 224 dim: 224 } + shape { dim: 1 dim: 3 } + } +} + +################################################################################ +## Convolution +################################################################################ + +layer { + name: "conv1_1/conv" + type: "Convolution" + bottom: "data" + top: "conv1_1/conv" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 16 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 3 + pad_w: 3 + kernel_h: 7 + kernel_w: 7 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv1_1/bn" + type: "BatchNorm" + bottom: "conv1_1/conv" + top: "conv1_1/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv1_1/neg" + type: "Power" + bottom: "conv1_1/conv" + top: "conv1_1/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv1_1/concat" + type: "Concat" + bottom: "conv1_1/conv" + bottom: "conv1_1/neg" + top: "conv1_1" +} +layer { + name: "conv1_1/scale" + type: "Scale" + bottom: "conv1_1" + top: "conv1_1" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv1_1/relu" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv2_1/1/conv" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/1" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/2/bn" + type: "BatchNorm" + bottom: "conv2_1/1" + top: "conv2_1/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/2/bn_scale" + type: "Scale" + bottom: "conv2_1/2/pre" + top: "conv2_1/2/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/2/relu" + type: "ReLU" + bottom: "conv2_1/2/pre" + top: "conv2_1/2/pre" +} +layer { + name: "conv2_1/2/conv" + type: "Convolution" + bottom: "conv2_1/2/pre" + top: "conv2_1/2" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/3/bn" + type: "BatchNorm" + bottom: "conv2_1/2" + top: "conv2_1/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/3/neg" + type: "Power" + bottom: "conv2_1/3/pre" + top: "conv2_1/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_1/3/concat" + type: "Concat" + bottom: "conv2_1/3/pre" + bottom: "conv2_1/3/neg" + top: "conv2_1/3/preAct" +} +layer { + name: "conv2_1/3/scale" + type: "Scale" + bottom: "conv2_1/3/preAct" + top: "conv2_1/3/preAct" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/3/relu" + type: "ReLU" + bottom: "conv2_1/3/preAct" + top: "conv2_1/3/preAct" +} +layer { + name: "conv2_1/3/conv" + type: "Convolution" + bottom: "conv2_1/3/preAct" + top: "conv2_1/3" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/proj" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/proj" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1" + type: "Eltwise" + bottom: "conv2_1/3" + bottom: "conv2_1/proj" + top: "conv2_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_2/1/bn" + type: "BatchNorm" + bottom: "conv2_1" + top: "conv2_2/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/1/bn_scale" + type: "Scale" + bottom: "conv2_2/1/pre" + top: "conv2_2/1/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/1/relu" + type: "ReLU" + bottom: "conv2_2/1/pre" + top: "conv2_2/1/pre" +} +layer { + name: "conv2_2/1/conv" + type: "Convolution" + bottom: "conv2_2/1/pre" + top: "conv2_2/1" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/2/bn" + type: "BatchNorm" + bottom: "conv2_2/1" + top: "conv2_2/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/2/bn_scale" + type: "Scale" + bottom: "conv2_2/2/pre" + top: "conv2_2/2/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/2/relu" + type: "ReLU" + bottom: "conv2_2/2/pre" + top: "conv2_2/2/pre" +} +layer { + name: "conv2_2/2/conv" + type: "Convolution" + bottom: "conv2_2/2/pre" + top: "conv2_2/2" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/3/bn" + type: "BatchNorm" + bottom: "conv2_2/2" + top: "conv2_2/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/3/neg" + type: "Power" + bottom: "conv2_2/3/pre" + top: "conv2_2/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_2/3/concat" + type: "Concat" + bottom: "conv2_2/3/pre" + bottom: "conv2_2/3/neg" + top: "conv2_2/3/preAct" +} +layer { + name: "conv2_2/3/scale" + type: "Scale" + bottom: "conv2_2/3/preAct" + top: "conv2_2/3/preAct" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/3/relu" + type: "ReLU" + bottom: "conv2_2/3/preAct" + top: "conv2_2/3/preAct" +} +layer { + name: "conv2_2/3/conv" + type: "Convolution" + bottom: "conv2_2/3/preAct" + top: "conv2_2/3" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/input" + type: "Power" + bottom: "conv2_1" + top: "conv2_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_2" + type: "Eltwise" + bottom: "conv2_2/3" + bottom: "conv2_2/input" + top: "conv2_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_3/1/bn" + type: "BatchNorm" + bottom: "conv2_2" + top: "conv2_3/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/1/bn_scale" + type: "Scale" + bottom: "conv2_3/1/pre" + top: "conv2_3/1/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/1/relu" + type: "ReLU" + bottom: "conv2_3/1/pre" + top: "conv2_3/1/pre" +} +layer { + name: "conv2_3/1/conv" + type: "Convolution" + bottom: "conv2_3/1/pre" + top: "conv2_3/1" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/2/bn" + type: "BatchNorm" + bottom: "conv2_3/1" + top: "conv2_3/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/2/bn_scale" + type: "Scale" + bottom: "conv2_3/2/pre" + top: "conv2_3/2/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/2/relu" + type: "ReLU" + bottom: "conv2_3/2/pre" + top: "conv2_3/2/pre" +} +layer { + name: "conv2_3/2/conv" + type: "Convolution" + bottom: "conv2_3/2/pre" + top: "conv2_3/2" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/3/bn" + type: "BatchNorm" + bottom: "conv2_3/2" + top: "conv2_3/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/3/neg" + type: "Power" + bottom: "conv2_3/3/pre" + top: "conv2_3/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_3/3/concat" + type: "Concat" + bottom: "conv2_3/3/pre" + bottom: "conv2_3/3/neg" + top: "conv2_3/3/preAct" +} +layer { + name: "conv2_3/3/scale" + type: "Scale" + bottom: "conv2_3/3/preAct" + top: "conv2_3/3/preAct" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/3/relu" + type: "ReLU" + bottom: "conv2_3/3/preAct" + top: "conv2_3/3/preAct" +} +layer { + name: "conv2_3/3/conv" + type: "Convolution" + bottom: "conv2_3/3/preAct" + top: "conv2_3/3" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/input" + type: "Power" + bottom: "conv2_2" + top: "conv2_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_3" + type: "Eltwise" + bottom: "conv2_3/3" + bottom: "conv2_3/input" + top: "conv2_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_1/1/bn" + type: "BatchNorm" + bottom: "conv2_3" + top: "conv3_1/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/1/bn_scale" + type: "Scale" + bottom: "conv3_1/1/pre" + top: "conv3_1/1/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/1/relu" + type: "ReLU" + bottom: "conv3_1/1/pre" + top: "conv3_1/1/pre" +} +layer { + name: "conv3_1/1/conv" + type: "Convolution" + bottom: "conv3_1/1/pre" + top: "conv3_1/1" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/2/bn" + type: "BatchNorm" + bottom: "conv3_1/1" + top: "conv3_1/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/2/bn_scale" + type: "Scale" + bottom: "conv3_1/2/pre" + top: "conv3_1/2/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/2/relu" + type: "ReLU" + bottom: "conv3_1/2/pre" + top: "conv3_1/2/pre" +} +layer { + name: "conv3_1/2/conv" + type: "Convolution" + bottom: "conv3_1/2/pre" + top: "conv3_1/2" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/3/bn" + type: "BatchNorm" + bottom: "conv3_1/2" + top: "conv3_1/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/3/neg" + type: "Power" + bottom: "conv3_1/3/pre" + top: "conv3_1/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_1/3/concat" + type: "Concat" + bottom: "conv3_1/3/pre" + bottom: "conv3_1/3/neg" + top: "conv3_1/3/preAct" +} +layer { + name: "conv3_1/3/scale" + type: "Scale" + bottom: "conv3_1/3/preAct" + top: "conv3_1/3/preAct" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/3/relu" + type: "ReLU" + bottom: "conv3_1/3/preAct" + top: "conv3_1/3/preAct" +} +layer { + name: "conv3_1/3/conv" + type: "Convolution" + bottom: "conv3_1/3/preAct" + top: "conv3_1/3" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/proj" + type: "Convolution" + bottom: "conv3_1/1/pre" + top: "conv3_1/proj" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1" + type: "Eltwise" + bottom: "conv3_1/3" + bottom: "conv3_1/proj" + top: "conv3_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_2/1/bn" + type: "BatchNorm" + bottom: "conv3_1" + top: "conv3_2/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/1/bn_scale" + type: "Scale" + bottom: "conv3_2/1/pre" + top: "conv3_2/1/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/1/relu" + type: "ReLU" + bottom: "conv3_2/1/pre" + top: "conv3_2/1/pre" +} +layer { + name: "conv3_2/1/conv" + type: "Convolution" + bottom: "conv3_2/1/pre" + top: "conv3_2/1" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/2/bn" + type: "BatchNorm" + bottom: "conv3_2/1" + top: "conv3_2/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/2/bn_scale" + type: "Scale" + bottom: "conv3_2/2/pre" + top: "conv3_2/2/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/2/relu" + type: "ReLU" + bottom: "conv3_2/2/pre" + top: "conv3_2/2/pre" +} +layer { + name: "conv3_2/2/conv" + type: "Convolution" + bottom: "conv3_2/2/pre" + top: "conv3_2/2" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/3/bn" + type: "BatchNorm" + bottom: "conv3_2/2" + top: "conv3_2/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/3/neg" + type: "Power" + bottom: "conv3_2/3/pre" + top: "conv3_2/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_2/3/concat" + type: "Concat" + bottom: "conv3_2/3/pre" + bottom: "conv3_2/3/neg" + top: "conv3_2/3/preAct" +} +layer { + name: "conv3_2/3/scale" + type: "Scale" + bottom: "conv3_2/3/preAct" + top: "conv3_2/3/preAct" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/3/relu" + type: "ReLU" + bottom: "conv3_2/3/preAct" + top: "conv3_2/3/preAct" +} +layer { + name: "conv3_2/3/conv" + type: "Convolution" + bottom: "conv3_2/3/preAct" + top: "conv3_2/3" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/input" + type: "Power" + bottom: "conv3_1" + top: "conv3_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_2" + type: "Eltwise" + bottom: "conv3_2/3" + bottom: "conv3_2/input" + top: "conv3_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_3/1/bn" + type: "BatchNorm" + bottom: "conv3_2" + top: "conv3_3/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/1/bn_scale" + type: "Scale" + bottom: "conv3_3/1/pre" + top: "conv3_3/1/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/1/relu" + type: "ReLU" + bottom: "conv3_3/1/pre" + top: "conv3_3/1/pre" +} +layer { + name: "conv3_3/1/conv" + type: "Convolution" + bottom: "conv3_3/1/pre" + top: "conv3_3/1" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/2/bn" + type: "BatchNorm" + bottom: "conv3_3/1" + top: "conv3_3/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/2/bn_scale" + type: "Scale" + bottom: "conv3_3/2/pre" + top: "conv3_3/2/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/2/relu" + type: "ReLU" + bottom: "conv3_3/2/pre" + top: "conv3_3/2/pre" +} +layer { + name: "conv3_3/2/conv" + type: "Convolution" + bottom: "conv3_3/2/pre" + top: "conv3_3/2" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/3/bn" + type: "BatchNorm" + bottom: "conv3_3/2" + top: "conv3_3/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/3/neg" + type: "Power" + bottom: "conv3_3/3/pre" + top: "conv3_3/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_3/3/concat" + type: "Concat" + bottom: "conv3_3/3/pre" + bottom: "conv3_3/3/neg" + top: "conv3_3/3/preAct" +} +layer { + name: "conv3_3/3/scale" + type: "Scale" + bottom: "conv3_3/3/preAct" + top: "conv3_3/3/preAct" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/3/relu" + type: "ReLU" + bottom: "conv3_3/3/preAct" + top: "conv3_3/3/preAct" +} +layer { + name: "conv3_3/3/conv" + type: "Convolution" + bottom: "conv3_3/3/preAct" + top: "conv3_3/3" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/input" + type: "Power" + bottom: "conv3_2" + top: "conv3_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_3" + type: "Eltwise" + bottom: "conv3_3/3" + bottom: "conv3_3/input" + top: "conv3_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_4/1/bn" + type: "BatchNorm" + bottom: "conv3_3" + top: "conv3_4/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/1/bn_scale" + type: "Scale" + bottom: "conv3_4/1/pre" + top: "conv3_4/1/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/1/relu" + type: "ReLU" + bottom: "conv3_4/1/pre" + top: "conv3_4/1/pre" +} +layer { + name: "conv3_4/1/conv" + type: "Convolution" + bottom: "conv3_4/1/pre" + top: "conv3_4/1" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/2/bn" + type: "BatchNorm" + bottom: "conv3_4/1" + top: "conv3_4/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/2/bn_scale" + type: "Scale" + bottom: "conv3_4/2/pre" + top: "conv3_4/2/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/2/relu" + type: "ReLU" + bottom: "conv3_4/2/pre" + top: "conv3_4/2/pre" +} +layer { + name: "conv3_4/2/conv" + type: "Convolution" + bottom: "conv3_4/2/pre" + top: "conv3_4/2" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/3/bn" + type: "BatchNorm" + bottom: "conv3_4/2" + top: "conv3_4/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/3/neg" + type: "Power" + bottom: "conv3_4/3/pre" + top: "conv3_4/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_4/3/concat" + type: "Concat" + bottom: "conv3_4/3/pre" + bottom: "conv3_4/3/neg" + top: "conv3_4/3/preAct" +} +layer { + name: "conv3_4/3/scale" + type: "Scale" + bottom: "conv3_4/3/preAct" + top: "conv3_4/3/preAct" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/3/relu" + type: "ReLU" + bottom: "conv3_4/3/preAct" + top: "conv3_4/3/preAct" +} +layer { + name: "conv3_4/3/conv" + type: "Convolution" + bottom: "conv3_4/3/preAct" + top: "conv3_4/3" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/input" + type: "Power" + bottom: "conv3_3" + top: "conv3_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_4" + type: "Eltwise" + bottom: "conv3_4/3" + bottom: "conv3_4/input" + top: "conv3_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_1/incep/bn" + type: "BatchNorm" + bottom: "conv3_4" + top: "conv4_1/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/relu" + type: "ReLU" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/pre" +} +layer { + name: "conv4_1/incep/0/conv" + type: "Convolution" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/0/relu" + type: "ReLU" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/pool" + type: "Pooling" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv4_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv4_1/incep/pool" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep" + type: "Concat" + bottom: "conv4_1/incep/0" + bottom: "conv4_1/incep/1_0" + bottom: "conv4_1/incep/2_1" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep" +} +layer { + name: "conv4_1/out/conv" + type: "Convolution" + bottom: "conv4_1/incep" + top: "conv4_1/out" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/proj" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/proj" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1" + type: "Eltwise" + bottom: "conv4_1/out" + bottom: "conv4_1/proj" + top: "conv4_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_2/incep/bn" + type: "BatchNorm" + bottom: "conv4_1" + top: "conv4_2/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/relu" + type: "ReLU" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/pre" +} +layer { + name: "conv4_2/incep/0/conv" + type: "Convolution" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/0/relu" + type: "ReLU" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep" + type: "Concat" + bottom: "conv4_2/incep/0" + bottom: "conv4_2/incep/1_0" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep" +} +layer { + name: "conv4_2/out/conv" + type: "Convolution" + bottom: "conv4_2/incep" + top: "conv4_2/out" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/input" + type: "Power" + bottom: "conv4_1" + top: "conv4_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_2" + type: "Eltwise" + bottom: "conv4_2/out" + bottom: "conv4_2/input" + top: "conv4_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_3/incep/bn" + type: "BatchNorm" + bottom: "conv4_2" + top: "conv4_3/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/relu" + type: "ReLU" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/pre" +} +layer { + name: "conv4_3/incep/0/conv" + type: "Convolution" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/0/relu" + type: "ReLU" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep" + type: "Concat" + bottom: "conv4_3/incep/0" + bottom: "conv4_3/incep/1_0" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep" +} +layer { + name: "conv4_3/out/conv" + type: "Convolution" + bottom: "conv4_3/incep" + top: "conv4_3/out" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/input" + type: "Power" + bottom: "conv4_2" + top: "conv4_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_3" + type: "Eltwise" + bottom: "conv4_3/out" + bottom: "conv4_3/input" + top: "conv4_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_4/incep/bn" + type: "BatchNorm" + bottom: "conv4_3" + top: "conv4_4/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/relu" + type: "ReLU" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/pre" +} +layer { + name: "conv4_4/incep/0/conv" + type: "Convolution" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/0/relu" + type: "ReLU" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep" + type: "Concat" + bottom: "conv4_4/incep/0" + bottom: "conv4_4/incep/1_0" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep" +} +layer { + name: "conv4_4/out/conv" + type: "Convolution" + bottom: "conv4_4/incep" + top: "conv4_4/out" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/input" + type: "Power" + bottom: "conv4_3" + top: "conv4_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_4" + type: "Eltwise" + bottom: "conv4_4/out" + bottom: "conv4_4/input" + top: "conv4_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_1/incep/bn" + type: "BatchNorm" + bottom: "conv4_4" + top: "conv5_1/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/relu" + type: "ReLU" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/pre" +} +layer { + name: "conv5_1/incep/0/conv" + type: "Convolution" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/0/relu" + type: "ReLU" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/pool" + type: "Pooling" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv5_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv5_1/incep/pool" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep" + type: "Concat" + bottom: "conv5_1/incep/0" + bottom: "conv5_1/incep/1_0" + bottom: "conv5_1/incep/2_1" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep" +} +layer { + name: "conv5_1/out/conv" + type: "Convolution" + bottom: "conv5_1/incep" + top: "conv5_1/out" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/proj" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/proj" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1" + type: "Eltwise" + bottom: "conv5_1/out" + bottom: "conv5_1/proj" + top: "conv5_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_2/incep/bn" + type: "BatchNorm" + bottom: "conv5_1" + top: "conv5_2/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/relu" + type: "ReLU" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/pre" +} +layer { + name: "conv5_2/incep/0/conv" + type: "Convolution" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/0/relu" + type: "ReLU" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep" + type: "Concat" + bottom: "conv5_2/incep/0" + bottom: "conv5_2/incep/1_0" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep" +} +layer { + name: "conv5_2/out/conv" + type: "Convolution" + bottom: "conv5_2/incep" + top: "conv5_2/out" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/input" + type: "Power" + bottom: "conv5_1" + top: "conv5_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_2" + type: "Eltwise" + bottom: "conv5_2/out" + bottom: "conv5_2/input" + top: "conv5_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_3/incep/bn" + type: "BatchNorm" + bottom: "conv5_2" + top: "conv5_3/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/relu" + type: "ReLU" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/pre" +} +layer { + name: "conv5_3/incep/0/conv" + type: "Convolution" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/0/relu" + type: "ReLU" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep" + type: "Concat" + bottom: "conv5_3/incep/0" + bottom: "conv5_3/incep/1_0" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep" +} +layer { + name: "conv5_3/out/conv" + type: "Convolution" + bottom: "conv5_3/incep" + top: "conv5_3/out" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/input" + type: "Power" + bottom: "conv5_2" + top: "conv5_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_3" + type: "Eltwise" + bottom: "conv5_3/out" + bottom: "conv5_3/input" + top: "conv5_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/incep/bn" + type: "BatchNorm" + bottom: "conv5_3" + top: "conv5_4/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/pre" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/relu" + type: "ReLU" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/pre" +} +layer { + name: "conv5_4/incep/0/conv" + type: "Convolution" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/0/relu" + type: "ReLU" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep" + type: "Concat" + bottom: "conv5_4/incep/0" + bottom: "conv5_4/incep/1_0" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep" +} +layer { + name: "conv5_4/out/conv" + type: "Convolution" + bottom: "conv5_4/incep" + top: "conv5_4/out" + param { + lr_mult: 0.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/out/bn" + type: "BatchNorm" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/out/bn_scale" + type: "Scale" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/input" + type: "Power" + bottom: "conv5_3" + top: "conv5_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_4" + type: "Eltwise" + bottom: "conv5_4/out" + bottom: "conv5_4/input" + top: "conv5_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/last_bn" + type: "BatchNorm" + bottom: "conv5_4" + top: "conv5_4" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/last_bn_scale" + type: "Scale" + bottom: "conv5_4" + top: "conv5_4" + param { + lr_mult: 0.0 + decay_mult: 0 + } + param { + lr_mult: 0.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/last_relu" + type: "ReLU" + bottom: "conv5_4" + top: "conv5_4" +} + +### hyper feature ### +layer { + name: "downsample" + type: "Pooling" + bottom: "conv3_4" + top: "downsample" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } +} +layer { + name: "upsample" + type: "Deconvolution" + bottom: "conv5_4" + top: "upsample" + param { lr_mult: 0 decay_mult: 0} + convolution_param { + num_output: 384 kernel_size: 4 pad: 1 stride: 2 group: 384 + weight_filler: {type: "bilinear" } + bias_term: false + } +} +layer { + name: "concat" + bottom: "downsample" + bottom: "conv4_4" + bottom: "upsample" + top: "concat" + type: "Concat" + concat_param { axis: 1 } +} + +layer { + name: "convf_rpn" + type: "Convolution" + bottom: "concat" + top: "convf_rpn" + param { lr_mult: 0.0 decay_mult: 0.0 } + param { lr_mult: 0.0 decay_mult: 0 } + convolution_param { + num_output: 128 kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "reluf_rpn" + type: "ReLU" + bottom: "convf_rpn" + top: "convf_rpn" +} + + +layer { + name: "convf_2" + type: "Convolution" + bottom: "concat" + top: "convf_2" + param { lr_mult: 0.1 decay_mult: 0.1 } + param { lr_mult: 0.2 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "reluf_2" + type: "ReLU" + bottom: "convf_2" + top: "convf_2" +} + +layer { + name: "concat_convf" + bottom: "convf_rpn" + bottom: "convf_2" + top: "convf" + type: "Concat" + concat_param { axis: 1 } +} + +################################################################################ +## RPN +################################################################################ + +### RPN conv ### +layer { + name: "rpn_conv1" + type: "Convolution" + bottom: "convf_rpn" + top: "rpn_conv1" + param { lr_mult: 0.0 decay_mult: 0.0 } + param { lr_mult: 0.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu1" + type: "ReLU" + bottom: "rpn_conv1" + top: "rpn_conv1" +} +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_cls_score" + param { lr_mult: 0.0 decay_mult: 0.0 } + param { lr_mult: 0.0 decay_mult: 0 } + convolution_param { + num_output: 84 # 2(bg/fg) * 42(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_bbox_pred" + param { lr_mult: 0.0 decay_mult: 0.0 } + param { lr_mult: 0.0 decay_mult: 0 } + convolution_param { + num_output: 168 # 4 * 42(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +################################################################################ +## Proposal +################################################################################ +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 84 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + bottom: 'gt_boxes' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + include { phase: TRAIN } + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer2' + param_str: "{'feat_stride': 16, 'num_classes': 21, 'ratios': [0.333, 0.5, 0.667, 1, 1.5, 2, 3], 'scales': [2, 3, 5, 9, 16, 32]}" + } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + top: 'scores' + include { phase: TEST } + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "{'feat_stride': 16, 'ratios': [0.333, 0.5, 0.667, 1, 1.5, 2, 3], 'scales': [2, 3, 5, 9, 16, 32]}" + } +} + +################################################################################ +## RCNN +################################################################################ +layer { + name: "roi_pool_conv5" + type: "ROIPooling" + bottom: "convf" + bottom: "rois" + top: "roi_pool_conv5" + roi_pooling_param { + pooled_w: 6 + pooled_h: 6 + spatial_scale: 0.0625 # 1/16 + } +} +layer { + name: "fc6_L" + type: "InnerProduct" + bottom: "roi_pool_conv5" + top: "fc6_L" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + inner_product_param { + num_output: 512 + } +} +layer { + name: "fc6_U" + type: "InnerProduct" + bottom: "fc6_L" + top: "fc6" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + } +} +layer { + name: "fc6/bn" + type: "BatchNorm" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc6/dropout" + type: "Dropout" + bottom: "fc6" + top: "fc6" + dropout_param { + dropout_ratio: 0.25 + } +} +layer { + name: "fc6/relu" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "fc7_L" + type: "InnerProduct" + bottom: "fc6" + top: "fc7_L" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + inner_product_param { + num_output: 512 + } +} +layer { + name: "fc7_U" + type: "InnerProduct" + bottom: "fc7_L" + top: "fc7" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + } +} +layer { + name: "fc7/bn" + type: "BatchNorm" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc7/scale" + type: "Scale" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc7/dropout" + type: "Dropout" + bottom: "fc7" + top: "fc7" + dropout_param { + dropout_ratio: 0.25 + } +} +layer { + name: "fc7/relu" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} +layer { + name: "cls_score" + type: "InnerProduct" + bottom: "fc7" + top: "cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + inner_product_param { + num_output: 21 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "bbox_pred" + type: "InnerProduct" + bottom: "fc7" + top: "bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + inner_product_param { + num_output: 84 + weight_filler { type: "gaussian" std: 0.001 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "loss_cls" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels" + propagate_down: 1 + propagate_down: 0 + top: "loss_cls" + include { phase: TRAIN } + loss_weight: 1 + loss_param { ignore_label: -1 normalize: true } +} +layer { + name: "loss_bbox" + type: "SmoothL1Loss" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_inside_weights" + bottom: "bbox_outside_weights" + top: "loss_bbox" + include { phase: TRAIN } + loss_weight: 1 +} +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob" + include { phase: TEST } + loss_param { + ignore_label: -1 + normalize: true + } +} diff --git a/models/pvanet/cfgs/100prop.yml b/models/pvanet_obsolete/cfgs/100prop.yml similarity index 100% rename from models/pvanet/cfgs/100prop.yml rename to models/pvanet_obsolete/cfgs/100prop.yml diff --git a/models/pvanet/cfgs/200prop.yml b/models/pvanet_obsolete/cfgs/200prop.yml similarity index 100% rename from models/pvanet/cfgs/200prop.yml rename to models/pvanet_obsolete/cfgs/200prop.yml diff --git a/models/pvanet/cfgs/300prop.yml b/models/pvanet_obsolete/cfgs/300prop.yml similarity index 100% rename from models/pvanet/cfgs/300prop.yml rename to models/pvanet_obsolete/cfgs/300prop.yml diff --git a/models/pvanet/cfgs/50prop.yml b/models/pvanet_obsolete/cfgs/50prop.yml similarity index 100% rename from models/pvanet/cfgs/50prop.yml rename to models/pvanet_obsolete/cfgs/50prop.yml diff --git a/models/pvanet/cfgs/submit_160715.yml b/models/pvanet_obsolete/cfgs/submit_160715.yml similarity index 100% rename from models/pvanet/cfgs/submit_160715.yml rename to models/pvanet_obsolete/cfgs/submit_160715.yml diff --git a/models/pvanet_obsolete/cfgs/train.yml b/models/pvanet_obsolete/cfgs/train.yml new file mode 100644 index 000000000..ab88fbc84 --- /dev/null +++ b/models/pvanet_obsolete/cfgs/train.yml @@ -0,0 +1,27 @@ +EXP_DIR: faster_rcnn_pvanet +TRAIN: + HAS_RPN: True + IMS_PER_BATCH: 1 + BBOX_NORMALIZE_TARGETS_PRECOMPUTED: True + RPN_POSITIVE_OVERLAP: 0.7 + RPN_BATCHSIZE: 256 + PROPOSAL_METHOD: gt + BG_THRESH_LO: 0.0 + SCALE_MULTIPLE_OF: 32 + MAX_SIZE: 1440 + SCALES: + - 416 + - 448 + - 480 + - 512 + - 544 + - 576 + - 608 + - 640 + - 672 + - 704 + - 736 + - 768 + - 800 + - 832 + - 864 diff --git a/models/pvanet/comp/original.pt b/models/pvanet_obsolete/comp/original.pt similarity index 100% rename from models/pvanet/comp/original.pt rename to models/pvanet_obsolete/comp/original.pt diff --git a/models/pvanet/comp/test.pt b/models/pvanet_obsolete/comp/test.pt similarity index 100% rename from models/pvanet/comp/test.pt rename to models/pvanet_obsolete/comp/test.pt diff --git a/models/pvanet/download_imagenet_models.sh b/models/pvanet_obsolete/download_imagenet_models.sh similarity index 100% rename from models/pvanet/download_imagenet_models.sh rename to models/pvanet_obsolete/download_imagenet_models.sh diff --git a/models/pvanet/download_lite_models.sh b/models/pvanet_obsolete/download_lite_models.sh similarity index 100% rename from models/pvanet/download_lite_models.sh rename to models/pvanet_obsolete/download_lite_models.sh diff --git a/models/pvanet/download_models.sh b/models/pvanet_obsolete/download_models.sh similarity index 100% rename from models/pvanet/download_models.sh rename to models/pvanet_obsolete/download_models.sh diff --git a/models/pvanet/download_original_models.sh b/models/pvanet_obsolete/download_original_models.sh similarity index 100% rename from models/pvanet/download_original_models.sh rename to models/pvanet_obsolete/download_original_models.sh diff --git a/models/pvanet/example_finetune/README.md b/models/pvanet_obsolete/example_finetune/README.md similarity index 100% rename from models/pvanet/example_finetune/README.md rename to models/pvanet_obsolete/example_finetune/README.md diff --git a/models/pvanet/example_finetune/solver.prototxt b/models/pvanet_obsolete/example_finetune/solver.prototxt similarity index 100% rename from models/pvanet/example_finetune/solver.prototxt rename to models/pvanet_obsolete/example_finetune/solver.prototxt diff --git a/models/pvanet/example_finetune/test.prototxt b/models/pvanet_obsolete/example_finetune/test.prototxt similarity index 100% rename from models/pvanet/example_finetune/test.prototxt rename to models/pvanet_obsolete/example_finetune/test.prototxt diff --git a/models/pvanet/example_finetune/train.prototxt b/models/pvanet_obsolete/example_finetune/train.prototxt similarity index 100% rename from models/pvanet/example_finetune/train.prototxt rename to models/pvanet_obsolete/example_finetune/train.prototxt diff --git a/models/pvanet/example_train_384/README.md b/models/pvanet_obsolete/example_train_384/README.md similarity index 100% rename from models/pvanet/example_train_384/README.md rename to models/pvanet_obsolete/example_train_384/README.md diff --git a/models/pvanet/example_train_384/solver.prototxt b/models/pvanet_obsolete/example_train_384/solver.prototxt similarity index 100% rename from models/pvanet/example_train_384/solver.prototxt rename to models/pvanet_obsolete/example_train_384/solver.prototxt diff --git a/models/pvanet/example_train_384/test.prototxt b/models/pvanet_obsolete/example_train_384/test.prototxt similarity index 100% rename from models/pvanet/example_train_384/test.prototxt rename to models/pvanet_obsolete/example_train_384/test.prototxt diff --git a/models/pvanet/example_train_384/train.prototxt b/models/pvanet_obsolete/example_train_384/train.prototxt similarity index 100% rename from models/pvanet/example_train_384/train.prototxt rename to models/pvanet_obsolete/example_train_384/train.prototxt diff --git a/models/pvanet/full/original.pt b/models/pvanet_obsolete/full/original.pt similarity index 100% rename from models/pvanet/full/original.pt rename to models/pvanet_obsolete/full/original.pt diff --git a/models/pvanet/full/test.pt b/models/pvanet_obsolete/full/test.pt similarity index 100% rename from models/pvanet/full/test.pt rename to models/pvanet_obsolete/full/test.pt diff --git a/models/pvanet/imagenet/original.pt b/models/pvanet_obsolete/imagenet/original.pt similarity index 100% rename from models/pvanet/imagenet/original.pt rename to models/pvanet_obsolete/imagenet/original.pt diff --git a/models/pvanet/imagenet/test.pt b/models/pvanet_obsolete/imagenet/test.pt similarity index 100% rename from models/pvanet/imagenet/test.pt rename to models/pvanet_obsolete/imagenet/test.pt diff --git a/models/pvanet/lite/original.pt b/models/pvanet_obsolete/lite/original.pt similarity index 100% rename from models/pvanet/lite/original.pt rename to models/pvanet_obsolete/lite/original.pt diff --git a/models/pvanet/lite/test.pt b/models/pvanet_obsolete/lite/test.pt similarity index 100% rename from models/pvanet/lite/test.pt rename to models/pvanet_obsolete/lite/test.pt From 6815a7f01784c80c4569139aeb0863b1d138dc9e Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Tue, 27 Dec 2016 13:19:30 +0900 Subject: [PATCH 28/36] Add weighted box scoring (vote heuristics) --- lib/fast_rcnn/config.py | 4 +++ lib/fast_rcnn/test.py | 42 ++++++++++++++++++++++++++++-- models/pvanet/cfgs/submit_1019.yml | 13 +++++++++ 3 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 models/pvanet/cfgs/submit_1019.yml diff --git a/lib/fast_rcnn/config.py b/lib/fast_rcnn/config.py index 513576832..ff3eae95b 100644 --- a/lib/fast_rcnn/config.py +++ b/lib/fast_rcnn/config.py @@ -172,6 +172,10 @@ # Apply bounding box voting __C.TEST.BBOX_VOTE = False +# Apply box scoring heuristics +__C.TEST.BBOX_VOTE_N_WEIGHTED_SCORE = 1 +__C.TEST.BBOX_VOTE_WEIGHT_EMPTY = 0.5 + # # MISC diff --git a/lib/fast_rcnn/test.py b/lib/fast_rcnn/test.py index e80bee8ed..6355cbea1 100644 --- a/lib/fast_rcnn/test.py +++ b/lib/fast_rcnn/test.py @@ -18,7 +18,8 @@ import cPickle from utils.blob import im_list_to_blob import os -from utils.cython_bbox import bbox_vote +from utils.cython_bbox import bbox_overlaps + def _get_image_blob(im): """Converts an image into a network input. @@ -240,7 +241,44 @@ def apply_nms(all_boxes, thresh): nms_boxes[cls_ind][im_ind] = dets[keep, :].copy() return nms_boxes -def test_net(net, imdb, max_per_image=100, thresh=0.05, vis=False): +def bbox_vote(dets_NMS, dets_all, thresh=0.5): + dets_voted = np.zeros_like(dets_NMS) # Empty matrix with the same shape and type + + _overlaps = bbox_overlaps( + np.ascontiguousarray(dets_NMS[:, 0:4], dtype=np.float), + np.ascontiguousarray(dets_all[:, 0:4], dtype=np.float)) + + # for each survived box + for i, det in enumerate(dets_NMS): + dets_overlapped = dets_all[np.where(_overlaps[i, :] >= thresh)[0]] + assert(len(dets_overlapped) > 0) + + boxes = dets_overlapped[:, 0:4] + scores = dets_overlapped[:, 4] + + out_box = np.dot(scores, boxes) + + dets_voted[i][0:4] = out_box / sum(scores) # Weighted bounding boxes + dets_voted[i][4] = det[4] # Keep the original score + + # Weighted scores (if enabled) + if cfg.TEST.BBOX_VOTE_N_WEIGHTED_SCORE > 1: + n_agreement = cfg.TEST.BBOX_VOTE_N_WEIGHTED_SCORE + w_empty = cfg.TEST.BBOX_VOTE_WEIGHT_EMPTY + + n_detected = len(scores) + + if n_detected >= n_agreement: + top_scores = -np.sort(-scores)[:n_agreement] + new_score = np.average(top_scores) + else: + new_score = np.average(scores) * (n_detected * 1.0 + (n_agreement - n_detected) * w_empty) / n_agreement + + dets_voted[i][4] = min(new_score, dets_voted[i][4]) + + return dets_voted + +def test_net(net, imdb, max_per_image=100, thresh=0.01, vis=False): """Test a Fast R-CNN network on an image database.""" num_images = len(imdb.image_index) # all detections are collected into: diff --git a/models/pvanet/cfgs/submit_1019.yml b/models/pvanet/cfgs/submit_1019.yml new file mode 100644 index 000000000..189e6960f --- /dev/null +++ b/models/pvanet/cfgs/submit_1019.yml @@ -0,0 +1,13 @@ +EXP_DIR: submit_1019 +TEST: + HAS_RPN: True + SCALE_MULTIPLE_OF: 32 + MAX_SIZE: 2000 + SCALES: + - 640 + BBOX_VOTE: True + BBOX_VOTE_N_WEIGHTED_SCORE: 5 + BBOX_VOTE_WEIGHT_EMPTY: 0.3 + NMS: 0.4 + RPN_PRE_NMS_TOP_N: 12000 + RPN_POST_NMS_TOP_N: 200 \ No newline at end of file From 04ba579752e6f1db9713181974cc922d9db88d7e Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Tue, 27 Dec 2016 15:32:51 +0900 Subject: [PATCH 29/36] Update README.md --- README.md | 113 +++++++++------------------ models/pvanet/download_all_models.sh | 4 +- 2 files changed, 41 insertions(+), 76 deletions(-) diff --git a/README.md b/README.md index 7d1a6ae95..eb9f09754 100644 --- a/README.md +++ b/README.md @@ -10,11 +10,8 @@ You can refer to [py-faster-rcnn README.md](https://github.com/rbgirshick/py-fas ### Desclaimer -This repository doesn't contain our up-to-date models and codes. -I'll be updated by the end of December. - Please note that this repository doesn't contain our in-house codes used in the published article. -- This version of py-faster-rcnn is slower than our in-house runtime code due to the image pre-processing code written in Python (+9 ms) and some poorly implemented parts in Caffe (+5 ms). +- This version of py-faster-rcnn is slower than our in-house runtime code (e.g. image pre-processing code written in Python) - PVANet was trained by our in-house deep learning library, not by this implementation. - There might be a tiny difference in VOC2012 test results, because some hidden parameters in py-faster-rcnn may be set differently with ours. @@ -31,12 +28,11 @@ If you want to cite this work in your publication: ``` ### Installation - 1. Clone the Faster R-CNN repository - ```Shell - # Make sure to clone with --recursive - git clone --recursive https://github.com/sanghoon/pva-faster-rcnn.git - ``` + ```Shell + # Make sure to clone with --recursive + git clone --recursive https://github.com/sanghoon/pva-faster-rcnn.git + ``` 2. We'll call the directory that you cloned Faster R-CNN into `FRCN_ROOT`. Build the Cython modules ```Shell @@ -56,60 +52,29 @@ If you want to cite this work in your publication: make -j8 && make pycaffe ``` -4. Download PVANet caffemodels +4. Download PVANet detection model for VOC2007 ```Shell cd $FRCN_ROOT - ./models/pvanet/download_models.sh + ./models/pvanet/download_voc2007.sh ``` - - If it does not work, - 1. Download [full/test.model](https://drive.google.com/open?id=0BwFPOX3S4VcBd3NPNmI1RHBZNkk) and move it to ./models/pvanet/full/ - 2. Download [comp/test.model](https://drive.google.com/open?id=0BwFPOX3S4VcBODJkckhudE1NeGM) and move it to ./models/pvanet/comp/ -5. (Optional) Download original caffemodels (without merging batch normalization and scale layers) +5. Download PVANet detection model for VOC2012 (published model) ```Shell cd $FRCN_ROOT - ./models/pvanet/download_original_models.sh - ``` - - If it does not work, - 1. Download [full/original.model](https://drive.google.com/open?id=0BwFPOX3S4VcBUW1OS1Fva3VKZ1E) and move it to ./models/pvanet/full/ - 2. Download [comp/original.model](https://drive.google.com/open?id=0BwFPOX3S4VcBdVZuX3dQRzFjU1k) and move it to ./models/pvanet/comp/ - -6. (Optional) Download ImageNet pretrained models + ./models/pvanet/download_voc_best.sh + ``` + +5. (Optional) Download all available VOC models (including pre-trained and compressed models) ```Shell cd $FRCN_ROOT - ./models/pvanet/download_imagenet_models.sh + ./models/pvanet/download_all_models.sh ``` - - If it does not work, - 1. Download [imagenet/original.model](https://drive.google.com/open?id=0BwFPOX3S4VcBd1VtRzdHa1NoN1k) and move it to ./models/pvanet/imagenet/ - 2. Download [imagenet/test.model](https://drive.google.com/open?id=0BwFPOX3S4VcBWnI0VHRzZWh6bFU) and move it to ./models/pvanet/imagenet/ -7. (Optional) Download PVANet-lite models +6. (Optional) Download ImageNet classification model ```Shell cd $FRCN_ROOT - ./models/pvanet/download_lite_models.sh + ./models/pvanet/download_imagenet_model.sh ``` - - If it does not work, - 1. Download [lite/original.model](https://drive.google.com/open?id=0BwFPOX3S4VcBc1ZEQldZTlZKN00) and move it to ./models/pvanet/lite/ - 2. Download [lite/test.model](https://drive.google.com/open?id=0BwFPOX3S4VcBSWg2MlpGcWlQeHM) and move it to ./models/pvanet/lite/ - -### Models - -1. PVANet - - `./models/pvanet/full/test.pt`: For testing-time efficiency, batch normalization (w/ its moving averaged mini-batch statistics) and scale (w/ its trained parameters) layers are merged into the corresponding convolutional layer. - - `./models/pvanet/full/original.pt`: Original network structure. - -2. PVANet (compressed) - - `./models/pvanet/comp/test.pt`: Compressed network w/ merging batch normalization and scale. - - `./models/pvanet/comp/original.pt`: Original compressed network structure. - -3. PVANet (ImageNet pretrained model) - - `./models/pvanet/imagenet/test.pt`: Classification network w/ merging batch normalization and scale. - - `./models/pvanet/imagenet/original.pt`: Original classification network structure. - -4. PVANet-lite - - `./models/pvanet/lite/test.pt`: Compressed network w/ merging batch normalization and scale. - - `./models/pvanet/lite/original.pt`: Original compressed network structure. - ### How to run the demo @@ -117,32 +82,32 @@ If you want to cite this work in your publication: - Follow the instructions in [py-faster-rcnn README.md](https://github.com/rbgirshick/py-faster-rcnn#beyond-the-demo-installation-for-training-and-testing-models) 2. PVANet on PASCAL VOC 2007 - ```Shell - cd $FRCN_ROOT - ./tools/test_net.py --gpu 0 --def models/pvanet/full/test.pt --net models/pvanet/full/test.model --cfg models/pvanet/cfgs/submit_160715.yml - ``` + ```Shell + cd $FRCN_ROOT + ./tools/test_net.py --net models/pvanet/pva9.1/PVA9.1_ImgNet_COCO_VOC0712.caffemodel --def models/pvanet/pva9.1/faster_rcnn_train_test_21cls.pt --cfg models/pvanet/cfgs/submit_1019.yml --gpu 0 + ``` 3. PVANet (compressed) - ```Shell - cd $FRCN_ROOT - ./tools/test_net.py --gpu 0 --def models/pvanet/comp/test.pt --net models/pvanet/comp/test.model --cfg models/pvanet/cfgs/submit_160715.yml - ``` - -4. (Optional) ImageNet classification - ```Shell - cd $FRCN_ROOT - ./caffe-fast-rcnn/build/tools/caffe test -gpu 0 -model models/pvanet/imagenet/test.pt -weights models/pvanet/imagenet/test.model -iterations 1000 - ``` - -5. (Optional) PVANet-lite - ```Shell - cd $FRCN_ROOT - ./tools/test_net.py --gpu 0 --def models/pvanet/lite/test.pt --net models/pvanet/lite/test.model --cfg models/pvanet/cfgs/submit_160715.yml - ``` + ```Shell + cd $FRCN_ROOT + ./tools/test_net.py --net models/pvanet/pva9.1/PVA9.1_ImgNet_COCO_VOC0712plus_compressed.caffemodel --def models/pvanet/pva9.1/faster_rcnn_train_test_ft_rcnn_only_plus_comp.pt --cfg models/pvanet/cfgs/submit_1019.yml --gpu 0 + ``` ### Expected results -- PVANet: 83.85% mAP -- PVANet (compressed): 82.90% mAP -- ImageNet classification: 68.998% top-1 accuracy, 88.8902% top-5 accuracy, 1.28726 loss -- PVANET-lite: 79.10% mAP +#### Mean Average Precision on VOC detection tasks + +| Model | VOC2007 mAP (%) | VOC2012 mAP (%) | +| --------- | ------- | ------- | +| PVANet+ (VOC2007) | **84.9** | N/A | +| PVANet+ (VOC2012) | *89.8* | **84.2** | +| PVANet+ (VOC2012 + compressed) | *87.8* | 83.7 | +- The training set for the VOC2012 model includes the VOC2007 test set. Therefore the accuracies on VOC2007 of the model are not meaningful; They're shown here just for reference + +#### Validation error on ILSVRC2012 + +| Input size | Top-1 error (%) | Top-5 error (%) | +| --- | --- | --- | +| 192x192 | 30.00 | N/A | +| 224x224 | 27.66 | 8.84 | +- We re-trained a 224x224 model from the '192x192' model as a base model. diff --git a/models/pvanet/download_all_models.sh b/models/pvanet/download_all_models.sh index 5459da69b..3efc4d348 100755 --- a/models/pvanet/download_all_models.sh +++ b/models/pvanet/download_all_models.sh @@ -1,7 +1,7 @@ #/bin/bash -# ImageNet pre-trained -wget https://www.dropbox.com/s/a2y0e12kmu8wjsf/pva9.1_preAct_train_iter_1900000.caffemodel?dl=1 -O models/pvanet/pretrained/pva9.1_preAct_train_iter_1900000.caffemodel +# ImageNet pre-trained (for fine-tuning) +wget https://www.dropbox.com/s/g9ly0fc0fspdfz8/pva9.1_pretrained_no_fc6.caffemodel?dl=1 -O models/pvanet/pretrained/pva9.1_pretrained_no_fc6.caffemodel # COCO train/val + VOC0712 train/val wget https://www.dropbox.com/s/sq1kujjil5qg5bw/PVA9.1_ImgNet_COCO_VOC0712.caffemodel?dl=1 -O models/pvanet/pva9.1/PVA9.1_ImgNet_COCO_VOC0712.caffemodel From 44a1428bf61b54acc85727bada6d75c17a74ef49 Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Tue, 27 Dec 2016 15:34:15 +0900 Subject: [PATCH 30/36] Add a training example --- models/pvanet/example_train/README.md | 28 + models/pvanet/example_train/solver.prototxt | 22 + models/pvanet/example_train/test.prototxt | 6683 ++++++++++++++++++ models/pvanet/example_train/train.prototxt | 6764 +++++++++++++++++++ 4 files changed, 13497 insertions(+) create mode 100644 models/pvanet/example_train/README.md create mode 100644 models/pvanet/example_train/solver.prototxt create mode 100644 models/pvanet/example_train/test.prototxt create mode 100644 models/pvanet/example_train/train.prototxt diff --git a/models/pvanet/example_train/README.md b/models/pvanet/example_train/README.md new file mode 100644 index 000000000..98e8cf374 --- /dev/null +++ b/models/pvanet/example_train/README.md @@ -0,0 +1,28 @@ +## PVANet: Lightweight Deep Neural Networks for Real-time Object Detection +by Sanghoon Hong, Byungseok Roh, Kye-hyeon Kim, Yeongjae Cheon, Minje Park (Intel Imaging and Camera Technology) +Presented in [EMDNN2016](http://allenai.org/plato/emdnn/), a NIPS2016 workshop ([arXiv link](https://arxiv.org/abs/1611.08588)) + +### Notes +- The training of PVANet 9.1 on the VOC2012 leaderboard wasn't done with this code. + +### Sample command +- Training for 100k iterations (toy) + ``` + tools/train_net.py + --gpu 0 + --solver models/pvanet/example_train/solver.prototxt + --weights models/pvanet/pretrained/pva9.1_pretrained_no_fc6.caffemodel + --iters 100000 + --cfg models/pvanet/cfgs/train.yml + --imdb voc_2007_trainval + ``` + +- Testing + + ``` + tools/test_net.py + --gpu 0 + --def models/pvanet/example_train/test.prototxt + --net output/faster_rcnn_pvanet/voc_2007_trainval/pvanet_frcnn_iter_100000.caffemodel + --cfg models/pvanet/cfgs/submit_160715.yml + ``` diff --git a/models/pvanet/example_train/solver.prototxt b/models/pvanet/example_train/solver.prototxt new file mode 100644 index 000000000..e4043a174 --- /dev/null +++ b/models/pvanet/example_train/solver.prototxt @@ -0,0 +1,22 @@ +train_net: "models/pvanet/example_train/train.prototxt" + +base_lr: 0.001 +lr_policy: "plateau" +gamma: 0.1 +stepsize: 50000 +display: 20 +average_loss: 100 +momentum: 0.9 +weight_decay: 0.0002 + +plateau_winsize: 50000 +plateau_winsize: 75000 +plateau_winsize: 100000 + + +# We disable standard caffe solver snapshotting and implement our own snapshot +# function +snapshot: 0 +# We still use the snapshot prefix, though +snapshot_prefix: "pvanet_frcnn" +iter_size: 2 diff --git a/models/pvanet/example_train/test.prototxt b/models/pvanet/example_train/test.prototxt new file mode 100644 index 000000000..357895873 --- /dev/null +++ b/models/pvanet/example_train/test.prototxt @@ -0,0 +1,6683 @@ +name: "PVANET" + +################################################################################ +## Input +################################################################################ + +input: "data" +input_shape { + dim: 1 + dim: 3 + dim: 640 + dim: 1056 +} + +input: "im_info" +input_shape { + dim: 1 + dim: 6 +} + +################################################################################ +## Convolution +################################################################################ + +layer { + name: "conv1_1/conv" + type: "Convolution" + bottom: "data" + top: "conv1_1/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 16 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 3 + pad_w: 3 + kernel_h: 7 + kernel_w: 7 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv1_1/bn" + type: "BatchNorm" + bottom: "conv1_1/conv" + top: "conv1_1/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv1_1/neg" + type: "Power" + bottom: "conv1_1/conv" + top: "conv1_1/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv1_1/concat" + type: "Concat" + bottom: "conv1_1/conv" + bottom: "conv1_1/neg" + top: "conv1_1" +} +layer { + name: "conv1_1/scale" + type: "Scale" + bottom: "conv1_1" + top: "conv1_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv1_1/relu" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv2_1/1/conv" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/2/bn" + type: "BatchNorm" + bottom: "conv2_1/1" + top: "conv2_1/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/2/bn_scale" + type: "Scale" + bottom: "conv2_1/2/pre" + top: "conv2_1/2/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/2/relu" + type: "ReLU" + bottom: "conv2_1/2/pre" + top: "conv2_1/2/pre" +} +layer { + name: "conv2_1/2/conv" + type: "Convolution" + bottom: "conv2_1/2/pre" + top: "conv2_1/2" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/3/bn" + type: "BatchNorm" + bottom: "conv2_1/2" + top: "conv2_1/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/3/neg" + type: "Power" + bottom: "conv2_1/3/pre" + top: "conv2_1/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_1/3/concat" + type: "Concat" + bottom: "conv2_1/3/pre" + bottom: "conv2_1/3/neg" + top: "conv2_1/3/preAct" +} +layer { + name: "conv2_1/3/scale" + type: "Scale" + bottom: "conv2_1/3/preAct" + top: "conv2_1/3/preAct" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/3/relu" + type: "ReLU" + bottom: "conv2_1/3/preAct" + top: "conv2_1/3/preAct" +} +layer { + name: "conv2_1/3/conv" + type: "Convolution" + bottom: "conv2_1/3/preAct" + top: "conv2_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/proj" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1" + type: "Eltwise" + bottom: "conv2_1/3" + bottom: "conv2_1/proj" + top: "conv2_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_2/1/bn" + type: "BatchNorm" + bottom: "conv2_1" + top: "conv2_2/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/1/bn_scale" + type: "Scale" + bottom: "conv2_2/1/pre" + top: "conv2_2/1/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/1/relu" + type: "ReLU" + bottom: "conv2_2/1/pre" + top: "conv2_2/1/pre" +} +layer { + name: "conv2_2/1/conv" + type: "Convolution" + bottom: "conv2_2/1/pre" + top: "conv2_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/2/bn" + type: "BatchNorm" + bottom: "conv2_2/1" + top: "conv2_2/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/2/bn_scale" + type: "Scale" + bottom: "conv2_2/2/pre" + top: "conv2_2/2/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/2/relu" + type: "ReLU" + bottom: "conv2_2/2/pre" + top: "conv2_2/2/pre" +} +layer { + name: "conv2_2/2/conv" + type: "Convolution" + bottom: "conv2_2/2/pre" + top: "conv2_2/2" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/3/bn" + type: "BatchNorm" + bottom: "conv2_2/2" + top: "conv2_2/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/3/neg" + type: "Power" + bottom: "conv2_2/3/pre" + top: "conv2_2/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_2/3/concat" + type: "Concat" + bottom: "conv2_2/3/pre" + bottom: "conv2_2/3/neg" + top: "conv2_2/3/preAct" +} +layer { + name: "conv2_2/3/scale" + type: "Scale" + bottom: "conv2_2/3/preAct" + top: "conv2_2/3/preAct" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/3/relu" + type: "ReLU" + bottom: "conv2_2/3/preAct" + top: "conv2_2/3/preAct" +} +layer { + name: "conv2_2/3/conv" + type: "Convolution" + bottom: "conv2_2/3/preAct" + top: "conv2_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/input" + type: "Power" + bottom: "conv2_1" + top: "conv2_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_2" + type: "Eltwise" + bottom: "conv2_2/3" + bottom: "conv2_2/input" + top: "conv2_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_3/1/bn" + type: "BatchNorm" + bottom: "conv2_2" + top: "conv2_3/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/1/bn_scale" + type: "Scale" + bottom: "conv2_3/1/pre" + top: "conv2_3/1/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/1/relu" + type: "ReLU" + bottom: "conv2_3/1/pre" + top: "conv2_3/1/pre" +} +layer { + name: "conv2_3/1/conv" + type: "Convolution" + bottom: "conv2_3/1/pre" + top: "conv2_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/2/bn" + type: "BatchNorm" + bottom: "conv2_3/1" + top: "conv2_3/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/2/bn_scale" + type: "Scale" + bottom: "conv2_3/2/pre" + top: "conv2_3/2/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/2/relu" + type: "ReLU" + bottom: "conv2_3/2/pre" + top: "conv2_3/2/pre" +} +layer { + name: "conv2_3/2/conv" + type: "Convolution" + bottom: "conv2_3/2/pre" + top: "conv2_3/2" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/3/bn" + type: "BatchNorm" + bottom: "conv2_3/2" + top: "conv2_3/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/3/neg" + type: "Power" + bottom: "conv2_3/3/pre" + top: "conv2_3/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_3/3/concat" + type: "Concat" + bottom: "conv2_3/3/pre" + bottom: "conv2_3/3/neg" + top: "conv2_3/3/preAct" +} +layer { + name: "conv2_3/3/scale" + type: "Scale" + bottom: "conv2_3/3/preAct" + top: "conv2_3/3/preAct" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/3/relu" + type: "ReLU" + bottom: "conv2_3/3/preAct" + top: "conv2_3/3/preAct" +} +layer { + name: "conv2_3/3/conv" + type: "Convolution" + bottom: "conv2_3/3/preAct" + top: "conv2_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/input" + type: "Power" + bottom: "conv2_2" + top: "conv2_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_3" + type: "Eltwise" + bottom: "conv2_3/3" + bottom: "conv2_3/input" + top: "conv2_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_1/1/bn" + type: "BatchNorm" + bottom: "conv2_3" + top: "conv3_1/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/1/bn_scale" + type: "Scale" + bottom: "conv3_1/1/pre" + top: "conv3_1/1/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/1/relu" + type: "ReLU" + bottom: "conv3_1/1/pre" + top: "conv3_1/1/pre" +} +layer { + name: "conv3_1/1/conv" + type: "Convolution" + bottom: "conv3_1/1/pre" + top: "conv3_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/2/bn" + type: "BatchNorm" + bottom: "conv3_1/1" + top: "conv3_1/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/2/bn_scale" + type: "Scale" + bottom: "conv3_1/2/pre" + top: "conv3_1/2/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/2/relu" + type: "ReLU" + bottom: "conv3_1/2/pre" + top: "conv3_1/2/pre" +} +layer { + name: "conv3_1/2/conv" + type: "Convolution" + bottom: "conv3_1/2/pre" + top: "conv3_1/2" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/3/bn" + type: "BatchNorm" + bottom: "conv3_1/2" + top: "conv3_1/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/3/neg" + type: "Power" + bottom: "conv3_1/3/pre" + top: "conv3_1/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_1/3/concat" + type: "Concat" + bottom: "conv3_1/3/pre" + bottom: "conv3_1/3/neg" + top: "conv3_1/3/preAct" +} +layer { + name: "conv3_1/3/scale" + type: "Scale" + bottom: "conv3_1/3/preAct" + top: "conv3_1/3/preAct" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/3/relu" + type: "ReLU" + bottom: "conv3_1/3/preAct" + top: "conv3_1/3/preAct" +} +layer { + name: "conv3_1/3/conv" + type: "Convolution" + bottom: "conv3_1/3/preAct" + top: "conv3_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/proj" + type: "Convolution" + bottom: "conv3_1/1/pre" + top: "conv3_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1" + type: "Eltwise" + bottom: "conv3_1/3" + bottom: "conv3_1/proj" + top: "conv3_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_2/1/bn" + type: "BatchNorm" + bottom: "conv3_1" + top: "conv3_2/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/1/bn_scale" + type: "Scale" + bottom: "conv3_2/1/pre" + top: "conv3_2/1/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/1/relu" + type: "ReLU" + bottom: "conv3_2/1/pre" + top: "conv3_2/1/pre" +} +layer { + name: "conv3_2/1/conv" + type: "Convolution" + bottom: "conv3_2/1/pre" + top: "conv3_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/2/bn" + type: "BatchNorm" + bottom: "conv3_2/1" + top: "conv3_2/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/2/bn_scale" + type: "Scale" + bottom: "conv3_2/2/pre" + top: "conv3_2/2/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/2/relu" + type: "ReLU" + bottom: "conv3_2/2/pre" + top: "conv3_2/2/pre" +} +layer { + name: "conv3_2/2/conv" + type: "Convolution" + bottom: "conv3_2/2/pre" + top: "conv3_2/2" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/3/bn" + type: "BatchNorm" + bottom: "conv3_2/2" + top: "conv3_2/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/3/neg" + type: "Power" + bottom: "conv3_2/3/pre" + top: "conv3_2/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_2/3/concat" + type: "Concat" + bottom: "conv3_2/3/pre" + bottom: "conv3_2/3/neg" + top: "conv3_2/3/preAct" +} +layer { + name: "conv3_2/3/scale" + type: "Scale" + bottom: "conv3_2/3/preAct" + top: "conv3_2/3/preAct" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/3/relu" + type: "ReLU" + bottom: "conv3_2/3/preAct" + top: "conv3_2/3/preAct" +} +layer { + name: "conv3_2/3/conv" + type: "Convolution" + bottom: "conv3_2/3/preAct" + top: "conv3_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/input" + type: "Power" + bottom: "conv3_1" + top: "conv3_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_2" + type: "Eltwise" + bottom: "conv3_2/3" + bottom: "conv3_2/input" + top: "conv3_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_3/1/bn" + type: "BatchNorm" + bottom: "conv3_2" + top: "conv3_3/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/1/bn_scale" + type: "Scale" + bottom: "conv3_3/1/pre" + top: "conv3_3/1/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/1/relu" + type: "ReLU" + bottom: "conv3_3/1/pre" + top: "conv3_3/1/pre" +} +layer { + name: "conv3_3/1/conv" + type: "Convolution" + bottom: "conv3_3/1/pre" + top: "conv3_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/2/bn" + type: "BatchNorm" + bottom: "conv3_3/1" + top: "conv3_3/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/2/bn_scale" + type: "Scale" + bottom: "conv3_3/2/pre" + top: "conv3_3/2/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/2/relu" + type: "ReLU" + bottom: "conv3_3/2/pre" + top: "conv3_3/2/pre" +} +layer { + name: "conv3_3/2/conv" + type: "Convolution" + bottom: "conv3_3/2/pre" + top: "conv3_3/2" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/3/bn" + type: "BatchNorm" + bottom: "conv3_3/2" + top: "conv3_3/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/3/neg" + type: "Power" + bottom: "conv3_3/3/pre" + top: "conv3_3/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_3/3/concat" + type: "Concat" + bottom: "conv3_3/3/pre" + bottom: "conv3_3/3/neg" + top: "conv3_3/3/preAct" +} +layer { + name: "conv3_3/3/scale" + type: "Scale" + bottom: "conv3_3/3/preAct" + top: "conv3_3/3/preAct" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/3/relu" + type: "ReLU" + bottom: "conv3_3/3/preAct" + top: "conv3_3/3/preAct" +} +layer { + name: "conv3_3/3/conv" + type: "Convolution" + bottom: "conv3_3/3/preAct" + top: "conv3_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/input" + type: "Power" + bottom: "conv3_2" + top: "conv3_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_3" + type: "Eltwise" + bottom: "conv3_3/3" + bottom: "conv3_3/input" + top: "conv3_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_4/1/bn" + type: "BatchNorm" + bottom: "conv3_3" + top: "conv3_4/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/1/bn_scale" + type: "Scale" + bottom: "conv3_4/1/pre" + top: "conv3_4/1/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/1/relu" + type: "ReLU" + bottom: "conv3_4/1/pre" + top: "conv3_4/1/pre" +} +layer { + name: "conv3_4/1/conv" + type: "Convolution" + bottom: "conv3_4/1/pre" + top: "conv3_4/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/2/bn" + type: "BatchNorm" + bottom: "conv3_4/1" + top: "conv3_4/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/2/bn_scale" + type: "Scale" + bottom: "conv3_4/2/pre" + top: "conv3_4/2/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/2/relu" + type: "ReLU" + bottom: "conv3_4/2/pre" + top: "conv3_4/2/pre" +} +layer { + name: "conv3_4/2/conv" + type: "Convolution" + bottom: "conv3_4/2/pre" + top: "conv3_4/2" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/3/bn" + type: "BatchNorm" + bottom: "conv3_4/2" + top: "conv3_4/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/3/neg" + type: "Power" + bottom: "conv3_4/3/pre" + top: "conv3_4/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_4/3/concat" + type: "Concat" + bottom: "conv3_4/3/pre" + bottom: "conv3_4/3/neg" + top: "conv3_4/3/preAct" +} +layer { + name: "conv3_4/3/scale" + type: "Scale" + bottom: "conv3_4/3/preAct" + top: "conv3_4/3/preAct" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/3/relu" + type: "ReLU" + bottom: "conv3_4/3/preAct" + top: "conv3_4/3/preAct" +} +layer { + name: "conv3_4/3/conv" + type: "Convolution" + bottom: "conv3_4/3/preAct" + top: "conv3_4/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/input" + type: "Power" + bottom: "conv3_3" + top: "conv3_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_4" + type: "Eltwise" + bottom: "conv3_4/3" + bottom: "conv3_4/input" + top: "conv3_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_1/incep/bn" + type: "BatchNorm" + bottom: "conv3_4" + top: "conv4_1/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/relu" + type: "ReLU" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/pre" +} +layer { + name: "conv4_1/incep/0/conv" + type: "Convolution" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/0/relu" + type: "ReLU" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/pool" + type: "Pooling" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv4_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv4_1/incep/pool" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep" + type: "Concat" + bottom: "conv4_1/incep/0" + bottom: "conv4_1/incep/1_0" + bottom: "conv4_1/incep/2_1" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep" +} +layer { + name: "conv4_1/out/conv" + type: "Convolution" + bottom: "conv4_1/incep" + top: "conv4_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/proj" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1" + type: "Eltwise" + bottom: "conv4_1/out" + bottom: "conv4_1/proj" + top: "conv4_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_2/incep/bn" + type: "BatchNorm" + bottom: "conv4_1" + top: "conv4_2/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/relu" + type: "ReLU" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/pre" +} +layer { + name: "conv4_2/incep/0/conv" + type: "Convolution" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/0/relu" + type: "ReLU" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep" + type: "Concat" + bottom: "conv4_2/incep/0" + bottom: "conv4_2/incep/1_0" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep" +} +layer { + name: "conv4_2/out/conv" + type: "Convolution" + bottom: "conv4_2/incep" + top: "conv4_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/input" + type: "Power" + bottom: "conv4_1" + top: "conv4_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_2" + type: "Eltwise" + bottom: "conv4_2/out" + bottom: "conv4_2/input" + top: "conv4_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_3/incep/bn" + type: "BatchNorm" + bottom: "conv4_2" + top: "conv4_3/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/relu" + type: "ReLU" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/pre" +} +layer { + name: "conv4_3/incep/0/conv" + type: "Convolution" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/0/relu" + type: "ReLU" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep" + type: "Concat" + bottom: "conv4_3/incep/0" + bottom: "conv4_3/incep/1_0" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep" +} +layer { + name: "conv4_3/out/conv" + type: "Convolution" + bottom: "conv4_3/incep" + top: "conv4_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/input" + type: "Power" + bottom: "conv4_2" + top: "conv4_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_3" + type: "Eltwise" + bottom: "conv4_3/out" + bottom: "conv4_3/input" + top: "conv4_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_4/incep/bn" + type: "BatchNorm" + bottom: "conv4_3" + top: "conv4_4/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/relu" + type: "ReLU" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/pre" +} +layer { + name: "conv4_4/incep/0/conv" + type: "Convolution" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/0/relu" + type: "ReLU" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep" + type: "Concat" + bottom: "conv4_4/incep/0" + bottom: "conv4_4/incep/1_0" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep" +} +layer { + name: "conv4_4/out/conv" + type: "Convolution" + bottom: "conv4_4/incep" + top: "conv4_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/input" + type: "Power" + bottom: "conv4_3" + top: "conv4_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_4" + type: "Eltwise" + bottom: "conv4_4/out" + bottom: "conv4_4/input" + top: "conv4_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_1/incep/bn" + type: "BatchNorm" + bottom: "conv4_4" + top: "conv5_1/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/relu" + type: "ReLU" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/pre" +} +layer { + name: "conv5_1/incep/0/conv" + type: "Convolution" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/0/relu" + type: "ReLU" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/pool" + type: "Pooling" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv5_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv5_1/incep/pool" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep" + type: "Concat" + bottom: "conv5_1/incep/0" + bottom: "conv5_1/incep/1_0" + bottom: "conv5_1/incep/2_1" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep" +} +layer { + name: "conv5_1/out/conv" + type: "Convolution" + bottom: "conv5_1/incep" + top: "conv5_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/proj" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1" + type: "Eltwise" + bottom: "conv5_1/out" + bottom: "conv5_1/proj" + top: "conv5_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_2/incep/bn" + type: "BatchNorm" + bottom: "conv5_1" + top: "conv5_2/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/relu" + type: "ReLU" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/pre" +} +layer { + name: "conv5_2/incep/0/conv" + type: "Convolution" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/0/relu" + type: "ReLU" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep" + type: "Concat" + bottom: "conv5_2/incep/0" + bottom: "conv5_2/incep/1_0" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep" +} +layer { + name: "conv5_2/out/conv" + type: "Convolution" + bottom: "conv5_2/incep" + top: "conv5_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/input" + type: "Power" + bottom: "conv5_1" + top: "conv5_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_2" + type: "Eltwise" + bottom: "conv5_2/out" + bottom: "conv5_2/input" + top: "conv5_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_3/incep/bn" + type: "BatchNorm" + bottom: "conv5_2" + top: "conv5_3/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/relu" + type: "ReLU" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/pre" +} +layer { + name: "conv5_3/incep/0/conv" + type: "Convolution" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/0/relu" + type: "ReLU" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep" + type: "Concat" + bottom: "conv5_3/incep/0" + bottom: "conv5_3/incep/1_0" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep" +} +layer { + name: "conv5_3/out/conv" + type: "Convolution" + bottom: "conv5_3/incep" + top: "conv5_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/input" + type: "Power" + bottom: "conv5_2" + top: "conv5_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_3" + type: "Eltwise" + bottom: "conv5_3/out" + bottom: "conv5_3/input" + top: "conv5_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/incep/bn" + type: "BatchNorm" + bottom: "conv5_3" + top: "conv5_4/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/relu" + type: "ReLU" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/pre" +} +layer { + name: "conv5_4/incep/0/conv" + type: "Convolution" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/0/relu" + type: "ReLU" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep" + type: "Concat" + bottom: "conv5_4/incep/0" + bottom: "conv5_4/incep/1_0" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep" +} +layer { + name: "conv5_4/out/conv" + type: "Convolution" + bottom: "conv5_4/incep" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/out/bn" + type: "BatchNorm" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/out/bn_scale" + type: "Scale" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/input" + type: "Power" + bottom: "conv5_3" + top: "conv5_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_4" + type: "Eltwise" + bottom: "conv5_4/out" + bottom: "conv5_4/input" + top: "conv5_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/last_bn" + type: "BatchNorm" + bottom: "conv5_4" + top: "conv5_4" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/last_bn_scale" + type: "Scale" + bottom: "conv5_4" + top: "conv5_4" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/last_relu" + type: "ReLU" + bottom: "conv5_4" + top: "conv5_4" +} + +### hyper feature ### +layer { + name: "downsample" + type: "Pooling" + bottom: "conv3_4" + top: "downsample" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } +} +layer { + name: "upsample" + type: "Deconvolution" + bottom: "conv5_4" + top: "upsample" + param { lr_mult: 0 decay_mult: 0} + convolution_param { + num_output: 384 kernel_size: 4 pad: 1 stride: 2 group: 384 + weight_filler: {type: "bilinear" } + bias_term: false + } +} +layer { + name: "concat" + bottom: "downsample" + bottom: "conv4_4" + bottom: "upsample" + top: "concat" + type: "Concat" + concat_param { axis: 1 } +} + +layer { + name: "convf_rpn" + type: "Convolution" + bottom: "concat" + top: "convf_rpn" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 128 kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "reluf_rpn" + type: "ReLU" + bottom: "convf_rpn" + top: "convf_rpn" +} + + +layer { + name: "convf_2" + type: "Convolution" + bottom: "concat" + top: "convf_2" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "reluf_2" + type: "ReLU" + bottom: "convf_2" + top: "convf_2" +} + +layer { + name: "concat_convf" + bottom: "convf_rpn" + bottom: "convf_2" + top: "convf" + type: "Concat" + concat_param { axis: 1 } +} + +################################################################################ +## RPN +################################################################################ + +### RPN conv ### +layer { + name: "rpn_conv1" + type: "Convolution" + bottom: "convf_rpn" + top: "rpn_conv1" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu1" + type: "ReLU" + bottom: "rpn_conv1" + top: "rpn_conv1" +} +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 84 # 2(bg/fg) * 42(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 168 # 4 * 42(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} + +################################################################################ +## Proposal +################################################################################ +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 84 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + bottom: 'gt_boxes' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + include { phase: TRAIN } + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer2' + param_str: "{'feat_stride': 16, 'num_classes': 21, 'ratios': [0.333, 0.5, 0.667, 1, 1.5, 2, 3], 'scales': [2, 3, 5, 9, 16, 32]}" + } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rois' + top: 'scores' + include { phase: TEST } + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "{'feat_stride': 16, 'ratios': [0.333, 0.5, 0.667, 1, 1.5, 2, 3], 'scales': [2, 3, 5, 9, 16, 32]}" + } +} + +################################################################################ +## RCNN +################################################################################ +layer { + name: "roi_pool_conv5" + type: "ROIPooling" + bottom: "convf" + bottom: "rois" + top: "roi_pool_conv5" + roi_pooling_param { + pooled_w: 6 + pooled_h: 6 + spatial_scale: 0.0625 # 1/16 + } +} +layer { + name: "fc6" + type: "InnerProduct" + bottom: "roi_pool_conv5" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc6/bn" + type: "BatchNorm" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc6/scale" + type: "Scale" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc6/dropout" + type: "Dropout" + bottom: "fc6" + top: "fc6" + dropout_param { + dropout_ratio: 0.25 + } +} +layer { + name: "fc6/relu" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "fc7" + type: "InnerProduct" + bottom: "fc6" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc7/bn" + type: "BatchNorm" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc7/scale" + type: "Scale" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc7/dropout" + type: "Dropout" + bottom: "fc7" + top: "fc7" + dropout_param { + dropout_ratio: 0.25 + } +} +layer { + name: "fc7/relu" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} +layer { + name: "cls_score" + type: "InnerProduct" + bottom: "fc7" + top: "cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + inner_product_param { + num_output: 21 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "bbox_pred" + type: "InnerProduct" + bottom: "fc7" + top: "bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + inner_product_param { + num_output: 84 + weight_filler { type: "gaussian" std: 0.001 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob" + include { phase: TEST } + loss_param { + ignore_label: -1 + normalize: true + } +} diff --git a/models/pvanet/example_train/train.prototxt b/models/pvanet/example_train/train.prototxt new file mode 100644 index 000000000..8a751f1da --- /dev/null +++ b/models/pvanet/example_train/train.prototxt @@ -0,0 +1,6764 @@ +name: "PVANET" + +################################################################################ +## Input +################################################################################ + +layer { + name: 'input-data' + type: 'Python' + top: 'data' + top: 'im_info' + top: 'gt_boxes' + include { phase: TRAIN } + python_param { + module: 'roi_data_layer.layer' + layer: 'RoIDataLayer' + param_str: "'num_classes': 21" + } +} + +layer { + name: "input-data" + type: "DummyData" + top: "data" + top: "im_info" + include { phase: TEST } + dummy_data_param { + shape { dim: 1 dim: 3 dim: 224 dim: 224 } + shape { dim: 1 dim: 3 } + } +} + +################################################################################ +## Convolution +################################################################################ + +layer { + name: "conv1_1/conv" + type: "Convolution" + bottom: "data" + top: "conv1_1/conv" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 16 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 3 + pad_w: 3 + kernel_h: 7 + kernel_w: 7 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv1_1/bn" + type: "BatchNorm" + bottom: "conv1_1/conv" + top: "conv1_1/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv1_1/neg" + type: "Power" + bottom: "conv1_1/conv" + top: "conv1_1/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv1_1/concat" + type: "Concat" + bottom: "conv1_1/conv" + bottom: "conv1_1/neg" + top: "conv1_1" +} +layer { + name: "conv1_1/scale" + type: "Scale" + bottom: "conv1_1" + top: "conv1_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv1_1/relu" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv2_1/1/conv" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/2/bn" + type: "BatchNorm" + bottom: "conv2_1/1" + top: "conv2_1/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/2/bn_scale" + type: "Scale" + bottom: "conv2_1/2/pre" + top: "conv2_1/2/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/2/relu" + type: "ReLU" + bottom: "conv2_1/2/pre" + top: "conv2_1/2/pre" +} +layer { + name: "conv2_1/2/conv" + type: "Convolution" + bottom: "conv2_1/2/pre" + top: "conv2_1/2" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/3/bn" + type: "BatchNorm" + bottom: "conv2_1/2" + top: "conv2_1/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/3/neg" + type: "Power" + bottom: "conv2_1/3/pre" + top: "conv2_1/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_1/3/concat" + type: "Concat" + bottom: "conv2_1/3/pre" + bottom: "conv2_1/3/neg" + top: "conv2_1/3/preAct" +} +layer { + name: "conv2_1/3/scale" + type: "Scale" + bottom: "conv2_1/3/preAct" + top: "conv2_1/3/preAct" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/3/relu" + type: "ReLU" + bottom: "conv2_1/3/preAct" + top: "conv2_1/3/preAct" +} +layer { + name: "conv2_1/3/conv" + type: "Convolution" + bottom: "conv2_1/3/preAct" + top: "conv2_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/proj" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1" + type: "Eltwise" + bottom: "conv2_1/3" + bottom: "conv2_1/proj" + top: "conv2_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_2/1/bn" + type: "BatchNorm" + bottom: "conv2_1" + top: "conv2_2/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/1/bn_scale" + type: "Scale" + bottom: "conv2_2/1/pre" + top: "conv2_2/1/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/1/relu" + type: "ReLU" + bottom: "conv2_2/1/pre" + top: "conv2_2/1/pre" +} +layer { + name: "conv2_2/1/conv" + type: "Convolution" + bottom: "conv2_2/1/pre" + top: "conv2_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/2/bn" + type: "BatchNorm" + bottom: "conv2_2/1" + top: "conv2_2/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/2/bn_scale" + type: "Scale" + bottom: "conv2_2/2/pre" + top: "conv2_2/2/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/2/relu" + type: "ReLU" + bottom: "conv2_2/2/pre" + top: "conv2_2/2/pre" +} +layer { + name: "conv2_2/2/conv" + type: "Convolution" + bottom: "conv2_2/2/pre" + top: "conv2_2/2" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/3/bn" + type: "BatchNorm" + bottom: "conv2_2/2" + top: "conv2_2/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/3/neg" + type: "Power" + bottom: "conv2_2/3/pre" + top: "conv2_2/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_2/3/concat" + type: "Concat" + bottom: "conv2_2/3/pre" + bottom: "conv2_2/3/neg" + top: "conv2_2/3/preAct" +} +layer { + name: "conv2_2/3/scale" + type: "Scale" + bottom: "conv2_2/3/preAct" + top: "conv2_2/3/preAct" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/3/relu" + type: "ReLU" + bottom: "conv2_2/3/preAct" + top: "conv2_2/3/preAct" +} +layer { + name: "conv2_2/3/conv" + type: "Convolution" + bottom: "conv2_2/3/preAct" + top: "conv2_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/input" + type: "Power" + bottom: "conv2_1" + top: "conv2_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_2" + type: "Eltwise" + bottom: "conv2_2/3" + bottom: "conv2_2/input" + top: "conv2_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_3/1/bn" + type: "BatchNorm" + bottom: "conv2_2" + top: "conv2_3/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/1/bn_scale" + type: "Scale" + bottom: "conv2_3/1/pre" + top: "conv2_3/1/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/1/relu" + type: "ReLU" + bottom: "conv2_3/1/pre" + top: "conv2_3/1/pre" +} +layer { + name: "conv2_3/1/conv" + type: "Convolution" + bottom: "conv2_3/1/pre" + top: "conv2_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/2/bn" + type: "BatchNorm" + bottom: "conv2_3/1" + top: "conv2_3/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/2/bn_scale" + type: "Scale" + bottom: "conv2_3/2/pre" + top: "conv2_3/2/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/2/relu" + type: "ReLU" + bottom: "conv2_3/2/pre" + top: "conv2_3/2/pre" +} +layer { + name: "conv2_3/2/conv" + type: "Convolution" + bottom: "conv2_3/2/pre" + top: "conv2_3/2" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/3/bn" + type: "BatchNorm" + bottom: "conv2_3/2" + top: "conv2_3/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/3/neg" + type: "Power" + bottom: "conv2_3/3/pre" + top: "conv2_3/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_3/3/concat" + type: "Concat" + bottom: "conv2_3/3/pre" + bottom: "conv2_3/3/neg" + top: "conv2_3/3/preAct" +} +layer { + name: "conv2_3/3/scale" + type: "Scale" + bottom: "conv2_3/3/preAct" + top: "conv2_3/3/preAct" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/3/relu" + type: "ReLU" + bottom: "conv2_3/3/preAct" + top: "conv2_3/3/preAct" +} +layer { + name: "conv2_3/3/conv" + type: "Convolution" + bottom: "conv2_3/3/preAct" + top: "conv2_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/input" + type: "Power" + bottom: "conv2_2" + top: "conv2_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_3" + type: "Eltwise" + bottom: "conv2_3/3" + bottom: "conv2_3/input" + top: "conv2_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_1/1/bn" + type: "BatchNorm" + bottom: "conv2_3" + top: "conv3_1/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/1/bn_scale" + type: "Scale" + bottom: "conv3_1/1/pre" + top: "conv3_1/1/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/1/relu" + type: "ReLU" + bottom: "conv3_1/1/pre" + top: "conv3_1/1/pre" +} +layer { + name: "conv3_1/1/conv" + type: "Convolution" + bottom: "conv3_1/1/pre" + top: "conv3_1/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/2/bn" + type: "BatchNorm" + bottom: "conv3_1/1" + top: "conv3_1/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/2/bn_scale" + type: "Scale" + bottom: "conv3_1/2/pre" + top: "conv3_1/2/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/2/relu" + type: "ReLU" + bottom: "conv3_1/2/pre" + top: "conv3_1/2/pre" +} +layer { + name: "conv3_1/2/conv" + type: "Convolution" + bottom: "conv3_1/2/pre" + top: "conv3_1/2" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/3/bn" + type: "BatchNorm" + bottom: "conv3_1/2" + top: "conv3_1/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/3/neg" + type: "Power" + bottom: "conv3_1/3/pre" + top: "conv3_1/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_1/3/concat" + type: "Concat" + bottom: "conv3_1/3/pre" + bottom: "conv3_1/3/neg" + top: "conv3_1/3/preAct" +} +layer { + name: "conv3_1/3/scale" + type: "Scale" + bottom: "conv3_1/3/preAct" + top: "conv3_1/3/preAct" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/3/relu" + type: "ReLU" + bottom: "conv3_1/3/preAct" + top: "conv3_1/3/preAct" +} +layer { + name: "conv3_1/3/conv" + type: "Convolution" + bottom: "conv3_1/3/preAct" + top: "conv3_1/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/proj" + type: "Convolution" + bottom: "conv3_1/1/pre" + top: "conv3_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1" + type: "Eltwise" + bottom: "conv3_1/3" + bottom: "conv3_1/proj" + top: "conv3_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_2/1/bn" + type: "BatchNorm" + bottom: "conv3_1" + top: "conv3_2/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/1/bn_scale" + type: "Scale" + bottom: "conv3_2/1/pre" + top: "conv3_2/1/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/1/relu" + type: "ReLU" + bottom: "conv3_2/1/pre" + top: "conv3_2/1/pre" +} +layer { + name: "conv3_2/1/conv" + type: "Convolution" + bottom: "conv3_2/1/pre" + top: "conv3_2/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/2/bn" + type: "BatchNorm" + bottom: "conv3_2/1" + top: "conv3_2/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/2/bn_scale" + type: "Scale" + bottom: "conv3_2/2/pre" + top: "conv3_2/2/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/2/relu" + type: "ReLU" + bottom: "conv3_2/2/pre" + top: "conv3_2/2/pre" +} +layer { + name: "conv3_2/2/conv" + type: "Convolution" + bottom: "conv3_2/2/pre" + top: "conv3_2/2" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/3/bn" + type: "BatchNorm" + bottom: "conv3_2/2" + top: "conv3_2/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/3/neg" + type: "Power" + bottom: "conv3_2/3/pre" + top: "conv3_2/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_2/3/concat" + type: "Concat" + bottom: "conv3_2/3/pre" + bottom: "conv3_2/3/neg" + top: "conv3_2/3/preAct" +} +layer { + name: "conv3_2/3/scale" + type: "Scale" + bottom: "conv3_2/3/preAct" + top: "conv3_2/3/preAct" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/3/relu" + type: "ReLU" + bottom: "conv3_2/3/preAct" + top: "conv3_2/3/preAct" +} +layer { + name: "conv3_2/3/conv" + type: "Convolution" + bottom: "conv3_2/3/preAct" + top: "conv3_2/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/input" + type: "Power" + bottom: "conv3_1" + top: "conv3_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_2" + type: "Eltwise" + bottom: "conv3_2/3" + bottom: "conv3_2/input" + top: "conv3_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_3/1/bn" + type: "BatchNorm" + bottom: "conv3_2" + top: "conv3_3/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/1/bn_scale" + type: "Scale" + bottom: "conv3_3/1/pre" + top: "conv3_3/1/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/1/relu" + type: "ReLU" + bottom: "conv3_3/1/pre" + top: "conv3_3/1/pre" +} +layer { + name: "conv3_3/1/conv" + type: "Convolution" + bottom: "conv3_3/1/pre" + top: "conv3_3/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/2/bn" + type: "BatchNorm" + bottom: "conv3_3/1" + top: "conv3_3/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/2/bn_scale" + type: "Scale" + bottom: "conv3_3/2/pre" + top: "conv3_3/2/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/2/relu" + type: "ReLU" + bottom: "conv3_3/2/pre" + top: "conv3_3/2/pre" +} +layer { + name: "conv3_3/2/conv" + type: "Convolution" + bottom: "conv3_3/2/pre" + top: "conv3_3/2" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/3/bn" + type: "BatchNorm" + bottom: "conv3_3/2" + top: "conv3_3/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/3/neg" + type: "Power" + bottom: "conv3_3/3/pre" + top: "conv3_3/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_3/3/concat" + type: "Concat" + bottom: "conv3_3/3/pre" + bottom: "conv3_3/3/neg" + top: "conv3_3/3/preAct" +} +layer { + name: "conv3_3/3/scale" + type: "Scale" + bottom: "conv3_3/3/preAct" + top: "conv3_3/3/preAct" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/3/relu" + type: "ReLU" + bottom: "conv3_3/3/preAct" + top: "conv3_3/3/preAct" +} +layer { + name: "conv3_3/3/conv" + type: "Convolution" + bottom: "conv3_3/3/preAct" + top: "conv3_3/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/input" + type: "Power" + bottom: "conv3_2" + top: "conv3_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_3" + type: "Eltwise" + bottom: "conv3_3/3" + bottom: "conv3_3/input" + top: "conv3_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_4/1/bn" + type: "BatchNorm" + bottom: "conv3_3" + top: "conv3_4/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/1/bn_scale" + type: "Scale" + bottom: "conv3_4/1/pre" + top: "conv3_4/1/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/1/relu" + type: "ReLU" + bottom: "conv3_4/1/pre" + top: "conv3_4/1/pre" +} +layer { + name: "conv3_4/1/conv" + type: "Convolution" + bottom: "conv3_4/1/pre" + top: "conv3_4/1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/2/bn" + type: "BatchNorm" + bottom: "conv3_4/1" + top: "conv3_4/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/2/bn_scale" + type: "Scale" + bottom: "conv3_4/2/pre" + top: "conv3_4/2/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/2/relu" + type: "ReLU" + bottom: "conv3_4/2/pre" + top: "conv3_4/2/pre" +} +layer { + name: "conv3_4/2/conv" + type: "Convolution" + bottom: "conv3_4/2/pre" + top: "conv3_4/2" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/3/bn" + type: "BatchNorm" + bottom: "conv3_4/2" + top: "conv3_4/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/3/neg" + type: "Power" + bottom: "conv3_4/3/pre" + top: "conv3_4/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_4/3/concat" + type: "Concat" + bottom: "conv3_4/3/pre" + bottom: "conv3_4/3/neg" + top: "conv3_4/3/preAct" +} +layer { + name: "conv3_4/3/scale" + type: "Scale" + bottom: "conv3_4/3/preAct" + top: "conv3_4/3/preAct" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/3/relu" + type: "ReLU" + bottom: "conv3_4/3/preAct" + top: "conv3_4/3/preAct" +} +layer { + name: "conv3_4/3/conv" + type: "Convolution" + bottom: "conv3_4/3/preAct" + top: "conv3_4/3" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/input" + type: "Power" + bottom: "conv3_3" + top: "conv3_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_4" + type: "Eltwise" + bottom: "conv3_4/3" + bottom: "conv3_4/input" + top: "conv3_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_1/incep/bn" + type: "BatchNorm" + bottom: "conv3_4" + top: "conv4_1/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/relu" + type: "ReLU" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/pre" +} +layer { + name: "conv4_1/incep/0/conv" + type: "Convolution" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/0/relu" + type: "ReLU" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/pool" + type: "Pooling" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv4_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv4_1/incep/pool" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep" + type: "Concat" + bottom: "conv4_1/incep/0" + bottom: "conv4_1/incep/1_0" + bottom: "conv4_1/incep/2_1" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep" +} +layer { + name: "conv4_1/out/conv" + type: "Convolution" + bottom: "conv4_1/incep" + top: "conv4_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/proj" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1" + type: "Eltwise" + bottom: "conv4_1/out" + bottom: "conv4_1/proj" + top: "conv4_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_2/incep/bn" + type: "BatchNorm" + bottom: "conv4_1" + top: "conv4_2/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/relu" + type: "ReLU" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/pre" +} +layer { + name: "conv4_2/incep/0/conv" + type: "Convolution" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/0/relu" + type: "ReLU" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep" + type: "Concat" + bottom: "conv4_2/incep/0" + bottom: "conv4_2/incep/1_0" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep" +} +layer { + name: "conv4_2/out/conv" + type: "Convolution" + bottom: "conv4_2/incep" + top: "conv4_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/input" + type: "Power" + bottom: "conv4_1" + top: "conv4_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_2" + type: "Eltwise" + bottom: "conv4_2/out" + bottom: "conv4_2/input" + top: "conv4_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_3/incep/bn" + type: "BatchNorm" + bottom: "conv4_2" + top: "conv4_3/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/relu" + type: "ReLU" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/pre" +} +layer { + name: "conv4_3/incep/0/conv" + type: "Convolution" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/0/relu" + type: "ReLU" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep" + type: "Concat" + bottom: "conv4_3/incep/0" + bottom: "conv4_3/incep/1_0" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep" +} +layer { + name: "conv4_3/out/conv" + type: "Convolution" + bottom: "conv4_3/incep" + top: "conv4_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/input" + type: "Power" + bottom: "conv4_2" + top: "conv4_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_3" + type: "Eltwise" + bottom: "conv4_3/out" + bottom: "conv4_3/input" + top: "conv4_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_4/incep/bn" + type: "BatchNorm" + bottom: "conv4_3" + top: "conv4_4/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/relu" + type: "ReLU" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/pre" +} +layer { + name: "conv4_4/incep/0/conv" + type: "Convolution" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/0/relu" + type: "ReLU" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep" + type: "Concat" + bottom: "conv4_4/incep/0" + bottom: "conv4_4/incep/1_0" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep" +} +layer { + name: "conv4_4/out/conv" + type: "Convolution" + bottom: "conv4_4/incep" + top: "conv4_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/input" + type: "Power" + bottom: "conv4_3" + top: "conv4_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_4" + type: "Eltwise" + bottom: "conv4_4/out" + bottom: "conv4_4/input" + top: "conv4_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_1/incep/bn" + type: "BatchNorm" + bottom: "conv4_4" + top: "conv5_1/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/relu" + type: "ReLU" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/pre" +} +layer { + name: "conv5_1/incep/0/conv" + type: "Convolution" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/0/relu" + type: "ReLU" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/pool" + type: "Pooling" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv5_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv5_1/incep/pool" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep" + type: "Concat" + bottom: "conv5_1/incep/0" + bottom: "conv5_1/incep/1_0" + bottom: "conv5_1/incep/2_1" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep" +} +layer { + name: "conv5_1/out/conv" + type: "Convolution" + bottom: "conv5_1/incep" + top: "conv5_1/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/proj" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/proj" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1" + type: "Eltwise" + bottom: "conv5_1/out" + bottom: "conv5_1/proj" + top: "conv5_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_2/incep/bn" + type: "BatchNorm" + bottom: "conv5_1" + top: "conv5_2/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/relu" + type: "ReLU" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/pre" +} +layer { + name: "conv5_2/incep/0/conv" + type: "Convolution" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/0/relu" + type: "ReLU" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep" + type: "Concat" + bottom: "conv5_2/incep/0" + bottom: "conv5_2/incep/1_0" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep" +} +layer { + name: "conv5_2/out/conv" + type: "Convolution" + bottom: "conv5_2/incep" + top: "conv5_2/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/input" + type: "Power" + bottom: "conv5_1" + top: "conv5_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_2" + type: "Eltwise" + bottom: "conv5_2/out" + bottom: "conv5_2/input" + top: "conv5_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_3/incep/bn" + type: "BatchNorm" + bottom: "conv5_2" + top: "conv5_3/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/relu" + type: "ReLU" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/pre" +} +layer { + name: "conv5_3/incep/0/conv" + type: "Convolution" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/0/relu" + type: "ReLU" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep" + type: "Concat" + bottom: "conv5_3/incep/0" + bottom: "conv5_3/incep/1_0" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep" +} +layer { + name: "conv5_3/out/conv" + type: "Convolution" + bottom: "conv5_3/incep" + top: "conv5_3/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + param { + lr_mult: 0.2 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/input" + type: "Power" + bottom: "conv5_2" + top: "conv5_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_3" + type: "Eltwise" + bottom: "conv5_3/out" + bottom: "conv5_3/input" + top: "conv5_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/incep/bn" + type: "BatchNorm" + bottom: "conv5_3" + top: "conv5_4/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/pre" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/relu" + type: "ReLU" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/pre" +} +layer { + name: "conv5_4/incep/0/conv" + type: "Convolution" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/0/relu" + type: "ReLU" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep" + type: "Concat" + bottom: "conv5_4/incep/0" + bottom: "conv5_4/incep/1_0" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep" +} +layer { + name: "conv5_4/out/conv" + type: "Convolution" + bottom: "conv5_4/incep" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0.1 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/out/bn" + type: "BatchNorm" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/out/bn_scale" + type: "Scale" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/input" + type: "Power" + bottom: "conv5_3" + top: "conv5_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_4" + type: "Eltwise" + bottom: "conv5_4/out" + bottom: "conv5_4/input" + top: "conv5_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/last_bn" + type: "BatchNorm" + bottom: "conv5_4" + top: "conv5_4" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/last_bn_scale" + type: "Scale" + bottom: "conv5_4" + top: "conv5_4" + param { + lr_mult: 0.1 + decay_mult: 0 + } + param { + lr_mult: 0.1 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/last_relu" + type: "ReLU" + bottom: "conv5_4" + top: "conv5_4" +} + +### hyper feature ### +layer { + name: "downsample" + type: "Pooling" + bottom: "conv3_4" + top: "downsample" + pooling_param { kernel_size: 3 stride: 2 pad: 0 pool: MAX } +} +layer { + name: "upsample" + type: "Deconvolution" + bottom: "conv5_4" + top: "upsample" + param { lr_mult: 0 decay_mult: 0} + convolution_param { + num_output: 384 kernel_size: 4 pad: 1 stride: 2 group: 384 + weight_filler: {type: "bilinear" } + bias_term: false + } +} +layer { + name: "concat" + bottom: "downsample" + bottom: "conv4_4" + bottom: "upsample" + top: "concat" + type: "Concat" + concat_param { axis: 1 } +} + +layer { + name: "convf_rpn" + type: "Convolution" + bottom: "concat" + top: "convf_rpn" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 128 kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "reluf_rpn" + type: "ReLU" + bottom: "convf_rpn" + top: "convf_rpn" +} + + +layer { + name: "convf_2" + type: "Convolution" + bottom: "concat" + top: "convf_2" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "xavier" std: 0.1 } + bias_filler { type: "constant" value: 0.1 } + } +} +layer { + name: "reluf_2" + type: "ReLU" + bottom: "convf_2" + top: "convf_2" +} + +layer { + name: "concat_convf" + bottom: "convf_rpn" + bottom: "convf_2" + top: "convf" + type: "Concat" + concat_param { axis: 1 } +} + +################################################################################ +## RPN +################################################################################ + +### RPN conv ### +layer { + name: "rpn_conv1" + type: "Convolution" + bottom: "convf_rpn" + top: "rpn_conv1" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 384 kernel_size: 3 pad: 1 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_relu1" + type: "ReLU" + bottom: "rpn_conv1" + top: "rpn_conv1" +} +layer { + name: "rpn_cls_score" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_cls_score" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 84 # 2(bg/fg) * 42(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "rpn_bbox_pred" + type: "Convolution" + bottom: "rpn_conv1" + top: "rpn_bbox_pred" + param { lr_mult: 1.0 decay_mult: 1.0 } + param { lr_mult: 2.0 decay_mult: 0 } + convolution_param { + num_output: 168 # 4 * 42(anchors) + kernel_size: 1 pad: 0 stride: 1 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + bottom: "rpn_cls_score" + top: "rpn_cls_score_reshape" + name: "rpn_cls_score_reshape" + type: "Reshape" + reshape_param { shape { dim: 0 dim: 2 dim: -1 dim: 0 } } +} +layer { + name: 'rpn-data' + type: 'Python' + bottom: 'rpn_cls_score' + bottom: 'gt_boxes' + bottom: 'im_info' + bottom: 'data' + top: 'rpn_labels' + top: 'rpn_bbox_targets' + top: 'rpn_bbox_inside_weights' + top: 'rpn_bbox_outside_weights' + include { phase: TRAIN } + python_param { + module: 'rpn.anchor_target_layer' + layer: 'AnchorTargetLayer' + param_str: "{'feat_stride': 16, 'ratios': [0.333, 0.5, 0.667, 1, 1.5, 2, 3], 'scales': [2, 3, 5, 9, 16, 32]}" + } +} +layer { + name: "rpn_loss_cls" + type: "SoftmaxWithLoss" + bottom: "rpn_cls_score_reshape" + bottom: "rpn_labels" + propagate_down: 1 + propagate_down: 0 + top: "rpn_loss_cls" + include { phase: TRAIN } + loss_weight: 1 + loss_param { ignore_label: -1 normalize: true } +} +layer { + name: "rpn_loss_bbox" + type: "SmoothL1Loss" + bottom: "rpn_bbox_pred" + bottom: "rpn_bbox_targets" + bottom: "rpn_bbox_inside_weights" + bottom: "rpn_bbox_outside_weights" + top: "rpn_loss_bbox" + include { phase: TRAIN } + loss_weight: 1 + smooth_l1_loss_param { sigma: 3.0 } +} + +################################################################################ +## Proposal +################################################################################ +layer { + name: "rpn_cls_prob" + type: "Softmax" + bottom: "rpn_cls_score_reshape" + top: "rpn_cls_prob" +} +layer { + name: 'rpn_cls_prob_reshape' + type: 'Reshape' + bottom: 'rpn_cls_prob' + top: 'rpn_cls_prob_reshape' + reshape_param { shape { dim: 0 dim: 84 dim: -1 dim: 0 } } +} +layer { + name: 'proposal' + type: 'Python' + bottom: 'rpn_cls_prob_reshape' + bottom: 'rpn_bbox_pred' + bottom: 'im_info' + top: 'rpn_rois' + top: 'rpn_scores' + include { phase: TRAIN } + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "{'feat_stride': 16, 'ratios': [0.333, 0.5, 0.667, 1, 1.5, 2, 3], 'scales': [2, 3, 5, 9, 16, 32]}" + } +} +layer { + name: 'mute_rpn_scores' + bottom: 'rpn_scores' + type: 'Silence' + include { phase: TRAIN } +} +layer { + name: 'roi-data' + type: 'Python' + bottom: 'rpn_rois' + bottom: 'gt_boxes' + top: 'rois' + top: 'labels' + top: 'bbox_targets' + top: 'bbox_inside_weights' + top: 'bbox_outside_weights' + include { phase: TRAIN } + python_param { + module: 'rpn.proposal_target_layer' + layer: 'ProposalTargetLayer' + param_str: "'num_classes': 21" + } +} + +################################################################################ +## RCNN +################################################################################ +layer { + name: "roi_pool_conv5" + type: "ROIPooling" + bottom: "convf" + bottom: "rois" + top: "roi_pool_conv5" + roi_pooling_param { + pooled_w: 6 + pooled_h: 6 + spatial_scale: 0.0625 # 1/16 + } +} +layer { + name: "fc6" + type: "InnerProduct" + bottom: "roi_pool_conv5" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc6/bn" + type: "BatchNorm" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc6/scale" + type: "Scale" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc6/dropout" + type: "Dropout" + bottom: "fc6" + top: "fc6" + dropout_param { + dropout_ratio: 0.25 + } +} +layer { + name: "fc6/relu" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "fc7" + type: "InnerProduct" + bottom: "fc6" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc7/bn" + type: "BatchNorm" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc7/scale" + type: "Scale" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc7/dropout" + type: "Dropout" + bottom: "fc7" + top: "fc7" + dropout_param { + dropout_ratio: 0.25 + } +} +layer { + name: "fc7/relu" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} +layer { + name: "cls_score" + type: "InnerProduct" + bottom: "fc7" + top: "cls_score" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + inner_product_param { + num_output: 21 + weight_filler { type: "gaussian" std: 0.01 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "bbox_pred" + type: "InnerProduct" + bottom: "fc7" + top: "bbox_pred" + param { lr_mult: 1.0 } + param { lr_mult: 2.0 } + inner_product_param { + num_output: 84 + weight_filler { type: "gaussian" std: 0.001 } + bias_filler { type: "constant" value: 0 } + } +} +layer { + name: "loss_cls" + type: "SoftmaxWithLoss" + bottom: "cls_score" + bottom: "labels" + propagate_down: 1 + propagate_down: 0 + top: "loss_cls" + include { phase: TRAIN } + loss_weight: 1 + loss_param { ignore_label: -1 normalize: true } +} +layer { + name: "loss_bbox" + type: "SmoothL1Loss" + bottom: "bbox_pred" + bottom: "bbox_targets" + bottom: "bbox_inside_weights" + bottom: "bbox_outside_weights" + top: "loss_bbox" + include { phase: TRAIN } + loss_weight: 1 +} +layer { + name: "cls_prob" + type: "Softmax" + bottom: "cls_score" + top: "cls_prob" + include { phase: TEST } + loss_param { + ignore_label: -1 + normalize: true + } +} From 69156c4bf5174ddbe7ad2448f5637d68230e81a4 Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Wed, 28 Dec 2016 15:23:33 +0900 Subject: [PATCH 31/36] Add a prototxt for ImageNet classification (192x192 model) --- models/pvanet/imagenet/descriptions.txt | 25 + .../imagenet/pva9.1_preAct_test.prototxt | 6556 +++++++++++++++++ 2 files changed, 6581 insertions(+) create mode 100644 models/pvanet/imagenet/descriptions.txt create mode 100644 models/pvanet/imagenet/pva9.1_preAct_test.prototxt diff --git a/models/pvanet/imagenet/descriptions.txt b/models/pvanet/imagenet/descriptions.txt new file mode 100644 index 000000000..62e99931e --- /dev/null +++ b/models/pvanet/imagenet/descriptions.txt @@ -0,0 +1,25 @@ +PVA9.1 ImageNet +70.0% top-1 with 4.17 GMAC (conv) + +A PVA9.0 variant with the following changes +- Multi-GPU training + * larger batch size + * additional regularization through BN +- Fixed a bug in the prototxt (shift) +- Data augmentation (multi-scale training images) +- Pre-activation structure + +Structure +- Output size: 1/32, 384 chns +- Inspired by DRN, GoogLeNet and CReLU +- Introduced a modificed CReLU + +Training +- Trained with a multi-scale ILSVRC2012 training set. + * image size: 256x256, 384x384, 512x512 + +Testing +- 70.0% top-1 with 192x192 inputs + +Contact Sanghoon Hong for any questions + diff --git a/models/pvanet/imagenet/pva9.1_preAct_test.prototxt b/models/pvanet/imagenet/pva9.1_preAct_test.prototxt new file mode 100644 index 000000000..d2cadd166 --- /dev/null +++ b/models/pvanet/imagenet/pva9.1_preAct_test.prototxt @@ -0,0 +1,6556 @@ +# conv1_1 , 240.84 MMAC, 320, 32 +# pool1 , 0.00 MAC, 160, 32 +# conv2_1 , 283.44 MMAC, 160, 64 +# conv2_2 , 250.68 MMAC, 160, 64 +# conv2_3 , 250.68 MMAC, 160, 64 +# conv3_1 , 283.44 MMAC, 80, 128 +# conv3_2 , 250.68 MMAC, 80, 128 +# conv3_3 , 250.68 MMAC, 80, 128 +# conv3_4 , 250.68 MMAC, 80, 128 +# conv4_1 , 395.47 MMAC, 40, 256 +# conv4_2 , 328.29 MMAC, 40, 256 +# conv4_3 , 328.29 MMAC, 40, 256 +# conv4_4 , 328.29 MMAC, 40, 256 +# conv5_1 , 229.38 MMAC, 20, 384 +# conv5_2 , 167.12 MMAC, 20, 384 +# conv5_3 , 167.12 MMAC, 20, 384 +# conv5_4 , 167.12 MMAC, 20, 384 +# None , 0.00 MAC, 20, 384 +# conv5_4/last_relu, 0.00 MAC, 20, 384 +# pool5 , 0.00 MAC, 20, 384 +# Total: 4.17 GMAC + +# conv1_1 , 29.50 MMAC, 112, 32 +# pool1 , 0.00 MAC, 56, 32 +# conv2_1 , 34.72 MMAC, 56, 64 +# conv2_2 , 30.71 MMAC, 56, 64 +# conv2_3 , 30.71 MMAC, 56, 64 +# conv3_1 , 34.72 MMAC, 28, 128 +# conv3_2 , 30.71 MMAC, 28, 128 +# conv3_3 , 30.71 MMAC, 28, 128 +# conv3_4 , 30.71 MMAC, 28, 128 +# conv4_1 , 48.44 MMAC, 14, 256 +# conv4_2 , 40.22 MMAC, 14, 256 +# conv4_3 , 40.22 MMAC, 14, 256 +# conv4_4 , 40.22 MMAC, 14, 256 +# conv5_1 , 28.10 MMAC, 7, 384 +# conv5_2 , 20.47 MMAC, 7, 384 +# conv5_3 , 20.47 MMAC, 7, 384 +# conv5_4 , 20.47 MMAC, 7, 384 +# None , 0.00 MAC, 7, 384 +# conv5_4/last_relu, 0.00 MAC, 7, 384 +# pool5 , 0.00 MAC, 7, 384 +# fc6 , 77.07 MMAC, 1, 4096 +# fc7 , 16.78 MMAC, 1, 4096 +# Total: 604.94 MMAC + +name: "pvanet_9.0" +layer { + # comment test + name: "data" + type: "Data" + top: "data" + top: "label" + include { + phase: TRAIN + } + transform_param { + mirror: true + crop_size: 192 + mean_value: 104 + mean_value: 117 + mean_value: 123 + } + data_param { + source: "data/ILSVRC2012_160720/ilsvrc12_train_lmdb" + batch_size: 96 + backend: LMDB + } +} +layer { + name: "data" + type: "Data" + top: "data" + top: "label" + include { + phase: TEST + } + transform_param { + mirror: false + crop_size: 192 + mean_value: 104 + mean_value: 117 + mean_value: 123 + } + data_param { + source: "data/ILSVRC2012_160720/ilsvrc12_val_lmdb" + batch_size: 32 + backend: LMDB + } +} + +layer { + name: "conv1_1/conv" + type: "Convolution" + bottom: "data" + top: "conv1_1/conv" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 16 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 3 + pad_w: 3 + kernel_h: 7 + kernel_w: 7 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv1_1/bn" + type: "BatchNorm" + bottom: "conv1_1/conv" + top: "conv1_1/conv" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv1_1/neg" + type: "Power" + bottom: "conv1_1/conv" + top: "conv1_1/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv1_1/concat" + type: "Concat" + bottom: "conv1_1/conv" + bottom: "conv1_1/neg" + top: "conv1_1" +} +layer { + name: "conv1_1/scale" + type: "Scale" + bottom: "conv1_1" + top: "conv1_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv1_1/relu" + type: "ReLU" + bottom: "conv1_1" + top: "conv1_1" +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1_1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv2_1/1/conv" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/2/bn" + type: "BatchNorm" + bottom: "conv2_1/1" + top: "conv2_1/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/2/bn_scale" + type: "Scale" + bottom: "conv2_1/2/pre" + top: "conv2_1/2/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/2/relu" + type: "ReLU" + bottom: "conv2_1/2/pre" + top: "conv2_1/2/pre" +} +layer { + name: "conv2_1/2/conv" + type: "Convolution" + bottom: "conv2_1/2/pre" + top: "conv2_1/2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/3/bn" + type: "BatchNorm" + bottom: "conv2_1/2" + top: "conv2_1/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_1/3/neg" + type: "Power" + bottom: "conv2_1/3/pre" + top: "conv2_1/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_1/3/concat" + type: "Concat" + bottom: "conv2_1/3/pre" + bottom: "conv2_1/3/neg" + top: "conv2_1/3/preAct" +} +layer { + name: "conv2_1/3/scale" + type: "Scale" + bottom: "conv2_1/3/preAct" + top: "conv2_1/3/preAct" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_1/3/relu" + type: "ReLU" + bottom: "conv2_1/3/preAct" + top: "conv2_1/3/preAct" +} +layer { + name: "conv2_1/3/conv" + type: "Convolution" + bottom: "conv2_1/3/preAct" + top: "conv2_1/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1/proj" + type: "Convolution" + bottom: "pool1" + top: "conv2_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_1" + type: "Eltwise" + bottom: "conv2_1/3" + bottom: "conv2_1/proj" + top: "conv2_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_2/1/bn" + type: "BatchNorm" + bottom: "conv2_1" + top: "conv2_2/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/1/bn_scale" + type: "Scale" + bottom: "conv2_2/1/pre" + top: "conv2_2/1/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/1/relu" + type: "ReLU" + bottom: "conv2_2/1/pre" + top: "conv2_2/1/pre" +} +layer { + name: "conv2_2/1/conv" + type: "Convolution" + bottom: "conv2_2/1/pre" + top: "conv2_2/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/2/bn" + type: "BatchNorm" + bottom: "conv2_2/1" + top: "conv2_2/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/2/bn_scale" + type: "Scale" + bottom: "conv2_2/2/pre" + top: "conv2_2/2/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/2/relu" + type: "ReLU" + bottom: "conv2_2/2/pre" + top: "conv2_2/2/pre" +} +layer { + name: "conv2_2/2/conv" + type: "Convolution" + bottom: "conv2_2/2/pre" + top: "conv2_2/2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/3/bn" + type: "BatchNorm" + bottom: "conv2_2/2" + top: "conv2_2/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_2/3/neg" + type: "Power" + bottom: "conv2_2/3/pre" + top: "conv2_2/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_2/3/concat" + type: "Concat" + bottom: "conv2_2/3/pre" + bottom: "conv2_2/3/neg" + top: "conv2_2/3/preAct" +} +layer { + name: "conv2_2/3/scale" + type: "Scale" + bottom: "conv2_2/3/preAct" + top: "conv2_2/3/preAct" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_2/3/relu" + type: "ReLU" + bottom: "conv2_2/3/preAct" + top: "conv2_2/3/preAct" +} +layer { + name: "conv2_2/3/conv" + type: "Convolution" + bottom: "conv2_2/3/preAct" + top: "conv2_2/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_2/input" + type: "Power" + bottom: "conv2_1" + top: "conv2_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_2" + type: "Eltwise" + bottom: "conv2_2/3" + bottom: "conv2_2/input" + top: "conv2_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv2_3/1/bn" + type: "BatchNorm" + bottom: "conv2_2" + top: "conv2_3/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/1/bn_scale" + type: "Scale" + bottom: "conv2_3/1/pre" + top: "conv2_3/1/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/1/relu" + type: "ReLU" + bottom: "conv2_3/1/pre" + top: "conv2_3/1/pre" +} +layer { + name: "conv2_3/1/conv" + type: "Convolution" + bottom: "conv2_3/1/pre" + top: "conv2_3/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/2/bn" + type: "BatchNorm" + bottom: "conv2_3/1" + top: "conv2_3/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/2/bn_scale" + type: "Scale" + bottom: "conv2_3/2/pre" + top: "conv2_3/2/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/2/relu" + type: "ReLU" + bottom: "conv2_3/2/pre" + top: "conv2_3/2/pre" +} +layer { + name: "conv2_3/2/conv" + type: "Convolution" + bottom: "conv2_3/2/pre" + top: "conv2_3/2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 24 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/3/bn" + type: "BatchNorm" + bottom: "conv2_3/2" + top: "conv2_3/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv2_3/3/neg" + type: "Power" + bottom: "conv2_3/3/pre" + top: "conv2_3/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv2_3/3/concat" + type: "Concat" + bottom: "conv2_3/3/pre" + bottom: "conv2_3/3/neg" + top: "conv2_3/3/preAct" +} +layer { + name: "conv2_3/3/scale" + type: "Scale" + bottom: "conv2_3/3/preAct" + top: "conv2_3/3/preAct" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv2_3/3/relu" + type: "ReLU" + bottom: "conv2_3/3/preAct" + top: "conv2_3/3/preAct" +} +layer { + name: "conv2_3/3/conv" + type: "Convolution" + bottom: "conv2_3/3/preAct" + top: "conv2_3/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 64 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv2_3/input" + type: "Power" + bottom: "conv2_2" + top: "conv2_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv2_3" + type: "Eltwise" + bottom: "conv2_3/3" + bottom: "conv2_3/input" + top: "conv2_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_1/1/bn" + type: "BatchNorm" + bottom: "conv2_3" + top: "conv3_1/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/1/bn_scale" + type: "Scale" + bottom: "conv3_1/1/pre" + top: "conv3_1/1/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/1/relu" + type: "ReLU" + bottom: "conv3_1/1/pre" + top: "conv3_1/1/pre" +} +layer { + name: "conv3_1/1/conv" + type: "Convolution" + bottom: "conv3_1/1/pre" + top: "conv3_1/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1/2/bn" + type: "BatchNorm" + bottom: "conv3_1/1" + top: "conv3_1/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/2/bn_scale" + type: "Scale" + bottom: "conv3_1/2/pre" + top: "conv3_1/2/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/2/relu" + type: "ReLU" + bottom: "conv3_1/2/pre" + top: "conv3_1/2/pre" +} +layer { + name: "conv3_1/2/conv" + type: "Convolution" + bottom: "conv3_1/2/pre" + top: "conv3_1/2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/3/bn" + type: "BatchNorm" + bottom: "conv3_1/2" + top: "conv3_1/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_1/3/neg" + type: "Power" + bottom: "conv3_1/3/pre" + top: "conv3_1/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_1/3/concat" + type: "Concat" + bottom: "conv3_1/3/pre" + bottom: "conv3_1/3/neg" + top: "conv3_1/3/preAct" +} +layer { + name: "conv3_1/3/scale" + type: "Scale" + bottom: "conv3_1/3/preAct" + top: "conv3_1/3/preAct" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_1/3/relu" + type: "ReLU" + bottom: "conv3_1/3/preAct" + top: "conv3_1/3/preAct" +} +layer { + name: "conv3_1/3/conv" + type: "Convolution" + bottom: "conv3_1/3/preAct" + top: "conv3_1/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_1/proj" + type: "Convolution" + bottom: "conv3_1/1/pre" + top: "conv3_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv3_1" + type: "Eltwise" + bottom: "conv3_1/3" + bottom: "conv3_1/proj" + top: "conv3_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_2/1/bn" + type: "BatchNorm" + bottom: "conv3_1" + top: "conv3_2/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/1/bn_scale" + type: "Scale" + bottom: "conv3_2/1/pre" + top: "conv3_2/1/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/1/relu" + type: "ReLU" + bottom: "conv3_2/1/pre" + top: "conv3_2/1/pre" +} +layer { + name: "conv3_2/1/conv" + type: "Convolution" + bottom: "conv3_2/1/pre" + top: "conv3_2/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/2/bn" + type: "BatchNorm" + bottom: "conv3_2/1" + top: "conv3_2/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/2/bn_scale" + type: "Scale" + bottom: "conv3_2/2/pre" + top: "conv3_2/2/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/2/relu" + type: "ReLU" + bottom: "conv3_2/2/pre" + top: "conv3_2/2/pre" +} +layer { + name: "conv3_2/2/conv" + type: "Convolution" + bottom: "conv3_2/2/pre" + top: "conv3_2/2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/3/bn" + type: "BatchNorm" + bottom: "conv3_2/2" + top: "conv3_2/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_2/3/neg" + type: "Power" + bottom: "conv3_2/3/pre" + top: "conv3_2/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_2/3/concat" + type: "Concat" + bottom: "conv3_2/3/pre" + bottom: "conv3_2/3/neg" + top: "conv3_2/3/preAct" +} +layer { + name: "conv3_2/3/scale" + type: "Scale" + bottom: "conv3_2/3/preAct" + top: "conv3_2/3/preAct" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_2/3/relu" + type: "ReLU" + bottom: "conv3_2/3/preAct" + top: "conv3_2/3/preAct" +} +layer { + name: "conv3_2/3/conv" + type: "Convolution" + bottom: "conv3_2/3/preAct" + top: "conv3_2/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_2/input" + type: "Power" + bottom: "conv3_1" + top: "conv3_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_2" + type: "Eltwise" + bottom: "conv3_2/3" + bottom: "conv3_2/input" + top: "conv3_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_3/1/bn" + type: "BatchNorm" + bottom: "conv3_2" + top: "conv3_3/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/1/bn_scale" + type: "Scale" + bottom: "conv3_3/1/pre" + top: "conv3_3/1/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/1/relu" + type: "ReLU" + bottom: "conv3_3/1/pre" + top: "conv3_3/1/pre" +} +layer { + name: "conv3_3/1/conv" + type: "Convolution" + bottom: "conv3_3/1/pre" + top: "conv3_3/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/2/bn" + type: "BatchNorm" + bottom: "conv3_3/1" + top: "conv3_3/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/2/bn_scale" + type: "Scale" + bottom: "conv3_3/2/pre" + top: "conv3_3/2/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/2/relu" + type: "ReLU" + bottom: "conv3_3/2/pre" + top: "conv3_3/2/pre" +} +layer { + name: "conv3_3/2/conv" + type: "Convolution" + bottom: "conv3_3/2/pre" + top: "conv3_3/2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/3/bn" + type: "BatchNorm" + bottom: "conv3_3/2" + top: "conv3_3/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_3/3/neg" + type: "Power" + bottom: "conv3_3/3/pre" + top: "conv3_3/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_3/3/concat" + type: "Concat" + bottom: "conv3_3/3/pre" + bottom: "conv3_3/3/neg" + top: "conv3_3/3/preAct" +} +layer { + name: "conv3_3/3/scale" + type: "Scale" + bottom: "conv3_3/3/preAct" + top: "conv3_3/3/preAct" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_3/3/relu" + type: "ReLU" + bottom: "conv3_3/3/preAct" + top: "conv3_3/3/preAct" +} +layer { + name: "conv3_3/3/conv" + type: "Convolution" + bottom: "conv3_3/3/preAct" + top: "conv3_3/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_3/input" + type: "Power" + bottom: "conv3_2" + top: "conv3_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_3" + type: "Eltwise" + bottom: "conv3_3/3" + bottom: "conv3_3/input" + top: "conv3_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv3_4/1/bn" + type: "BatchNorm" + bottom: "conv3_3" + top: "conv3_4/1/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/1/bn_scale" + type: "Scale" + bottom: "conv3_4/1/pre" + top: "conv3_4/1/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/1/relu" + type: "ReLU" + bottom: "conv3_4/1/pre" + top: "conv3_4/1/pre" +} +layer { + name: "conv3_4/1/conv" + type: "Convolution" + bottom: "conv3_4/1/pre" + top: "conv3_4/1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/2/bn" + type: "BatchNorm" + bottom: "conv3_4/1" + top: "conv3_4/2/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/2/bn_scale" + type: "Scale" + bottom: "conv3_4/2/pre" + top: "conv3_4/2/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/2/relu" + type: "ReLU" + bottom: "conv3_4/2/pre" + top: "conv3_4/2/pre" +} +layer { + name: "conv3_4/2/conv" + type: "Convolution" + bottom: "conv3_4/2/pre" + top: "conv3_4/2" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 48 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/3/bn" + type: "BatchNorm" + bottom: "conv3_4/2" + top: "conv3_4/3/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv3_4/3/neg" + type: "Power" + bottom: "conv3_4/3/pre" + top: "conv3_4/3/neg" + power_param { + power: 1 + scale: -1.0 + shift: 0 + } +} +layer { + name: "conv3_4/3/concat" + type: "Concat" + bottom: "conv3_4/3/pre" + bottom: "conv3_4/3/neg" + top: "conv3_4/3/preAct" +} +layer { + name: "conv3_4/3/scale" + type: "Scale" + bottom: "conv3_4/3/preAct" + top: "conv3_4/3/preAct" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 2.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv3_4/3/relu" + type: "ReLU" + bottom: "conv3_4/3/preAct" + top: "conv3_4/3/preAct" +} +layer { + name: "conv3_4/3/conv" + type: "Convolution" + bottom: "conv3_4/3/preAct" + top: "conv3_4/3" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 128 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv3_4/input" + type: "Power" + bottom: "conv3_3" + top: "conv3_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv3_4" + type: "Eltwise" + bottom: "conv3_4/3" + bottom: "conv3_4/input" + top: "conv3_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_1/incep/bn" + type: "BatchNorm" + bottom: "conv3_4" + top: "conv4_1/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/relu" + type: "ReLU" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/pre" +} +layer { + name: "conv4_1/incep/0/conv" + type: "Convolution" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/0/relu" + type: "ReLU" + bottom: "conv4_1/incep/0" + top: "conv4_1/incep/0" +} +layer { + name: "conv4_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_reduce" +} +layer { + name: "conv4_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/1_reduce" + top: "conv4_1/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/1_0" + top: "conv4_1/incep/1_0" +} +layer { + name: "conv4_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_reduce" +} +layer { + name: "conv4_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_reduce" + top: "conv4_1/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_0" +} +layer { + name: "conv4_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_1/incep/2_0" + top: "conv4_1/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_1/incep/2_1" + top: "conv4_1/incep/2_1" +} +layer { + name: "conv4_1/incep/pool" + type: "Pooling" + bottom: "conv4_1/incep/pre" + top: "conv4_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv4_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv4_1/incep/pool" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep/poolproj" +} +layer { + name: "conv4_1/incep" + type: "Concat" + bottom: "conv4_1/incep/0" + bottom: "conv4_1/incep/1_0" + bottom: "conv4_1/incep/2_1" + bottom: "conv4_1/incep/poolproj" + top: "conv4_1/incep" +} +layer { + name: "conv4_1/out/conv" + type: "Convolution" + bottom: "conv4_1/incep" + top: "conv4_1/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_1/proj" + type: "Convolution" + bottom: "conv3_4" + top: "conv4_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv4_1" + type: "Eltwise" + bottom: "conv4_1/out" + bottom: "conv4_1/proj" + top: "conv4_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_2/incep/bn" + type: "BatchNorm" + bottom: "conv4_1" + top: "conv4_2/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/relu" + type: "ReLU" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/pre" +} +layer { + name: "conv4_2/incep/0/conv" + type: "Convolution" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/0/relu" + type: "ReLU" + bottom: "conv4_2/incep/0" + top: "conv4_2/incep/0" +} +layer { + name: "conv4_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_reduce" +} +layer { + name: "conv4_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/1_reduce" + top: "conv4_2/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/1_0" + top: "conv4_2/incep/1_0" +} +layer { + name: "conv4_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_2/incep/pre" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_reduce" +} +layer { + name: "conv4_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_reduce" + top: "conv4_2/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_0" +} +layer { + name: "conv4_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_2/incep/2_0" + top: "conv4_2/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep/2_1" +} +layer { + name: "conv4_2/incep" + type: "Concat" + bottom: "conv4_2/incep/0" + bottom: "conv4_2/incep/1_0" + bottom: "conv4_2/incep/2_1" + top: "conv4_2/incep" +} +layer { + name: "conv4_2/out/conv" + type: "Convolution" + bottom: "conv4_2/incep" + top: "conv4_2/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_2/input" + type: "Power" + bottom: "conv4_1" + top: "conv4_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_2" + type: "Eltwise" + bottom: "conv4_2/out" + bottom: "conv4_2/input" + top: "conv4_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_3/incep/bn" + type: "BatchNorm" + bottom: "conv4_2" + top: "conv4_3/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/relu" + type: "ReLU" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/pre" +} +layer { + name: "conv4_3/incep/0/conv" + type: "Convolution" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/0/relu" + type: "ReLU" + bottom: "conv4_3/incep/0" + top: "conv4_3/incep/0" +} +layer { + name: "conv4_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_reduce" +} +layer { + name: "conv4_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/1_reduce" + top: "conv4_3/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/1_0" + top: "conv4_3/incep/1_0" +} +layer { + name: "conv4_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_3/incep/pre" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_reduce" +} +layer { + name: "conv4_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_reduce" + top: "conv4_3/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_0" +} +layer { + name: "conv4_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_3/incep/2_0" + top: "conv4_3/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep/2_1" +} +layer { + name: "conv4_3/incep" + type: "Concat" + bottom: "conv4_3/incep/0" + bottom: "conv4_3/incep/1_0" + bottom: "conv4_3/incep/2_1" + top: "conv4_3/incep" +} +layer { + name: "conv4_3/out/conv" + type: "Convolution" + bottom: "conv4_3/incep" + top: "conv4_3/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_3/input" + type: "Power" + bottom: "conv4_2" + top: "conv4_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_3" + type: "Eltwise" + bottom: "conv4_3/out" + bottom: "conv4_3/input" + top: "conv4_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv4_4/incep/bn" + type: "BatchNorm" + bottom: "conv4_3" + top: "conv4_4/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/relu" + type: "ReLU" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/pre" +} +layer { + name: "conv4_4/incep/0/conv" + type: "Convolution" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/0/relu" + type: "ReLU" + bottom: "conv4_4/incep/0" + top: "conv4_4/incep/0" +} +layer { + name: "conv4_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_reduce" +} +layer { + name: "conv4_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/1_reduce" + top: "conv4_4/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/1_0" + top: "conv4_4/incep/1_0" +} +layer { + name: "conv4_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv4_4/incep/pre" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 24 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_reduce" +} +layer { + name: "conv4_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_reduce" + top: "conv4_4/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_0" +} +layer { + name: "conv4_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv4_4/incep/2_0" + top: "conv4_4/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 48 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv4_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv4_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep/2_1" +} +layer { + name: "conv4_4/incep" + type: "Concat" + bottom: "conv4_4/incep/0" + bottom: "conv4_4/incep/1_0" + bottom: "conv4_4/incep/2_1" + top: "conv4_4/incep" +} +layer { + name: "conv4_4/out/conv" + type: "Convolution" + bottom: "conv4_4/incep" + top: "conv4_4/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 256 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv4_4/input" + type: "Power" + bottom: "conv4_3" + top: "conv4_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv4_4" + type: "Eltwise" + bottom: "conv4_4/out" + bottom: "conv4_4/input" + top: "conv4_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_1/incep/bn" + type: "BatchNorm" + bottom: "conv4_4" + top: "conv5_1/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/relu" + type: "ReLU" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/pre" +} +layer { + name: "conv5_1/incep/0/conv" + type: "Convolution" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/0/relu" + type: "ReLU" + bottom: "conv5_1/incep/0" + top: "conv5_1/incep/0" +} +layer { + name: "conv5_1/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_reduce" +} +layer { + name: "conv5_1/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/1_reduce" + top: "conv5_1/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/1_0" + top: "conv5_1/incep/1_0" +} +layer { + name: "conv5_1/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_reduce" +} +layer { + name: "conv5_1/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_reduce" + top: "conv5_1/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_0" +} +layer { + name: "conv5_1/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_1/incep/2_0" + top: "conv5_1/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_1/incep/2_1" + top: "conv5_1/incep/2_1" +} +layer { + name: "conv5_1/incep/pool" + type: "Pooling" + bottom: "conv5_1/incep/pre" + top: "conv5_1/incep/pool" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + pad: 0 + } +} +layer { + name: "conv5_1/incep/poolproj/conv" + type: "Convolution" + bottom: "conv5_1/incep/pool" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 128 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/incep/poolproj/bn" + type: "BatchNorm" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_1/incep/poolproj/bn_scale" + type: "Scale" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_1/incep/poolproj/relu" + type: "ReLU" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep/poolproj" +} +layer { + name: "conv5_1/incep" + type: "Concat" + bottom: "conv5_1/incep/0" + bottom: "conv5_1/incep/1_0" + bottom: "conv5_1/incep/2_1" + bottom: "conv5_1/incep/poolproj" + top: "conv5_1/incep" +} +layer { + name: "conv5_1/out/conv" + type: "Convolution" + bottom: "conv5_1/incep" + top: "conv5_1/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_1/proj" + type: "Convolution" + bottom: "conv4_4" + top: "conv5_1/proj" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 2 + stride_w: 2 + } +} +layer { + name: "conv5_1" + type: "Eltwise" + bottom: "conv5_1/out" + bottom: "conv5_1/proj" + top: "conv5_1" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_2/incep/bn" + type: "BatchNorm" + bottom: "conv5_1" + top: "conv5_2/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/relu" + type: "ReLU" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/pre" +} +layer { + name: "conv5_2/incep/0/conv" + type: "Convolution" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/0/relu" + type: "ReLU" + bottom: "conv5_2/incep/0" + top: "conv5_2/incep/0" +} +layer { + name: "conv5_2/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_reduce" +} +layer { + name: "conv5_2/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/1_reduce" + top: "conv5_2/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/1_0" + top: "conv5_2/incep/1_0" +} +layer { + name: "conv5_2/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_2/incep/pre" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_reduce" +} +layer { + name: "conv5_2/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_reduce" + top: "conv5_2/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_0" +} +layer { + name: "conv5_2/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_2/incep/2_0" + top: "conv5_2/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_2/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_2/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep/2_1" +} +layer { + name: "conv5_2/incep" + type: "Concat" + bottom: "conv5_2/incep/0" + bottom: "conv5_2/incep/1_0" + bottom: "conv5_2/incep/2_1" + top: "conv5_2/incep" +} +layer { + name: "conv5_2/out/conv" + type: "Convolution" + bottom: "conv5_2/incep" + top: "conv5_2/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_2/input" + type: "Power" + bottom: "conv5_1" + top: "conv5_2/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_2" + type: "Eltwise" + bottom: "conv5_2/out" + bottom: "conv5_2/input" + top: "conv5_2" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_3/incep/bn" + type: "BatchNorm" + bottom: "conv5_2" + top: "conv5_3/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/relu" + type: "ReLU" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/pre" +} +layer { + name: "conv5_3/incep/0/conv" + type: "Convolution" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/0/relu" + type: "ReLU" + bottom: "conv5_3/incep/0" + top: "conv5_3/incep/0" +} +layer { + name: "conv5_3/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_reduce" +} +layer { + name: "conv5_3/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/1_reduce" + top: "conv5_3/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/1_0" + top: "conv5_3/incep/1_0" +} +layer { + name: "conv5_3/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_3/incep/pre" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_reduce" +} +layer { + name: "conv5_3/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_reduce" + top: "conv5_3/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_0" +} +layer { + name: "conv5_3/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_3/incep/2_0" + top: "conv5_3/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_3/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_3/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep/2_1" +} +layer { + name: "conv5_3/incep" + type: "Concat" + bottom: "conv5_3/incep/0" + bottom: "conv5_3/incep/1_0" + bottom: "conv5_3/incep/2_1" + top: "conv5_3/incep" +} +layer { + name: "conv5_3/out/conv" + type: "Convolution" + bottom: "conv5_3/incep" + top: "conv5_3/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + convolution_param { + num_output: 384 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_3/input" + type: "Power" + bottom: "conv5_2" + top: "conv5_3/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_3" + type: "Eltwise" + bottom: "conv5_3/out" + bottom: "conv5_3/input" + top: "conv5_3" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/incep/bn" + type: "BatchNorm" + bottom: "conv5_3" + top: "conv5_4/incep/pre" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/pre" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/relu" + type: "ReLU" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/pre" +} +layer { + name: "conv5_4/incep/0/conv" + type: "Convolution" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/0/relu" + type: "ReLU" + bottom: "conv5_4/incep/0" + top: "conv5_4/incep/0" +} +layer { + name: "conv5_4/incep/1_reduce/conv" + type: "Convolution" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 96 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_reduce" +} +layer { + name: "conv5_4/incep/1_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/1_reduce" + top: "conv5_4/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 192 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/1_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/1_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/1_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/1_0" + top: "conv5_4/incep/1_0" +} +layer { + name: "conv5_4/incep/2_reduce/conv" + type: "Convolution" + bottom: "conv5_4/incep/pre" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 32 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_reduce/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_reduce/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_reduce/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_reduce" +} +layer { + name: "conv5_4/incep/2_0/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_reduce" + top: "conv5_4/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_0/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_0/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_0/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_0" +} +layer { + name: "conv5_4/incep/2_1/conv" + type: "Convolution" + bottom: "conv5_4/incep/2_0" + top: "conv5_4/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 64 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 1 + pad_w: 1 + kernel_h: 3 + kernel_w: 3 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/incep/2_1/bn" + type: "BatchNorm" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/incep/2_1/bn_scale" + type: "Scale" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/incep/2_1/relu" + type: "ReLU" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep/2_1" +} +layer { + name: "conv5_4/incep" + type: "Concat" + bottom: "conv5_4/incep/0" + bottom: "conv5_4/incep/1_0" + bottom: "conv5_4/incep/2_1" + top: "conv5_4/incep" +} +layer { + name: "conv5_4/out/conv" + type: "Convolution" + bottom: "conv5_4/incep" + top: "conv5_4/out" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + convolution_param { + num_output: 384 + bias_term: false + weight_filler { + type: "xavier" + } + pad_h: 0 + pad_w: 0 + kernel_h: 1 + kernel_w: 1 + stride_h: 1 + stride_w: 1 + } +} +layer { + name: "conv5_4/out/bn" + type: "BatchNorm" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/out/bn_scale" + type: "Scale" + bottom: "conv5_4/out" + top: "conv5_4/out" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/input" + type: "Power" + bottom: "conv5_3" + top: "conv5_4/input" + power_param { + power: 1 + scale: 1 + shift: 0 + } +} +layer { + name: "conv5_4" + type: "Eltwise" + bottom: "conv5_4/out" + bottom: "conv5_4/input" + top: "conv5_4" + eltwise_param { + operation: SUM + coeff: 1 + coeff: 1 + } +} +layer { + name: "conv5_4/last_bn" + type: "BatchNorm" + bottom: "conv5_4" + top: "conv5_4" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "conv5_4/last_bn_scale" + type: "Scale" + bottom: "conv5_4" + top: "conv5_4" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "conv5_4/last_relu" + type: "ReLU" + bottom: "conv5_4" + top: "conv5_4" +} +layer { + name: "pool5" + type: "Pooling" + bottom: "conv5_4" + top: "pool5" + pooling_param { + pool: MAX + kernel_size: 1 + stride: 1 + pad: 0 + } +} +layer { + name: "fc6" + type: "InnerProduct" + bottom: "pool5" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc6/bn" + type: "BatchNorm" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc6/bn_scale" + type: "Scale" + bottom: "fc6" + top: "fc6" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc6/dropout" + type: "Dropout" + bottom: "fc6" + top: "fc6" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc6/relu" + type: "ReLU" + bottom: "fc6" + top: "fc6" +} +layer { + name: "fc7" + type: "InnerProduct" + bottom: "fc6" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 1.0 + } + param { + lr_mult: 2.0 + decay_mult: 0.0 + } + inner_product_param { + num_output: 4096 + weight_filler { + type: "xavier" + } + bias_filler { + type: "constant" + value: 0.1 + } + } +} +layer { + name: "fc7/bn" + type: "BatchNorm" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + param { + lr_mult: 0 + decay_mult: 0 + } + batch_norm_param { + use_global_stats: true + } +} +layer { + name: "fc7/bn_scale" + type: "Scale" + bottom: "fc7" + top: "fc7" + param { + lr_mult: 1.0 + decay_mult: 0 + } + param { + lr_mult: 1.0 + decay_mult: 0 + } + scale_param { + bias_term: true + } +} +layer { + name: "fc7/dropout" + type: "Dropout" + bottom: "fc7" + top: "fc7" + dropout_param { + dropout_ratio: 0.5 + } +} +layer { + name: "fc7/relu" + type: "ReLU" + bottom: "fc7" + top: "fc7" +} + + + +layer { + name: "fc8" + type: "InnerProduct" + bottom: "fc7" + top: "fc8" + param { lr_mult: 1.0 decay_mult: 1.0 } + inner_product_param { + num_output: 1000 + weight_filler { type: "xavier" } + bias_filler { type: "constant" value: 0.1 } + } +} + +### Loss +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "fc8" + bottom: "label" + top: "loss" +} + +layer { + name: "accuracy" + type: "Accuracy" + bottom: "fc8" + bottom: "label" + top: "accuracy" + include { + phase: TEST + } + accuracy_param { + top_k: 1 + } +} From f3a477316914e1d7a3467569584d15f0ec14611b Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Wed, 28 Dec 2016 17:50:26 +0900 Subject: [PATCH 32/36] Fix PVA9.1 prototxt (eliminated missing layers) --- .../pva9.1/faster_rcnn_train_test_21cls.pt | 25 ++++++++++++++++--- ..._rcnn_train_test_ft_rcnn_only_plus_comp.pt | 25 ++++++++++++++++--- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/models/pvanet/pva9.1/faster_rcnn_train_test_21cls.pt b/models/pvanet/pva9.1/faster_rcnn_train_test_21cls.pt index ebc43b772..ae505afe8 100644 --- a/models/pvanet/pva9.1/faster_rcnn_train_test_21cls.pt +++ b/models/pvanet/pva9.1/faster_rcnn_train_test_21cls.pt @@ -6500,6 +6500,25 @@ layer { bottom: 'rpn_cls_prob_reshape' bottom: 'rpn_bbox_pred' bottom: 'im_info' + top: 'rpn_rois' + top: 'rpn_scores' + include { phase: TRAIN } + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "{'feat_stride': 16, 'ratios': [0.333, 0.5, 0.667, 1, 1.5, 2, 3], 'scales': [2, 3, 5, 9, 16, 32]}" + } +} +layer { + name: 'mute_rpn_scores' + bottom: 'rpn_scores' + type: 'Silence' + include { phase: TRAIN } +} +layer { + name: 'roi-data' + type: 'Python' + bottom: 'rpn_rois' bottom: 'gt_boxes' top: 'rois' top: 'labels' @@ -6508,9 +6527,9 @@ layer { top: 'bbox_outside_weights' include { phase: TRAIN } python_param { - module: 'rpn.proposal_layer' - layer: 'ProposalLayer2' - param_str: "{'feat_stride': 16, 'num_classes': 21, 'ratios': [0.333, 0.5, 0.667, 1, 1.5, 2, 3], 'scales': [2, 3, 5, 9, 16, 32]}" + module: 'rpn.proposal_target_layer' + layer: 'ProposalTargetLayer' + param_str: "'num_classes': 21" } } layer { diff --git a/models/pvanet/pva9.1/faster_rcnn_train_test_ft_rcnn_only_plus_comp.pt b/models/pvanet/pva9.1/faster_rcnn_train_test_ft_rcnn_only_plus_comp.pt index d258026d4..b0d4cea21 100644 --- a/models/pvanet/pva9.1/faster_rcnn_train_test_ft_rcnn_only_plus_comp.pt +++ b/models/pvanet/pva9.1/faster_rcnn_train_test_ft_rcnn_only_plus_comp.pt @@ -6458,6 +6458,25 @@ layer { bottom: 'rpn_cls_prob_reshape' bottom: 'rpn_bbox_pred' bottom: 'im_info' + top: 'rpn_rois' + top: 'rpn_scores' + include { phase: TRAIN } + python_param { + module: 'rpn.proposal_layer' + layer: 'ProposalLayer' + param_str: "{'feat_stride': 16, 'ratios': [0.333, 0.5, 0.667, 1, 1.5, 2, 3], 'scales': [2, 3, 5, 9, 16, 32]}" + } +} +layer { + name: 'mute_rpn_scores' + bottom: 'rpn_scores' + type: 'Silence' + include { phase: TRAIN } +} +layer { + name: 'roi-data' + type: 'Python' + bottom: 'rpn_rois' bottom: 'gt_boxes' top: 'rois' top: 'labels' @@ -6466,9 +6485,9 @@ layer { top: 'bbox_outside_weights' include { phase: TRAIN } python_param { - module: 'rpn.proposal_layer' - layer: 'ProposalLayer2' - param_str: "{'feat_stride': 16, 'num_classes': 21, 'ratios': [0.333, 0.5, 0.667, 1, 1.5, 2, 3], 'scales': [2, 3, 5, 9, 16, 32]}" + module: 'rpn.proposal_target_layer' + layer: 'ProposalTargetLayer' + param_str: "'num_classes': 21" } } layer { From d5a41d60ddd5ff56d9c9b1d8c079351f91b17744 Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Thu, 5 Jan 2017 16:58:20 +0900 Subject: [PATCH 33/36] Update README.md - Added Google Drive links for caffemodels --- README.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index eb9f09754..24ca5a5e4 100644 --- a/README.md +++ b/README.md @@ -64,22 +64,31 @@ If you want to cite this work in your publication: ./models/pvanet/download_voc_best.sh ``` -5. (Optional) Download all available VOC models (including pre-trained and compressed models) +6. (Optional) Download all available models (including pre-trained and compressed models) ```Shell cd $FRCN_ROOT ./models/pvanet/download_all_models.sh ``` -6. (Optional) Download ImageNet classification model +7. (Optional) Download ILSVRC2012 (ImageNet) classification model ```Shell cd $FRCN_ROOT ./models/pvanet/download_imagenet_model.sh ``` +8. (Optional) If the scripts don't work, please download the models from ... + | Model | Google Drive | + | ------ | ---- | + | PVANet for VOC2007 | [link](https://drive.google.com/open?id=0Bw_6VpHzQoMVRGZOSEctOEVMLXc) | + | PVANet for VOC2012 | [link](https://drive.google.com/open?id=0Bw_6VpHzQoMVa3M0Zm5zNnEtQUE) | + | PVANet for VOC2012 (compressed) | [link](https://drive.google.com/open?id=0Bw_6VpHzQoMVZU1BdEJDZG5MVXM) | + | PVANet for ILSVRC2012 (ImageNet) | [link](https://drive.google.com/open?id=0Bw_6VpHzQoMVTjctVVhjMXo1X3c) | + | PVANet pre-trained | [link](https://drive.google.com/open?id=0Bw_6VpHzQoMVak5FVFBWU0Uyb3M) | + ### How to run the demo 1. Download PASCAL VOC 2007 and 2012 - - Follow the instructions in [py-faster-rcnn README.md](https://github.com/rbgirshick/py-faster-rcnn#beyond-the-demo-installation-for-training-and-testing-models) +-- Follow the instructions in [py-faster-rcnn README.md](https://github.com/rbgirshick/py-faster-rcnn#beyond-the-demo-installation-for-training-and-testing-models) 2. PVANet on PASCAL VOC 2007 ```Shell @@ -111,3 +120,4 @@ If you want to cite this work in your publication: | 192x192 | 30.00 | N/A | | 224x224 | 27.66 | 8.84 | - We re-trained a 224x224 model from the '192x192' model as a base model. + From 2c93baaf0b1f96b541282d55a7fcf951cebfbc47 Mon Sep 17 00:00:00 2001 From: Sanghoon Hong Date: Mon, 16 Jan 2017 15:21:25 +0900 Subject: [PATCH 34/36] Fix README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 24ca5a5e4..acca59e60 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,7 @@ If you want to cite this work in your publication: ``` 8. (Optional) If the scripts don't work, please download the models from ... + | Model | Google Drive | | ------ | ---- | | PVANet for VOC2007 | [link](https://drive.google.com/open?id=0Bw_6VpHzQoMVRGZOSEctOEVMLXc) | From e59082522d6c708999cbb01359a197c2d6071062 Mon Sep 17 00:00:00 2001 From: YgRen Date: Thu, 8 Jun 2017 18:11:40 +0800 Subject: [PATCH 35/36] Update demo.py --- tools/demo.py | 59 ++++++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/tools/demo.py b/tools/demo.py index 631c68a41..9cbb01bc4 100755 --- a/tools/demo.py +++ b/tools/demo.py @@ -14,7 +14,7 @@ """ import _init_paths -from fast_rcnn.config import cfg +from fast_rcnn.config import cfg, cfg_from_file, cfg_from_list, get_output_dir from fast_rcnn.test import im_detect from fast_rcnn.nms_wrapper import nms from utils.timer import Timer @@ -31,10 +31,6 @@ 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor') -NETS = {'vgg16': ('VGG16', - 'VGG16_faster_rcnn_final.caffemodel'), - 'zf': ('ZF', - 'ZF_faster_rcnn_final.caffemodel')} def vis_detections(im, class_name, dets, thresh=0.5): @@ -79,7 +75,8 @@ def demo(net, image_name): # Detect all object classes and regress object bounds timer = Timer() timer.tic() - scores, boxes = im_detect(net, im) + _t = {'im_preproc': Timer(), 'im_net' : Timer(), 'im_postproc': Timer(), 'misc' : Timer()} + scores, boxes = im_detect(net, im, _t) timer.toc() print ('Detection took {:.3f}s for ' '{:d} object proposals').format(timer.total_time, boxes.shape[0]) @@ -105,44 +102,48 @@ def parse_args(): parser.add_argument('--cpu', dest='cpu_mode', help='Use CPU mode (overrides --gpu)', action='store_true') - parser.add_argument('--net', dest='demo_net', help='Network to use [vgg16]', - choices=NETS.keys(), default='vgg16') + parser.add_argument('--def', dest='prototxt', + help='prototxt file defining the network', + default=None, type=str) + parser.add_argument('--net', dest='caffemodel', + help='model to test', + default=None, type=str) args = parser.parse_args() return args if __name__ == '__main__': + args = parse_args() cfg.TEST.HAS_RPN = True # Use RPN for proposals - + cfg.TEST.SCALE_MULTIPLE_OF=32 + cfg.TEST.MAX_SIZE=2000 + cfg.TEST.SCALES=(640,) + cfg.TEST.BBOX_VOTE= True + cfg.TEST.NMS=0.4 + cfg.TEST.RPN_PRE_NMS_TOP_N=12000 + cfg.TEST.RPN_POST_NMS_TOP_N=200 args = parse_args() + + while not os.path.exists(args.caffemodel) and args.wait: + print('Waiting for {} to exist...'.format(args.caffemodel)) + time.sleep(10) - prototxt = os.path.join(cfg.MODELS_DIR, NETS[args.demo_net][0], - 'faster_rcnn_alt_opt', 'faster_rcnn_test.pt') - caffemodel = os.path.join(cfg.DATA_DIR, 'faster_rcnn_models', - NETS[args.demo_net][1]) - - if not os.path.isfile(caffemodel): - raise IOError(('{:s} not found.\nDid you run ./data/script/' - 'fetch_faster_rcnn_models.sh?').format(caffemodel)) - - if args.cpu_mode: - caffe.set_mode_cpu() - else: - caffe.set_mode_gpu() - caffe.set_device(args.gpu_id) - cfg.GPU_ID = args.gpu_id - net = caffe.Net(prototxt, caffemodel, caffe.TEST) + caffe.set_mode_gpu() + caffe.set_device(args.gpu_id) + net = caffe.Net(args.prototxt, args.caffemodel, caffe.TEST) + net.name = os.path.splitext(os.path.basename(args.caffemodel))[0] - print '\n\nLoaded network {:s}'.format(caffemodel) # Warmup on a dummy image im = 128 * np.ones((300, 500, 3), dtype=np.uint8) + _t = {'im_preproc': Timer(), 'im_net' : Timer(), 'im_postproc': Timer(), 'misc' : Timer()} for i in xrange(2): - _, _= im_detect(net, im) + _, _= im_detect(net, im, _t) - im_names = ['000456.jpg', '000542.jpg', '001150.jpg', - '001763.jpg', '004545.jpg'] + im_names = ['000080.jpg', '000086.jpg', '000176.jpg', + '000508.jpg', '000846.jpg', '001248.jpg', + '004585.jpg', '005205.jpg', '009941.jpg'] for im_name in im_names: print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' print 'Demo for data/demo/{}'.format(im_name) From e23be5593367ea2d9ea7469112dcacdc2fec32df Mon Sep 17 00:00:00 2001 From: YgRen Date: Thu, 8 Jun 2017 18:13:44 +0800 Subject: [PATCH 36/36] Create README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index acca59e60..973130bca 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,9 @@ If you want to cite this work in your publication: cd $FRCN_ROOT ./tools/test_net.py --net models/pvanet/pva9.1/PVA9.1_ImgNet_COCO_VOC0712plus_compressed.caffemodel --def models/pvanet/pva9.1/faster_rcnn_train_test_ft_rcnn_only_plus_comp.pt --cfg models/pvanet/cfgs/submit_1019.yml --gpu 0 ``` + 4.Visualization:run the demo.py + ./tools/demo.py --gpu 0 --def models/pvanet/comp/test.pt --net models/pvanet/comp/test.model + ### Expected results